44矩阵键盘仿真1.docx
《44矩阵键盘仿真1.docx》由会员分享,可在线阅读,更多相关《44矩阵键盘仿真1.docx(27页珍藏版)》请在冰豆网上搜索。
44矩阵键盘仿真1
摘要
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
单片机系统的开发过程中,程序设计语言的选择尤为重要。
C51提供高效的代码,结构化的编程和丰富的操作符,多被采用。
C51是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能,而且可以直接实现对硬件的控制。
本课程设计以AT89S51芯片为核心,程序设计采用汇编语言,辅以必要的电路,并运用proteus软件设计了4*4矩阵键盘仿真。
目录
摘要I
目录I
前言I
第一章单片机的概述1
1.1什么是单片机?
1
1.2MCS-51单片机内部结构1
1.3单片机的应用领域2
1.4AT89C51简介3
第二章软件的介绍及使用6
2.1Proteus软件的介绍和使用6
2.1.1进入ProteusISIS6
2.1.2工作界面6
2.1.3原理图仿真调试7
2.2KeiluVision2软件的介绍8
第三章系统总体设计13
3.1系统原理13
3.2电路组成13
3.2.1键盘部分13
3.2.2LED显示14
3.2.3晶振电路14
3.3功能和原理图15
3.3.1实现功能15
3.3.2硬件电路原理图15
3.4系统与硬件的连接16
第四章系统软件设计17
4.1程序框图17
4.2源程序17
第五章程序的编译调试与仿真22
5.1程序的编译22
5.2调试与仿真23
第六章结束语25
6.1设计总结25
6.2工作展望25
参考文献26
致谢27
前言
随着人们生活水平的提高,19世纪兴起的数字电路以其先天的便捷、稳定的优点在现代电子技术电路中占有越来越重要的地位。
数字电路与模拟电路相比有显而易见的稳定性。
近年来,数字电路又有了巨大的发展。
可编程逻辑器件(PAL、GAL等)的发展和普及最终使IC的设计面向了用户(这是模拟电路无法做到的),而这毫无疑问会给用户带来巨大的便捷,从而奠定它在电子电路中的对位。
单片机技术的出现给现代工业测控领域带来了一次技术革命。
目前,单片机仍以其高可靠性、高性价比,在工业控制系统、数据采集系统、智能画仪器仪表、智能家电等诸多领域得到了广泛的应用。
作为将要从事单片机应用系统开发方面的技术人员,掌握单片机的应用技术是必要的。
在单片机的应用过程中,单片机只是应用系统的一个核心部件,为把单片机系统应用于不同的领域,只掌握单片机的基础知识是远远不够的,要想构成一个完善的应用系统,还要熟悉执行机构及硬件接口电路的应用特性,同时,还应该掌握系统的结构布局、印刷电路板的结构布局及软件的设计技巧这些书本上学不到的知识,因此为设计出完善的应用系统,必须在实际工作中勤于实践,逐步积累这方面的经验。
单片机将计算机的基本部件微型化,使之集成在一块芯片上的微机。
单片机有着体积小、功耗低、功能强、性能价格比高、易于推广应用等显著优点,在许多领域得到日益广泛的应用。
单片机系统的开发过程中,程序设计语言的选择尤为重要。
C51提供高效的代码,结构化的编程和丰富的操作符,多被采用。
C51是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能,而且可以直接实现对硬件的控制。
此次设计选用的德国Keil公司开发的基于Windows平台的单片机集成开发环境,是51单片机开发的优秀软件之一,它集编辑、编译、仿真功能于一体,支持C语言、汇编语言的程序设计及调试,再加上单片处理器(89C51)、键盘、LED显示器及单片机的晶振电路,最终实现基于单片机AT89C51的4*4矩阵键盘proteus仿真。
第一章单片机的概述
单片微型计算机(singlechipmicrocomputer)简称单片机,又称微控制器(microcontrollerunit)或嵌入式控制器(embeddedcontroller)。
它将计算机的基本部件微型化,使之集成在一块芯片上的微机。
片内含有CPU、ROM、RAM、并行I/O、串行I/O、定时器/计数器、中断控制、系统时钟及系统总线。
单片机有着体积小、功耗低、功能强、性能价格比高、易于推广应用等显著优点,在自动化装置、智能化仪器仪表、过程控制和家用电器等许多领域得到日益广泛的应用。
用C51进行单片机程序设计是单片机开发与应用的必然趋势。
采用C51可以很容易的进行单片机的程序移植工作,有利于产品中的单片机的重新选型。
随着国内单片机开发工具研制水平的提高,现在的单片机仿真器普遍支持C51程序的调试,为单片机编程使用C51提供了便利的条件。
1.1什么是单片机?
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件…
1.2MCS-51单片机内部结构
1.CPU
CPU即中央处理器的简称,是单片机的核心部件,它完成各种运算和控制操作,CPU由运算器和控制器两部分电路组成。
(1)运算器电路运算器电路包括ALU(算术逻辑单元)、ACC(累加器)、B寄存器、状态寄存器、暂存器1和暂存器2等部件,运算器的功能是进行算术运算和逻辑运算。
运算电路以ALU为核心单元,可以完成半字节、单字节以及多字节数据的运算操作,其中包括加、减、乘、除、十进制调整等算术运算以及与、或、异或、求补和循环等逻辑操作,运算结果的状态由状态寄存器保存。
(2)控制器电路
控制器电路包括程序计数器PC、PC加1寄存器、指令寄存器、指令译码器、数据指针DPTR、堆栈指针SP、缓冲器以及定时与控制电路等。
控制电路完成指挥控制工作,协调单片机各部分正常工作。
程序计数器PC用来存放即将要执行的指令地址,它可以完成64K的外部存储器寻址,执行指令时,PC内容的高8位经P2口输出,低8位经P0口输出。
数据指针DPTR为16位数据指针,它可以对64K的外部数据存储器和I/O口进行寻址,它的低8位为DPL(地址82H),高8位为DPH(地址为83H)。
堆栈指针SP在片内RAM(128字节)中开辟栈区,并随时跟踪栈顶地址,它按先进后出的原则存取数据,上电复位后,SP指向07H。
2.定时器/计数器MCS-51单片机片内有两个16位的定时/计数器,即定时器0和定时器1。
它们可以用于定时控制、延时以及对外部事件的计数和检测等。
3.存储器MCS-51系列单片机的存储器包括数据存储器和程序存储器,其主要特点是程序存储器和数据存储器的寻址空间是相互独立的,物理结构也不相同。
对MCS-51系列(8031除外)而言,有4个物理上相互独立的存储器空间:
即内、外程序存储器和内、外数据存储器。
对于8051其芯片中共有256个RAM单元,其中后128个单元被专用寄存器占用,只有前128个单元供用户使用。
4.并行I/O口MCS-51单片机共有4个8位的I/O口(P0、P1、P2和P3),每一条I/O线都能独立地用作输入或输出。
P0口为三态双向口,能带8个TTL门电路,P1、P2和P3口为准双向口,负载能力为4个TTL门电路。
5.串行I/O口MCS-51单片机具有一个采用通用异步工作方式的全双工串行通信接口,可以同时发送和接收数据。
它具有两个相互独立的接收、发送数据缓冲器,两个缓冲器共用一个地址(99H),发送缓冲器只能写入,不能读出,接收缓冲器只能读出,不能写入。
6.中断控制系统MCS-51单片机的中断功能较强,以满足控制应用的需要。
8051共有5个中断源,即外中断2个,定时/计数中断2个,串行中断1个。
所有中断分为高级和低级两个中断优先级。
7.时钟电路MCS-51芯片内部有时钟电路,但晶体振荡器和微调电容必须外接。
时钟电路为单片机产生时钟脉冲序列,振荡器的频率范围为1.2MHz~12MHz,典型取值为6MHz。
8.总线以上所有组成部分都是通过总线连接起来,从而构成一个完整的单片机。
系统的地址信号、数据信号和控制信号都是通过总线传送的,总线结构减少了单片机的连线和引脚,提高了集成度和可靠性。
1.3单片机的应用领域
单片机是随着大规模集成电路的出现极其发展,将计算机的CPU,RAM,ROM,定时/计数器和多种I/O接口集成在一片芯片上,形成了芯片级的计算机,因此单片机早期的含义称为单片微型计算机.它拥有优异的性价比、集成度高、体积小、可靠性高、控制功能强、低电压、低功耗的显著优点.
单片机的应用领域:
(1)单片机在智能仪器仪表中的应用;
(2)单片机在工业测控中的应用;
(3)单片机在计算机网络和通讯技术中的应用;
(4)单片机在日常生活及家电中的应用;
(5)单片机在办公自动化方面。
1.4AT89C51简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度、非易失性存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚可以相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
引脚分布如下图:
图1-1引脚分布图
1.主要特性:
·与MCS-51兼容
·4K字节可编程闪烁存储器
寿命:
1000写/擦循环
数据保留时间:
10年
·全静态工作:
0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和断电模式
·片内振荡器和时钟电路
2.管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口可作为通用的I/O口,但必须外接上拉电阻。
作为输入口,每个引脚可吸收8个TTL的灌电流。
作为输入时,首先应将该引脚置为1。
在访问外部数据存储器或者程序存储器时,这组线分时转换地址(低8位)和数据总线。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下所示:
管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出
第二章软件的介绍及使用
4*4矩阵键盘的仿真采用了两个软件:
KeiluVision2和Proteus,现就这两个软件作进一步的介绍。
2.1Proteus软件的介绍和使用
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
①实现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
②支持主流单片机系统的仿真。
目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
③提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。
④具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
2.1.1进入ProteusISIS
双击桌面上的ISIS6Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus6Professional”→“ISIS6Professional”,进入ProteusISIS集成环境。
图2-1Proteus启动时的屏幕
2.1.2工作界面
ProteusISIS的工作界面是一种标准的Windows界面。
包括:
标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
图2-2ProteusISIS的工作界面
2.1.3原理图仿真调试
原理图的绘制:
Proteus的智能化可以在你想要画线的时候进行自动检测。
当鼠标的指针靠近一个对象的连接点时,跟着鼠标的指针就会出现一个“×”号,鼠标左键点击元器件的连接点,移动鼠标就出现了粉红色的连接线变成了深绿色。
如果你想让软件自动定出线路径,只需左击另一个连接点即可。
这就是Proteus的线路自动路径功能(简称WAR),如果你只是在两个连接点用鼠标左击,WAR将选择一个合适的线径。
WAR可通过使用工具栏里的“WAR”命令按钮来关闭或打开,也可以在菜单栏的“Tools”下找到这个图标。
如果你想自己决定走线路径,只需在想要拐点处点击鼠标左键即可。
单片机电路的模拟
程序的编译:
该软件有自带编译器,在ISIS添加上编写好的程序,方法如下:
1.点击菜单栏“Source”,在下拉菜单点击“Add/RemoveSourceFiles(添加或删除源程序)”出现一个对话框。
2.点击对话框的“NEW”按钮,在出现的对话框找到文件设计好的huayang.asm,点击打开;在“CodeGenerationTool”的下面找到“ASEM51”,然后点击“OK”按钮,设置完毕我们就可以编译了。
3.点击菜单栏的“Source”,在下拉菜单点击“BuildAll”,过一会,编译结果的对话框就会出现在我们面前。
如果有错误,对话框会告诉我们是哪一行出现了问题,点击出错的提示,光标不能跳到出错地方,但是能告诉出错的行号。
模拟调试。
4.选中单片机AT899C51,左键点击AT89C51,在出现的对话框里点击ProgramFile按钮,找到刚才编译得到的HEX文件,然后点击“OK”按钮就可以模拟了。
点击模拟调试按钮的运行按钮[],进人调试状态。
点击按键键盘,看到发光二极管,显示相应0~f的字符。
2.2KeiluVision2软件的介绍
Keil单片机集成开发软件是目前最流行的MCS-51单片机开发软件,Keil提供了包括C编译器、宏汇编、连接器、库管理及一个功能强大的仿真调试器在内的完整开发方案,通过一个集成开发环境(uVisoin2)将这些部分组合在一起。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,使用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
Keil软件使用的基本步骤
输入源程序→新建工程→工程详细设置→源程序编译得到目标代码文件。
第一步:
双击KeiluVision2的桌面快捷方式,启动Keil集成开发开发软件。
第二步:
新建文本编辑窗。
点击工具栏上的新建文件快捷按键,即可在项目窗口的右侧打开一个新的文本编辑窗。
第三步:
输入源程序。
在新的文本编辑窗中输入汇编语言程序,
图2-3:
输入源程序
第四步:
保存源程序。
保存文件时必须加上文件的扩展名,如果你使用汇编语言编程,那么保存时文件的扩展名为“.asm”,如果是C语言程序,文件的扩展名使用“*.C”。
注:
第3步和第4步之间的顺序可以互换,即可以先输入源程序后保存,也可以先保存后输入源程序第五步:
新建立Keil工程。
,点击"工程"→"新建工程"命令,将出现保存对话
第五步:
在保存工程对话框中输入你的工程的文件名,Keil工程默认扩展名为".uv2",输入名称后保存,将出现"选择设备"对话框,在对话框中选择CPU的型号。
第六步:
选择CPU型号。
为工程选择CPU型号,本新建工程选择了ATMEL公司的AT89C51单片机。
图2-4:
选择CPU型号对话框
第七步:
加入源程序到工程中。
在选择好CPU型号后,点击"确定"按钮返回主界面,此时可见到工程管理窗中出现“Target1”,点击“Target1”前面的“+”号展开下一层的“SourceGroup1”文件夹,此时的新工程是空的,“SourceGroup1”文件夹中什么文件都没有,必须把刚才输入的源程序加入到工程当中。
右击工程管理窗中的“SourceGroup1”,出现下拉菜单,点击“增加文件到组'SourceGroup1'”命令,将出现添加文件对话框
图2-5:
添加文件到工程命令
在添加文件对话框中,找到要添加到工程中的源程序文件。
注意:
在对话框中的文件类型默认为"C源文件(*.c)",如果你要添加到工程中的是汇编语言程序,则在文件类型中必须选中“Asm源文件(*.a*;*.src)”,以*.asm为扩展名的汇编源程序才会出现在文件列表框
双击该文件lich1.asm,即可将该文件添加到工程当中,另外也可以单击lich1.asm选中该文件,再点击"Add"按钮,也可以把文件加入工程中。
图2-6:
选中ASM源程序,加入到工程中
点击Add按钮后,把文件添加到工程中,再点击“关闭”按钮,返回到主界面。
当给工程添加源程序文件成功后,工程管理器中的“SourceGroup1”文件夹的前面会出现一个“+”号,单击“+”号,展开文件夹,双击即可打开该文件进行编辑修改源程序
图2-7:
文件成功加入工程
第八步:
工程目标'Target1'属性设置。
如下图7所示,在工程项目管理窗中的"Target1"文件夹上右击,出现下拉菜单,点击“目标'Target1'属性”命令,就进入目标属性设置界面。
工程目标'Target1'属性设置对话框大部分使用默认设置即可,我们主要设置其中的“目标”、“输出”、“调试”三个页面,下面对这三个页面的设置进行介绍。
1、工程目标属性设置。
该页面单片机的晶振频率,把晶振的频率改为11.0592
图2-8:
晶振频率设置
2、工程输出设置。
该页面设置注意:
如果要进行单片机写片实验,则一定要把“E生成HEX文件”选项选中,程序编译后才能生成我们写单片机需要的HEX格式目标文件。
3、工程调试设置。
“调试”页面设置。
该页分为左右两半,左半边是软件仿真设置,而右半边是硬件仿真设置,当你使用软件仿真时,选中左边的“S使用仿真器”;如果你使用硬件仿真器,那么就按下图所示设置硬件仿真,同时把仿真器连接到你的电脑串口上。
4、串口设置。
把通信波特率选择38400。
图2-9:
串口设置
第九步:
源程序的编译与目标文件的获得。
至此,我们已经完成了从源程序输入、工程建立、工程详细设置的工作,接下来我们在文本编辑窗中继续输入或修改我们的源程序,使程序实现我们的目标,在检查程序无误后保存工程。
接着如下图12所示,点击“构造目标”快捷按钮,进行源程序的编译连接,源程序编译相关的信息会出现在输出窗口中的“构造”页中。
下图12显示编译结果为0错误,0警告,同时产生了目标文件lich1.hex。
我们可以对源程序进行反复修改,再编译,直到没有错误为,每次修改源程序后一定要保存。
图2-10:
源程序的编译
第三章系统总体设计
3.1系统原理
键盘为4*4矩阵式连接,一共有16个按键。
工作原理为:
P1端的低四位为列,高四位行。
所先置低四位为低,高四位为高,当有按键按下时高四位就会有某位被拉低。
只要判断高四位不为全高就说明有按键按下。
判断有按键按下后就要判断是某位按下的,方法为,选将高四位的某一位置低。
判断低四位是否有低电平出现。
依次对高四位的每位置低并判断低四位出现的低电平。
如高四位某位置低后低四某也有出现低电平。
这样就能判断出低四位与高四位相连的位某位按键被按下了。
通过定义好的编码就可以查出是某个按键被按下了,程序将按键值通过查表并发送到LED上显示。
3.2电路组成
3.2.1键盘部分
键盘是一组按键的集合,它是最常用的单片机输入设备,操作人员可以通过键盘输入数据或命令,实现简单的人机通讯。
键是一种常开型按钮开关,平时(常态)键的两个触点处于断开状态,按下键时它们才闭合(短路)。
键盘分编码键盘和非编码键盘,闭合键的识别由专用的硬件译码实现,并能产生键编号或键值的称为编码键盘,如BCD码键盘、A