单片机实验系统设计
《单片机系统设计技术》实验指导

《单片机系统设计技术》实验指导书适用专业: 电气、自动化、信息等编写单位: 电气信息学院编写人: 曹 林审核人:审批人:批准时间:年月日目 录实验1 IO控制LED流水灯实验 (3)实验2 IO控制数码管动态扫描实验 (5)实验3 外部中断实验 (8)实验4 定时器应用控制实验 (10)实验5 UART实验 (12)实验6 键盘扫描输入编程 (14)实验7 UART与PC对话实验 (17)实验8 ADC数据采集实验 (19)实验1 IO控制LED流水灯实验1.实验目的1)、熟悉KEIL编程环境和调试环境。
2)、掌握单片机汇编语言和指令的用法。
3)、理解简单的IO控制程序,延迟子程序,并对其修改,使其功能改变。
2.实验设备硬件: PC 机,单片机教学实验开发平台;软件: KEIL集成开发环境、STC ISP程序下载软件。
3.实验内容使用P0口控制8个LED 进行流水灯显示。
4.实验预习要求和实验准备要求预习教科书关于单片机硬件架构内容、IO口的内容,特殊寄存器内容。
预习汇编程序编写、MCS-51指令表。
带上教科书、U盘、具备二进制和十六进制转换的科学计算器。
5.实验原理和步骤1)实验原理(1)实验原理图图1 P0口连接的8盏LED灯从图1中可以看出:如果需要把LED点亮有两个条件,其一是需要用短接帽把J1的2脚和3脚短接,在PCB上就是将电路板左上角LED和VCC短接起来;其二是P0.X口给出低电平,让电流从VCC开始流经限流电阻、LED后进入单片机的P0.X口,最后到单片机内部的地线上。
因此,简单地说就是在短接帽接好的前提下,向P0.X口写0则LED将点亮,写1则LED将熄灭。
图中网络标识PORT0_0、PORT0_1……PORT0_7和单片机P0.0、P0.1……P0.7连接,可观察原理图上单片机P0口的网络标识也是PORT0_0、PORT0_1……PORT0_7。
2)实验步骤(1)启动KEIL集成开发环境,按照《KEIL使用方法》中描述步骤进行工程建立、汇编源程序文件添加。
单片机系统的设计课程设计

单片机系统的设计课程设计一、课程目标知识目标:1. 让学生理解单片机系统的基本原理和组成,掌握其设计流程和方法。
2. 使学生掌握单片机编程的基础知识,能运用C语言或汇编语言进行简单程序编写。
3. 帮助学生了解单片机系统在实际应用中的功能与作用,如智能家居、机器人等。
技能目标:1. 培养学生具备独立设计单片机系统的能力,包括硬件电路设计和软件编程。
2. 提高学生运用单片机解决实际问题的能力,如数据采集、信号处理等。
3. 培养学生动手实践和团队协作的能力,能够完成课程项目的设计与实施。
情感态度价值观目标:1. 培养学生对单片机系统设计和开发产生兴趣,提高其学习积极性和主动性。
2. 培养学生具备创新精神和实践意识,敢于尝试新方法,解决实际问题。
3. 培养学生具备良好的团队合作精神和沟通能力,能够在团队中发挥积极作用。
课程性质:本课程为实践性较强的学科,要求学生在理解理论知识的基础上,动手实践,完成单片机系统的设计与实现。
学生特点:学生具备一定的电子技术基础和编程能力,对单片机系统有一定了解,但实践经验不足。
教学要求:结合学生特点,注重理论与实践相结合,充分调动学生的积极性,培养其创新能力和实践能力。
通过课程学习,使学生能够达到上述课程目标,为后续专业课程学习和实际工程应用打下坚实基础。
二、教学内容1. 单片机系统概述:介绍单片机的基本概念、发展历程、应用领域及未来发展趋势。
- 教材章节:第一章 单片机概述2. 单片机硬件结构:讲解单片机的内部结构、工作原理、主要性能指标及硬件连接方式。
- 教材章节:第二章 单片机硬件结构3. 单片机编程语言:学习单片机编程所需的基础知识,包括C语言和汇编语言。
- 教材章节:第三章 单片机编程语言4. 单片机I/O口编程:介绍I/O口的基本操作方法,包括输入、输出、中断等。
- 教材章节:第四章 单片机I/O口编程5. 单片机系统设计流程与方法:讲解单片机系统设计的步骤、方法及注意事项。
单片机实验教学仿真电路子系统的设计

单片机实验教学仿真电路子系统的设计单片机实验教学仿真电路子系统的设计:仿真电路子系统在外部,它向用户提供了一个可视的虚拟的单片机实验平台,用户通过这一平台建立仿真的实验电路。
当用户仿真运行实验源程序时,将再次通过这一平台进行相关操作,观察实验现象。
在内部,仿真电路子系统对用户建立的仿真电路进行元件的记录、电路连接的分析、节点表的建立与维护、元件(包括单片机端口)状态得计算,通过发送消息与仿真运行子系统交互。
最终达到在完全软件仿真的环境中让用户完成单片机教学实验,并获得与真实实验条件下相同的实验结果。
1.1 仿真元件的设计与实现元件是电路建立的基础。
对实验中用到的电器元件(如:51系列单片机89S51、电阻、电容、发光二极管、数码管、各种开关、逻辑门电路、译码器、存储器芯片等)设计元件类。
另外将电源、接地、导线、节点也作为元件进行设计。
部分元件以简化的图形表现,在设计元件时为简化软件的设计,将元件以单元模块的形式进行设计,即以单元模块电路的形式将模拟元件简化为数字逻辑单元。
忽略了电路及元件具体的电流电压等模拟特性。
类似的单元模块有,复位模块、振荡电路模块、数码管模块、开关模块。
1.2 元件类的设计与实现首先设计出CYuanJian类,它定义了元件共有的基本属性及方法,例如:在窗口中的位置、元件的线条及填充颜色、元件管脚的坐标,其次,对元件操作时的方法,例如:元件的绘制和对其他属性进行设置等。
为了让元件对象能方便地以数据文件的形式在存储器中存储和读取,将CYuanJian类的父类定义为VC++MFC提供的基类CObject类。
这样就可使用CObject 类的成员函数Serialize()对元件对象进行串行化。
由于每个元件的外形均不相同,对元件进行绘制的Draw()函数和元件移动函数Move()定义为虚函数,利用VC++的多态性在子类中实现。
同时这使得CYuanJian类成为了抽象类,CYuanJian类仅用来派生子类,不能实例化。
单片机最小系统的设计

单片机最小系统的设计以AT89C51单片机为例,设计一个单片机最小系统。
要求:1、功能:有按键开关、键盘进行高低电平的输入。
有数码管显示输出数字。
有LED灯显示输出的高低电平。
LCD显示输出数字和中文文字符号。
有使单片机工作的最小外围电路。
2、设计采用Keil单片机开发软件进行,在该软件上设计虚拟电路并进行仿真实现键盘、按键输入数据,在数码管、LED、LCD上显示输入内容,或运算、控制结果。
3、写出完成上述工作的全部过程。
包括软件选取、软件安装、每个功能硬件的选取和连接过程,软件的编写过程、源程序调试过程,最后附上全部工程文件和程序。
上述工作的目的:通过单片机的学习,学会基本的科研工作方法:构思、系统框图、详细设计、硬件设计、软件设计、研究工作中的记录、总结、归纳。
正反两方面的经验都要写。
方法:先建设一个WORK文档,以后每做一步写步,做完设计工作同时文档也就写完,然后对文档总结、整理、提高,这样每做完一件事,一篇可发表的论文也应完了,而不要做完了设计才来回想、写论文,时间就浪费了,很多设计过程中遇到的问题也忘了。
下面是去年同学写的内容,仅参考,不要抄,要自己写,比这个更好。
一、软件的介绍本文以AT89C51作为控制部件,同时利用LCD显示当前状态,从而实现依次按键控制LED灯亮灭的最简控制系统。
1、proteus软件的使用方法Proteus软件是Labcenter Electronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。
Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等。
通过Proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。
单片机系统设计报告范文

单片机系统设计报告范文1. 引言本报告介绍了一个基于单片机的系统设计。
本项目旨在设计一个可靠、高效的控制系统,能够实现某一特定功能。
本报告将详细介绍系统的设计目标、硬件设计和软件设计,并对系统进行评估和讨论。
2. 设计目标本项目的设计目标是实现一个智能温湿度控制系统。
系统的主要功能包括实时监测环境的温度和湿度,并根据设定的阈值自动控制温湿度,保持舒适的环境条件。
3. 硬件设计3.1. 主控单元本系统选择了常用的基于单片机的主控单元,采用XMC4500系列单片机。
此单片机具有高性能、低功耗和多种外设接口的特点,非常适合本项目的需求。
3.2. 传感器模块为了实时监测环境的温湿度,我们选择了DHT11温湿度传感器。
该传感器具有较高的精确度和良好的稳定性,可以通过串口和单片机进行数据交互。
3.3. 人机交互模块为了方便用户对系统进行设定和操作,本系统设计了一个人机交互模块。
该模块包括一个液晶显示屏和几个按键,通过显示屏和按键可以实现菜单显示和参数设定功能。
3.4. 控制模块为了控制温湿度,本系统设计了一个控制模块。
该模块通过与主控单元的通信,接收来自传感器模块的数据,并实施相应的控制策略,如开关空调、加湿器等来维持设定的温湿度。
4. 软件设计4.1. 软件架构本系统的软件设计采用了模块化的结构。
主控单元的软件主要分为三个模块:传感器模块、人机交互模块和控制模块。
每个模块都有相应的功能函数,通过调用这些函数来实现不同的功能。
4.2. 传感器模块传感器模块负责实时读取温湿度传感器的数据,并将数据发送给主控单元。
为了增加系统的稳定性,我们设计了数据校验和容错机制。
4.3. 人机交互模块人机交互模块负责显示菜单和接收用户的操作。
用户可以通过按键来选择菜单和设定参数。
我们设计了一个菜单管理器和按键管理器来实现该模块的功能。
4.4. 控制模块控制模块根据传感器模块提供的数据和用户设定的参数,实施相应的控制策略。
例如,当温度超过设定值时,控制模块会发送控制信号给空调,打开空调降低室内温度。
多模块单片机实验系统设计

其功能 比较单一, 与别的实验系统之间也毫无联系 , 能够完成 的实验 31基本模块 . 都是 单一 的单 片机实验 。当前实验 室中一般都有 多种 实验 设备, 如 L D显示 由 8个简单的发光二极管组成 ,直接由 P E 1口进行控 E A实验箱、 电实验箱、 0 模 数电实验箱、 信号处理实验箱等。如何使得 制,电路 简单这里就不给 出了。L D显 示除了要能够显示简单 的 C
单 片机 实验 系统 在 现有 的 实验 条 件下 , 够进 行 更 多 、 复杂 的 实验 , 能 更
图 4 串 口通 信
图 5 测温芯片
图 1 单片机实验系统 电源模块
步 进 电 机和 继 电器 的驱 动 需 要较 大 的 电流 ,直接 用 单 片机 的 引
基于Proteus和Keil的单片机仿真实验系统设计

河北建筑工程学院本科毕业设计(论文)学科专业机械电子工程班级机电102班姓名冯立岗指导教师张东辉摘要本设计是基于51系列的单片机进行的单片机实验仿真系统设计,可以进行键盘输入显示、计数器、流水灯、LCD显示字符、抢答器等八个实验的仿真。
单片机实验仿真系统的设计过程在硬件与软件方面进行同步设计。
硬件部分主要由AT89C51单片机,4×4键盘阵列,七段数码管显示,8×8LED显示模块,16×16LED点阵显示模块,流水灯模块,LCD液晶模块,以及抢答器按键电路等组成,系统通过LED及LCD显示数据,所以具有人性化的操作和直观的显示效果。
软件方面主要包括时钟程序、键盘程序,显示程序等。
由于本设计实验项目有多个,考虑到汇编语言并不适于比较繁琐的程序的编写,故本系统以单片机的C 语言进行软件设计,为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了,以便更简单地实现实验的选取及显示功能。
所有程序在Keil软件编写完成后调试编译最后生成hex格式的文件导入到Proteus 软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。
关键词:AT89C51;流水灯;抢答器;键盘ABSTRACTIt is a design of single chip experimental simulation system based on the 51 series single chip. It can perform eight experimental simulations including the keyboard input display, counter, water lights, LCD display character, responder.This design’s process is designed to synchronize the hardware and software aspects. The hardware part is mainly composed of AT89C51 microcontroller,4*4 keyboard array, seven segment LED display, 8*8 LED display module, 16*16 dot matrix display module, water light module, LCD liquid crystal module and responder key circuit and other components. The system displays the data via LED and LCD, so it has humanized operation and intuitive display effect. The software includes a clock procedure, the keyboard procedure and the display procedure. Since there are many experimental projects in this design, assembly language does not take into account the relatively cumbersome procedures for the preparation, and the system is designed of the microcontroller C language. In order to facilitate the expansion and change, the software is designed with modular structure, so that the logic programming is more concise and easier to realize the experimental selection and display. All the programs are debugged and compiled after the completion of the written of the keil software. And the final completed files of hex form are debugged in the Proteus software. When there is no problem, embedded the microcontroller into the Proteus software to simulate.Key words: AT89C51;water lights;responder;keyboard目录第1章前言 (1)1.1 单片机现状及发展概述 (1)1.2 单片机的性能特点 (2)1.3 AT89系列单片机简介 (2)1.4 单片机实验仿真系统 (3)第2章 Proteus和Keil软件 (4)2.1 Proteus与Keil的历史及联合仿真 (4)2.2 Proteus与Keil的联合仿真的优势 (5)2.3 Proteus与Keil的使用 (6)2.3.1 Keil C软件的使用 (6)2.3.2 Proteus仿真软件的使用 (9)第3章系统总体设计及方案的确定 (10)3.1 单片机实验仿真系统实验项目的设计 (10)3.2 系统总体设计 (11)3.3 系统总线的设计 (11)3.3 系统设计用到的元件 (12)第4章硬件及电路原理图的设计 (12)4.1 单片机最小系统设计 (12)4.2 流水灯的设计 (14)4.3 4×4矩阵键盘扫描与显示 (14)4.3.1键盘处理 (14)4.3.2 LED显示 (16)4.4 INT0中断三位计数器演示实验 (18)4.5 LCD液晶屏的字符显示实验 (19)4.5.1 液晶显示简介 (20)4.5.2 1602字符型LCD简介 (21)4.5.3 1602LCD的指令说明及时序 (21)4.5.4 1602LCD的指令说明及时序 (23)4.5.5 1602LCD的RAM地址映射及标准字库表 (25)4.5.6 1602LCD的一般初始化(复位)过程 (26)4.6 点阵显示字符实验 (27)4.6.1 LED简介 (28)4.6.2 LED点阵 (29)4.6.3点阵显示原理 (29)4.6.4 显示屏的原理图及结构 (30)4.6.5 显示屏的实验内容 (31)4.7 数码管动态显示实验 (32)4.8 8位计数器实验 (33)第5章系统的软件设计 (34)5.1 系统软件设计流程图 (34)5.2 单片机实验仿真系统原理图 (35)5.3 系统主程序 (36)第6章单片机实验仿真系统的仿真与调试 (38)6.1 利用Keil进行源程序的编译及调试 (38)6.2 利用Proteus调试电路检查系统的运行情况 (39)6.3 单片机实验仿真系统的运行及调试结果 (40)第7章毕业设计小结 (44)参考文献 (46)附录 (47)附:英文原文英文翻译毕业实习报告指导教师:张东辉设计项目计算与说明结果2.3.1 KeilC软件的使用创建工程: Keil C 把用户的每个工程都当作一个项目。
protel课程设计实验报告--单片机最小系统的设计

工程应用软件上机实训报告学院: 机电工程学院专业: 测控技术与仪器班级:学号:姓名:时间:目录1 任务 (2)2 所用设备 (2)3 设计过程 (2)3.1原理图的绘制 (2)3.1.1 单片机89C51芯片的绘制 (2)3.1.2 按键电路 (3)3.1.3 复位电路 (3)3.1.4 晶振电路 (4)3.1.5 蜂鸣器电路 (4)3.1.6 数码管显示电路 (4)3.1.7总原理图 (5)3.2 PCB板的生成 (6)3.2.1数码管的封装 (6)3.2.2各元器件的封装号 (6)3.2.3 PCB图 (7)4 结论 (7)5参考文献 (7)实训报告1、任务1.熟悉PROTEL的基本操作。
2.掌握用PROTEL绘制原理图的基本方法3.掌握用PROTEL制作PCB板的方法4.设计一个89C51单片机最小系统系统, 其中包括晶振电路、按键复位电路、两位数码管、一个蜂鸣器、两个按键输入。
2.所用设备1.WINDOWS XP环境2.PROTEL 99 SE软件3.设计过程3.1原理图的绘制1、首先启动PROTEL 99 SE软件;在File>New中新建一个名为YY.ddb的数据库文件, 并将其设置合适的保存位置;4、3.双击Documents文件夹, 再次选择File>New菜单, 弹出New Document对话框。
双击其中的Schematic Document图标, 新建一个名为Sheet1.Sch的原理图文件;5、双击原理图子文档, 启动原理图编辑器;6、添加元件库, 需要的有Miscellaneous Devices.ddb;添加元件, 手动编辑自己想要的元件并导入元件库, 本次设计编辑了一个单片机89C51元器件;7、连接线路, 形成原理图。
3.1.1 单片机89C51芯片的绘制在Documents文件夹中选择File>New菜单, 弹出New Document对话框。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实验系统设计姓名:秦x学号:08631124专业:应用电子指导老师:xxx老师信息电子工程学院2010年5月3 芯片简介3.1 MSC-51芯片简介MCS-51单片机内部结构8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。
8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:·中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
·数据存储器(RAM)8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
图1·程序存储器(ROM):8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
·定时/计数器(ROM):8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
·并行输入输出(I/O)口:8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。
·全双工串行口:8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
·中断系统:8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
·时钟电路:8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。
INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。
下图是MCS-51系列单片机的内部结构示意图2。
图2MCS-51的引脚说明:MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
现在我们对这些引脚的功能加以说明:MCS-51的引脚说明:MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
现在我们对这些引脚的功能加以说明:如图3图3Pin9:RESET/V pd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。
8051的复位方式可以是自动复位,也可以是手动复位,见下图4。
此外,RESET/V pd 还是一复用脚,V cc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
图4 ·Pin30:ALE/当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。
而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。
更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。
如果单片机是EPROM,在编程其间,将用于输入编程脉冲。
·Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。
程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序·Pin31:EA/Vpp存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。
如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。
显然,对内部无程序存储器的8031,EA端必须接地。
脚还需加上21V的编程电压。
在编程时,EA/Vpp4 相关知识4.1数码管显示在本任务中用4位数码管显示当前数值的千,百,十,个,由于数码管个数多,如采用静态显示方式,则占用单片机的I/O口线太多,如果用定时器/计数器的串行移位寄存器工作方式及外接串入并出移位寄存器74LS164的方式,则电路复杂。
所以,在数码管个数较多时,常采用动态显示方式。
如图1-1所示为单片机应用系统中的一种数码管动态显示电路图,4位数码管的相同段并联在一起,由一个8位I/O(P1口)输出字形码控制显示某一字形,每个数码管的公共端由另外一个I/O口(P0口)输出的字位码控制,即数码管显示的字形是由单片机I/O 口输出的字形码确定,而哪个数码管点亮是由单片机I/O口输出的字位码确定的。
4个数码管分时轮流循环点亮,在同一时刻只有1个数码管点亮,但由于数码管具有余辉特性及人眼具有视觉暂留特性,所以适当地选取循环扫描频率,看上去所有数码管是同时点亮的,察觉不出闪烁现象。
动态显示方式所接数码管不能太多,否则会因每个数码管所分配的实际导通时间太少,使得数码管的亮度不足。
在本任务中,为了简便,字形码和字位码都没由加驱动电路,在实际应用中应加驱动电路。
数码管有共阴极和共阳极两种,对于共阳数码管,字形驱动输出0有效,字位驱动输出1有效;而对于共阴数码管则相反,即:字形驱动输出1有效,字位驱动输出0有效。
4.2矩阵按键键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。
键盘控制程序需完成的任务有:监测是否有键按下,有键按下时,在无硬件去抖的动电路时,应用软件延时方法消除按键抖动影响;当有多个键同时按下时,只处理一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。
矩阵按键扫描程序是一种节省IO口的方法,按键数目越多节省IO口就越可观,思路:先判断某一列(行)是否有按键按下,再判断该行(列)是那一只键按下。
但是,在程序的写法上,采用了最简单的方法,使得程序效率最高。
本程序中,如果检测到某键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能节省大量的CPU时间。
本键盘扫描程序的优点在于:不用专门的按键延时程序,提高了CPU效率,也不用中断来扫描键盘,节省了硬件资源。
另外,本键盘扫描程序,每次扫描占用CPU时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。
本键盘扫描子程序名叫key,每次要扫描时用lcall key调用即可。
5 计算器硬件电路设计8051单片机的P2口作键盘口,其中P2.4-P2.7为键盘扫描输出线,P2.0-P2.3为键盘扫描输入线。
键盘由4*4共16个按键组成,10个数字键(由0-9组成)5个运算符号(加减乘除等于)组成,1个清除键(作用相当于整体复位)。
4个数码管用于显示当前数值的千,百,十,个,采用动态显示方式,P1口接4个数码管的七段,P0口分别接4个数码管的公共端,P1口输出数码管的字形码,P0口输出数码管的字位码。
6 计算器程序设计6.1存储单元分配30H单元:数值个位显示单元;31H单元:数值十位显示单元;32H单元:数值百位显示单元;33H单元:数值千位显示单元;23H单元:第一操作数存储单元;24H单元:第二操作数存储单元;25H单元:键值暂存单元;27H单元:清除键状态;34H-37H单元:结果数据转换暂存单元;38H-39H单元:结果高低8位暂存单元;R5单元:操作数计数单元;R4单元:操作数数值位数计数单元;R3单元:运算符号存储单元。
6.2 主程序设计主程序进行程序中用到的一些存储单元的初始化,数值显示和4*4键盘扫描。
首先,进行存储单元初始化,给数码管显示单元30H-33H赋予“0000”字形数据,将数值计数单元,存储单元,23H-25H,34H-37H,38H,39H,3AH,3BH,3CH,赋予初值零。
之后,调用键盘扫描子程序,和数码管显示数据转换程序,数码管动态显示子程序。
主程序不断进行键盘扫描,数码管显示数据转换子程序和动态显示子程序。
6.3 数码管显示数据转换子程序CONV由于数值单元存放的是二进制数,而用户熟悉的是十进制数,所以应将数值单元中的二进制转换为十进制数,即BCD码。
要通过数码管显示出当前数值,还必须将BCD码进一步转换为七段码,转换的最终结果数据存放于显示缓冲区30H-33H单元中,其中30H单元存放数值的个位七段码,31H单元存放数值的十位七段码,32H单元存放数值的百位七段码,33H单元存放数值的千位七段码。
6.4 数码管动态显示子程序本任务由P1口输出字形码,P0口输出字位码。
先将存放于30H单元的数值个位七段码由P1口输出,同时P0口输出使数值个位显示数码管点亮的字位码。
由于采用的是共阳数码管,所以只有该位数码管对应的P0.0为1,其他位P0.1-P0.3位0,点亮延时10MS。
然后P1口输出数值十位七段码,P0.1位1,数值十位数码管点亮,延时10MS。
接着P1口输出数值百位七段码,P0.2为1,数值百位数码管点亮,延时10MS。
最后P1口输出数值千位七段码,P0.3为1,数值千位数码管点亮,延时10MS。
7 系统硬件设计选用设备8051单片机一片选用设备:8051弹片机一片,4*4键盘一个,4位共阳极的七段数码管一个,连线若干。
7.1 系统总框图如下:7.2 计算器硬件线路图图1-17.3 系统工作原理(1)首先赋予显示缓冲初始值‘00 00’,并把数据存储单元清零。
(2)主程序调用键盘扫描子程序,判断键值,是数字第一次直接赋予23H单元,如是第二次输入数字,则把第一次值乘十后与第二次值相加,结果存储到23H单元,并R4计数2次,表示已输入两位,扫描键值时就不在赋值和显示。