单片机课程设计 模拟键盘输入及显示系统设计..

单片机课程设计 模拟键盘输入及显示系统设计..
单片机课程设计 模拟键盘输入及显示系统设计..

课程设计说明书课程名称:单片机应用基础

设计题目:模拟键盘输入及显示系统设计专业:机械设计制造及其自动化

指导教师:

设计者:

学号:

目录

第一章课程设计的目的和要求 (1)

1.1课程设计的目的和要求 (1)

1.2课程设计预备知识 (1)

1.3课题设计的任务 (2)

第二章总体设计

介绍对系统设计的总体认识及解决方案,并对采取的方案进行论证

第三章硬件设计

介绍本系统所选用的各种芯片的功能、引脚、相应的命令控制字格式等,画出系统工作原理图及实现方法

第四章软件设计

介绍本系统的主要功能模块程序的框图,以及总体程序框图和设计思路

第五章系统调试

介绍系统调试过程以及出现的问题、解决方法

第六章结束语

简述课程设计的收获、体会以及对本教学环节的意见和建议

参考文献

第一章、课程设计目的和要求

1.1 课程设计目的和要求

《单片机应用基础》课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的就是配合本课程的教学和平时实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有独立单片机产品和科研的基本技能,是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。

1.2课程设计预备知识

总的来说,设计者要具备Mcs-51单片机的有关硬件及软件知识,汇编语言编程或者C 语言编程的有关知识,I\O接口的有关知识,WAVE6000集成调试软件的应用,能利用PROTEUS 软件绘制系统工作原理,一定的设计经验等等。本次设计所要掌握的一些基本知识如下:(1)键盘工作原理

键盘是由若干按键组成的开关矩阵,是嵌入式控制系统的一种输入部件。键盘分两种:一种是独立式按键,另一种是矩阵式按键。如图所示。独立式按键用的比较少,可以直接与单片机的P1口某一位进行连接,通过判断这一位的状态知道是否有键输入。在应用中通常需要数量较多的按键,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

独立式键盘和4*4矩阵式键盘

矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,行线通过电阻接正电源,并将列线所接的单片机的I/O口作为输出端,而行线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。

(2)LED显示接口及原理

LED是发光二极管的英文缩写,LED显示器是由发光二极管构成的,它在单片机中的应用非常普遍。通常所说的LED显示器由7个发光二极管组成,其排列形状如图所示。此外,显示器中还有一个圆点型发光二极管以dp表示,用于小数点表示。通过七个发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符号。LED显示中的发光二极管共有两种连接方法:

共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不亮。

共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地。这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不亮。

控制数码管驱动级的控制电路有静态式和动态式两类:

静态驱动:它是指每个数码管都要用一个译码器译码驱动。

动态驱动:它是所的数码管使用一个专门的译码驱动器,使各位数码管逐个轮流显示,它的扫描速度极快,因此显示效果与静态驱动相同。

采用动态数码管显示,可以大幅度地降低硬件成本和电源的功耗,因为某一时刻只有一个数码管工作,就是所谓的分时显示,显示所需要的硬件电路可分时复用。

共阴极共阳极符号与引脚

如表1为共阳极与共阴极的代码表

表1 十六进制数字形代码表

(3) 键盘输入与LED显示

设计中通过键盘输入到单片机中,由程序控制找到输入点,计算键码,调用显示模块,把输入的数值通过LED显示器显示出来。

(1) 判断键盘中有无键按下:将全部行线P1.0到P1.3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。

(2) 判断闭合键所在的位置:在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:将行线置为低电平,即在置行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。检测的方法是P1.4-P1.7输出全“1”,读取P1.0-P1.3的状态,若P1.0-P1.3为全“0”,则无键闭合,否则有键闭合。

(3) 去除键抖动:当检测到有键按下后,延时一段时间再做下一步的检测判断。

(4) 识别:当确定键按下时,通过软件计算键码找到相对位置的数据调用显示模块把数字或字母显示出来或者实现其他功能。

1.3课题设计的任务

根据给定的任务要求选择合适的单片机和其他电子元器件,进行系统硬件电路设计和软件编程,根据系统制作并调试系统电路板,使之实现任务要求。有关参数选择要求符合国家

标准。具体设计内容如下:

1.模拟键盘输入及显示模块。

2. 设计系统工作原理图,利用PROTEUS软件绘制系统工作原理图;

3. 系统控制程序设计、调试及实现:

(1)根据要求,写出完整的程序流程图;

(2)将设计程序输入、汇编,排除语法错误,生成*.OBJ文件;

(3)按所设计的原理图,在实验平台上连线,检查无误;

(4)将目标文件传送到实验系统,执行并运行调试该程序,最终实现控制要求

4. 写出设计说明书,说明书格式见附录,3000字左右

第二章、模拟键盘输入及显示模块的总体设计

1、明确任务

根据课题的要求确定所要设计的任务,分析后确定设计一个4x4矩阵键盘的识别和7段数码管动态显示综合的系统,控制4个7段数码管动态扫描显示4x4矩阵键盘上按下的按键所对应的值,第一次按下后,每按下一次键数码管上的数字左移一位;另外设一个功能键,当按下此功能键后数码管上将显示设计者的学号,先显示2009一段时间,然后显示6230一段时间,之后将显示屏清零,等待下一次的输入。

2、硬件和软件功能的划分

系统的硬件配置和软件设计是紧密地联系在一起的,且硬件和软件具有一定的互换性,硬件完成一些功能,可以提高工作速度,但降低了系统的柔性。若用软件替代某些硬件功能,可增加系统的柔性,但降低系统的工作速度。因此,总体设计时,应综合考虑,合理划分硬件和软件的功能。经过分析后,确定4x4矩阵键盘用于单片机系统的输入,4个数码管用于显示按键所对应的值及显示设计者的学号,而单片机则用于逻辑控制和程序的执行,程序则是为实现所设计的功能而编写。经过论证,该方案能够实现课程设计所要求的任务及预期的目标。

第三章、模拟键盘输入及显示模块的硬件设计

1、系统扩展

实验仿真系统的CPU是8031,因此,必须首先组成最小系统,即由8031、地址锁存器和程序存储器组成。

2、功能接口

所谓接口是CPU与外界的连接部件,以实现CPU与外部设备的最佳耦合和匹配。包括键盘、显示、A/D转换、D/A转换和打印机等。根据课题要求选用外设,并选用合适的外围接口芯片。

3、系统的组成及统一编址

I/O端口是CPU与I/O设备直接通信的地址。单片机系统对I/O端口是采用端口地址与存储器地址统一编址的方式,即存储器映射方式。而编址技术又分线选法和译码法。设计者在设计硬件时,应自行编址。

4、80C51单片机引脚图及引脚功能介绍

单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。80C51单片机引脚图如下:

4.⒈ 电源:

⑴ VCC - 芯片电源,接+5V;

⑵ VSS - 接地端;

4.⒉ 时钟:

XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。

4.⒊ 控制线:控制线共有4根,

⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲

① ALE功能:用来锁存P0口送出的低8位地址

② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。

⑵ PSEN:外ROM读选通信号。

⑶ RST/VPD:复位/备用电源。

① RST(Reset)功能:复位信号输入端。

② VPD功能:在Vcc掉电情况下,接备用电源。

⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。

① EA功能:内外ROM选择端。

② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

4.⒋ I/O线

80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。

另外,P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。

5、键盘设计如下:

80C51单片机的并行口P2接4×4矩阵键盘,以P1.0-P1.3接键盘列线,以P1.4-P1.7作行线;实际电路图连接如下图所示。

6、4位7段码数码管的连接

P0口输出按键信息,即段码,与数码管的 a、b、c、d、e、f、g、dp相连,并接上+5v电源和上拉电阻;P1口低四位作为位控,与数码管的1、2、3、4口相连,在数码管上显示每个按键的“0-E”键值。

7、最后设计的系统工作原理图如下:

第四章、软件设计

一个优秀的的系统的软件应具有下列特点:

①软件结构清晰、简捷、流程合理。

②各功能程序实现模块化、子程序化。这样,既便于调试、链接,又方便移植、修改。

③程序存储区、数据存储区分配合理。

④运行状态实现标志化管理。各个功能程序运行状态、运行结果以及运行要求都设置状态标志(一般用位寻址区的位)以便查询,程序的转移、运行、控制都可以通过状态标志条件来控制。

⑤实现全面软件抗干扰设计。(由于条件有限,课程设计中不考虑。)

软件设计一般步骤如下:

1、系统定义

系统定义是在软件设计前,把软件承担的任务明确出来。合理定义和分配存储空间、定义标志位。

资源分配的主要工作是RAM资源的分配。片外RAM的容量要比片内RAM大,通常用来存放批量大的数据,如采样数据系列。主要考虑片内RAM的分配。系统上电复位时,自动定义0区为工作寄存器,1区为堆栈,并向2区、3区延伸。如果系统前台程序要用1区、2区作为工作寄存器,就应将堆栈空间重新规划,常将堆栈安放在片内RAM的高端,如60H~7FH。

在工作寄存器的8个单元中,R0和R1具有指针功能,是编程的重要角色,应充分发挥其作用,尽量避免用来做其他事情。

20H~2FH这16个字节具有位寻址功能,用来存放各种软件标志、逻辑变量、位输入信息、位输出信息副本、状态变量、逻辑运算的中间结果等。当这些项目全部安排好后,保留一两个字节备用,剩下的单元才可改作其他用途。

30H~7FH为一般通用寄存器,只能存入整字节信息。通常用来存放各种参数、指针、中间结果,或用作数据缓冲区。

RAM资源规划好后,应列出一张RAM资源的详细分配清单,作为编程依据。为了增加可读性,便于修改,一般对分配的存储单元取名。如保存当前时间的时、分、秒取HOUR、MINI、SEC,编程时用变量名,编译时只需在前面加HOUR EQU 24H即可(20H为分配给小时的存储单元的地址)。

2、软件结构设计

软件设计有两种方法:一种是自上而下,逐步细化;另一种是自下而上,先设计出每一个具体的模块(子程序),然后再慢慢扩大,最后组成一个系统。本次软件设计采用两种方法结合的方法,主程序采用自上而下的方法,将它分成若干个功能相对独立的较小的程序模块。然后再采用自下而上的方法,设计一个模块,调试一个模块,加入主程序调试;再进行下一个模块设计和调试。设计思路如下:

先运行主程序,首先是一些变量的定义及初始化,然后定义四字节的显示存储区并将其初始化,接着执行键盘子程序,键盘子程序的第一步是执行键盘查询程序,此程序为系统的待机状态,即为系统不断循环执行键盘检查程序,来检查是否有键按下,在每一次的键盘检查时,都要执行一次显示子程序,以保证数码管处于亮的状态,如果有键按下,则计算键码并将键码存到显示存储区中,之后返回到键盘子程序。

3、绘制程序流程框图

3.1主程序的流程框图如下

3.2键盘检查子程序流程框图

3.3、编写程序

在确保程序框图的正确性的前提下,才能编写程序。在编程时必须注意以下几点:

①一定要严格根据框图编程。

②一定要写注释。

③通过编译后,只表明语法没错,并不表明逻辑正确,一定要用不同的数据对模块进行测试。完全符合预定结果,方可确认通过。

④将该模块加到主控模块进行测试,如果与预定结果不符,必须查找原因,进行修改、调试。

⑤必须注意随时保存调试通过的副本。以便当新程序出现故障时,随时可返回前面的正确点重新开始。

4、编写设计说明书

设计说明书的格式见附录。

由于设计时间紧迫,要求学生尽量不要在完成全部设计后再编写设计说明书。而应在设计过程中逐步完成。一开始不可能设计出满意的主程序框图。因此,总体设计部分在完成全部设计任务后再写。而硬件部分和软件部分可以在设计过程同步完成。

第五章、系统调试和仿真

编写程序后,将程序载入WAVE6000集成调试软件进行调试,结果正常;利用PROTEUS 软件绘制系统工作原理后,将程序载入,然后进行模拟仿真,系统一起运行正常:按下键后系统能够正常显示,输入多位数值检测能够实现移位;而且当按下16号键时,系统显示学号正常,这证明此次设计结果达到了预期结果。

第六章、结束语

课程设计是培养学生运用综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实际能力的重要环节,是对我们实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中无处在。作为机电专业的学生来说,单片机的开发技术十分重要。

我做的题目是基于80C51单片机的4x4键盘输入显示,对于我们这些实践中的新手来说,这是一次考验。怎样才能找到课堂所学与实践运用的最佳结合点。这都是我们要考虑和努力的。在此次课程设计中,通过老师的精心指导和在网上找的资料,主要掌握了数码管显示的编程,数据输出的编程方法。调试也是此次的重点,这其中最重要的就是软件的调试了,这要求我们对每个模块在整个程序中的作用的了如指掌。通过此次课程设计,我发现我对程序的掌握还不够,尤其是单片机汇编语言掌握的不牢固。这次课程设计使我懂得实践的重要

性,只有理论知识远远不够,只有把所学的理论知识与实践相结合才能算是掌握了所学的知识。随着就业形势的日趋严峻,大学生的动手能力、实际能力和综合素质越来越受到学校和用人单位的重视,所以以后我们要更加注重实践,提高自己的动手能力。

此次设计单片机虽然比较简易,但是我收获颇多。通过本次课程设计,使我学会了数码管显示数字的原理,学会了如何使用键盘来获得输入的数据,也提高了我的编写汇编语言的能力,同时也提高了我们自己动手解决问题的能力。另外,这次单片机设计中使我对单片机也有了更高层次的了解。通过此次设计,自己的能力得到了提高,我会认真总结设计中的经验教训,为以后学习做好铺垫。

参考文献

[1] 李广第主编.单片机基础.第一版.北京航空航天大学出版社.北京

[2] 王修才主编.单片机接口技术.第一版.复旦大学出版社.上海

[3] 周志德主编.单片机原理及应用.第一版.高等教育出版社

[4] 李运华主编.机电控制.第一版.北京航空航天大学出版社

[5] 秦曾煌主编.电工学上册:电工技术.第五版.高等教育出版社

相关主题
相关文档
最新文档