一怒竿、實驗?zāi)康?/h1>
根據(jù)在大開發(fā)板上獨立按鍵的實驗在小開發(fā)板實現(xiàn),完成實驗代碼的移植扩氢。
二耕驰、實驗器材
Keil 5軟件、計算機(jī)类茂、小開發(fā)板耍属、燒錄軟件
三托嚣、實驗原理
(一)大板數(shù)碼管結(jié)構(gòu)
通過三八譯碼器實現(xiàn)三位信號來控制位選信號巩检,故在代碼中定義三個位選信號。
(二)小板數(shù)碼管結(jié)構(gòu)
小板位選信號由P2.0,P2.1,P2.2,P2.3四口控制示启。
(三)異同點
(1)大板使用三八譯碼器連接位選信號兢哭,是用三位信號控制,小板沒有使用三八譯碼器夫嗓,直接由四口控制迟螺,故位選信號為4位冲秽。
(2)大板為共陰極電路,小板為共陽極電路矩父,故小板的位選信號為高電平有效锉桑,段選信號為低電平有效。
(3)小板的位選信號為8位窍株,分別是7個線加上1個點民轴。分別是 a,b,c,d,e,f,g,dp 從上端開始逆時針轉(zhuǎn)動,到中間橫線再到點dp,習(xí)慣以“a”段對應(yīng)字形碼字節(jié)的最低位球订,故從最高位到最低位分別是dp,g,f,e,d,c,b,a,故可寫出段選信號后裸,對應(yīng)字形碼如下圖:
四冒滩、代碼實現(xiàn)
獨立按鍵實驗
實現(xiàn)現(xiàn)象:下載程序后按下K1按鍵可以對D1小燈狀態(tài)取反。
注意事項:無
***************************************************************************************/
#include <reg52.h> //此文件中定義了單片機(jī)的一些特殊功能寄存器
typedef unsigned int u16; //對數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char u8;
sbit LSA=P2^0;//為定義位選信號的端口
sbit LSB=P2^1;
sbit LSC=P2^2;
sbit LSD=P2^3;
sbit K3=P3^5;//定義按鍵
u8 code smgduan [17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};//
u8 number[4]={0,0,0,0};
/*******************************************************************************
* 函 數(shù) 名 : delay
* 函數(shù)功能 : 延時函數(shù)开睡,i=1時,大約延時10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
* 函 數(shù) 名 : DigDisplay
* 函數(shù)功能 : 按鍵處理函數(shù)篇恒,判斷位選信號
*******************************************************************************/
void DigDisplay()
{
u8 i;
for(i=0;i<4;i++)//依次顯示每位數(shù)字
{
switch(i)
{
case(0):
LSA=1;LSB=1;LSC=1;LSD=0;break;
case(1):
LSA=1;LSB=1;LSC=0;LSD=1;break;
case(2):
LSA=1;LSB=0;LSC=1;LSD=1;break;
case(3):
LSA=0;LSB=1;LSC=1;LSD=1;break;
}
P0=smgduan[number[i]];//顯示第i位數(shù)字的字形碼
delay(100);
P0=0xff;//消隱
}
}
/*******************************************************************************
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void main()
{
u16 n=0,m=0;
u8 i=0;
K3=1;
while(1)
{
if(K3==0)//當(dāng)按鍵被按下時
{
while(K3==0); //等待按鍵按鍵抬起容燕,確保按動一下婚度,計數(shù)加1蘸秘,防止所加過多
n++;
m=n;
for(i=0;i<4;i++)
{
number[i]=m%10;
m=m/10;
}
}
DigDisplay();
}
}
五蝗茁、試驗流程
1.分析大板和小板的原理結(jié)構(gòu)圖醋虏,找出區(qū)別。
2.根據(jù)區(qū)別哮翘,在Keil5中將大板代碼改寫為小板使用的代碼颈嚼,以便在小板內(nèi)正常運(yùn)行饭寺。
3.通過燒錄軟件運(yùn)行編寫程序阻课。
六艰匙、實驗結(jié)果
按鍵過程中部分照片展示
七署驻、實驗總結(jié)
1.注意小板使用的是四個端口,不同于大板的三個端口旺上。
2.延時和消隱功能不能忘記瓶蚂。
3.編寫代碼時要謹(jǐn)慎小心宣吱,以免出現(xiàn)運(yùn)行檢查不出來的錯誤。
4.小板字形碼編寫的原則比大板相對復(fù)雜征候,可列表寫出。小板是共陽極朴上,位選高電平有效,段選低電平有效痪宰,大板是共陰極畔裕,位選是低電平有效衣撬,段選是高電平有效扮饶。