共陽(yáng)極數(shù)碼管、共陰極七段數(shù)碼管顯示代碼。數(shù)碼管和按鍵與單片機(jī)的連接接法如下:
三、按鍵處理與顯示程序設(shè)計(jì)
任務(wù):按下按鍵,顯示對(duì)應(yīng)的鍵值0、1、2、3、4、5、6、7。
程序設(shè)計(jì)思路:判斷連接在P3口的按鍵按下,根據(jù)按鍵按下端口對(duì)應(yīng)的值,對(duì)P2口輸出相應(yīng)的共陽(yáng)極數(shù)碼管顯示段碼。
1、if語(yǔ)句編寫程序
/************************************************
按鍵顯示程序
設(shè)計(jì):黃有全
2010年10月7日
關(guān)鍵詞:if語(yǔ)句、switch-case語(yǔ)句應(yīng)用
單片機(jī)硬件連接:P3口接按鍵,P2口接共陽(yáng)極數(shù)碼管,靜態(tài)顯示。
************************************************/
#include<at89x52.h>
unsigned char duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0xc7,0x8c,0xbf,0xff};
//數(shù)組,定義共陽(yáng)極數(shù)碼管顯示段碼:0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F(xiàn),H,L,P,-,熄滅。
void delay(int i) //延時(shí)函數(shù),帶參數(shù)i。
{ //在調(diào)用函數(shù)時(shí)通過設(shè)置參數(shù),改變延時(shí)時(shí)間。
int j=0,k=0;
for(j=0;j<i;j++)
for(k=0;k<164;k++);
}
main()
{
while(1)
{
P3=0xff; //按鍵接口P3置1。
if(P3==0xfe){P2=0xc0 ;delay(500);} //P3.0按鍵按下,顯示0
else if(P3==0xfd){P2=0xf9 ;delay(500);} //P3.1按鍵按下,顯示1
else if(P3==0xfb){P2=0xa4 ;delay(500);} //P3.2按鍵按下,顯示2
else if(P3==0xf7){P2=0xb0 ;delay(500);} //P3.3按鍵按下,顯示3
else if(P3==0xef){P2=0x99 ;delay(500);} //P3.4按鍵按下,顯示4
else if(P3==0xdf){P2=0x92 ;delay(500);} //P3.5按鍵按下,顯示5
else if(P3==0xbf){P2=0x82 ;delay(500);} //P3.6按鍵按下,顯示6
else if(P3==0x7f){P2=0xf8 ;delay(500);} //P3.7按鍵按下,顯示7
}
}
2、switch-case語(yǔ)句程序設(shè)計(jì)
/************************************************
按鍵顯示程序
設(shè)計(jì):黃有全
2010年10月7日
關(guān)鍵詞:if語(yǔ)句、switch-case語(yǔ)句應(yīng)用
單片機(jī)硬件連接:P3口接按鍵,P2口接共陽(yáng)極數(shù)碼管,靜態(tài)顯示。
************************************************/
#include<at89x52.h>
unsigned char duanma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0xc7,0x8c,0xbf,0xff};
//數(shù)組,定義共陽(yáng)極數(shù)碼管顯示段碼:0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F(xiàn),H,L,P,-,熄滅。
void delay(int i) //延時(shí)函數(shù),帶參數(shù)i。
{ //在調(diào)用函數(shù)時(shí)通過設(shè)置參數(shù),改變延時(shí)時(shí)間。
int j=0,k=0;
for(j=0;j<i;j++)
for(k=0;k<164;k++);
}
main()
{
while(1)
{
P3=0xff; //按鍵接口P3置1
switch(P3)
{
case 0xfe: P2=0xc0;delay(500);break; //P3.0按鍵按下,顯示0。
case 0xfd: P2=0xf9;delay(500);break; //P3.1按鍵按下,顯示1
case 0xfb: P2=0xa4;delay(500);break; //P3.2按鍵按下,顯示2
case 0xf7: P2=0xb0;delay(500);break; //P3.3按鍵按下,顯示3
case 0xef: P2=0x99;delay(500);break; //P3.4按鍵按下,顯示4
case 0xdf: P2=0x92;delay(500);break; //P3.5按鍵按下,顯示5
case 0xbf: P2=0x82;delay(500);break; //P3.6按鍵按下,顯示6
case 0x7f: P2=0xf8;delay(500);break; //P3.7按鍵按下,顯示7
}
}
}
四、課堂任務(wù):
按鍵名稱用字母定義,按下按鍵,顯示A、b、C、d、E、F、g、H。分別用if語(yǔ)句和switch-case語(yǔ)句編寫程序,實(shí)現(xiàn)這個(gè)功能。