预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

//作品名:简单可调电子钟//程序员:ln_电子//编写日期:2012.08.04#include<reg52.h>//头文件#include<intrins.h>#defineuintunsignedint//宏定义#defineucharunsignedchar//字段码ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xff};sbitdula=P2^0;//锁存器段选位sbitwela=P2^1;//锁存器位选位sbitK_xs=P3^0;//独立按键sbitK_fz=P3^1;ucharXS,FZ,MZ,tt;//小时,分钟,秒钟,1/100秒//延时函数voiddelay_ms(ucharx){uchari;while(x--)for(i=0;i<120;i++);}//显示函数voidshows(){dula=1;P0=table[XS/10];dula=0;P0=0xff;wela=1;P0=0xfe;wela=0;delay_ms(1);dula=1;P0=table[XS%10];dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delay_ms(1);dula=1;P0=0X40;dula=0;P0=0xff;wela=1;P0=0xfb;wela=0;delay_ms(1);dula=1;P0=table[FZ/10];dula=0;P0=0xff;wela=1;P0=0xf7;wela=0;delay_ms(1);dula=1;P0=table[FZ%10];dula=0;P0=0xff;wela=1;P0=0xEF;wela=0;delay_ms(1);dula=1;P0=0X40;dula=0;P0=0xff;wela=1;P0=0xDF;wela=0;delay_ms(1);dula=1;P0=table[MZ/10];dula=0;P0=0xff;wela=1;P0=0xBF;wela=0;delay_ms(1);dula=1;P0=table[MZ%10];dula=0;P0=0xff;wela=1;P0=0x7F;wela=0;delay_ms(1);}//初始化函数voidinit(){XS=0;FZ=0;MZ=0;//小时,分,秒初始化为00—00—00TMOD=0x01;//设置定时器0为工作方式1TH0=(65536-50000)/256;//高8位TL0=(65536-50000)%256;//低8位EA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0}//秒,分,小时voidincresse_dzz(){if(++MZ>59)//秒{MZ=0;if(++FZ>59)//分{FZ=0;if(++XS>23)//小时XS=0;}}}//按键调小时、分钟voidkey(){if(K_xs==0){shows();while(K_xs==0);{if(++XS>23)XS=0;}}if(K_fz==0){shows();while(K_fz==0);{if(++FZ>59)FZ=0;}}}//主函数voidmain(){init();while(1){key();shows();}}voidtimer0()interrupt1{TH0=(65536-46100)/256;//定时器重装TL0=(65536-46100)%256;//理论是50,实际在处理语句的时间要算进去(这里大概了下)if(++tt==20)//50ms*20=1S{tt=0;incresse_dzz();}}