這是一個單片機用按鍵控制數碼管顯示數字并且可以通過按鍵來調節數碼管上顯示數字的大小
含源碼 (keil)和仿真電路(Proteus)
0.png (21.63 KB, 下載次數: 47)
下載附件
2018-2-8 23:50 上傳
單片機源程序如下:
- #include<reg51.h>
- #include"intrins.h"
- #include"delay.h"
- /*uchar code DSY[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
- 0x82,0xf8,0x80,0x90,0xff}; //共陰,不顯示小數點*/
- uchar code DSY[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,
- 0x7D,0x07,0x7F,0x6F};
- uchar buffer[3]={0,0,0};
- uchar key_counts=0;
- uchar key_CODE;
- /* 中斷初值 */
- void init()
- {
- TMOD=0x00;
- TH0=(8192-1000)/32;
- TL0=(8192-1000)%32;
- EA=1;
- ET0=1;
- TR0=1;
- }
- /*顯示函數*/
- void display()
- {
- uchar i,j=0xfe;
- buffer[2]=key_counts/100;
- buffer[1]=key_counts/10%10;
- buffer[0]=key_counts%10;
- for(i=0;i<3;i++)
- {
- P3=0xff;//位選
- P2=DSY[buffer[i]];//段選
- P3=j;
- j=_crol_(j,1);
- delay(1);
- }
- }
- /*主函數*/
- void main()
- {
- init();
- //uchar i;
- P3=0xff;
- P1=0xff;
- P2=0xff;
- key_CODE=0xff;
- while(1)
- {
- display();
- key_CODE=P1;
- switch(key_CODE)
- {
- case 0xfe:if(key_counts<255)key_counts++;break;
- case 0xfd:if(key_counts>0)key_counts--;break;
- case 0xfb:key_counts=0;break;
- }
- while(P1!=0xff)
- display();
- }
-
- }
- void timer0( ) interrupt 1 using 0
- {
- uchar flag;
- TH0=(8192-1000)/32;
- TL0=(8192-1000)%32;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (57.5 KB, 下載次數: 53)
下載附件
2018-2-8 23:51 上傳
所有資料51hei提供下載:
按鍵加減清零.zip
(65.79 KB, 下載次數: 41)
2018-2-8 17:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|