找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9188|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

if、switch語句處理按鍵顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:70976 發(fā)表于 2014-12-27 19:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

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


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

顯示字型
共陽極數(shù)碼管顯示碼
共陰極數(shù)碼管顯示碼
二進制
十六進制
二進制
十六進制
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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表