key.c
#include
"key.h"
//把led.**件包含進來
#include
"eepr.h"
//把led.**件包含進來
#include
"system.h"
//把timer0.**件包含進來
uchar
code
smgduan[10
]=;uchar
displaydata[4
];uinty=
0;ucharx=
0;uchar
num=
252;
void
dig_poll()
//數碼管顯示p0=
displaydata[i
];i+
+;if(
i>3)
}uint
keyscan()
//按鍵掃瞄函式//
定時10
毫秒返回key1
elseif(
timer==
1000)/
/否則長按不停加1}
elseif(
k2==0
)//定時
10毫秒返回key2//
elseif(
timer==
1000)/
/否則長按不停加
1elseif(
timer==
1000)/
/否則長按不停加1}
elseif(
k3==0
)//定時
10毫秒返回key3
elseif(
timer==
1000)/
/否則長按不停加1}
elseif(
k4==0
)//定時
10毫秒返回key4
}else
return0;
}voidxs(
)//數碼管顯示顯示if(
key==2
)if(key==
3)if(
key==4
)if(y
==0)
if(y=
=1)if
(y==
2)}void
weigo()
if(z<
=500)/
/5000
毫秒滅一次
}void
numgo()
//數碼管數字++
}
key.c
#include
"system.h"
//把timer0.**件包含進來
sbit
wei0=p2
^7;sbit
wei1=p2
^6;sbit
wei2=p2
^5;sbit
wei3=p2
^4;sbitk1=
p3^7;
sbitk2=
p3^6;
sbitk3=
p3^5;
sbitk4=
p3^4;
uint
keyscan()
;voidxs(
void);
void
dig_poll()
;void
numgo()
;void
weigo()
;void
weigo1()
;void
weijj()
;
eepr.c
#include
"eepr.h"
//把led.**件包含進來
#include
"system.h"
//把system.**件包含進來
void
iapidle()
void
cha(
uint
addr)/
/擦除扇區函式
void
xie(
uint
addr
,uint
dat)//
寫乙個位元組操作函式
uchar
duqu
(uint
addr)/
/讀取位元組函式
eepr.h
在這裡插入**片
#include
"system.h"
//把system.**件包含進來
#include
"intrins.h"
#define
cmd_no
0//禁止讀寫
#define
cmd_du
1//允許讀操作
#define
cmd_xie
2//允許寫操作
#define
cmd_cha
3擦除扇區
#define
enable_iap
0x82
//12
m晶振#
define
iap_address
0x2000
//11
f051
k起始扇區首位址
sfriap_data
=0xe2;/
/資料暫存器
sfriap_addrh
=0xe3;/
/位址高八位
sfriap_addrl
=0xe4;/
/位址低八位
sfriap_cmd
=0xe5;/
/命令暫存器
sfriap_trig
=0xe6;/
/命令觸發器
sfriap_contr
=0xe7;/
/控制暫存器
void
iapidle()
;uchar
duqu
(uint
addr);
//讀位元組void
xie(
uint
addr
,uchar
dat)
;void
cha(
uint
addr);
//擦除扇區
main.c
#include
"system.h"
#include
"key.h"
#include
"eepr.h"
//把led.**件包含進來
//extern
uint
num=
188;
extern
uchar
flag_1ms;/
/在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。
void
main
(void)/
/程式的主函式
}}
#include
"reg52.h"
#define
uchar
unsigned
char//
定義無符號字元
#define
uint
unsigned
int/
/定義無符號整形
#define
fosc
12000000l/
/定義晶振頻率
#define
t1ms
(65536
-fosc/12
/1000)/
/定時10毫秒的時候,計數器要寫入的值//
void
delay_us
(uint
xus);/
/us級延時//
void
delay_ms
(uint
xms);/
/ms級延時
void
timer0_init
(void);
//定時器初始化
void
delay
(uinti)
;
#include
"system.h"
uchar
flag_1ms=0
;void
timer0_init
(void
)void
timer0()
interrupt
1//中斷號1/
*void
delay_us
(uint
xus)
void
delay_ms
(uint
xms)
}void
delay
(uinti)
*/
按鍵控制數碼管
按key1加一,按key2減一,按key3清零 include reg52.h 此檔案中定義了微控制器的一些特殊功能暫存器 typedef unsigned int u16 對資料型別進行宣告定義 typedef unsigned char u8 sbit lsa p2 2 sbit lsb p2 ...
按鍵數碼管顯示實驗
要求 能夠實現本微控制器按下鍵盤,能夠在數碼管上顯示鍵盤值。連線 將片選cs0鏈結到key led cs。define ledlen 6 xdata unsigned char outbit at 0x8002 位控制口 xdata unsigned char outseg at 0x8004 段控...
按鍵數碼管數值前移
include typedef unsigned char uchar typedef unsigned int uint void delay unsigned int i 函式聲名 char delaycnt 定義變數 sbit p10 p1 0 uint count 0 uchar n 0 u...