四乘四键盘控制LED数码管显示电路.doc
四乘四键盘显示

四乘四键盘显示一、设计要求4*4矩阵键盘共16个键,每按一次键,数码管就显示一次按键代表的值。
二、元件选取单片机:STC89C52RC;电阻:470Ω;发光二极管;4*4键盘;共阳极七段数码管三、设计思想本设计硬件上采用STC89C52RC单片机的最小系统,单片机的P1口与键盘相连,P1.0—P1.3管脚分别与键盘的四行连接,P1.4—P1.7管脚分别与键盘的四列相连;P0口P1.0—P1.7管脚与数码管1的a—dp相连,P2口P2.0—P2.7管脚分别与数码管2的a—dp相连,数码管的公共端接+5V电源,控制数码管的显示;发光二极管的阴极与单片机的P3.0管脚连接,阳极与+5V电源连接,低电平有效,控制二极管发光;程序上采用定时扫描方式,利用定时T0产生50ms定时中断,CPU响应中断后进入Scan_Key()子程序对键盘进行扫描,对P1口初值0xf7扫描第一行,进入延时程序消抖动后,进入switch()语句,屏蔽行的低四位,取列的高四位,检测哪一列有键按下,若有键按下,标志位FLAG0=1,发光二极管的到低电平发光;令P1口的初值右移一位后或0x80进行高位补一,扫描第二行,如此循环右移,四行便全都检测到了。
当有键按下时,m!=0xf0,进入while循环不停地执行m&0xf0语句,使m=0xf0;按键松开后,m=0xf0跳出while循环,执行中断程序,显示按键的值。
如此软件与硬件结合,能合理的完成设计要求,每按一次键,数码管就显示一次按键代表的值。
四、原理图四、程序流程五、调试过程调试过程中,遇到了以下问题:一是数码管不能正常显示,经检查是数码管公共端未接电源,连接后数码管还是不能正常显示,经检查是单片机接触不良,将单片机拔出,对照底座重新插入,然后在仿真数码管显示正常;二是发光二极管在按键按下后不能正常发光,经检查是软件编程存在缺陷,定时时间短,单片机接收不到二极管的低电平,故不发光。
实验四4×4键盘输入

实验四: 4 × 4键盘输入实验一、实验目的:1.学习非编码键盘的工作原理和键盘的扫描方式。
2.学习键盘的去抖方法和键盘应用程序的设计。
二、实验原理:键盘是单片机应用系统接受用户命令的重要方式。
单片机应用系统一般采用非编码键4*4矩阵盘,需要由软件根据键扫描得到的信息产生键值编码,以识别不同的键。
本板采用键盘,行信号分别为P1.0-P1.3 ,列信号分别为P1.4-P1.7 。
具体电路连接见下图对于键的识别一般采用逐行(列)扫描查询法,判断键盘有无键按下,由单片机I/O口向键盘送全扫描字,然后读入列线状态来判断。
程序及流程图:ORG 0000HAJMP MAINORG 0000HAJMP MAINORG 0030HMAIN:MOV P2,#0F7HMOV P1,#0F0HMOV R7,#100DJNZ R7,$MOV A,P1ANL A,#0F0HXRL A,#0F0HJZ MAINLCALL D10MSMOV A,#00HMOV R0,AMOV R1,AMOV R2,#0FEH SKEY0:MOV A,R2MOVP1,AMOVR7,#10DJNZ R7,$MOVA,P1ANLA,#0F0HXRLA,#0F0HJNZ LKEYINC R0MOVA,R2RL AMOVR2,AMOVA,R0CJNE A,#04H,SKEY0AJMP MAIN LKEY:JNB ACC,4,NEXT1MOVA,#00HMOVR1,AAJMP DKEYNEXT1:JNB ACC.5,NEXT2MOVA,#01HMOVR1,AAJMP DKEYNEXT2:JNB ACC.6,NEXT3MOVA,#02HMOVR1,AAJMP DKEYNEXT3:JNB ACC.7,MAINMOVA,#03HMOVR1,AAJMP DKEY DKEY:MOV A,R0MOVB,#04HMULABADDA,R1AJMP SQRSQR:MOVDPTR,#TABMOVC A,@A+DPTRMOVP0,AAJMP MAINTAB:DB0C0H,0F9H,0A4H,0B0H,99H, 92H, 82H, 0F8H DB 80H, 90H, 88H, 83H, 0C6H,0A1H,86H, 8EH D10MS:MOV R6,#10L1:MOV R5,#248DJNZ R5,$DJNZ R6,L1RETEND流程图:结束三、思考题:总结 FPGA是如何识别按键的?与单片机读取键值有何不同?答:FPGA的所有 I/O 控制块允许每个 I/O 引脚单独配置为输入口 , 不过这种配置是系统自动完成的。
数码管显示4×4矩阵键盘的键盘号程序解释好了大作业.doc

《单片机原理及应用课程设计》报告——数码管显示4×4矩阵键盘的键盘号专业:电子信息科学与技术班级:姓名:学号:指导教师:2012年5月15日1、课程设计目的1.1巩固和加深对单片机原理和接口技术知识的理解;1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。
2、课程设计要求单片机的P1口的P1.0~P1.7连接4×4矩阵键盘,P0口控制一只数码管,当4×4矩阵键盘中的某一按键按下时,数码管上显示对应的键号。
例如,1号键按下时,数码管显示“1”, 14号键按下时,数码管显示“E”等等。
3、硬件设计3.1 设计思想分析本任务的要求,在课程设计的基础上,添加要求,使设计能够完成当4×4矩阵键盘中的某一按键按下时,数码管上显示对应的键号。
3.2主要元器件介绍:AT89C51单片机 LED数码管 4X4矩阵键盘3.3 功能电路介绍AT89C51单片机:控制器。
程序中将单片机的引脚置高电平低电平,单片机通过读取IO引脚的电平,在根据读取的数据去查找数组中相应的按键值,然后在送到数码管也就是P0口去显示.(51单片机通过IO口来读取键盘的电平,再通过程序来查找对应的数值,在送到数码管去显示)LED数码管 :输出设备4X4矩阵键盘:输入设备4、软件设计4.1 设计思想通过对矩阵键盘的逐行扫描,来获得所按下键的键盘号,最终通过数码管显示出来。
4.2软件流程图4.3源程序#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};//定义显示段码uchar num,temp;void delay(uchar k)//定义延时函数{uchar i,j;for(i=k;i>0;i--)for(j=110;j>0;j--);}void disp(char num1)//定义显示函数{P0=table[num1];//将段码值送入P0口显示}char keyscan()//定义键盘检测函数{P1=0xfe;//给P1口送检测信号11111110,即先检测第一列有无按键被按下(key1~key4)temp=P1;//将检测信号赋给变量temptemp=temp&0xf0;//与11110000相“与”去除低四位检测部分while(temp!=0xf0)//判断是否有按键被按下,即key1-key4有任意按键被按下temp便不等于0xff{delay(5);//按键防抖动延时(时间要求不严格)while(temp!=0xf0)//延时之后再次判断{temp=P1;//进入函数说明有按键被按下,再将p1值赋给temp进行判断是哪位被按下switch(temp)//利用switch函数判断temp值{case 0xee://若P0等于0xee,即11101110,则由判断为0的位被按下即第四位(最低位),则应赋值num为0;num=0;break;case 0xde://11011110同理判断其为第三位被按下(该行第二位)num=1num=1;break;case 0xbe://同上则num=2num=2;break;case 0x7e://同上num=3num=3;break;}while(temp!=0xf0)//判断按键是否松开,循环判断直至按键松开{temp=P1;temp=temp&0xf0;}}}P1=0xfd;//给P1口再次送检测信号11111101,来检测第二列有无按键被按下(key5~key8),以下几步同上temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);while(temp!=0xf0){temp=P1;switch(temp){case 0xed:num=4;break;case 0xdd:num=5;break;case 0xbd:num=6;break;case 0x7d:num=7;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfb;//给P1口再次送检测信号11111011,来检测第三列有无按键被按下(key9~key12),以下几步同上temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);while(temp!=0xf0){temp=P1;switch(temp){case 0xeb:num=8;break;case 0xdb:num=9;break;case 0xbb:num=10;break;case 0x7b:num=11;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xf7;//给P1口再次送检测信号11110111,来检测第四列有无按键被按下(key13~key16),以下几步同上temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);while(temp!=0xf0){temp=P1;switch(temp){case 0xe7:num=12;break;case 0xd7:num=13;break;case 0xb7:num=14;break;case 0x77:num=15;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}return num;//子函数最后返回num值}void main(){P0=0x00;//清屏delay(5);//延时while(1)//主循环{disp(keyscan());//检测并显示}}}。
4X4矩阵键盘控制数码管显示按键值

4X4矩阵键盘控制数码管显示按键值4X4矩阵键盘控制数码管显示按键值一、设计内容与要求用80C51单片机控制系统显示按键值0~F。
二、设计目的意义2.1 设计目的1、了解单片机系统中实现LED动态显示的原理及方法;2、详细了解8051芯片的性能及编程方法;3、了解单片机系统基本原理,了解单片机控制原理;4、掌握AT89C51输入/输出接口电路设计方法;5、掌握AT89C51程序控制方法;6、掌握单片机汇编编程技术中的设计和分析方法;7、掌握使用PROTEUS软件进行仿真的方法。
8、学会使用并熟练掌握电路绘制软件Protel99SE;9、掌握电路图绘制及PCB图布线技巧。
2.2 设计意义1、在系统掌握单片机相应基础知识的前提下,熟悉单片机应用系统的设计方法及系统设计的基本步骤。
2、完成所需单片机应用系统原理图设计绘制的基础上完成系统的电路图设计。
3、完成系统所需的硬件设计制作,在提高实际动手能力的基础上进一步巩固所学知识。
4、进行题目要求功能基础上的软件程序编程,会用相应软件进行程序调试和测试工作。
5、用AT89C51设计出题目所要求的数码管动态循环显示,并针对实际设计过程中软、硬件设计方面出现的问题提出相应解决办法。
6、通过单片机应用系统的设计将所学的知识融会贯通,锻炼独立设计、制作和调试单片机应用系统的能力;领会单片机应用系统的软、硬件调试方法和系统的研制开发过程,为进一步的科研实践活动打下坚实的基础。
三、系统硬件电路图3.1 Proteus软件简介以及仿真电路图Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、1ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
4×4矩阵键盘数码管显现按键值程序

4×4矩阵键盘数码管显现按键值程序4;x;4矩阵键盘数码管显现按键值程序//电路阐明如下。
//单片机:运用51系列兼容的即可;//4;x;4矩阵键盘:接在P1口;//两位数码显现器:P0口输出七段码,P2口输出位选码。
//===================================================== =========//C言语程序如下。
/****************************************************** ********文件名:KEY_LED.c*功用:对4;x;4矩阵键盘进行输出,在数码管后两位显现按键值。
******************************************************* *******/#includelt;reg51.h#includelt;intrins.h#defineuintunsignedint#defineucharunsignedchar//ucharcodetable[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x 01,0x09};ucharcodetable[10]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x8 0,0x90};/****************************************************** *********称谓:Delay_1ms()*功用:延时子程序,延时时刻为1ms*x*输入:x(延时一毫秒的个数)*输出:无******************************************************* ********/voidDelay_1ms(uintx){uinti;ucharj;for(i=0;ilt;x;i++)for(j=0;jlt;=148;j++);}/*******************************************************称谓:Keyscan()*功用:P1外接4;x;4按键,依照扫描法读出键值*输出:按键值0~15/如无键按下,回来16******************************************************* ********/ucharKeyscan(void){uchari,j,temp,Buffer[4]={0xef,0xdf,0xbf,0x7f};for(j=0;jlt;4;j++){//循环四次P1=Buffer[j];//在P1高四位别离输出一个低电平temp=0x01;//方案先判别P1.0位for(i=0;ilt;4;i++){//循环四次if(!(P1temp))//从P1低四位,截取1位return(i+j*4);//回来获得的按键值templt;lt;=1;//判别的位,左移一位}}return16;//判别完毕,没有键按下,回来16}//哈哈,实质性的句子不过8行,即是这么简练!/*******************************************************称谓:Display(uchark)*功用:将参数分红十位、个位别离显现*输入:k(键盘数值)*输出:P0口输出七段码,P2口输出位选码******************************************************* ********/voidDisplay(uchark){P2=0;//消隐P0=table[k/10];P2=0x02;Delay_1ms(5);//显现5ms十位P2=0;//消隐P0=table[k%10];P2=0x01;Delay_1ms(5);//显现5ms个位}/****************************************************** *********称谓:Main()*功用:主函数******************************************************* ********/voidMain(void){ucharKey_Value=16,Key_Temp1,Key_Temp2;//两次读出的键值while(1){//---------以下读入按键、消抖、等候按键开释P1=0xff;Key_Temp1=Keyscan();//先读入按键if(Key_Temp1!=16){//假如有键按下//Delay_1ms(10);//延时一下Display(Key_Value);//可用显现替代延时Key_Temp2=Keyscan();//再读一次按键if(Key_Temp1==Key_Temp2){//有必要是两次持平Key_Value=Key_Temp1;//才保留下来,这即是消除颤动while(Keyscan()lt;16)//等候按键开释Display(Key_Value);//等候时期显现键值//---------以下是对按键的处理Display(Key_Value);//显现键值}}Display(Key_Value);//没有按键按下,也显现键值}}//用PROTEUS仿真作业时的屏幕截图如下:。
4乘4矩阵键盘输入数码管显示四位数

沈阳航空航天大学综合课程设计三相步进电机控制器电路的设计班级学号 23学生姓名 XXXXXXXXX 指导教师常丽东课程设计任务书一、设计说明步进电机是工业过程控制及仪表控制中的主控元件之一,作为执行元件其特点为能够快速起启停、精度高且能直接接收数字量,由于这些特点使其在定位场合得到了广泛的应用。
设计一个三相步进电机控制器,使其能够控制步进电机的工作状态,如步进电机正、反转,步进电机的工作方式等。
用键盘设定步进电机的工作频率,工作方式,并用数码管显示设定值,可以通过按键来更换显示内容。
用示波器观测三相的输出波形,并用数码管显示电路的工作状态。
二、技术指标步进电机的工作频率为:<10kHz三、设计要求1.进行方案论证,提出一个合理的设计方案并进行理论设计;2.对所设计的方案部分进行调试;3.在选择器件时,应考虑成本。
4.设计测量调试电路。
四、实验要求1.根据技术指标制定实验方案;验证所设计的电路。
2.进行实验数据处理和分析。
五、推荐参考资料1.谢自美. 电子线路设计·实验·测试. [M]武汉:华中理工大学出版社,2000年2.阎石. 数字电子技术基础. [M]北京:高等教育出版社,2006年3.童诗白、华成英.模拟电子技术基础. [M]北京:高等教育出版社,2006年4..付家才. 电子实验与实践. [M]北京:高等教育出版社,2004年5.沙占友、李学芝著.中外数字万用表电路原理与维修技术. [M]北京:人民邮电出版社,1993年六、按照要求撰写课程设计报告成绩评定表沈阳航空航天大学综合课程设计一、概述本次毕设的题目是:三相步进电机控制电路的设计。
本次毕设使用80C51单片机作为主控芯片,利用ULN2003A集成电路作为三相步进电机的驱动电路,采用单极性驱动方式,使三相步进电机能在(1)三相单三拍,(2)三相双三拍,(3)三相六拍三种工作方式下正常工作;能实现的功能有:启动/停止控制、方向控制;速度控制;用LED数码管显示工作方式。
4×4 键盘矩阵控制条形LED显示

目录1 课程设计概述 (1)1.1设计目的 (1)1.2设计内容和要求 (1)1.3设计思路 (1)1.4系统设计 (1)1.5功能要求 (1)2 硬件开发平台 (2)3软件开发平台 (3)4硬件电路的设计 (4)4.1硬件电路的基本构成 (4)4.2硬件电路元器件 (4)4.3条形LED灯 (5)4.4硬件资源及其分配 (5)5程序设计 (7)5.1程序流程图: (7)5.2程序代码 (8)6.1运行结果描述 (10)6.2仿真结果图: (10)结论 (11)参考文献 (12)1 课程设计概述1.1设计目的1、通过单片机课程设计,熟练掌握C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
2、通过4×4 键盘矩阵控制条形LED显示系统的设计,掌握数码管的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力[1]。
1.2设计内容和要求内容:设计一个4×4 键盘矩阵控制条形LED显示。
要求:利用单片机的矩阵键盘,条形LED显示,第几个的按键对应的几个led 灯亮。
1.3 设计思路1.先熟悉实验原理,设计8×8LED点阵屏显示数字的工作过程,以及所需要的组件。
2.通过单片机的各个引脚的输出控制8×8LED点阵屏显示数字1.4系统设计通过编写程序,实现用中断系统对8×8LED点阵屏的控制,使其每延时一段时间,LED点阵的显示数字就会进行状态转换。
采用单片机内部的I/O口上的P0和P3口可来控制LED点阵。
1.5功能要求本设计能模拟基本的LED点阵显示系统,是用中断的方式定时控制LED点阵显示的内容变换。
定时/计数器工作方式寄存器,定时器采用T0定时器0工作于模式0 位数:13位计数范围:0-8192,每累计250次定时器中断才执行一次换数。
2 硬件开发平台3软件开发平台4硬件电路的设计4. 1硬件电路的基本构成4×4键盘矩阵控制条形LED显示系统,可用单片机的矩阵键盘的输入直接控制发光二极管LED灯的。
实验七 4X4矩阵键盘的显示电路

黄淮学院机械与能源工程学院
单片机应用技术课程报告
实验名称4X4矩阵键盘的显示电路实验时间年月日学生姓名实验地点钉钉群线上
同组人员专业班级汽服1802B
1、实验目的
1、能够在Keil软件中查看变量,掌握程序调试的基本方法;
2、掌握按键功能设计特点;
3、当键盘中按键数量较多时,为了减少I/O端口线的占用,通常将按键排列成矩阵形式,学习按键的相关知识。
2、任务设计要求
没有按键按下时,所有输出端均为高电平,即“1”,行线输入也是高电平,即“1”;有键按下时,相应列的输出为低电平,即“0”,对应行输入线也为低电平,即“0”。
通过检测输入线的状态可知是否有键按下。
通过51单片机P1端口构成4×4矩阵式键盘,要求:当按下某一按键时,在数码管显示该按键的值。
3、总体设计方案
根据实验任务要求,通过功能分析,设计的系统总体方案如图所示。
复习软件的使用方法,软件关键字如下:
4、硬件电路设计
5、软件程序设计
如果要实现上图所示电路中转向灯的控制,需要设计控制P1.0端口输出低电平,其设计思路如图所示。
(2)程序清单
#include <reg51.h>
#define uchar unsigned char
sbit L1=P1^4; // 定义列
sbit L2=P1^5;
sbit L3=P1^6;
sbit L4=P1^7;
按下相应的键就会显示对应的字母或数字。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四乘四键盘控制LED数码管显示电路
目录
一、设计内容及要求 (2)
二、系统硬件设计方案 (2)
三、系统软件设计 (8)
四、效果演示 (12)
摘要
矩阵式键盘系统以N个端口链接控制N*N个按键,使数字显示在LED数码管上。
单片机控制的是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备的硬件、软件等各个部分进行实现。
对于4*4矩阵式键盘,我想采用STC89C52RC单片机为核心,主要由矩阵式键盘电路、译码器、显示电路等组成,软件选用汇编语言编程。
单片机将检测到的按键信号转成数字量,显示于LED显示器上。
该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。
一、设计内容及要求
用protues仿真设计一个单片机小系统,该小系统外接一个4*4键盘及一个LED数码管,要求按下一个键,数码管上显示该键的对应号码。
键盘的布局如下图所示:
主要内容如下:
1.根据矩阵式键盘的特点,进行键盘控制系统的整体研究与设
计。
2.LED实时显示信息。
3.采用软件编程方法实现按键信息的提取和显示。
二、系统硬件设计方案
1.芯片的选择
STC89C52RC单片机是51系列单片机的一个成员,是8051单片机的简化版。
内部自带8K字节可编程FLASH存储器,拥有2K+字节的EEPROM作为程序存储器的拓展。
由于STC89C52RC具有下
图中的配置,因此具有结构简单、造价低廉、效率高的特点,省去了外部的RAM、ROM和接口器件,减少了硬件的开销,节省了成本,提高了系统的性价比。
STC89C52RC的主机系统图:
STC89C52RC的实物图:
2.系统原理图
2.1时钟电路
时钟电路用来提供单片机片内各种位操作的时间基准。
51单片机芯片内部有一个高增益反相放大器,用于构成时钟振荡电路,XTAL1为该放大器的输入端、XTAL2为该放大器的输出端。
借助内部时钟方式或外部时钟方式形成时钟。
如STC89C52RC的主机系统图所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反相放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。
STC89C52RC的主机系统图中外接晶体以及电容C1和C2构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值为
30pF左右,晶振频率选11.0529MHz。
2.2复位电路
计算机在启动运行时都需要复位,是CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。
单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。
复位后不会影响内部RAM中的数据,仅将PC指向0000H,SP指向07H。
复位操作形式有两种,即上电自动复位和按键手动复位。
本系统采用上电自动复位方式。
STC89C52RC的主机系统图中R1和C3组成上电复位电路,R取值为10KΩ,C3为10uF。
2.3矩阵式键盘电路
STC89C52RC单片机的并行口接4*4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;P1口输出按键信息,在数码管上显示按键“0-F”序号。
如STC89C52RC的主机系统图中所示。
2.4译码显示电路
显示器是最常用的输出设备,与单片机应用系统接口的显示器
主要是LED显示器和LCD显示器。
本系统输出结果用一个LED显示。
LED七段数码显示器由8个发光二极管组成显示字段,根据内部发光二极管的连接形式不同,LED有共阴极和共阳极两种,如下图所示。
译码器显示电路:
如STC89C52RC的主机系统图中所示,P3口连接的电路就是译码器显示电路。
当无按键闭合时,P1.0-P1.3与P1.4-P1.7之间开路。
当有按键闭合时,与闭合按键相连的两条I/0口线之间短路。
判断有无按键按下的方法是:
1.置列线P1.4-P1.7为输入状态,从行线P1.0-P1.3输
出低电平,读入列线数据,若某一列线为低电平,则
该列线上有键闭合
2.行线轮流输出低电平,从列线P1.4-P1.7读入数据,
若有列为低电平,则对应行线上有键按下。
综合1.2两步的结果,可确定按键编号。
但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按键一次键有可能会连续多次进行同样的键操作。
本显示电路功能简单,为使编程简单,采用直接输出模式,即把P0.0-P0.7端口用8芯排线连接到数码显示模块区域中的a-h端口上,要求:P0.0对应着a,以此类推。
LED显示段码如下:
三、系统软件设计
系统采用汇编语言编程实现其功能。
汇编语言克服使用机器语言编程的缺点,采用一些符号来代表地址或数据,简单明了。
程序是在Windows 7环境下采用protues软件编写的,可实现电路的仿真。
2.
2.相关数据
2.1相关变量:
R3、A、R1、R5、Cy。
2.2相关寄存器:
锁存器(特殊功能寄存器P0-P3)、累加器ACC、堆栈指针SP、数据指针DPTR、程序计数器PC
2.3存储单元:
片内RAM的00H-FFH、片外RAM的0000H-FFFFH、片内ROM 的0000H-FFFFH、片外ROM的0000H-FFFFH
2.系统程序设计
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV P3,#00H
L1:
MOV R3,#0F7H ;键盘行扫描的初值
MOV R1,#00H ;TABLE2的取码指针
L2:
MOV A,R3
MOV P1,A
MOV A,P1
MOV R4,A
SETB C ;C=1
MOV R5,#04H ;列扫描数
L3:
RLC A
JNC KEYIN ;C=0表示有按键
INC R1
DJNZ R5,L3 ;4列扫描完毕
MOV A,R3 ;扫描下一行
SETB C
RRC A ;带进位的右移
MOV R3,A
JC L2 ;4个行扫描完毕
JMP L1
KEYIN:
MOV R7,#10 ;消除抖动10ms D2:
MOV R6,#248
DJNZ R6,$
DJNZ R7,D2
D3:
MOV A,P1 ;读入的键盘值是否与R4相等XRL A,R4
JZ D3 ;按键松开否
MOV A,R1
MOV DPTR,#TABLE2
MOVC A,@A+DPTR
MOV P3,A
JMP L1
TABLE2:
DB 4FH,5BH,06H,3FH,07H,7DH,6DH,66H
DB 7CH,77H,6FH,7FH,71H,79H,5EH,39H
END
四、效果演示
1.仿真演示
2.单片机演示
单片机无法演示仿真结果。
3.测试结果与分析
程序与STC89C52RC单片机的内部结构不相符合。
STC89C52RC的P3口是键盘输入端,P0口是连接LED数码管的输出端。
而仿真中的设计是P1口为键盘输入端,P3口为输出端。
故无法在单片机上实现。
参考文献
○1单片机课程设计——4×4矩阵式键盘识别显示电路的设计(豆丁网)
○2梁喜东组手写绘图板系统设计报告(上海理工大学)
○3单片机原理及接口技术/胡健主编. 北京:机械工业出版社,2004.10。