一运怖、實驗要求
通過keil編程,在小板實驗板中實現(xiàn)按鍵加1的四位顯示效果夏伊。
二摇展、實驗器材
C52單片機、筆記本電腦(裝有keil溺忧、燒錄軟件等)
三咏连、實驗步驟
1.修改代碼。
(1)
(2)
(3)
(4)
2.編譯代碼,生成.hex文件歌溉。
3.燒錄.hex文件垄懂,下載到52單片機。
5.關閉單片機開關,打開單片機開關埠偿,按鍵觀察透罢。
四、程序代碼
/**************************************************************************************
* 為確保數(shù)碼管顯示正常冠蒋,請將JOE跳線與VCC短接 ?
***************************************************************************************/
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit LSA=P2^0;
sbit LSB=P2^1;
sbit LSC=P2^2;
sbit LSD=P2^3;
sbit K3=P3^2;
u8 code smgduan[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90};//0-9字形碼
u8 number[4]={0,0,0,0}; //用于顯示計數(shù)值的4位數(shù)
/*******************************************************************************
* 延時函數(shù)羽圃,i=1時約延時10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
* 動態(tài)數(shù)碼管顯示
*******************************************************************************/
void DigDisplay()
{
u8 i;
for(i=0;i<4;i++) //依次顯示第1-4位數(shù)字
{
switch(i)
{
case(3):
LSA=0;LSB=1;LSC=1;LSD=1; break;
case(2):
LSA=1;LSB=0;LSC=1;LSD=1; break;
case(1):
LSA=1;LSB=1;LSC=0;LSD=1; break;
case(0):
LSA=1;LSB=1;LSC=1;LSD=0; break;
}
P0=smgduan[number[i]];//發(fā)送第i位數(shù)字的字形碼
delay(100);? ? ? ? ? //延時約1ms
P0=0xff;? ? ? ? ? ? ? //消隱
}
}
void main()
{
u16 n=0, m=0; //n用于存儲記錄按鍵次數(shù)的值,m用于臨時變量
u8 i=0;
K3 = 1;? ? ? //讀取IO口前先置1
while(1)
{
if (K3 == 0)? ? ? ? //若按鍵K3按下
{
while (K3==0);? ? //等待按鍵K3抬起,確保按動一下,計數(shù)加1
? ? ? ? ? ? ? ? ? //將此while語句注釋掉仓洼,會產(chǎn)生什么結果彤灶?為何會這樣绞呈?
n++;? ? ? ? ? ? ? //計數(shù)加1
m=n;
for (i=0;i<4;i++)? //依次將計數(shù)值n的個位、十位、百位和千位數(shù)字賦值給number[0-3]
{
number[i]=m%10;
m=m/10;
}
}
DigDisplay();? ? ? ? //調(diào)用顯示函數(shù)顯示計數(shù)值
}
}
五、實驗結果
六肘迎、經(jīng)驗總結
燒錄時要注意在軟件界面選擇正確的單片機型號和串口號。