基于51单片机的电子钟C语言程序
i
cludereg51hi
cludeabsacchdefi
eucharu
sig
edchardefi
eui
tu
sig
edi
t七段共阴管显示定义ucharcodedispcode0x3F0x060x5B0x4F0x660x6D0x7D0x070x7F0x6F
0xBF0x860xCB0xCF0xEF0xED0xFD0x870xFF0xDF
定义并初始化变量
ucharseco
de0
ucharmi
ite0
ucharhour12
ucharmstc
t0
sbitP1_0P10
seco
d调整定义
sbitP1_1P11
mi
ite调整定义
sbitP1_2P12
hour调整定义
函数声明
voiddelayui
tk
延时子程序
voiddelay1ucharh
voidtime_pro时间处理子程序
voiddisplay
显示子程序
voidkeysca
键盘扫描子程序
延时子程序
voiddelay1ucharh
ucharj
whileh0
forj0j125j
voiddelayui
tk
ui
tabcforckc0c
fforb38b0bfora130a0a
时间处理子程序voidtime_provoid
ifseco
de60seco
de0mi
iteifmi
ite60mi
ite0hourifhour24hour0
秒钟设为60进制分钟设为60进制时钟设为24进制
显示子程序voiddisplayvoid
P20xfeP0dispcodehour10delay14P20xfdP0dispcodehour100X80delay14P20xfbP0dispcodemi
ite10delay14P20xf7P0dispcodemi
ite100X80delay14P20xefP0dispcodeseco
de10delay14P20xdfP0dispcodeseco
de10delay14
显示小时的十位显示小时的个位显示分的十位显示分的个位显示秒的十位显示秒的个位
f
键盘扫描子程序
voidkeysca
void
ifP1_00
按键1秒的调整
delay2
ifP1_00
delay300
seco
de
ifseco
de60
seco
de0
ifP1_10
按键2分的调整
delay2
ifP1_10
delay300
mi
ite
ifmi
ite60
mi
ite0
ifP1_20
按键3小时的调整
delay2
ifP1_20
delay300
hour
ifhour24
hour0
voidtimer0voidi
terrupt1usi
g0定时器0方式1,50ms中断一
次
TH00x3c
TMOD0x11
fmstc
tifmstc
t20
seco
demstc
t0试中就是
注意点。对计数单元的清零十分的重要,本次调因为忽略了这一点,给我早成了很大的被动。
主函数
voidmai
void
P10xff
初始化p1口,全设为1
TMOD0x11time0为定时器,方式1
TH00x3c
预置计数初值
TL00xb0
EA1
ET01
TR01
while1
keysca
按键扫描
time_pro时间处理
display显示时间
ffr