一、实验目的
根据在大开发板上独立按键的实验在小开发板实现,完成实验代码的移植。
二、实验器材
Keil 5软件、计算机、小开发板、烧录软件
三、实验原理
(一)大板数码管结构
通过三八译码器实现三位信号来控制位选信号,故在代码中定义三个位选信号。
(二)小板数码管结构
小板位选信号由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.通过烧录软件运行编写程序。
六、实验结果
按键过程中部分照片展示
七、实验总结
1.注意小板使用的是四个端口,不同于大板的三个端口。
2.延时和消隐功能不能忘记。
3.编写代码时要谨慎小心,以免出现运行检查不出来的错误。
4.小板字形码编写的原则比大板相对复杂,可列表写出。小板是共阳极,位选高电平有效,段选低电平有效,大板是共阴极,位选是低电平有效,段选是高电平有效。