文档详情

用数码管(8位)显示的数字时钟程序.docx

发布:2018-08-26约2.81千字共6页下载文档
文本预览下载声明
用数码管(8位)显示的数字时钟程序 用数码管(8位)显示的数字时钟,由于是在开发板上写的程序,所以51 HYPERLINK /zhuti_mcu_1.html \t _blank 单片机的一些I/O口设定并不完全一样,以下程序仅供参考 #includereg52.h sbit dula=P2^6;? ?//段选锁存器 sbit wela=P2^7;? ?//位选锁存器 sbit key1=P3^2;? ?? ?//INT0??选择键 sbit key2=P3^4;? ?//T0??时间增加 sbit key3=P3^6;? ?? ?//S4??时间减少 char a=0,hour=0,minute=0,seconed=0; char h1,h2,m1,m2,s1,s2; char num=0; char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(char z) { ??char x,y; for(x=z;x0;x--) ??for(y=110;y0;y--); } void display_hour(char h)? ? //显示小时 { ??h1=h/10; h2=h%10; wela=1; P0=0xfe;??//1111 1110 wela=0; P0=0xff; dula=1; P0=table[h1]; dula=0; delay(5); wela=1; P0=0xfd;??//1111 1101 wela=0; P0=0xff; dula=1; P0=table[h2]; dula=0; delay(5); } void display_minute(char m)? ? //显示分钟 { ??m1=m/10; m2=m%10; wela=1; P0=0xf7;??//1111 0111 wela=0; P0=0xff; dula=1; P0=table[m1]; dula=0; delay(5); wela=1; P0=0xef;? ?//1110 1111 wela=0; P0=0xff; dula=1; P0=table[m2]; dula=0; delay(5); } void display_seconed(char s)? ? //显示秒 { ??s1=s/10; s2=s%10; wela=1; P0=0xbf;? ?//1011 1111 wela=0; P0=0xff; dula=1; P0=table[s1]; dula=0; delay(5); wela=1; P0=0x7f;??//0111 1111 wela=0; P0=0xff; dula=1; P0=table[s2]; dula=0; delay(5); } void init()? ?? ?//初始化函数 { ??TMOD=0x01;? ???//定时器0工作方式1 TH0=(65536-45872)/256;??//装初值晶振11.0592? ?50ms为45872 TL0=(65536-45872)%256; EA=1;? ?? ?//开总中断 ET0=1;? ?? ?//开定时器0中断 TR0=1;? ?? ?//开启定时器0 } void key()? ?? ?//按键函数,功能为对时间进行调整 { ??if(key1==0)? ???//key1键按下进入选择并停止定时器 { ? ?delay(10); ??while(!key1);? ? //松手检测 ??TR0=0; ??num++;? ?? ?//没按一次key1??num自加1 } if(num==1)? ?? ?//key1按一次进行“小时”调整 { ? ?if(key2==0)? ???//key2按下时间增加 ??{ ? ?delay(10); ? ?while(!key2); ? ? hour++; ? ?if(hour==24) ? ?hour=0; ??} ??if(key3==0)? ?? ?//key3按下时间减少 ??{ ? ?delay(10); ? ?while(!key3); ? ? hour--; ? ?if(hour0) ? ?hour=23; ??} } if(num==2)? ?? ? //按下key1两次进行“分钟调整” { ? ?if(key2==0) ??{ ? ?delay(10); ? ?while(!key2); ? ? minute++; ? ?if(minute==60) ? ?minute=0; ??} ??if(key3==0) ??{ ? ?delay(10); ? ?while(!key3);
显示全部
相似文档