资源描述:
《单片机的键盘与数码显示电路》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章扫描数码管、键盘与点阵显示7.1扫描数码管显示(1)直接扫描数码管采用单独的引脚输出段码与位码,占用I/O引脚少,引脚数量等于8位(段码)加数码管的数量(位码),节省电源功率,但是浪费CPU时间,因为必须定时更换段码与位码,保证显示的连续性。需要点亮一个数码管一段时间(持续1ms以上),再切换到另外一个。例如三个数码管组成的显示器,数码管的工作点电流为10mA,2V压降,则可以采用30mA,33%占空比的电流工作,若是每个数码管显示时间为5ms,需要15ms完成一次显示,则每个数码管的闪烁频率为66H
2、z。若是增加数码管数量,则占空比降低,若要保证亮度需要增加电流,但是最大不要超过100mA。图所示的是共阴极数码管的扫描工作接线图。段驱动连接器IDATA与51单片机的P0口相连,位驱动连接器IDS与P2口相连,段驱动信号高电平有效,驱动晶体三极管9013的信号也是高电平有效。[例题7-1]直接扫描数码管8位共阴极数码管,采用扫描方式。输出1、2、3、4、5、6、7、8。#includeunsignedcharcodetable1[]={0x3f,0x06,0x5b,0x4f,0x66
3、,0x6d,0x7d,0x07,0x7f,0x6f};//段码,高电平有效unsignedcharcodetable3[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//位码,高电平有效unsignedchari;//i是数码管扫描变量unsignedchara,b;//a、b是循环变量voidmain(void){while(1){for(i=0;i<8;i++){P0=table1[i];//P0口输出段码,显示变量iP2=table3[i];//P2输出位码,
4、驱动9013晶体管for(a=4;a>0;a--)//循环延时for(b=248;b>0;b--);}}}(2)总线法扫描数码管采用两个8D锁存器74373分时锁存段码与位码,则可以节省I/O引脚,例如8位数码管扫描显示可以采用10个I/O口实现。其中8位用来分时送段码与位码,另外2位用于连接74373的锁存控制端,分别控制锁存段码与位码。图中的D0~D7信号与P3口相连,LE1与LE2与P2_0和P2_1引脚相连。D0~D7信号分时送出段码与位码。74373功能为:OE是输出使能控制,OE=1时,输出高阻
5、,OE=0时,输出等于锁存器输出。LE为锁存控制端,LE=1时,锁存器输出与输入相同,LE=0时,锁存器锁存输入信号。[例题7-2]采用总线法扫描数码管,8位共阴极数码管,显示输出数字1、2、3、4、5、6、7、8。源程序如下:#includeunsignedcharcodetable1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段码,高电平有效unsignedcharcodetable3[]={0xfe,0xfd,
6、0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位码,低电平有效unsignedchari;//i是数码管扫描变量unsignedchara,b;//a、b是循环变量voidmain(void){while(1){for(i=0;i<8;i++)//数码管扫描循环{P2_0=1;//使LE1=1P3=table1[i];//P3口输出变量i的段码P2_0=0;//使LE1=0,74373锁存段码P2_1=1;//使LE2=1P3=table3[i];//P3口输出第i位位码P2_1=0;/
7、/使LE2=0,74373锁存位码for(a=5;a>0;a--)//延时for(b=248;b>0;b--);}}}7.2扫描键盘扫描式键盘又叫行列式键盘或矩阵式键盘。用I/O口线组成行列结构,按键设置在行列的交点上。例如用2×2的行、列结构可构成4个键的键盘,4×4的行列结构可构成16个键的键盘。因此,在按键数量较多时,可以节省I/O口引脚。行、列线分别连接到按键开关的两端。行线通过上拉电阻接到电源VCC,被钳位在高电平状态。键盘中有无按键按下的判断方法是:将列线的所有I/O线均置成低电平,然后将行线电
8、平状态读入。如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入不全为1。若是列线为高4位,则可以判断低4位,如果低4位不全为1,则有按键按下。键盘中哪个键按下的判断方法是:由列线逐列置低电平后,检查行输入状态而确定的。其方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列。而且是在此列与电平为0的行线相交的交点上的那个键。一旦找到哪个按键按下