|
按鍵控制四位數(shù)碼管的顯示值,按一次K0鍵數(shù)碼管顯示值加一,按一次K1鍵數(shù)碼管顯示值減一,數(shù)碼管可以從0000~9999顯示,顯示9999再按K0鍵顯示值歸0000,顯示0000再按K1鍵顯示值變?yōu)?999。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
四位數(shù)碼管動(dòng)態(tài)顯示.png (36.16 KB, 下載次數(shù): 91)
下載附件
2021-5-23 16:12 上傳
源代碼如下
- /*80c51*/
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit key0=P3^2; //定義按鍵
- sbit key1=P3^3;
- // '0' '1' '2' '3' '4' '5' '6' '7' '8' '9'
- uchar code segtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰極數(shù)碼管0-9顯示碼
- char m = 0, n = 0;
- void KeyScan(void); //調(diào)用函數(shù)聲明
- void Delay(uint cnt);
- /******************************************************************/
- /* 顯示處理函數(shù) */
- /******************************************************************/
- void Display(void)
- {
- P2 = 0x01;
- P1 = segtab[m%10];
- Delay(5); //個(gè)位顯示
- P2 = 0x08;
- P1 = segtab[m/10];
- Delay(5); //十位顯示
-
- P2 = 0x04;
- P1 = segtab[n%10];
- Delay(5); //百位顯示
-
- P2 = 0x02;
- P1 = segtab[n/10];
- Delay(5); //千位顯示
-
- }
- /**********************************************************
- 主程序
- ***********************************************************/
- void main(void)
- {
- while(1)
- {
- KeyScan();
-
- Display();
- }
-
- }
- /****************************************************
- 按鍵程序
- *****************************************************/
- void KeyScan(void)
- {
- if(key0 == 0)
- {
- Delay(10); //按鍵去抖動(dòng)
- if(key0 == 0)
- {
- m++;
- if(m>=100)
- {
- n++;
- m=0;
- if(n>=100)
- {
- m=0;
- n=0;
- }
- }
- }
- while(!key0);
- }
-
- if(key1 == 0)
- {
- Delay(10); //按鍵去抖動(dòng)
- if(key1 == 0)
- {
- m--;
- if(m<0)
- {
- m=99;
- n--;
- if(n<0)
- {
- m=99;
- n=99;
- }
- }
- }
- while(!key1);
- }
-
- }
- /************************************************
- 延時(shí)程序
- *************************************************/
- void Delay(uint xms)
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
復(fù)制代碼
數(shù)碼管顯示.zip
(40.35 KB, 下載次數(shù): 61)
2021-5-23 16:18 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|