?? wannianli.c
字號:
TR0 = 0;
Beeplll();
for(a=0;a<6;a++){
if(OK_Key == 0 || int_Key == 0 || Add_Key == 0 || Add2_Key == 0){
b = 200;
v = read_clock(0x83);//按鍵停止后設置分=V,可防止松開鍵后再次響
}
display ();//正常掃描顯示驅動
}
}
BEEP_bit = 0;
ET0 = 1;//關定時器中斷(停止顯示切換)
TR0 = 1;
}else{
display ();//正常掃描顯示驅動
if(v != read_clock(0x83)){//當分不再是鬧鐘的分時,則設置V是211 不會有沖突
v = 0xfe;
}
}
/**********************************************************************************************/
if(MENU == 0) {//時鐘顯示,主畫面
if(OK_Key == 0){//OK鍵 全部LED點亮 測試用
for(bn=0;bn<32;bn++){//
Ledplay[bn] = 0xff;//將數據放入顯示緩沖區
}
}
if(Add_Key == 0){//按+鍵顯示LOGO “DOYOUNG”
bn = 0;a=0;
clearRAM();//清空顯示緩沖區數據
timecount = 41;//將顯示切換值調到41,使開機畫面停留2秒
while(DoYoung[a] != 0x99){//顯示畫面“DOYOUNG”
Ledplay[bn] = DoYoung[a];//
a++;//換下一個提取字節
bn++;//換下一個顯示緩沖字節
}
}
if(Add2_Key == 0){//按-鍵顯示版本號 V3.0
bn = 0;a=0;
clearRAM();//清空顯示緩沖區數據
timecount = 41;//將顯示切換值調到41,使開機畫面停留2秒
while(V30[a] != 0x99){//顯示開機畫面“ALARM”
Ledplay[bn] = V30[a];//將二維數組中的一組數據放入顯示緩沖區
a++;//換下一個提取字節
bn++;//換下一個顯示緩沖字節
}
}
if(int_Key == 0){//接MENU鍵 進入設置菜單
DelayM(20);//去抖
if(int_Key == 0){
key_off ();//等待鍵放開
ET0 = 0;//關定時器中斷(停止顯示切換)
TR0 = 0;
MENU++;//MENU菜單切換值加1 跳入菜單項目
Beep_set();//調時提示音
}
}
}
/**********************************************************************************************/
if(MENU >0 && MENU < 9){//ALARM1~8 鬧鐘設置菜單
bn = 0;a=0;
clearRAM();//清空顯示緩沖區數據
while(ALARM[a] != 0x99){//顯示開機畫面“ALARM”
Ledplay[bn] = ALARM[a];//將二維數組中的一組數據放入顯示緩沖區
a++;//換下一個提取字節
bn++;//換下一個顯示緩沖字節
}
putin(MENU);//顯示鬧鐘組號
if(OK_Key == 0){//確定進入此號鬧鐘
DelayM(20);//去抖
if(OK_Key == 0){
key_off ();//等待鍵放開
Beep_set();//調時提示音
a = MENU;
MENU = 200;
b = 200;
}
}
MENUadd1 ();//菜單加1
MENUexit ();//
}
/**********************************************************************************************/
if(MENU == 200){//鬧鐘調時設置項
uchar y = 0;
bn = 0;//顯示位累加寄存器清零(從頭開始寫入顯示緩沖區)
clearRAM();//清空顯示緩沖區數據
switch (b){//顯示設置項的說明
case 200:
while(Mode[y] != 0x99){//顯示開機畫面“MODE”
Ledplay[bn] = Mode[y];//將二維數組中的一組數據放入顯示緩沖區
y++;//換下一個提取字節
bn++;//換下一個顯示緩沖字節
}
putin(read_clock(0xc3+a*6));//根據鬧鐘組號讀出設置值
break;//
case 201:
bn = 0;
clearRAM();//清空顯示緩沖區數據
while(A[y] != 0x99){//顯示
Ledplay[bn] = A[y];//將二維數組中的一組數據放入顯示緩沖區
y++;//換下一個提取字節
bn++;//換下一個顯示緩沖字節
}
putin(read_clock(0xc3+a*6+2)/16);//顯示(十位)
putin(read_clock(0xc3+a*6+2)%16);//顯示(個位)
putin(24);//顯示“時”表示
break;//
case 202:
bn = 0;
clearRAM();//清空顯示緩沖區數據
while(A[y] != 0x99){//顯示
Ledplay[bn] = A[y];//將二維數組中的一組數據放入顯示緩沖區
y++;//換下一個提取字節
bn++;//換下一個顯示緩沖字節
}
putin(read_clock(0xc3+a*6+4)/16);//顯示分(十位)
putin(read_clock(0xc3+a*6+4)%16);//顯示分(個位)
putin(25);//顯示“分”表示
break;//
}
if(OK_Key == 0){//確定進入此號鬧鐘
DelayM(20);//去抖
if(OK_Key == 0){
key_off ();//等待鍵放開
Beep_set();//調時提示音
b++;//設置下一項
if(b>202){ b = 200;}
}
}
Set_time(b,a);
MENUexit ();
}
/**********************************************************************************************/
if(MENU == 9){//TIME 調時設置項
bn = 0;a=0;
clearRAM();//清空顯示緩沖區數據
while(Time[a] != 0x99){//顯示開機畫面“ALARM”
Ledplay[bn] = Time[a];//將二維數組中的一組數據放入顯示緩沖區
a++;//換下一個提取字節
bn++;//換下一個顯示緩沖字節
}
MENUadd1 ();//菜單加1
MENUexit ();
if(OK_Key == 0){
DelayM(20);//去抖
if(OK_Key == 0){
key_off ();//等待鍵放開
Beep_set();//調時提示音
MENU = 100;
a = 1;
}
}
}
/**********************************************************************************************/
if(MENU == 100){//TIME 調時設置項
uchar y = 0;
bn = 0;//顯示位累加寄存器清零(從頭開始寫入顯示緩沖區)
clearRAM();//清空顯示緩沖區數據
while(T[y] != 0x99){//顯示開機畫面“ALARM”
Ledplay[bn] = T[y];//將二維數組中的一組數據放入顯示緩沖區
y++;//換下一個提取字節
bn++;//換下一個顯示緩沖字節
}
switch (a){//顯示設置項的說明
case 1:
putin(read_clock(0x8d)/16);//顯示年(十位)
putin(read_clock(0x8d)%16);//顯示年(個位)
putin(20);//顯示“年”表示
break;//
case 2:
putin(read_clock(0x89)/16);//顯示(十位)
putin(read_clock(0x89)%16);//顯示(個位)
putin(21);//顯示“月”表示
break;//
case 3:
putin(read_clock(0x87)/16);//顯示(十位)
putin(read_clock(0x87)%16);//顯示(個位)
putin(22);//顯示“日”表示
break;//
case 4:
putin(23);//顯示“周”表示
putin(read_clock(0x8b)+9);//顯示(個位)
break;//
case 5:
putin(read_clock(0x85)/16);//顯示(十位)
putin(read_clock(0x85)%16);//顯示(個位)
putin(24);//顯示“時”表示
break;//
case 6:
putin(read_clock(0x83)/16);//顯示分(十位)
putin(read_clock(0x83)%16);//顯示分(個位)
putin(25);//顯示“分”表示
break;//
}
Set_time(a,0);
MENUexit ();
if(OK_Key == 0){
DelayM(20);//去抖
if(OK_Key == 0){
key_off ();//等待鍵放開
Beep_set();//調時提示音
a++; if(a>6){ a = 1;}
}
}
}
/**********************************************************************************************/
if(MENU == 10){//正點報時設置
bn = 0;a=0;
clearRAM();//清空顯示緩沖區數據
while(POINT[a] != 0x99){//顯示開機畫面“POINT”
Ledplay[bn] = POINT[a];//將二維數組中的一組數據放入顯示緩沖區
a++;//換下一個提取字節
bn++;//換下一個顯示緩沖字節
}
MENUadd1 ();//菜單加1
MENUexit ();
if(OK_Key == 0){
DelayM(20);//去抖
if(OK_Key == 0){
key_off ();//等待鍵放開
Beep_set();//調時提示音
MENU = 101;
a = 0;
}
}
}
/**********************************************************************************************/
if(MENU == 101){//正點報時 設置項
uchar y = 0;
bn = 0;//顯示位累加寄存器清零(從頭開始寫入顯示緩沖區)
clearRAM();//清空顯示緩沖區數據
while(Pp[y] != 0x99){//顯示
Ledplay[bn] = Pp[y];//將二維數組中的一組數據放入顯示緩沖區
y++;//換下一個提取字節
bn++;//換下一個顯示緩沖字節
}
write_clock(0x8e,0x00);//允許寫操作
switch (a){//顯示設置項的說明
case 0: break;
case 1: write_clock(0xc2,0x07);write_clock(0xc4,0x19);break;//設置正點報時為>7 <19,即8到18點
case 2: write_clock(0xc2,0x07);write_clock(0xc4,0x20);break;//
case 3: write_clock(0xc2,0x07);write_clock(0xc4,0x21);break;//
case 4: write_clock(0xc2,0x07);write_clock(0xc4,0x22);break;//
case 5: write_clock(0xc2,0x07);write_clock(0xc4,0x23);break;//
case 6: write_clock(0xc2,0);write_clock(0xc4,0x23);break;//
case 7: write_clock(0xc2,0);write_clock(0xc4,0);break;//
}
write_clock(0x8e,0x80);//禁止寫操作
putin(read_clock(0xc3)%16);//顯示開始時間
putin(18);//
putin(read_clock(0xc5)/16);//顯示結束(十位)
putin(read_clock(0xc5)%16);//顯示結束(個位)
MENUexit ();
if(OK_Key == 0){
DelayM(20);//去抖
if(OK_Key == 0){
key_off ();//等待鍵放開
Beep_set();//調時提示音
a++; if(a>7){ a = 1;}
}
}
}
/**********************************************************************************************/
if(MENU == 11){//鬧鐘總開關
bn = 0;a=0;
clearRAM();//清空顯示緩沖區數據
while(ONOFF[a] != 0x99){//顯示
Ledplay[bn] = ONOFF[a];//將二維數組中的一組數據放入顯示緩沖區
a++;//換下一個提取字節
bn++;//換下一個顯示緩沖字節
}
MENUadd1 ();//菜單加1
MENUexit ();
if(OK_Key == 0){
DelayM(20);//去抖
if(OK_Key == 0){
key_off ();//等待鍵放開
Beep_set();//調時提示音
MENU = 102;
}
}
}
/**********************************************************************************************/
if(MENU == 102){//鬧鐘總開關
bn = 0;a=0;
clearRAM();//清空顯示緩沖區數據
if(read_clock(0xc7) == 1){
while(Aon[a] != 0x99){//顯示
Ledplay[bn] = Aon[a];//將二維數組中的一組數據放入顯示緩沖區
a++;//換下一個提取字節
bn++;//換下一個顯示緩沖字節
}
}else{
while(Aoff[a] != 0x99){//顯示
Ledplay[bn] = Aoff[a];//將二維數組中的一組數據放入顯示緩沖區
a++;//換下一個提取字節
bn++;//換下一個顯示緩沖字節
}
}
if(OK_Key == 0){
DelayM(20);//去抖
if(OK_Key == 0){
key_off ();//等待鍵放開
Beep_set();//調時提示音
write_clock(0x8e,0x00);//允許寫操作
if(read_clock(0xc7) == 1){
write_clock(0xc6,0);
}else{
write_clock(0xc6,1);
}
write_clock(0x8e,0x80);//禁止寫操作
}
}
MENUexit ();
}
}
}
/**********************************************************************************************/
//DoYoung.net 電子技術 --創造獨立資源
/**********************************************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -