全球旧事资料 分类
基于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
好听全球资料 返回顶部