本篇是對上一篇的改進,昨天學(xué)習(xí)了第4章中的獨立鍵盤的使用
獨立鍵盤擁有自己獨有的IO口,所以比較簡單,我上一篇寫的電子鐘程序只能燒程序?qū)r,
不能手動按鍵對時,這肯定是最差勁的做法,所以學(xué)習(xí)了按鍵之后,就立馬動手改進我的電子鐘了
同時改進了數(shù)碼管小數(shù)點的顯示,消除了疊影
使用芯片STC89C52RC, 2個鎖存器
6個帶小數(shù)點共陰極數(shù)碼管顯示一個24時制時鐘
沒有時鐘芯片,所以掉電后時間會復(fù)位
原理圖為TX-1C開發(fā)板
==============================
最終顯示的<時.分.秒>是 16.31.37 形式
使用3個按鍵, S2 S3 S5
其中S2和S3是加減數(shù)值,S5是切換對時狀態(tài),
C代碼
#include
#include"MY51.H"
voidshow();
int8shi=22;//初識時間22:45:00按S5鍵進入對時模式
int8fen=45;
int8miao=0;
uint8timeFlag=0;//0計時模式,1校對時鐘,2校對分鐘,3校對秒鐘
voidmain()
{
startT0(1000);//開始定時器
while(1)
{
show();//送入數(shù)碼管顯示
if(keyS5==keyDown)//按下S5鍵
{
delayms(5);//消抖處理
if(keyS5==keyDown)
{
while(1)
{
show();
if(keyS5==keyUp)//放開按鈕
{
delayms(5);//消抖處理
if(keyS5==keyUp)
{
break;
}
}
}
timeFlag=(++timeFlag)%4;//按S5鍵進行狀態(tài)切換
while(timeFlag)
{
if(timeFlag==1)
{
led=0xff;
led7=0;//進入對時鐘模式,且打開7號指示燈
}
elseif(timeFlag==2)
{
led=0xff;
led5=0;//進入校對分鐘模式,且打開5號指示燈
}
elseif(timeFlag==3)
{
led=0xff;
led3=0;//進入校對秒鐘模式,且打開3號指示燈
}
show();//刷新數(shù)碼管
if(keyS2==keyDown)//S2和S3用于調(diào)整數(shù)值,加減運算
{
delayms(5);//消抖處理
if(keyS2==keyDown)
{
if(timeFlag==1)
{
shi--;
if(shi<0)
{
shi=23;
}
}
elseif(timeFlag==2)
{