基於數碼管的簡單時鐘系統

2021-07-09 11:04:02 字數 1773 閱讀 4048

#include//標頭檔案

#define uchar unsigned char //巨集定義 之後用uchar代替unsigned char 這裡指無符號字元

#define uint unsigned int //巨集定義 同上 無符號整數

sbit beep=p0^0;

uchar dat=; //定義初始化顯示時間陣列

uchar dat1=; //定義初始化鬧鐘設定值陣列,本程式中鬧鐘只設定到分

uchar dis_bit=; //數碼管位選

uchar code seg7[11]=; //共陰極數碼管欄位碼

uchar key_code= ;

uchar code ksp[4]=; //確定列的前提下(分別給每列置零)進行行檢測

uint tcount,t_beep;

uchar flag=0; //鬧鐘切換標誌位,

uchar flag_beep=0; //蜂鳴器響標誌位,=1表示蜂鳴器響

/*flag=0,設定鬧鐘;flag=1,顯示正常時間*/

struct timetime1; //定義名為time的結構體,變數名time1

uchar n,i,k;

void delay(n) //延時函式

}void display(void) //數字顯示

} if(flag==1) //顯示鬧鐘設定時間

}}uchar keypad_scan()

return(key); //此時的key值既包含了行值資訊又包含了列值資訊。}}

}}while(1);}}

}uchar gotkey()

} void keyscan(void) //時間調整函式

if(keynum==1) //暫停功能觸發,停止計時,便於調整時間

if(keynum==2)

if(dat[6]>9)

}

}if(flag==1) //鬧鐘時鐘定時

if(dat1[6]>9)} }

}

if(keynum==3)} }

if(flag==1) //鬧鐘分鐘定時}}

}

if(keynum==4) //暫停結束,顯示正常時間;正常情況按下時無影響

if(keynum==5)

/* if(keynum==6)

else

else}}

if(flag==1) //鬧鐘時鐘減一

else}}

}if(keynum==7)

else}}

if(flag==1) //鬧鐘分鐘減一

else}}

} */

ea=1; //中斷開關,開中斷

}

void init(void) //初始化函式

void main()

if(flag_beep)

beep=1; }}

}void timer_0() interrupt 1

tcount=0;

dat[0]=(time1.second)%10;

dat[1]=(time1.second)/10; //顯示秒

if(time1.second>59)}}

}et0=1;

}

定時器數碼管時鐘

mai.c handlebars include system.h include key.h extern uchar flag 1ms 在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。void main void 程式的主函式 在這裡插入 片key.c include key.h...

數碼管的驅動

乙個數碼管需要點亮多長時間呢?也就是說要多長時間完成一次全部數碼管的掃瞄呢 很明顯 整體掃瞄時間 單個數碼管點亮時間 數碼管個數 答案是 10ms 以內。鬼影 的出現,主要是在數碼管位選和段選產生的瞬態造成的。解決方案有兩種 關閉段或者關閉位。示例 如下 include sbit addr0 p1 ...

帶修改暫停啟動的動態數碼管時鐘

include unsigned char code dig place 8 位選控制 查表的方法控制 unsigned char dig code 10 段選控制 查表的方法控制 0 1 2 3 4 5 6 7 8 9的顯示碼 char sec,min,hour unsigned int i 0,...