標(biāo)題: 51單片機(jī)數(shù)字時(shí)鐘按鍵程序設(shè)計(jì) 求思路 [打印本頁]

作者: 葉小星    時(shí)間: 2020-2-18 17:33
標(biāo)題: 51單片機(jī)數(shù)字時(shí)鐘按鍵程序設(shè)計(jì) 求思路
共陽極數(shù)碼管 只顯示時(shí)間不顯示日期和星期
一共三個(gè)按鍵  按鍵1每按一次分別切換時(shí)、分、秒閃爍,表示要修改時(shí)間的部分,第四次按下則恢復(fù)到正常,按鍵2加時(shí)間,按鍵3減時(shí)間
三個(gè)按鍵接口為P3.0 P3.1 P3.2
定時(shí)精度要求:每天誤差十秒以內(nèi)


作者: 葉小星    時(shí)間: 2020-2-18 17:38
#include<reg51.h> unsigned char i, disp_buf[6] ={1,2,3,4,5,6},hour,min,sec,k; unsigned char yima[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//十個(gè)數(shù) void main(){     TMOD=0X01;  //T0中斷,方式一,定時(shí)功能         TH0=(65536-2000)/256;         TL0=(65536-2000)%256;         EA=1;ET0=1;TR0=1;            while(1){                }           }           void         T0_INT()interrupt 1{              TH0=(65536-2000)/256;              TL0=(65536-2000)%256;                  if(++i>5)i=0;                  P2=0;                  P0=yima[disp_buf[i] ];                  P2=0x01<<i;                  if(++k==500){  //1second=1000ms                       k=0;                           if(++sec==60){                                sec=0;                                    if(++min==60){                                        min=0;                                    if(++hour==24){                                        hour=0;                                         }                                 }                           }                           disp_buf[0]=hour/10; //時(shí)針十位數(shù)                           disp_buf[1]=hour%10; //時(shí)針個(gè)位數(shù)                           disp_buf[2]=min/10;  //分鐘十位數(shù)                           disp_buf[3]=min%10;  //分鐘個(gè)位數(shù)                           disp_buf[4]=sec/10;  //秒鐘十位數(shù)                           disp_buf[5]=sec%10;  //秒鐘個(gè)位數(shù)                          }                 }
作者: 葉小星    時(shí)間: 2020-2-18 17:38
部分程序 麻煩哪位大神可以完善一下




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1