找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8521|回复: 0
收起左侧

if、switch语句处理按键显示

[复制链接]
ID:70976 发表于 2014-12-27 19:25 | 显示全部楼层 |阅读模式

一、目的:
1Proteus仿真软件调试单片机及其程序。
2if语句应用。
3switch-case语句应用
3、数码管显示程序设计法,按键处理程序设计。
二、数码管显示知识。
共阳极数码管、共阴极七段数码管显示代码。数码管和按键与单片机的连接接法如下:


三、按键处理与显示程序设计
任务:按下按键,显示对应的键值01234567
程序设计思路:判断连接在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   
        }
      }
     }
四、课堂任务:
按键名称用字母定义,按下按键,显示AbCdEFgH。分别用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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表