標(biāo)題: if、switch語句處理按鍵顯示 [打印本頁]

作者: daniu    時(shí)間: 2014-12-27 19:25
標(biāo)題: if、switch語句處理按鍵顯示

一、目的:
1、Proteus仿真軟件調(diào)試單片機(jī)及其程序。
2、if語句應(yīng)用。
3、switch-case語句應(yīng)用
3、數(shù)碼管顯示程序設(shè)計(jì)法,按鍵處理程序設(shè)計(jì)。
二、數(shù)碼管顯示知識(shí)。
共陽極數(shù)碼管、共陰極七段數(shù)碼管顯示代碼。數(shù)碼管和按鍵與單片機(jī)的連接接法如下:


三、按鍵處理與顯示程序設(shè)計(jì)
任務(wù):按下按鍵,顯示對(duì)應(yīng)的鍵值0、12、3、45、67。
程序設(shè)計(jì)思路:判斷連接在P3口的按鍵按下,根據(jù)按鍵按下端口對(duì)應(yīng)的值,對(duì)P2口輸出相應(yīng)的共陽極數(shù)碼管顯示段碼。
1、if語句編寫程序
/************************************************
按鍵顯示程序
設(shè)計(jì):黃有全
2010年10月7日
關(guān)鍵詞:if語句、switch-case語句應(yīng)用
單片機(jī)硬件連接:P3口接按鍵,P2口接共陽極數(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ù)組,定義共陽極數(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語句程序設(shè)計(jì)
/************************************************
按鍵顯示程序
設(shè)計(jì):黃有全
2010年10月7日
關(guān)鍵詞:if語句、switch-case語句應(yīng)用
單片機(jī)硬件連接:P3口接按鍵,P2口接共陽極數(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ù)組,定義共陽極數(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、Cd、E、F、gH。分別用if語句和switch-case語句編寫程序,實(shí)現(xiàn)這個(gè)功能。

顯示字型
共陽極數(shù)碼管顯示碼
共陰極數(shù)碼管顯示碼
二進(jìn)制
十六進(jìn)制
二進(jìn)制
十六進(jìn)制
0
11000000B
0xc0
00111111B
0x3f
1
11111001B
0xf9
00000110B
0x06
2
10100100B
0xa4
01011011B
0x5b
3
10110000B
0xb0
01001111B
0x4f
4
5
6
7
8
9
A
B
C
D
E
F
H
L
P






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1