没按键一次,会把按键控制数码管加减的数字左移,或右移动,怎么设计

导读:数码管显示与键盘扫描系统,它由主机、键盘、显示器等组成,这种计算机就是把智能赋予各种机械的单片机(亦称微控制器),这种计算机的最小系统只用了一片集成电路,各种产品一旦用上了单片机,可能就卡在产品未使用单片机或其它可编程逻辑器件上,数码管显示与键盘扫描系统是单片机系统中十分典型的应用,可将4×4键盘的按键对应显示在数码管上,关键词:单片机数码管,用单片机驱动LED数码管有很多方法,按显示方式可分
数码管显示与键盘扫描系统
现如今已经跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。这种计算机的最小系统只用了一片集成电路,就可进行简单运算和控制。因为它体积小,通常都是放置在一个机械装置的内部。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词――“智能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。数码管显示与键盘扫描系统是单片机系统中十分典型的应用,可将4×4键盘的按键对应显示在数码管上。
关键词:单片机
1. 研究意义
用单片机驱动LED数码管有很多方法,按显示方式可分静态显示和动态(扫描)显示;按译码方式可分硬件译码和软件译码。静态显示数据稳定,占用很少的CPU时间。动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。LED数码管的外围电路一般需要一个限流电阻和加大驱动电流的晶体管。
LED数码管是由发光二级管显示字段组成的显示器,有“8”字段和“米”字段之分,这种显示器有共阳极和共阴极两种。实际上不用驱动电路即可达到正常亮度,为了可靠性设计可采用晶体管构成驱动电路。
2. 设计目的
在单片机的产品设计中,人机界面是非常重要的部分,而且随着系统的日益复杂,以及人们对产品的人机交互能力的要求不断提升,常握单片机系统中的人机界面基础设计能力成为了学习单片机的基础课程,而4X4键盘的操作和LED数码管的动态显示是人机界面设计的基础内容,掌握这些基础设计能力,加深对人机界面的认识,同时提高人机界面系统设计能力。
3.研究范围及技术要求 半导体数码管,4×4键盘。做此实验用51板,因为51板提供了相应的LED模组,LED显示器是单片机应用中常用的输出器件,4×4键盘的扩展显示也是在MCS-51上进行实验。给 4×4 键盘的每个键定义一个功能,其中把定义为 0~9 的键盘称为数字键,把定义成 DEL 的键称为删除键,把定义成 ENT 的键成为确认键,其他键称为保留键。如果是数字键按下,把代表数字显示在数码管上:按键按下时,6 位数码管靠右边显示该键的代表数字;继续按键时,已经显示在数码管上的数字左移一位,按键代表的数字显示在最右边的数码管上。
4.发展及指导思想
单片机在开发过程中 ,常常会因为资源不足而不得不大量扩展接口芯片以满足应用系统的需要。国外主要采用串行接口的键盘显示专用芯片,如BC7280/81、HD7279、CH451等。这类芯片占用CPU的资源少,传输速度较快,外围器件要求也较少,在中小系统中都可得到广泛的应用。指导思想主要是用串行接口使得键盘的扩展在LED上显示。
二、方案论述
1.数码管工作原理
数码管由 8 个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字 0~ 9,字符 A~F、H、L、P、R、U、Y 等符号及小数点“.”。 数码管又分为共阴极和共阳极两种类型。共阳极数码管中 8 个发光二极管的阳极(二极管正端)连接一起,即为共阳极接法,简 称共阳数码管。通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。 当某段驱动电路的输入端为低电平时,该端所连接的字段导通并点亮。根据发光字段的不 同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需 根据外接电源及额定段导通电流来确定相应的限流电阻。 共阴极数码管中 8 个发光二极管的阴极(二极管负端)连接在一起,即为共阴极接法, 简称共阴数码管。通常,共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。 当某段驱动电路的输出端为高电平时,该端所连接的字符导通并点亮,根据发光字段的不 同组合可显示出各种数字或字符。同样,要求段驱动电路能提供额定的段导通电流,还需 根据外接电源及额定段导通电流来确定相应的限流电阻。
单片机数码管显示控制程序设计仿真图
4×4行列式键盘的工作原理 行列式键盘的工作方式是先用列线发送扫描字,然后读取行线的状态,查看是否有按键按下。键盘部分提供一种扫描的工作方式,可以和具有64个按键的矩阵键盘相连接,能对键盘不断扫描、自动消抖、自动识别按下的键,并给出编码,能对双键或n个键同时按下的情况实行保护。
在显示部分,它可以为发光二极管、荧光管及其他显示器提供按扫描方式工作的显示接口,而且为显示器提供多路复用信号,可以显示多达16位的字符或数字。
键盘中有无按键按下是由列线送入全扫描字、行线读入行线状态来判断的,其方法是将列线的所有I/O线均置成低电平,然后将行线电平状态读入累加器A中,如果有键按下,总会有一根行线被拉至低电平,从而使行输入不全为1。
键盘中哪一个键按下可由列线逐列置低电平后,检查行输入状态来判断,其方法是依次给列线送低电平,然后检查所有行线状态,如果全为1,则所按下的键不在此列,如果不全为1,则所按下的键必在此列,而且是在与0电平线相交的交点上的那个键。
包含总结汇报、旅游景点、IT计算机、文档下载、党团工作、外语学习、资格考试、计划方案、办公文档以及单片机数码管显示系统课程设计等内容。本文共3页
相关内容搜索按键控制字符串在数码管上移动显示
> 按键控制字符串在数码管上移动显示
按键控制字符串在数码管上移动显示
//---------------------------------//按键控制字符串在数码管上移动显示//1、P30控制移动方向//2、P31加速度//3、P32减速度//4、每移动完整一次蜂鸣器响一下;////本文引用地址:#include#define uint unsigned int#define uchar unsigned charuchar code dula[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};uchar wula[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0,0,0};uchar table[6]={1,2,0,0,4,8};//要显示的字符串uchar temp[6]={10,10,10,10,10,10};//显示缓冲区sbit arrow=P3^0;//?30控制移动方向sbit jia=P3^1;//P31加速度sbit jian=P3^2;//P32减速度sbit beep=P1^5;//每移动完整一次蜂鸣器响一下;uchar num1,num2,miao,flag5ms,flag100ms,flag1s,i,N,void delay(uint z);void display();void tinic();void main(){ N=5; tinic(); while(1) {
if(arrow==0) delay(100); if(arrow==0) {while(arrow==0); flagarrow=~ miao=0;for(i=0;i<6;i++)//按一次变动方向,要对显示缓冲区清空temp[i]=10;//不显示 }if(jia==0) delay(100); if(jia==0) {while(jia==0);if(N<2) N=1;else N--;}if(jian==0) delay(100); if(jian==0) {while(jian==0);N++;if(N>10) N=10;} display(); if(flagbeep=1){flagbeep=0;if(miao<1)beep=0; else beep=1;} }}//-------------------void timer0() interrupt 1{TH0=()/256;TL0=()%256;num1++;flag5ms=1;if(num1==20){ num1=0; num2++; flag100ms=1; if(num2==N) {num2=0; miao++; if(miao>5) {miao=0;flagbeep=1;for(i=0;i<6;i++)//移动完一次要对显示缓冲区清空temp[i]=10;}//不显示flag1s=1;}}}//----------------------void tinic(){TMOD=0x01;ET0=1;EA=1;TH0=()/256;TL0=()%256;TR0=1;}void delay(uint z){uint x,y;for(x=0;x<z;x++)for(y=0;y<112;y++);}//=void display(){ if(flagarrow==1) switch(miao){case 0:temp[0]=table[5];case 1:temp[0]=table[4]; temp[1]=table[5];case 2:temp[0]=table[3]; temp[1]=table[4]; temp[2]=table[5]; case 3:temp[0]=table[2]; temp[1]=table[3]; temp[2]=table[4]; temp[3]=table[5];case 4:temp[0]=table[1]; temp[1]=table[2]; temp[2]=table[3]; temp[3]=table[4]; temp[4]=table[5];case 5:temp[0]=table[0]; temp[1]=table[1]; temp[2]=table[2]; temp[3]=table[3]; temp[4]=table[4]; temp[5]=table[5];} if(flagarrow==0) switch(miao){case 0:temp[5]=table[0];case 1:temp[4]=table[0]; temp[5]=table[1];case 2:temp[3]=table[0]; temp[4]=table[1]; temp[5]=table[2]; case 3:temp[2]=table[0]; temp[3]=table[1]; temp[4]=table[2]; temp[5]=table[3];case 4:temp[1]=table[0]; temp[2]=table[1]; temp[3]=table[2]; temp[4]=table[3]; temp[5]=table[4];case 5:temp[0]=table[0]; temp[1]=table[1]; temp[2]=table[2]; temp[3]=table[3]; temp[4]=table[4]; temp[5]=table[5];} for(j=0;j<6;j++){P0=dula[temp[j]];P2=wula[j];delay(5);}}
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
实验三键盘接口和七段数码管的控制实验.doc 6页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
&#xe600;下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:150 &&
你可能关注的文档:
··········
··········
实验三键盘接口和七段数码管的控制实验
—— 栗晋鹏一、实验目的1.学习4X4键盘的与CPU的接口原理2.掌握键盘芯片HD7279的使用,及8位数码管的显示方法;二、实验内容1.通过4X4按键完成在数码管上的各种显示功能,以及LCD上显示。2.设计程序按键值显示在数码管中,要求数码管自最低位向左移动显示。三、实验设备EL-ARM-830+教学实验箱,PentiumII以上的PC机,仿真调试电缆。2.PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序。四、实验原理键盘和7段数码管的控制实验,是通过键盘的控制芯片HD7279A来完成的。它的信号线及控制线连接到S3C2410上,驱动线直接连到8位共阴的7段数码管上。由于其芯片的接口电压是5V的,而S3C2410的接口电压是3.3V,所以,HD7279A的信号、控制线经过CPLD把电压转换到3.3V,然后送入CPU中。HD7279是一片具有串行接口的可同时驱动8位共阴式数码管或独立的LED的智能显示驱动芯片。该芯片同时还可连接多达64键的键盘矩阵,单片即可完成显示键盘接口的全部功能。内部含有译码器可直接接受BCD码或16进制码并同时具有两种译码方式。此外还具有多种控制指令如消隐、闪烁、左移、右移、段寻址等,具有片选信号可方便地实现多于8位的显示或多于64键的键盘接口。HD7279在与S3C2410接口中,它使用了4根接口线。片选信号#CS(低电平有效),时钟信号CLK,数据收发信号DATA,中断信号#KEY(低电平送出),EL-ARM-830+实验箱与其的接口中,使用了三个通用I/O接口,和一个外部中断,实现了与HD7279A的连接,S3C2410的外部中断接HD7279的中断#KEY,三个I/O口分别与HD7279A的其他控制、数据信号线相连。HD7279的其他管脚分别接4X4按键和8位数码管。当程序运行时,按下按键,平时为高电平的HD7279A的#KEY就会产生一个低电平,送给S3C2410的外部中断5请求脚,在CPU中断请求位打开的状态下,CPU会立即响应外部中断5的请求,PC指针就跳入中断异常向量地址处,进而跳入中断服务子程序中,由于外部中断4/5/6/7使用同一个中断控制器,所以,还必须判断一个状态寄存器,判断是否是外部中断5的中断请求,当判断出是外部中断5的中断请求,则程序继续执行,CPU这时,通过发送#CS片选信号选中HD7279A,再发送时钟CLK信号和通过DATA线发送控制指令信号给HD7279A,HD7279A得到CPU发送的命令后,识别出该命令,然后,扫描按键,把得到键值回送给CPU,同时,在8位数码管上显示相关的指令内容,CPU在得到按键后,有时,程序还会给此键值一定的意义,然后再通过识别此按键的意义,进而进行相应的程序处理。五、实验步骤1.本实验使用实验教学系统的CPU板,键盘、8位数码管。在进行本实验时、AD通道选择开关、LCD电源开关、音频的左右声道开关、触摸屏中断选择开关等均应处在关闭状态。2.在PC机并口和实验箱的CPU板上的JTAG接口之间,连接仿真调试电缆,以及串口间连接公/母接头串口线。3.打开超级终端,配置串口的属性(如COM1),配置波特率为115200,校验位无,数据位为8,停止位为1,数据控制流为无;检查连接是否可靠,可靠后,接入电源线,系统上电,同时按住“空格”键,进入VIVI状态。4.打开ADS1.2开发环境,从里面打开\实验程序\HARDWARE\ADS\实验十一\Key_Led.mcp项目文件,进行编译。5.编译通过后,进入ADS1.2调试界面,加载实验程序\HARDWARE\ADS\实验十一\Key_Led_Data\Debug中的映象文件程序映像Key_Led.axf。6.在ADS调试环境下全速运行映象文件。按下任意键值,观察数码管的显示。说明:“0”键表示数码管测试,8个数码管闪烁,“4”键表示数码管复位,“1”键表示数码管右移8位,“2”键表示数码管循环右移,“9”键表示数码管左移8位,“A”键表示数码管循环左移。其他按键在最右两个数码管上显示键值。根据HD7279A.PDF文档可以进一步开发具体的相应的程序。7.修改main.c代码,实现程序按键值显示在数码管中,要求数码管自最低位向左移动显示。修改后main.c代码:#include&..\INC\config.h&voidMain(){
Target_Init();//目标初始化
while(1) {
switch(key_number)
send_byte(cmd_test); //测试键
正在加载中,请稍后...单片机学习按键控制数码管移位显示-原创视频-搜狐视频
单片机学习按键控制数码管移位显示
<span class="c-black" data-rss-fanscount=" 人订阅
视频介绍:
实验效果:矩阵键盘控制数码管移位显示,就像使用计算器一样来显示输入的...
推荐出品人

我要回帖

更多关于 fpga按键控制数码管 的文章

 

随机推荐