|
發(fā)布時間: 2019-7-4 10:58
正文摘要:#include<reg51.h> sbit key_1=P1^0 ; //秒、分、時間的切換鍵 sbit key_2=P1^1 ; //加1 sbit key_3=P1^ ... |
|
|
P0=table1[sec/10]; //顯示秒十位數(shù) if( count1==1&&flag_flash==1) P2=0x00; else P2=table2[6]; delay_5ms(); P0=0xff; P0=table1[sec%10]; //顯示秒個位數(shù) if( count1==1&&flag_flash==1) P2=0x00; else P2=table2[7]; delay_5ms(); P0=0xff; |
|
一、設個閃爍的標志,開定時中斷T1,0.5秒求反一次。 void T1_500ms(void) interrupt 3 { static unsigned char count2 = 0; TR1 = 0; TH1 = (65536 - 50000 ) / 256; //設置T1初始值為:15536 TL1 = (65536 - 50000 ) % 256; //記數(shù)為50000次//50000*1us=50ms TR1 = 1; count2++; if(count2 == 10) { count2 = 0; flag_flash=!flag_flash;// 調(diào)整時的閃爍標志 } } 二、顯示函數(shù)里根據(jù)調(diào)秒和閃爍標志,控制顯示和熄滅(這里僅以秒的閃爍為例) P0=table1[sec/10]; //顯示秒十位數(shù) if( count1==1&&flag_flash==1) P2=0x00; else P2=table2[6]; delay_5ms(); P0=0xff; P0=table1[sec%10]; //顯示秒個位數(shù) if( count1==1&&flag_flash==1) P2=0x00; else P2=table2[7]; delay_5ms(); P0=0xff; |
hhh402 發(fā)表于 2019-7-6 00:50 “你這個程序只要一按按鍵數(shù)碼管顯示就混亂。因為你的按鍵程序有待按鍵釋放,按鍵后就不運行數(shù)碼管顯示程序了。” while(key_1==0) disp_led(); //等待按鍵釋放,并且調(diào)用顯示程序 沒問題 |
| 你的程序直接用學習板的程序是不行的,單片機學習板的程序只是為了說明單片機原理,真正的程序要多用中斷,少用延時,這種語句 while(key_2==0)基本不用。實際按鍵程序不需要按鍵消抖,不需要等,實際按鍵程序需要放在約10-20ms中斷中執(zhí)行,數(shù)碼管顯示程序也是放在中斷中執(zhí)行的。你這個程序只要一按按鍵數(shù)碼管顯示就混亂。因為你的按鍵程序有待按鍵釋放,按鍵后就不運行數(shù)碼管顯示程序了。 |
Powered by 單片機教程網(wǎng)