欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

作者: daniu    時間: 2014-12-27 19:25
標題: if、switch語句處理按鍵顯示

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


三、按鍵處理與顯示程序設計
任務:按下按鍵,顯示對應的鍵值0、1、2、34、567。
程序設計思路:判斷連接在P3口的按鍵按下,根據按鍵按下端口對應的值,對P2口輸出相應的共陽極數碼管顯示段碼。
1、if語句編寫程序
/************************************************
按鍵顯示程序
設計:黃有全
2010年10月7日
關鍵詞:if語句、switch-case語句應用
單片機硬件連接:P3口接按鍵,P2口接共陽極數碼管,靜態顯示。
************************************************/
    #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};
                          //數組,定義共陽極數碼管顯示段碼:0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F,H,L,P,-,熄滅。
  
    void delay(int i)     //延時函數,帶參數i。
    {                     //在調用函數時通過設置參數,改變延時時間。
      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語句程序設計
/************************************************
按鍵顯示程序
設計:黃有全
2010年10月7日
關鍵詞:if語句、switch-case語句應用
單片機硬件連接:P3口接按鍵,P2口接共陽極數碼管,靜態顯示。
************************************************/
    #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};
                          //數組,定義共陽極數碼管顯示段碼:0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F,H,L,P,-,熄滅。
  
    void delay(int i)     //延時函數,帶參數i。
    {                     //在調用函數時通過設置參數,改變延時時間。
      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   
        }
      }
     }
四、課堂任務:
按鍵名稱用字母定義,按下按鍵,顯示A、bC、d、EF、g、H。分別用if語句和switch-case語句編寫程序,實現這個功能。

顯示字型
共陽極數碼管顯示碼
共陰極數碼管顯示碼
二進制
十六進制
二進制
十六進制
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.raoushi.com/bbs/) Powered by Discuz! X3.1