实验2-石雅文-0129

一、实验目的

根据在大开发板上独立按键的实验在小开发板实现,完成实验代码的移植。

二、实验器材

Keil 5软件、计算机、小开发板、烧录软件

三、实验原理

(一)大板数码管结构

图片.png

通过三八译码器实现三位信号来控制位选信号,故在代码中定义三个位选信号。

(二)小板数码管结构

图片.png

小板位选信号由P2.0,P2.1,P2.2,P2.3四口控制。

(三)异同点

(1)大板使用三八译码器连接位选信号,是用三位信号控制,小板没有使用三八译码器,直接由四口控制,故位选信号为4位。
(2)大板为共阴极电路,小板为共阳极电路,故小板的位选信号为高电平有效,段选信号为低电平有效。
(3)小板的位选信号为8位,分别是7个线加上1个点。分别是 a,b,c,d,e,f,g,dp 从上端开始逆时针转动,到中间横线再到点dp,习惯以“a”段对应字形码字节的最低位,故从最高位到最低位分别是dp,g,f,e,d,c,b,a,故可写出段选信号,对应字形码如下图:


#

四、代码实现

                  独立按键实验                                                 
实现现象:下载程序后按下K1按键可以对D1小灯状态取反。
注意事项:无                                                                                
***************************************************************************************/
#include <reg52.h>           //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16;     //对数据类型进行声明定义
typedef unsigned char u8;
sbit LSA=P2^0;//为定义位选信号的端口
sbit LSB=P2^1;
sbit LSC=P2^2;
sbit LSD=P2^3;
sbit K3=P3^5;//定义按键

u8 code smgduan [17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};//
u8 number[4]={0,0,0,0};

/*******************************************************************************
* 函 数 名         : delay
* 函数功能         : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
    while(i--); 
}

/*******************************************************************************
* 函 数 名         : DigDisplay
* 函数功能         : 按键处理函数,判断位选信号
*******************************************************************************/
void DigDisplay()
{
 u8 i;
 for(i=0;i<4;i++)//依次显示每位数字
 {
 switch(i)
 {
 case(0):
  LSA=1;LSB=1;LSC=1;LSD=0;break;
    case(1):
  LSA=1;LSB=1;LSC=0;LSD=1;break;
    case(2):
  LSA=1;LSB=0;LSC=1;LSD=1;break;
    case(3):
  LSA=0;LSB=1;LSC=1;LSD=1;break;
 }
 P0=smgduan[number[i]];//显示第i位数字的字形码
 delay(100);
 P0=0xff;//消隐
 }
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能       : 主函数
* 输    入       : 无
* 输    出         : 无
*******************************************************************************/
void main()
{   
u16 n=0,m=0;
u8 i=0;
K3=1;
    while(1)
    {   
    if(K3==0)//当按键被按下时
    {
    while(K3==0); //等待按键按键抬起,确保按动一下,计数加1,防止所加过多
    n++;
    m=n;
    for(i=0;i<4;i++)
    {
    number[i]=m%10;
    m=m/10;
    }
    }   
    DigDisplay();
    }       
}

五、试验流程

1.分析大板和小板的原理结构图,找出区别。
2.根据区别,在Keil5中将大板代码改写为小板使用的代码,以便在小板内正常运行。
3.通过烧录软件运行编写程序。

六、实验结果

按键过程中部分照片展示


IMG20180519192831.jpg
IMG20180519192836.jpg
IMG20180519192840.jpg
IMG20180519192847.jpg
IMG20180519192852.jpg
IMG20180519192859.jpg

七、实验总结

1.注意小板使用的是四个端口,不同于大板的三个端口。
2.延时和消隐功能不能忘记。
3.编写代码时要谨慎小心,以免出现运行检查不出来的错误。
4.小板字形码编写的原则比大板相对复杂,可列表写出。小板是共阳极,位选高电平有效,段选低电平有效,大板是共阴极,位选是低电平有效,段选是高电平有效。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 独立按键移植小板实验 教育学部电教本1601柳珏玺 201612030101 一、单片机的使用: 使用小板独立按键...
    柳珏玺0101阅读 515评论 0 5
  • 一、实验内容 将大板的“按键控制数码管”改成适合小板的程序。(每按一次独立按键,数码管的数值增1) 二、大小板的差...
    吴思思0130阅读 324评论 0 2
  • 按键加一4位显示--小板 一、实验内容 通过模仿理解大板按键加一的程序,将其在小板上实现每按一次键,数字加1,十进...
    于钦春0111阅读 263评论 0 0
  • ​​​本文主要介绍嵌入式系统的一些基础知识,希望对各位有帮助。 嵌入式系统基础 1、嵌入式系统的定义 (1)定义:...
    OpenJetson阅读 3,365评论 0 13
  • 今儿个周末。都五天没有和家人共进晚餐啦,又是结婚七年的纪念日。临下班,一把手又叫着吃饭。吃神马饭?主要是喝酒。怪只...
    斯麦尔阅读 640评论 2 10