单片机矩阵键盘与数码管课程设计
单片机课设矩阵键盘控制七段数码管闪烁

电气工程学院《单片机原理及其应用》第x次课外设计报告组号:No. xxx组长:xxxxxxxxxxxxxxxxxx组员:xxxxxxxxxxxxxxxxxx组员:xxxxxxxxxxxxxxxxxx设计时间:xxxxxxxxxxxxxxxxxx评定成绩:评定教师:设计内容:利用单片机、1个按钮、4*4矩阵键盘和1位共阳数码管,实现显示闪烁控制功能。
要求:按下数字键,将按下键对应位置值(0~F)显示在数码管上;按下按钮,显示以0.5秒间隔闪烁;再次按下按钮,显示闪烁停止。
摘要:单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。
概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便与结构的最佳选择。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
从二十世纪九十年代开始,单片机技术就已经发展起来,随着时代的进步与科技的发展,目前该技术的实践应用日渐成熟,单片机被广泛应用于各个领域。
现如今,人们越来越重视单片机在智能电子技术方面的开发和应用,单片机的发展进入到新的时期,无论是自动测量还是智能仪表的实践,都能看到单片机技术的身影。
电子信息技术与单片机技术相融合,有效提高了单片机应用效果。
作为计算机技术中的一个分支,为智能化电子设备的开发和应用提供了新的出路,实现了智能化电子设备的创新与发展。
单片机也被称为单片微控器,属于一种集成式电路芯片。
在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。
由此可见,单片机凭借着强大的数据处理技术和计算功能可以在智能电子设备中充分应用。
简单地说,单片机就是一块芯片,这块芯片组成了一个系统,通过集成电路技术的应用,将数据运算与处理能力集成到芯片中,实现对数据的高速化处理。
矩阵键盘控制数码管

专业综合设计报告项目名称:基于矩阵键盘和LED数码管显示器的简易人机界面设计学生姓名:同组同学:专业名称:班级:指导教师:项目起止日期:2012年03月12日至2012年03月30日目录摘要 (3)1、概述 (3)2、总体设计方案 (3)2.1总体设计要求 (3)2.2系统框图 (4)3、系统硬件设计 (4)3.1单片机的最小系统 (5)3.1.1电源电路 (5)3.1.2复位电路 (5)3.1.3晶振电路 (6)3.2 LED数码管显示部分 (6)3.3矩阵键盘 (7)3.3.1键盘的工作原理 (7)3.3.2键盘检测原理 (7)4、系统软件设计 (9)4.1 软件设计思想 (9)4.2 主程序设计 (10)4.3 子程序设计 (11)4.3.1 数码管显示程序设计 (11)4.3.2 键盘检测程序设计 (11)4.3.3延时函数程序设计 (14)5、系统调试 (14)6.设计体会 (15)参考文献 (15)摘要单片机自20世纪70年代以来,以其极高的性价比,以及方便小巧受到人们极大的重视和关注。
本设计选用AT89S52芯片作为控制芯片,来实现矩阵键盘对LED数码管显示的控制。
通过单片机的内部控制实现对硬件电路的设计,从而实现对4*4矩阵键盘的检测识别。
用单片机的P3口连接4×4矩阵键盘,并以单片机的P3.0-P3.3口作键盘输入的列线,以单片机的P3.4-P3.7口作为键盘输入的行线,然后用P0.0-P0.7作输出线,通过上拉电阻在显示器上显示不同的字符“0-F”。
在硬件电路的基础上加上软件程序的控制来实现本设计。
其工作过程为:先判断是否有键按下,如果没有键按下,则继续检测整个程序,如果有键按下,则识别是哪一个键按下,最后通过LED数码管显示该按键所对应的序号。
关键词:AT89S52芯片;4*4矩阵键盘;键盘识别;LED数码管1、概述随着单片机系统的日益更新,以及人们对产品的人机交互能力的不断提高;使得单片机系统的人机界面设计能力成为学习单片机的一项重要的基础内容。
数码管动态显示与矩阵键盘的编程

数码管动态显示与矩阵键盘的编程实验四综合应用设计——数码管动态显示与矩阵键盘的编程一、实验目的:1、掌握单片机I/O技术和子程序设计等综合知识。
2、了解矩阵式键盘的内部结构和数码管显示的基本原理,掌握至少一种常用的按键识别方法。
3、熟练掌握数码管动态显示和矩阵键盘识别的综合应用。
二、实验内容:设计一个矩阵键盘的识别和动态显示综合的系统,控制8个8段数码管动态扫描显示4*4矩阵键盘上按下的按键所对应的值。
三、实验要求:给定一个4*4的矩阵键盘,16个按键对应显示0123456789ABCDE,第1次按下某按键在第一个8段数码管上显示对应的值,第2次在第二个数码管上显示,以此类推,第9次又在第一个数码管上显示,以此循环下去。
其中ABCDE在数码管上无法表达,可以用其它代替,例如:B用8表示,D用0表示,E用H表示等。
四、实验设备及实验耗材:计算机一台,W A VE6000软件模拟器,完成ISP下载的XLISP 软件,XL1000单片机综合仿真试验仪一台(8个8段数码管,4*4矩阵键盘一个,89S51一片,9针对9针的串口线一条,5V稳压电源线一条)五、实验基本原理与方法:查阅相关资料掌握矩阵式键盘的内部结构,8段数码管动态显示原理和常用的按键识别方法,建议使用按键识别方法中最常用的“行扫描法”编写程序。
结合动态显示技术和矩阵键盘识别技术。
六、实验方案设计:1、采用哪些I/O口完成通信,采用何种按键识别的方法,如何综合动态显示技术和矩阵键盘识别技术。
2、说明该程序的功能。
3、硬件连接原理图。
七、实验步骤:1.弄清实验内容和实验要求。
2.学习相关理论知识,提出实验方案,画出程序流程图。
软件流程图3.编写软件程序,作相关的程序注释,便于查看和调试。
4.编译和调试。
伟福软件:1.打开伟福W A VE V3.20软件,采用伟福默认的仿真器就可以了。
文件——新建文件,在弹出的窗口中输入实验程序,保存为“文件名.asm”文件,若窗口内的部分程序字体颜色发生改变,表示保存成功。
单片机c语言程序设计---矩阵式键盘实验报告

单片机c语言程序设计---矩阵式键盘实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称:矩阵式键盘实验一、实验目的和要求1.掌握矩阵式键盘结构2.掌握矩阵式键盘工作原理3.掌握矩阵式键盘的两种常用编程方法,即扫描法和反转法二、实验内容和原理实验1.矩阵式键盘实验功能:用数码管显示4*4矩阵式键盘的按键值,当K1按下后,数码管显示数字0,当K2按下后,显示为1,以此类推,当按下K16,显示F。
(1)硬件设计电路原理图如下仿真所需元器件(2)proteus仿真通过Keil编译后,利用protues软件进行仿真。
在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
操作方完成矩阵式键盘实验。
具体包括绘制仿真电路图、编写c源程序(反转法和扫描法)、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,总结观察的仿真结果。
完成思考题。
三、实验方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。
2.在keil上进行编译后生成“xxx.hex”文件。
3.编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
四、实验结果与分析void Scan_line()//扫描行{Delay(10);//消抖switch ( P1 ){case 0x0e: i=1;break;case 0x0d: i=2;break;case 0x0b: i=3;break;case 0x07: i=4;break;default: i=0;//未按下break;}}void Scan_list()//扫描列{Delay(10);//消抖switch ( P1 ){case 0x70: j=1;break;case 0xb0: j=2;break;case 0xd0: j=3;break;case 0xe0: j=4;break;default: j=0;//未按下break;}}void Show_Key(){if( i != 0 && j != 0 ) P0=table[ ( i - 1 ) * 4 + j - 1 ];else P0=0xff;}五、讨论和心得。
单片机矩阵键盘,数码管,双机通信完美版

学生实习报告学生姓名:王耀辉专业班级:通信1304指导教师:撒继铭工作单位:信息工程学院题目: 单片机原理与应用初始条件: 单片机最小系统、下载电路、扩展电路、软件(PROTEUS等)、万用表、电烙铁等工具完成的主要任务:1)利用PROTEL等软件进行硬件设计;2)利用Keil uV2软件完成应用系统软件设计;3)利用stc-isp软件完成在系统编程、下载,并完成系统软件调试;4)题目由指导教师提供;5)要求每个学生单独完成硬件软件设计、仿真、焊接、调试任务;6)写出实习报告,实习报告主要包括以下内容:目录、摘要、关键词、基本原理、方案论证、硬件设计、软件设计(带流程图、程序清单)、仿真结果、实物运行结果照片、结论、参考文献等;7)实习完成后通过答辩;8)答辩时交实习报告电子文档,通过答辩后根据修改意见修改并打印、装订成册。
实习时间安排:序阶段内容所需时间号1 方案设计1天2 硬件设计2天3 软件设计2天4 系统仿真1天5 电路板焊接2天6 系统调试1天7 答辩1天合计10天指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 -------------------------------------------------------------------------------------------------------I Abstract -------------------------------------------------------------------------------------------------- II 1设计任务及要求 -------------------------------------------------------------------------------------- 1 2 基本原理 ---------------------------------------------------------------------------------------------- 32.1基本原理及原理框图------------------------------------------------------------------------ 32.2 STC89C52结构功能介绍 ------------------------------------------------------------------ 33 硬件电路原理与设计 ------------------------------------------------------------------------------- 63.1复位电路--------------------------------------------------------------------------------------- 63.2振荡电路--------------------------------------------------------------------------------------- 73.3单片机最小系统------------------------------------------------------------------------------ 83.4数码管显示电路------------------------------------------------------------------------------ 93.4.1 数码管选择--------------------------------------------------------------------------- 93.4.2 LED芯片7SEG-MPX6-CA -------------------------------------------------------- 93.4.3 数码管电路设计------------------------------------------------------------------- 103.5 矩阵键盘电路 ------------------------------------------------------------------------------- 113.6串口通信电路------------------------------------------------------------------------------- 123.7 总设计电路 --------------------------------------------------------------------------------- 134 软件设计 -------------------------------------------------------------------------------------------- 144.1软件介绍------------------------------------------------------------------------------------- 144.1.1程序编写软件Keil ---------------------------------------------------------------- 144.1.2仿真软件Proteus ------------------------------------------------------------------- 144.2数码管显示设计---------------------------------------------------------------------------- 144.3串行通信接收程序------------------------------------------------------------------------- 155 仿真结果与分析 ----------------------------------------------------------------------------------- 175.1 数据输入 ------------------------------------------------------------------------------------ 175.2 数据显示 ------------------------------------------------------------------------------------ 185.3 实现串口通信 ------------------------------------------------------------------------------ 196实物展示 --------------------------------------------------------------------------------------------- 20 7心得体会 --------------------------------------------------------------------------------------------- 20 参考文献 ----------------------------------------------------------------------------------------------- 22 附录Ⅰ:元件清单 ----------------------------------------------------------------------------------- 24 附录Ⅱ:总程序设计 -------------------------------------------------------------------------------- 25摘要单片机最小系统,无论对单片机初学人员还是开发人员都具有十分重要的意义,可以利用最小系统进行编程实现工业控制。
单片机课程设计报告---数码管显示4X4矩阵键盘按键号

课程设计报告书设计名称:单片机原理与应用题目:数码管显示4X4矩阵键盘按键号专业:计算机科学与技术日期:2012 年6月 11日一.设计目的:1) 了解单片机系统实现LED动态显示的原理及方法;2) 较为详细了解8051芯片的性能;3) 能够了解到单片机系统的基本原理,了解单片机控制原理;4) 掌握AT89C51程序控制方法;5) 掌握AT89C51 C语言中的设计和学会分析程序,进而能够根据自己的需要编写代码;6) 掌握4X4矩阵式键盘程序识别原理;7) 掌握4X4矩阵式键盘的设计方法;8) 学习键盘的扫描方式和应用程序设计;9) 培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;10) 能够按课程设计的要求编写课程设计报告,能够正确反映设计和实验成果。
二.设计要求与主要内容:设计要求:单片机的P1口P1.0~P1.7连接4X4矩阵键盘,P0口控制一只P0口控制一只数码管,当4×4矩阵键盘中的某一按键按下时,数码管上显示对应的键号。
例如,1号键按下时,数码管显示“1”,二号按下的时候,数码管显示“2”,14号键按下时,数码管显示“E”等等。
主要内容:1)4×4矩阵键盘程序识别原理。
2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。
矩阵的行线和列线都连接到AT89C51中,通过按键K0~K16,来在数码管显示不同的值。
实验步骤:1) 启动keiuvision3 2)新建工程命名为单片机的C语言设计与应用3)新建文件并另存为C51c.c 4)在SourceGroop1导入文件 5)编写代码,并生成C语言设计与应用.hex文件。
6)在Proteus中设计电路图7) 将keil与Proteus联机调试,记下实验记录,得出实验结果。
三.设计程序原理:(包含仿真图和流程图)1)主程序流程图2)程序流程图 若无按键按下若无按键按下若无按键按下若无按键按下结束,返回3)仿真图四.程序代码#include<reg51.h>#define uchar unsigned char#define uint unsigned int//段码ucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};sbit BEEP=P3^7;//上次按键和当前按键的序号,该矩阵中序号范围 0~15,16 表示无按键uchar Pre_KeyNo=16,KeyNo=16;//延时void DelayMS(uint x){ uchar i;while(x--) for(i=0;i<120;i++);}//矩阵键盘扫描void Keys_Scan(){ uchar Tmp;P1=0x0f; //高 4 位置 0,放入 4 行DelayMS(1);Tmp=P1^0x0f; //按键后 0f 变成 0000XXXX,X 中一个为 0,3 个仍为1,通过异或把3个1变为 0,唯一的0变为1switch(Tmp) //判断按键发生于 0~3 列的哪一列{ case 1: KeyNo=0;break;case 2: KeyNo=1;break;case 4: KeyNo=2;break;case 8: KeyNo=3;break;default:KeyNo=16; //无键按下}P1=0xf0; //低 4 位置 0,放入 4 列DelayMS(1);Tmp=P1>>4^0x0f; //按键后 f0 变成 XXXX0000,X 中有 1 个为 0,三个仍为 1;高4位转移到低 4 位并异或得到改变的值switch(Tmp) //对 0~3 行分别附加起始值 0,4,8,12{case 1: KeyNo+=0;break;case 2: KeyNo+=4;break;case 4: KeyNo+=8;break;case 8: KeyNo+=12;}}//蜂鸣器void Beep(){uchar i;for(i=0;i<100;i++){ DelayMS(1);BEEP=~BEEP;}BEEP=0; }//主程序void main(){ P0=0x00;BEEP=0;while(1){ P1=0xf0;if(P1!=0xf0) Keys_Scan(); //获取键序号if(Pre_KeyNo!=KeyNo){ P0=~ DSY_CODE[KeyNo];Beep();Pre_KeyNo=KeyNo;}DelayMS(100);} }五.实验结果:当按键按下k0,显示管显示0,当按键按下k1时显示1,显示管可以显示1,2,3,4,5,6,7,8,9,A,B,C,D,F.六.实验体会:这次的实验提高了我的设计能力与对电路的分析能力。
单片机设计(流水灯、矩阵键盘、数码管倒计时)

单片机结业作业1.电路图2.程序:#include <reg51.h>sbit P1_6=P1^6;sbit P1_7=P1^7;unsigned char code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char clock[2]={59,59}; //60秒倒计时缓冲数组unsigned char *dis_p;unsigned char keytest(); //键盘检测函数unsigned char search(); //查键值函数void display(unsigned char *p); //显示函数void main(){unsigned char i,a,c;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;dis_p=clock;while(1){P0=0x80;c=P0;for(i=0;i<8;i++){c>>=1;P0=c;a=keytest();if(a==0x0f) display(dis_p);else{display(dis_p);a=keytest();if(a!=0x0f){P3=0x00;a=search();switch(a){case 0x00:P2=0x3f;break;case 0x01:P2=0x06;break;case 0x02:P2=0x5b;break;case 0x03:P2=0x4f;break;case 0x04:P2=0x66;break;case 0x05:P2=0x6d;break;case 0x06:P2=0x7d;break;case 0x07:P2=0x07;break;case 0x08:P2=0x7f;break;case 0x09:P2=0x6f;break;case 0x0a:P2=0x77;break;case 0x0b:P2=0x7c;break;case 0x0c:P2=0x39;break;case 0x0d:P2=0x5e;break;case 0x0e:P2=0x79;break;case 0x0f:P2=0x71;break;default:break;}while((a=keytest())!=0x0f);}}}}}//**********************************主函数完void display(unsigned char *p){unsigned char buffer[]={0,0,0,0};unsigned char k,i,j,m,temp;buffer[0]=p[0]%10;buffer[1]=p[0]/10;buffer[2]=p[1]%10;buffer[3]=p[1]/10;for(k=0;k<3;k++){temp=0x10;for(i=0;i<4;i++){P3=~temp;j=buffer[i];P2=led[j];temp<<=1;for(m=0;m<200;m++);}}}//*******************************显示函数完unsigned char keytest(){unsigned char c;P1=0x0f;c=P1;c=c&0x0f;return(c);}//*******************键盘检测函数完unsigned char search(){unsigned char a,b,c,d,e;c=0xfe;a=0;while(1){P1=c;d=P1;d=d&0xf0;if(d==0x70){b=0;break;}else if(d==0xb0){b=1;break;}else if(d==0xd0){b=2;break;}else if(d==0xe0){b=3;break;}a++;c<<=1;}e=a*4+b;return(e);}//*****************查键值函数完void daojishi() interrupt 1{unsigned char a;EA=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;a++;if(a==20){a=0;if(clock[0]==0){clock[0]=59;clock[1]=59;}else{clock[0]--;clock[1]--;}}EA=1;}。
单片机实验报告——矩阵键盘数码管显示

单片机实验报告信息处理实验实验二矩阵键盘专业:电气工程及其自动化指导老师:***组员:明洪开张鸿伟张谦赵智奇学号:152703117 \152703115\152703118\152703114室温:18 ℃日期:2017 年10 月25日矩阵键盘一、实验内容1、编写程序,做到在键盘上每按一个键(0-F)用数码管将该建对应的名字显示出来。
按其它键没有结果。
二、实验目的1、学习独立式按键的查询识别方法。
2、非编码矩阵键盘的行反转法识别方法。
3、掌握键盘接口的基本特点,了解独立键盘和矩阵键盘的应用方法。
4、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。
5、掌握利用Keil51软件对程序进行编译。
6、会根据实际功能,正确选择单片机功能接线,编制正确程序。
对实验结果能做出分析和解释,能写出符合规格的实验报告。
三、实验原理1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。
2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。
3、识别键的闭合,通常采用行扫描法和行反转法。
行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。
行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。
然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。
这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。
由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。
51单片机数码管显示及矩阵键盘扫描程序

51单片机数码管显示及矩阵键盘扫描程序硬件实验十一八段数码管实验一、实验任务1、在静态数码管上轮流显示数字0-9。
2、在两个4位数码管上动态显示数字0-9二、流程图及程序静态显示:流程图:程序代码:#include#define uchar unsigned chucharcodevalue[10]={0xC0,0xF9,0xA4,0xB0,0X99,0x92,0x82,0xF8,0 x80,0x90};//0 -9数码管显示段码void delay(char x) //延时子程序{uchar i;for(i=0;i<200;i++);}main() //主函数{int i;while(1){for(i=0;i<10;i++) //显示0-9{P0=codevalue[i];delay(500); //延时1秒}}}动态显示:#include#includetab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7f,0x6f}; //数码管显示数字字段unsigned char tab2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//片选字段unsigned char i,k,j,x;void delay(x); //声明延时子函数void main() //主函数{while(1){for(i=0;i<8;i++) //显示0-7{ P1=tab1[i];P0=tab2[i];delay(5); //延时}P1=tab1[8]; P0=tab2[0]; delay(5); //显示8-9P1=tab1[9]; P0=tab2[1]; delay(5);}}void delay(x) //延时函数定义{do{for(j=0;j<250;j++)for(k=0;k<250;k++);}}硬件实验十二矩阵键盘扫描显示一、实验任务1、把矩阵键盘上的按键输入的键码在静态数码管上显示出来。
单片机矩阵按键课程设计

单片机矩阵按键课程设计一、课程目标知识目标:1. 学生能理解单片机矩阵按键的基础知识,掌握矩阵按键的原理及其在电路中的应用。
2. 学生能描述单片机I/O口操作方法,并运用此知识实现矩阵按键的编程控制。
3. 学生能解释并运用行、列扫描法进行按键识别,实现按键的消抖处理。
技能目标:1. 学生能够独立完成矩阵按键电路的连接,并进行调试。
2. 学生能够运用所学知识,编写程序实现矩阵按键的扫描与功能分配。
3. 学生能够通过实验,分析和解决矩阵按键编程过程中遇到的问题。
情感态度价值观目标:1. 学生培养对单片机技术的兴趣,增强对电子工程领域的认识。
2. 学生在学习过程中,培养解决问题的耐心和毅力,树立团队协作意识。
3. 学生能够认识到单片机技术在现实生活中的应用价值,增强创新实践能力。
课程性质:本课程为实践性较强的电子技术课程,要求学生在掌握理论知识的基础上,注重动手实践。
学生特点:学生具备一定的单片机基础知识,对电子技术有较高的兴趣,但编程和动手能力参差不齐。
教学要求:结合学生特点,课程注重理论与实践相结合,充分调动学生的积极性,提高学生的动手能力和创新能力。
通过课程学习,使学生在知识、技能和情感态度价值观方面均有所提升。
二、教学内容1. 矩阵按键原理:介绍矩阵按键的电路结构、工作原理以及其在单片机系统中的应用。
- 教材章节:第二章第二节《矩阵键盘的工作原理》2. 单片机I/O口操作:回顾并加深理解单片机I/O口的基本操作,为矩阵按键编程打下基础。
- 教材章节:第一章《单片机基础》3. 行列扫描法:讲解如何运用行列扫描法进行按键识别,包括消抖处理方法。
- 教材章节:第二章第三节《矩阵键盘的编程方法》4. 矩阵按键编程实践:指导学生编写程序,实现矩阵按键的扫描与功能分配。
- 教材章节:第二章第四节《矩阵键盘应用实例》5. 电路连接与调试:学生动手实践,完成矩阵按键电路的连接,并进行调试。
- 教材章节:实验指导书《矩阵键盘实验》6. 问题分析与解决:针对编程和调试过程中遇到的问题,引导学生进行分析和解决。
MSP430单片机 矩阵键盘与数码管实验(附原理图)

MSP430单片机矩阵键盘与数码管实验(附原理图)/************************************************************* *MSP430单片机矩阵键盘与数码管实验*功能:用共阳极数码管显示按键的键值*适用:MSP430各系列单片机*by:duyunfu1987*************************************************************/ #include "msp430x44x.h"#define ROW P2OUT //矩阵键盘的行宏定义#define COL P2IN //矩阵键盘的列宏定义#define DPYOUT P3OUT //数码管输出口宏定义unsigned char keyval; //键值//共“阳”极数码管的码表unsigned char LED7CA[] ={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D, ~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71,0xff};/********************************************************函数名称:keyscan()*功能:扫描4*3矩阵键盘,并返回键值*出口参数:若有按键则返回键值,若无按键返回15*4*3矩阵键盘:0 1 2 3* 4 5 6 7* 8 9 A b*******************************************************/ unsigned char keyscan(){int i=0;unsigned char key=0;ROW = 0x8f; //先置三行输出低电平if((COL & 0x0f)!= 0x0f) //是否有按键{do i++;while(i<3000); //消抖动延时ROW = 0xbf; //扫描第一行if((COL & 0x0f)== 0x0f){ ROW = 0xdf; //扫描第二行if((COL & 0x0f)== 0x0f){ ROW = 0xef; //扫描第三行if((COL & 0x0f)== 0x0f)key = 15;else key = ~((ROW & 0XF0)|(COL & 0X0F));}else key = ~((ROW & 0XF0)|(COL & 0X0F));}else key = ~((ROW & 0XF0)|(COL & 0X0F));if(key != 15)switch(key) //获取有效地键值{ case 0x48: key=0; break;case 0x44: key=1; break;case 0x42: key=2; break;case 0x41: key=3; break;case 0x28: key=4; break;case 0x24: key=5; break;case 0x22: key=6; break;case 0x21: key=7; break;case 0x18: key=8; break;case 0x14: key=9; break;case 0x12: key=10;break;case 0x11: key=11;break;default: key=15;}}else key = 15;keyval=key;return key;}void main( void ){// Stop watchdog timer to prevent time out resetWDTCTL = WDTPW + WDTHOLD;P3DIR |= 0xff;P3OUT = 0xff; //共阳极数码管输出口初始化P2DIR |= BIT4 +BIT5+BIT6; //先配置矩阵键盘的行(输出)//P2.6 第一行,P2.5 第二行,P2.4 第三行//P2.3 第一列,P2.2 第二列,P2.1 第三列,P2.0 第四列keyval=16;while(1){ keyscan();if(keyval != 15 && keyval<17)DPYOUT = LED7CA[keyval];//数码管显示键值}}。
单片机矩阵键盘与数码管课程设计

单片机矩阵键盘与数码管课程设计(总16页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--矩阵键盘与数码管显示摘要矩阵式键盘乃是目前使用较为广泛的一种键盘模式,该系统以N个端口连接控制N*N个按键,即时在LED数码管上。
单片机控制的据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。
4*4矩阵式键盘采用89C51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用C语言编程,单片机将检测到的按键信号转换成数字量,显示于数码管显示器,系统灵活性强,易于操作,可靠性能好。
单片机简介及主系统电路单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换444器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。
单片机在工业控制领域广泛应用,它由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中,本次课程设计我们采用的是AT89C51型号的单片机。
AT89C51单片机是51系列单片机的一个成员,是8051单片机的简化版。
内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。
由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,提高了系统的性价比。
矩阵式键盘控制数码管显示

7
谢谢观赏!
二、工作原理
当扫描开始时, 首先将P1.7列初始值设置为低电平, 即P
3
三、程序流程图 ——主程序
开始
初始化
按键查询
YES
A=FFH?
NO
调用消除抖动子程序转Leabharlann 功能处理程序AAAA 1234
结束
4
四、程序清单
独立式键盘控制灯移动程序.doc
5
五、实验板上测试
观察实验结果并记录: 按下不同按键开关,可以看到P0端口的
实训十一: 矩阵式键盘控制数码管显示
功能说明: 使用4*4矩阵式键盘控制第一个数码
管显示0~F。
1
一、电路图
4条列线的一端分别与单片机P1口中的P1.4、 P1.5、 P1.6. P1.7 相接,另一端通过上拉电阻接到+5V电源上,平时使 列线处于高电平状态;而4条行线的一端分别与P1口中的 P1.0、 P1.1、 P1.2、 P1.3相接。16个按键设置在行、列 2 线交点上。
灯作不同方向的移动或闪烁,说明是在执 行不同功能键的处理程序。 按DL1键,亮灯从右向左移动 按DL2键,亮灯从左向右移动 按DL3键,左边4只灯与右边4只灯交替闪亮 按DL4键,8个灯闪烁
6
码管显示0; 作业布置按下DL2,第二个数
码管显示1; 按下DL3,第三个数 码管显示2; 按下DL4,第四个数 码管显示3 。
LED数码管显示矩阵键盘按键的设计

任务九设计说明2 一、电路原理及仿真图:二、程序设计:#include <reg51.h>#define uchar unsigned charuchardisplay[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x0 7,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};uchar key;void get(){uchar a;P1=0x0f;//按下按钮//a=P1^0x0f;switch(a) //确定行// {case 1:key=0;break;case 2:key=4;break;case 4:key=8;break;case 8:key=12;break;case 0:key=16;}P1=0xf0;a=P1^0xf0;switch(a) //确定列//{case 16:key=key+3;break;case 32:key=key+2;break;case 64:key=key+1;break;case 128:key=key+0;}} void main(){P0=display[16];get();P0=display[key];}程序完成两个功能,首先扫描键盘,检测是否有按键按下并计算键值。
然后如果有按键按下则驱动数码管显示相应键值,否则显示”-“符号。
三、设计说明如电路原理图所示,图中矩阵键盘和P3端口连接,共阳极数码管的段选端和单片机的P0口连接,位选直接接到高电平,使得数码管始终处于选通状态。
系统启动后,单片机逐行扫描键盘,当没有按键按下时,驱动数码管显示“-”符号,当检测到有按键按下时,单片机将相应键值对应的数码编码送至P0端口,驱动数码管以十六进制方式显示被按下的按键的键值。
四、遇到的问题首先遇到的问题是系统启动后数码管没有任何显示,仔细查看仿真现象后发现P0口始终为高阻状态,于是怀疑是数码管极性错误。
矩阵键盘按键的数码管显示矩阵,键盘按键的数码管显示

一、矩阵键盘按键的数码管显示1.实验目的(1)掌握VHDL语言的语法规范,掌握时序电路描述方法(2)掌握多个数码管动态扫描显示的原理及设计方法2.实验所用仪器及元器件计算机一台实验板一块电源线一根扁平线一根下载线一根3.实验任务要求设计出4*4矩阵键盘对某一按键按下就在数码管显示一个数字。
按键从左上角到右下角依次为1,2, (16)4.实验原理按键模块原理键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。
同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。
键盘键值的获取:键盘上的每一个按键其实就是一个开关电路,当某键被按下时,该按键的接点会呈现0的状态,反之,未被按下时则呈现逻辑1的状态。
扫描信号由row进入键盘,变化的顺序依次为1110-1101-1011-0111-1110。
每一次扫描一排,依次地周而复始。
例如现在的扫描信号为1011,代表目前正在扫描9,10,11,12这一排的按键,如果这排当中没有按键被按下的话,则由column 读出的值为1111;反之当9这个按键被按下的话,则由column读出的值为1110。
根据上面所述原理,我们可得到各按键的位置与数码关系如表所示:1110 1110 1110 1110 1101 1101 1101 1101row1110 1101 1011 0111 1110 1101 1011 0111 column1 2 3 4 5 6 7 8键值row 1011 1011 1011 1011 0111 0111 0111 0111 column 1110 1101 1011 0111 1110 1101 1011 0111键值9 10 11 12 13 14 15 16动态显示原理为使得输入控制电路简单且易于实现,采用动态扫描的方式实现设计要求。
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矩阵键盘

2013年1月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矩阵键盘中的某一按键按下时,数码管上显示对应的键盘号。
则本系统主要由以下几大模块构成:显示模块,共阴极LED数码管;输入模块,4*4矩阵键盘;3.2主要元器件介绍矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。
在行线和列线的每一个交叉点上,设置一个按键。
这样键盘中按键的个数是4×4个。
这种行列式键盘结构能够有效地提高单片机系统中I/O 口的利用率。
数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。
数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。
若显示的时间间隔过长的话,数码管显示时将产生闪烁现象。
所以,在调整显示的时间间隔时,即要考虑到显示时数码管的亮度,又要数码管显示时不产生闪烁现象。
4.1 设计思想按键采用线反转法先把列线置成低电平,行线置成输入状态,读行线;再把行线置成低电平,列线输入状态,读列线。
当有键按下时,由两次所读状态即可确定所按键的位置,不需扫描,键盘响应速度大大加快。
单片机课程设计4x8矩阵键盘.

单片机原理与应用课程设计矩阵式键盘与显示班级:机102-1 姓名:许传栋学号:201056502133组号:六组组员:孔令伟、张叶荣、尚桂香、许传栋、刘金林目录:、设计要求(3二、硬件设计(3三、键盘的运行(6四、数码管的显示(6五、键盘键值的确定(6六、按键顺序码的显示(7七、74LS48的应用(8八、数码管接口引脚(9九、程序设计(10附录(18、设计要求1、完成单片机与32键矩阵式键盘的连接方法。
2、识别是否有键按下,并将键值用两位数码管显示出来。
3、用软件延时取出按键抖动。
、硬件设计1、总体构思本次设计为32键矩阵式键盘,因此采用4x8式按键分布。
分为4行8列的布 局。
如图T2_1图T2 1当行线和列线分别置一和置零时,按键两端的电压将发生改变。
将键盘的所有 引线连出,行线联接到P2口的低四位,列线联接到P1 口,从而构成了单片机对键盘按 钮动作的读取电路。
将键值用两位数码管显示,因此要利用两片数码管。
由于单片机通过 P0口进行 输出,因此将P0口的高四位和低四位分别输出数码管的十位和个位 ,并在单片机与数码管之间接入74LS48。
74LS48的作用是将P0的四位输出转化为八位,并且作为晶体管的驱动,74LS48的输出 电流为6mA,刚好满足数码管的电流。
连接电路如图 T2_2L«口n ―0 0~Iq*T W单片机将数据从P0 口输出后经过74LS48的转换与驱动带动,数码管进行数码 的显示,通过数码管的显示判断出按钮的位置。
将上述键盘和显示电路联接到单片机上:键盘的行线联接到单片机的 P2.0~ P2.3 上,列线联接到单片机的P1 口,P0.0~P0.3,P0.4-P0.7分别连接到两片74LS48的输入 端口。
再接入单片机的晶振电路和复位电路,构成单片机的总体电路设计。
如图T2 3A*01tacIQD t\»9UEF9I0F LT06U3 AOA 1 QI C K b at IIFlI QE u25 I如 图 T2_2图 T2_3根据总体电路图的联接,设计出实际的物品。
单片机课程设计——数码管显示4×4矩阵键盘

《单片机原理及应用课程设计》报告——数码管显示4*4矩阵键盘的键盘号设计专业:班级:姓名:学号:2013年1月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矩阵键盘中的某一按键按下时,数码管上显示对应的键盘号。
则本系统主要由以下几大模块构成:显示模块,共阴极LED数码管;输入模块,4*4矩阵键盘;3.2主要元器件介绍矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。
在行线和列线的每一个交叉点上,设置一个按键。
这样键盘中按键的个数是4×4个。
这种行列式键盘结构能够有效地提高单片机系统中I/O 口的利用率。
数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。
数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。
若显示的时间间隔过长的话,数码管显示时将产生闪烁现象。
所以,在调整显示的时间间隔时,即要考虑到显示时数码管的亮度,又要数码管显示时不产生闪烁现象。
4.1 设计思想按键采用线反转法先把列线置成低电平,行线置成输入状态,读行线;再把行线置成低电平,列线输入状态,读列线。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
矩阵键盘与数码管显示摘要矩阵式键盘乃是目前使用较为广泛的一种键盘模式,该系统以N个端口连接控制N*N个按键,即时在LED数码管上。
单片机控制的据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。
4*4矩阵式键盘采用89C51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用C语言编程,单片机将检测到的按键信号转换成数字量,显示于数码管显示器,系统灵活性强,易于操作,可靠性能好。
单片机简介及主系统电路单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换444器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。
单片机在工业控制领域广泛应用,它由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中,本次课程设计我们采用的是AT89C51型号的单片机。
AT89C51单片机是51系列单片机的一个成员,是8051单片机的简化版。
内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。
由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,提高了系统的性价比。
其最小系统电路图如下:单片机最小系统电路图三、矩阵键盘的电路介绍AT89C51单片机的并行口P3接4×4矩阵键盘,以P3.0-P3.3作行输入线,以P3.4-P3.7作列输出线;P3口输出按键信息,在数码管上显示每个按键的“0-F”序号。
实际电路图连接如下图所示。
矩阵式键盘电路四、数码管显示原理及译码电路本系统输出结果选用8个LED数码管显示。
数码管有共阴共阳之分,本系统采用8段共阴型LED,其原理图如下图所示:符号和引脚共阳极共阴极LED数码管结构数码管内部有8个发光二极管,公共端由8个发光二极管的阴极并接而成,正常显示时公共端接低电平(GND),各发光二极管是否点亮取决于a-dp各引脚上是否是高电平。
LED数码管的外部有10个引脚,其中3, 8脚为公共端也称位选端,其余8个引脚称为段选端,当要使某一位数码管显示某一数字((0-9中的一个)必须在这个数码管的段选端加上与数字显示数字对应的8位段选码(也称字形码),在位选端加上低电平即可。
由于系统要显示的内容比较简单,显示量不多,所以选用数码管既方便又经济。
LED有共阴极和共阳极两种,二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。
一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。
当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。
五、时钟电路与复位电路时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。
MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图2-2所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。
电路图中外接晶体以及电容C2和C3构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值为30pF左右,晶振频率选11.0592MHz 。
为了初始化单片机内部的某些特殊功能寄存器,必须利用复位电路,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。
单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。
复位后系统将输入/输出(1/0)端口寄存器置为FFH,堆栈指针SP置为07H, SBUF内置为不定值,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。
复位操作有两种情况,即上电复位和手动(开关)复位。
本系统采用上电复位方式。
电路图中R1和Cl组成上电复位电路,其值R取为1KΩ, C取为10pF。
六、软件系统设计1、程序流程图:入口扫描一行扫描一列该行该列是否有键按下?延时10ms 去抖动再次扫描原列与原值扫描值相符?按键释放根据行号和列号查键码表求键值返回4列全部扫描完?扫描下一行4行全部扫描完?返回0xFF 表示无键按下根据键值查数码显示编码表扫描下一行扫描下一行NNNYYNYY扫描下一行2、按键检测与数码管显示P3口的低4位控制行输入,高4位控制列输入当没有按键按下时,P3.0—P3.3与P3.4—P3.7之间开路。
当有键闭合时,与闭合键相连的两条I/O口线之间短路。
判断有无按键按下的方法是:第一步,置行线P3.0—P3.3为输入状态,从列线P3.4—P3.7输出低电平,读入行线数据,若某一行线为低电平,则该行线上有键闭合。
第二步,列线轮流输出低电平,从行线P3.0—P3.3读入数据,若有某一行为低电平,则对应的列线上有键按下。
综合一二两步的结果,可确定按键编号。
但是按键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的按键操作。
当确定了是哪一个按键按下后,通过软件程序的设计,返回键盘扫描的键值,转化成十六进制的数据后由PO口输出给数码管显示。
3、LED显示段码表七、PROTEUS 仿真图八、系统的程序:#include<reg52.h>#define uint unsigned int #define uchar unsigned char uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0}; uchar code we[]={7,6,5,4,3,2,1,0};uint i;sbit dula=P2^6;sbit wela=P2^7;uchar num,num1,temp;void delay(uint z){uchar x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}uchar keyscan();void main(){num=17;//打开时数码管什么也不显示dula=1;//关闭数码管P0=0;dula=0;// P2=2;while(1){num1=keyscan();for(i=0;i<8;i++){P0=table[num1-1];P2=we[i];delay(1);}}}uchar keyscan() //带有返回值的函数{P3=0xfe;//检测第一行temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);//延时去抖temp=P3;temp=temp&0xf0;while(temp!=0xf0)//不等于0xf0说明确实是有建按下{temp=P3;//再读回P3口的值switch(temp){case 0xee: num=1;break;case 0xde: num=2;break;case 0xbe: num=3;break;case 0x7e: num=4;break;}while(temp!=0xf0)//检测是否松手,不佳松手检测退不出第二个while循环{temp=P3;temp=temp&0xf0;}}}P3=0xfd;//检测第二行temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);//延时去抖temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;//读回P3口的值switch(temp){case 0xed: num=5;break;case 0xdd: num=6;break;case 0xbd: num=7;break;case 0x7d: num=8;break;}while(temp!=0xf0)//检测是否松手{temp=P3;temp=temp&0xf0;}}}P3=0xfb;//检测第三行temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);//延时去抖temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;//读回P3口的值switch(temp){case 0xeb: num=9;break;case 0xdb: num=10;break;case 0xbb: num=11;case 0x7b: num=12;break;}while(temp!=0xf0)//检测是否松手{temp=P3;temp=temp&0xf0;}}}P3=0xf7;//检测第四行temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);//延时去抖temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;//读回P3口的值switch(temp){case 0xe7: num=13;break;case 0xd7: num=14;break;case 0xb7: num=15;case 0x77: num=16;break;}while(temp!=0xf0)//检测是否松手{temp=P3;temp=temp&0xf0;}}}return num;}实验总结与讨论通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。