|
實(shí)現(xiàn)功能:數(shù)碼管可以顯示0-99兩位數(shù)字,用三個按鍵分別表示加、減、復(fù)位。
按一下加按鍵,數(shù)字加1;按一下減按鍵,數(shù)字減1。初始化顯示為學(xué)號后兩位。
Proteus仿真電路圖如下:
1603728687(1).jpg (104.83 KB, 下載次數(shù): 153)
下載附件
電路圖
2020-10-27 00:12 上傳
單片機(jī)源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽極數(shù)碼管編碼
- sbit up=P2^2; //加1按鍵
- sbit down=P2^3; //減1按鍵
- sbit clear=P2^4; //初始化按鍵,學(xué)號后兩位08
- sbit shiwei=P2^0; //數(shù)碼管十位位選
- sbit gewei=P2^1; //數(shù)碼管個位位選
- char ge=0; //定義個位初始值
- char shi=0; //定義十位初始值
- char shuzi=8; //定義初始化值
- void delay(uint);//延時函數(shù)
- void display();//數(shù)碼管顯示函數(shù)
- void main()
- {
- while(1)
- {
- if(up==0)//加1按鍵按下檢測
- {
- delay(10);//消抖
- if(up==0)
- {
- shuzi++;
- if(shuzi==100)//加到99變回0
- shuzi=0;
- }
- while(up==0)//松手檢測出后顯示數(shù)字
- {
- display();
- }
- }
-
- if(down==0)//減1按鍵按下檢測
- {
- delay(10);//消抖
- if(down==0)
- {
- shuzi--;
- if(shuzi==(-1))//減到0變回99
- {
- shuzi=99;
- }
- }
- while(down==0)//松手檢測出后顯示數(shù)字
- {
- display();
- }
- }
- if(clear==0)//初始化(08)按鍵按下檢測
- {
- delay(10);//消抖
- if(clear==0)
- {
- shuzi=8;//初始化顯示學(xué)號后兩位08
- }
- while(clear==0)//松手檢測出后顯示數(shù)字
- {
- display();
- }
- }
- display();
- }
- }
- void delay(uint ms)//延時函數(shù)
- {
- uint i,j;
- for(i=ms;i>0;i--)
- for(j=120;j>0;j--);
- }
- void display() //數(shù)碼管顯示函數(shù)聲明
- {
- ge=shuzi%10; //計算個位處數(shù)碼管的數(shù)值
- shi=shuzi/10; //計算十位處數(shù)碼管的數(shù)值
- gewei=1; //關(guān)閉數(shù)碼管輸入,防止數(shù)據(jù)有誤
- shiwei=1; //關(guān)閉數(shù)碼管輸入,防止數(shù)據(jù)有誤
- P0=seg[ge]; //送入段選值
- gewei=0; //導(dǎo)通數(shù)碼管個位位選
- delay(2);
- gewei=1; //關(guān)閉個位位選
- P0=seg[shi]; //送入段選值
- shiwei=0; //導(dǎo)通數(shù)碼管十位位選
- delay(2);
- shiwei=1; //關(guān)閉十位位選
- }
復(fù)制代碼
所有資料51hei提供下載:
數(shù)碼顯示.zip
(100.93 KB, 下載次數(shù): 54)
2020-10-27 00:13 上傳
點(diǎn)擊文件名下載附件
數(shù)碼顯示電路圖及代碼 下載積分: 黑幣 -5
|
評分
-
查看全部評分
|