AT89S51(52)单片机最小系统设计

合集下载

51单片机最小系统

51单片机最小系统

51单片机最小系统在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。

所以可以通过按键的断开和闭合在运行的系统中控制其复位。

开机的时候为什么为复位?在电路图中,电容的的大小是10uF,电阻的大小是10k。

所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。

也就是说在电脑启动的0.1S内,电容两端的电压时在0~3.5V增加。

这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。

所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。

在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。

所以在开机0.1S 内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。

按键按下的时候为什么会复位?在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。

当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。

随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。

根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。

单片机系统自动复位。

总结:1、复位电路的原理是单片机RST引脚接收到2US以上的电平信号,只要保证电容的充放电时间大于2US,即可实现复位,所以电路中的电容值是可以改变的。

2、按键按下系统复位,是电容处于一个短路电路中,释放了所有的电能,电阻两端的电压增加引起的。

51单片机最小系统电路介绍1.51单片机最小系统复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短。

四位电子密码锁.

四位电子密码锁.

专业工程设计说明书题目:4位电子密码锁设计院(系):电子工程与自动化学院专业:测控技术与仪器(卓越)学生姓名:***学号:**********指导教师:**2015年1月16日锁是置于可启闭的器物上,用以关住某个确定的空间范围或某种器具的,必须以钥匙或暗码打开的扣件。

锁具发展到现在已有若干年的历史了,人们对它的结构、机理也研究得很透彻。

随着社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。

当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。

本设计由主控芯片51单片机,单片机时钟电路,矩阵键盘,数码管的动态显示,报警电路和开锁电路组成。

单片负责控制整个系统的执行过程。

关键词:AT89S51、时钟电路、矩阵键盘、数码管的动态显示、报警电路,开锁电路。

引言 (1)1课程设计题目 (1)2 系统设计 (2)2.1 总的系统设计结构图 (2)2.2系统硬件设计 (2)3 AT89S52最小系统设计 (3)3.1 时钟电路设计 (3)3.2 复位电路设计 (4)4 键盘及显示报警电路的硬件设计 (5)4.1 矩阵键盘电路设计 (5)4.2 显示电路硬件设计 (5)4.3 继电器驱动电路及报警电路设计 (6)4.3.1继电器简介 (6)4.3.2 固态继电器驱动电路设计 (7)4.3.3报警提示电路 (7)5 系统软件设计 (8)5.1主程序模块 (9)5.2密码比较判断模块 (9)5.3键盘扫描模块 (9)5.4修改密码模块 (10)5.5数码管液晶显示模块 (11)6 总体调试 (11)7 总结 (12)参考文献 (13)附录 (14)引言通过本次课设的理解与掌握:1、熟悉掌握单片机的结构及工作原理,锻炼独立设计、制作和调试单片机应用系统的软硬件开发的过程和方法。

2、通过MCS-51单片机应用系统的设计与编程应用,将理论知识和实际应用结合起来,加深对电子电路、电子元器件、印刷电路板等方面的知识,提高在软件编程、排错调试、焊接技术、相关设备的使用技能。

基于AT89S51单片机的智能电热水器的设计--毕业设计

基于AT89S51单片机的智能电热水器的设计--毕业设计

毕业设计基于AT89S51单片机的智能电热水器的设计摘要本设计采用ATEML公司生产的AT89S51单片机为核心来设计智能电热水器。

本设计也对单片机控制电热水器实现智能化的可能性进行了分析,利用温度传感器、水位检测装置、及模数转换器等来完成本设计。

在硬件设计方面,主要对单片机最小系统及其扩展、电源电路、键盘显示及接口电路、模数转换电路、水位及水温检测电路、报警电路进行了详细介绍。

还详细介绍了设计中应用到的主要芯片的性能和特点,包括AT89S51、74LS377、DS18B20、ADC0809等。

在软件设计方面,采用汇编语言编程,是由于其易于为单片机所识别,执行速度快。

最后对软件调试进行了误差分析。

该智能电热水器设计完善,实现方案简单易行。

采用软件设计来控制,可以实现智能检测水位及水温,智能加热,并且提高了整机的可靠性及准确性。

关键词:单片机,控制,智能ABSTRACTAs technology make a good progress, the applications of single-chip microcomputer become mature all the time. The single-chip microcomputer integrates the various components in a chip, uses the internal bus structure, reduces the connection in different chips, enhanced greatly the reliability and anti-jamming capability. In the development of single-chip microcomputer, due to its excellent cost performance, high integration, small size, high reliability, it has been used as a control center all the time.Since the birth of single-chip microcomputer, it began to walk into a human’s life, such as washing machines, refrigerators, electronic toys, DMB, which equipped with the single-chip microcomputer, and improved their intelligence, ability. People, who used them, will love them better. The single-chip microcomputer makes human’s life more convenient, comfortable and colorful. As a result, I use single-chip microcomputer to design intelligent electric water heaters.This paper mainly discusses the intelligent electric water heater how to work. To achieve system goals, in deep analysis of the AT89S51, I made a set of simple and practical control system design. The system is mainly to use single-chip microcomputer to control centers, with specific hardware architecture and the corresponding software design, thus the intelligence of the water heater would become true.Keywords: single-chip microcomputer, controller, intelligence目录第1章绪论 ·······················································································1.1 选题的背景、目的及意义 ·······························································1.2 国内外的研究状况和成果 ·······························································1.3 研究设想和实验设计 ·····································································第2章硬件系统设计 ·········································································2.1 方案验证 ····················································································2.2 硬件系统设计 ··············································································2.2.1 电源电路 ···········································································2.2.2 键盘/显示接口电路······························································2.2.5 报警电路 ···········································································2.2.6 模数转换电路 ·····································································2.2.7 温度检测电路 ·····································································2.2.8 水位检测电路 ·····································································2.2.9 AT89S51功能及特性介绍·······················································第3章软件系统设计 ·········································································3.1 主程序流程框图 ·····································································3.2 键扫描子程序流程框图 ····························································3.3 显示子程序流程框图 ·······························································3.4 运行程序流程框图 ··································································3.5 软件仿真 ··············································································结论······································································································参考文献 ······························································································致谢······································································································附录1程序清单····················································································附录2 电源电路原理图·········································································附录3智能电热水器原理图主要符号表附录3英文翻译附录4 中文资料第1章绪论1.1 选题的背景、目的及意义据不完全统计,我市城镇居民家庭以电热水器为主,占总量的60%以上;从前风光无限的燃气热水器渐渐地黯然失色,市场份额仅剩不足20%;新兴的太阳能热水器虽然受到安装条件的限制,但其安全、环保的性能广受消费者青睐,发展态势迅猛,市场占有率已达到15%左右。

用单片机设计的电子琴,AT89S51

用单片机设计的电子琴,AT89S51

1.实验任务(1).由4X4组成16个按钮矩阵,设计成16个音。

(2).可随意弹奏想要表达的音乐。

2.电路原理图3.系统板硬件连线(1).把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;(2).把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4R1-R4端口上;4.相关程序内容(1).4X4行列式键盘识别;(2).音乐产生的方法;一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。

现在以单片机12MHz晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1 DO 262 63628 # 4 FA# 740 64860#1 DO# 277 63731 中 5 SO 784 64898低2 RE 294 63835 # 5 SO# 831 64934#2 RE# 311 63928 中 6 LA 880 64968低 3 M 330 64021 # 6 932 64994低 4 FA 349 64103 中 7 SI 988 65030# 4 FA# 370 64185 高 1 DO 1046 65058低 5 SO 392 64260 # 1 DO# 1109 65085# 5 SO# 415 64331 高 2 RE 1175 65110低 6 LA 440 64400 # 2 RE# 1245 65134# 6 466 64463 高 3 M 1318 65157低 7 SI 494 64524 高 4 FA 1397 65178中 1 DO 523 64580 # 4 FA# 1480 65198# 1 DO# 554 64633 高 5 SO 1568 65217中 2 RE 587 64684 # 5 SO# 1661 65235# 2 RE# 622 64732 高 6 LA 1760 65252中 3 M 659 64777 # 6 1865 65268中 4 FA 698 64820 高 7 SI 1967 65283下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据低音0-19之间,中音在20-39之间,高音在40-59之间TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0DW 0,63731,63928,0,64185,64331,64463,0,0,0DW 0,64580,64684,64777,64820,64898,64968,65030,0,0DW 0,64633,64732,0,64860,64934,64994,0,0,0DW 0,65058,65110,65157,65178,65217,65252,65283,0,0DW 0,65085,65134,0,65198,65235,65268,0,0,0DW 02、音乐的音拍,一个节拍为单位(C调)曲调值DELAY 曲调值DELAY调4/4 125ms 调4/4 62ms调3/4 187ms 调3/4 94ms调2/4 250ms 调2/4 125ms对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。

单片机最小系统

单片机最小系统

1.4单片机最小系统设计单片机加上适当的外围器件和应用程序,构成的应用系统称为最小系统;是组成单片机系统最基本的部分。

最小系统硬件组成:单片机芯片、电源电路、时钟电路、复位电路。

1)单片机芯片AT89S51/52系列单片机是比较流行的51单片机之一,它支持ISP在线编程功能(改写单片机存储器内的程序不需要把芯片从工作环境中脱离)。

AT89S52单片机芯片及IC座如图1-4所示。

实验过程中,单片机芯片最好插在IC座上,注意芯片的方向。

焊接的时候单片机不要插在IC座上,先焊好IC 座,当电路全部完成后再上芯片。

图1-4 单片机芯片及IC座2)电源电路Vcc(40脚), GND(20脚)AT89S* 系列单片机工作电源范围宽达4~5.5V。

单片机的供电有两种方式:①集成稳压电源方式;②USB供电。

①集成稳压电源方式;利用变压器、整流、滤波、稳压自制电源,如图1-5所示。

图1-5 稳压电源电路图1-8 电源适配器稳压电路焊接效果图2)时钟电路产生一个工作时序,其工作需要时钟电路提供一个工作频率。

时钟电路原理图如图1-10所示。

1)振荡频率范围:1.2MHz~12MHz。

2)电容C1和C2选择:10~30pF图1-10时钟电路原理图注意:晶体和电容应尽可能安装在单片机芯片附近,以减少寄生电容,保证振荡器稳定和可靠工作。

电容是为了更好地提高晶振电路的时钟精度。

3)复位电路复位使单片机进入某种确定的初始状态。

退出处于节电工作方式的停顿状态、退出一切程序进程、退出程序的死循环,从头开始。

上电+按钮复位电路如图1-11所示。

注意:电解电容器的极性,长脚为正。

图1-11 复位电路根据上面原理设计的单片机最小系统如图1-12所示。

图1-12单片机最小系统注意:①如果不扩展外部ROM,使用单片机内部的ROM,31脚/EA需接电源(+5V)。

3.1单片机最小系统设计3.1.1 AT89S52简介本设计采用ATMEL公司的8位单片机AT89S52,AT89S52片内含8k字节的可反复擦写的只读Flash程序存储器和256字节的随机存取数据存储器(RAM)。

基于单片机的电子密码锁毕业论文设计

基于单片机的电子密码锁毕业论文设计

本科毕业设计(论文)题目基于单片机的电子密码锁设计院(系部)河北大学专业名称电子信息工程年级班级学生姓名指导教师2011年月日摘要本课题设计了一种基于单片机的数字电子密码锁,这种数字电子密码锁以单片机作为数据处理主控芯片。

电子密码锁的设计主要由四部分组成:4×4矩阵键盘接口电路、以AT89S52芯片为核心的密码锁的数据处理及控制电路、掉电情况下依然能保存密码的EEPROM存储器芯片,输出七段显示电路。

另外系统还有LED提示灯,报警蜂鸣器,单片机复位电路等。

电子密码锁设计的关键问题是实现密码的输入、清除、开锁、更改等功能。

同时该密码锁具有设计方法合理,简单易行,成本低,安全实用等特点,符合住宅,办公室等场所的用锁要求,具有推广价值。

关键词单片机密码锁 4*4矩阵键盘 EEPROM存储芯片实用经济AbstractThis project designed a digital electronic lock which used a MCU as data process and control chip. The main functions digital electronic lock are as follows:The design of the electronic password lock is mainly made up of four parts: 4×4 matrix keyboard interface circuit, data processing and control circuit, eeprom memory chip that is used to keep password when the lock loses power and display circuit. In addition the system also consists of LED lights, alarm buzzers, single-chip reset circuit and so on..The key question of the electronic lock designing is the realization of functions, such as the input password, clear password, unlock, change password and other functions.And the designed cipher lock is characterized by its reasonable designing methods, simple operation, low cost and property of safety and practicality.Besides,it works well as a residence lock and has great potential for commercial development.Key words: SCM Cipher lock 4*4matrix keyboard EEPROM Practical economy目录1 绪论 (1)1.1国内外研究综述 (1)1.2选题的目的和意义 (2)1.3本论文的任务 (3)2电子密码锁总体设计 (4)2.1系统总体设计 (4)2.2单片机 (5)2.3密码存储芯片选择 (10)2.4键盘输入方案比较 (12)2.5显示方案比较 (13)3电子密码锁的硬件设计 (1)3.1系统结构框图 (1)3.2主控部分 (2)3.3显示部分 (3)3.4键盘输入部分 (4)3.5密码存储部分 (5)3.6电源部分 (5)3.7其它功能部分 (8)3.8 电子密码锁的电路原理图 (10)4电子密码锁的软件组成 (12)4.1系统软件设计流程 (12)4.2 Keil uVision2软件介绍 (13)4.3各主要部分的功能实现程序设计 (14)4.3.1初始化程序设计 (14)4.3.2按键处理程序设计 (17)4.3.3密码更改程序设计 (21)5系统仿真 (24)5.1系统仿真过程 (24)5.2仿真调试中遇到的问题及解决办法 (25)总结 (1)致谢 (2)参考文献 (3)附录 (4)1 绪论1.1国内外研究综述在电子锁出现以前人们广泛的使用机械锁,但是随着时间的推移机械锁已不能满足人们的要求,于是电子锁应用而生。

单片机最小系统的设计

单片机最小系统的设计

单片机最小系统的设计以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软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。

AT89S51(52)单片机最小系统设计原理详解

AT89S51(52)单片机最小系统设计原理详解

51最小系统设计原理1、定义:单片机最小系统是指能让单片机运行起来所需的最小器件构成的电路系统。

2、电源部分:从电脑USB接口DC5V取电,C4、C5构成USB接口电源的简单滤波电路。

开关电源的输出电压往往波纹较大,不像线性稳压器输出的那么稳定,所以要进行必要的滤波。

如果需要接一个电源开关,应该接在C4和C5的前面,这样在接通开关的瞬间产生的抖动能被这两个电容吸收。

3、复位电路:C1和R1构成单片机的上电自动复位电路。

A T89S51/52单片机属于高电平复位,RST管脚上需要持续两个机器周期(24个时钟周期)以上的高电平,单片机才能复位。

复位原理:上电瞬间,电源给C1充电,在R1产生压降,R1上端为高电平,RST管脚检测到高电平,单片机的各个寄存器清零或恢复初始状态,特别是PC计数器清零,程序便从头开始执行。

C1和R1常用取值:C1取10uf时R1取10k;C1取22uf时R1取4.7k;如果C1、R1取值过大或C1、R1取值过小都会引起单片机复位实践过长或过短,不利于单片机启动。

如果需要加手动复位,那就在C1两端并联一个按钮即可。

4、时钟电路:C2、C3和Y构成单片机的时钟源电路。

C2和C3是晶振Y的负载电容,过大或过小都会影响晶振的频率和幅度。

AT89S51/52单片机对晶振负载电容的取值有明确要求:在20pf到40pf之间,最佳值为30pf。

Y的取值可从1MHz到24MHz,如果用的是12MHz 的晶振,那个一个机器周期刚好就是1微妙,编程时计时很方便。

焊接时一定要注意,这三个元器件应尽量靠近单片机相应的管脚,以减少线路上寄生电容的影响。

机器周期:在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。

例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。

完成一个基本操作所需要的时间称为机器周期。

5、程序下载电路:第一种,ISP下载,10PH是AtmelISP并口下载线10p接头。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机最小系统设计制作训练单片机最小系统电路板硬件设计单片机最小系统电路板可选用AT89C51、AT89C52等DIP-40封装的单片机作为MCU。

系统包括时钟电路,复位电路,扩展了片外数据存储器和地址锁存器。

系统还设置了8个并行键盘S1~S4,S6~S9,6个共阳极LED数码管LED1~LED6。

系统无需扩展程序存储器,用户可根据系统程序大小选择片内带不同容量闪存的单片机,例如PHILIPS半导体公司推出的P89C66X Flash单片机,其片内Flash ROM容量最大可达64KB。

系统还提供基于8279的通用键盘显示电路、液晶显示模块、A/D及D/A转换等众多外围器件和设备接口。

单片机最小系统原理框图如图4.1.1所示。

最小系统电路原理图如图4.1.2所示。

LED数码管和并行键盘电路原理图如图4.1.3所示。

图4.1.1单片机最小系统原理框图图4.1.2 单片机最小系统电原理图图4.1.3 LED数码管和并行键盘电路原理图单片机时钟信电路原理图如图4.1.4所示。

在引脚XTAL1和XTAL2跨接晶振Y1和微调电容C5,C6就构成了内部振荡方式,由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。

其中Y1是可插拔更换的,默认值是12MHz。

图4.1.4 时钟源系统板采用上电自动复位和按键手动复位方式。

上电复位要求接通电源后,自动实现复位操作。

手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。

其电路原理图如图4.1.5所示。

上电自动复位通过外部复位电容C4充电来实现。

按键手动复位是通过复位端经电阻和Vcc接通而实现的。

二极管用来防止反相放电。

图4.1.5 复位电路原理图系统板扩展了一片32K的数据存储器62256,如图4.1.6所示。

数据线D0~D7直接与单片机的数据地址复用口P0相连,地址的低8位A0~A7则由U15锁存器74LS373获得,地址的高7位则直接与单片机的P2.0~P2.6相连。

片选信号则由地址线A15(P2.7引脚)获得,低电平有效。

这样数据存储器占用了系统从0X0000H~0X7FFFH的XDATA空间。

图4.1.6数据存储器的扩展系统板设置了8个并行键盘S1~S4,S6~S9,6个共阳极LED数码管LED1~LED6。

其电路原理图如图4.1.2所示。

可以看出为了节省单片机的I/O口,在此采用了两片74LS373锁存器U15和U16扩展了8个I/O口。

U15用来锁存P0口送出的地址信号,它的片选信号OC接地,表示一直有效,其控制端C接ALE信号。

U16的输出端通过限流电阻R8~R15与数码管的段码数据线和并行键盘相连,用来送出LED数码管的段码数据信号和并行键盘的扫描信号,它的片选信号OC接地,表示一直有效,其数据锁存允许信号C由CS0~CS6和WR信号经一个或非门74LS02得到(其中CS0~CS5控制LED数码管,CS6控制键盘),这样只有当CS0~CS6中的某一个和WR同时有效且由低电平跳变到高电平时,输入的数据D0~D7即被输出到输出端Q0~Q7。

U17为3-8译码器74LS138,通过它将高位地址A15~A12译成8个片选信号CS0~CS7。

它的G2,G3端接地,G1接A15,所以A15应始终为高电平,这样CS0~CS7的地址就分别为8000H,9000H,0A000H,0B000H,0C000H,0D000H,0E000H,0F000H。

CS0~CS5和WR信号经过一个或非门控制三极管9012的导通,从而控制LED数码管的导通,并且三极管9012用来增强信号的驱动能力。

主要器件如表4.1.1所示:表4.1.1单片机最小系统主要器件主要应用接口如表4.1.2所示:表4.1.2单片机最小系统主要应用接口单片机最小系统电路板测试程序设计编写测试程序,一是可对最小系统电路板各资源进行测试,二是为用户提供了使用LED 显示及访问键盘等各种资源的子程序。

1. 键盘扫描及数码管显示的汇编语言程序键盘扫描及数码管显示的汇编语言程序如下:;************************* **********************************;键盘及数码管显示程序,功能为按下一键,则对应键的数码管亮并显示该键代表的数字;编写:cgq;最后修改日期:2003/11/16;************************************************************org 0000hajmp mainorg 0100hmain: mov sp,#30hmov r3,#0mov r4,#0kon: lcall ks1 ;调用读键盘程序cjne a,#0ffh,show1 ;有键按下lcall dir ;调用显示子程序ajmp konshow1:lcall dir ;去抖动lcall dirlcall ks1cjne a,#0ffh,show2 ;键有效ajmp konshow2:cjne a,#0feh,l1 ;以下为判别键值程序mov r4,#0 ;第一个键赋其代码0ajmp lkpl1:cjne a,#0fdh,l2mov r4,#1ajmp lkpl2: cjne a,#0fbh,l3mov r4,#2ajmp lkpl3:cjne a,#0f7h,l4mov r4,#3ajmp lkpl4:cjne a,#0efh,l5mov r4,#4ajmp lkpl5:cjne a,#0dfh,lkpmov r4,#5ajmp lkplkp:lcall dirljmp kon ;返回dir: mov dptr,#table ;显示子程序mov a,r4movc a,@a+dptr ;取7段码mov r3,amov a,r4led1:cjne a,#0,led2 ;根据键值选择数码管1 mov dptr,#8000hajmp ssled2:cjne a,#1,led3 ;根据键值选择数码管2 mov dptr,#9000hajmp ssled3:cjne a,#2,led4 ;根据键值选择数码管3mov dptr,#0a000hajmp ssled4: cjne a,#3,led5 ;根据键值选择数码管4 mov dptr,#0b000hajmp ssled5:cjne a,#4,led6 ;根据键值选择数码管5mov dptr,#0c000hajmp ssled6:cjne a,#5,ss ;根据键值选择数码管6mov dptr,#0d000hajmp ssss: mov a,r3movx @dptr,alcall delayretks1:clr p1.7mov dptr,#0e000h ;键盘地址movx a,@dptrretdelay: mov r6,#10 ;延时子程序lpp: mov r7,#100djnz r7,$djnz r6,lpprettable: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h db 88h,83h,0c6h,0a1h,86h,8eh,0ffh,0f7hend2. 键盘扫描及数码管显示的C语言程序键盘扫描及数码管显示的C语言程序如下:/**************************************************//*键盘及数码管程序,每一键代表一个数字,在其数字代表的数码管中显示*//*最后修改日期:2003/11/16 */#include <absacc.h>#include <reg51.h>#define uchar unsigned char#define uint unsigned int#define LED1 XBYTE [0x8000] /*定义各数码管地址*/#define LED2 XBYTE [0x9000]#define LED3 XBYTE [0xA000]#define LED4 XBYTE [0xB000]#define LED5 XBYTE [0xC000]#define LED6 XBYTE [0xD000]#define KEY XBYTE [0xE000]/*定义键盘地址*/void delay(uint v) /*延时函数*/{while(v!=0)v--;}uchar keynum=0;sbit P1_7=P1^7; /*扫描端口*//*数字段码表*/uchar code segtab[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,\ 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0xf7};void dir(uchar); /*声明显示函数*/void readkey(void) /*读键盘函数*/{uchar M_key=0;uchar i;P1_7=0;M_key=KEY; /*取键盘数据*/if(M_key!=0xff){for(i=0;i<20;i++) /*去抖动*/dir(keynum);M_key=KEY;if(M_key!=0xff) /*读键*/switch(M_key){case 0xfe: /*第1个键按下*/ keynum=0;break;case 0xfd: /*第2个键按下*/ keynum=1;break;case 0xfb: /*第3个键按下*/ keynum=2;break;case 0xf7: /*第4个键按下*/ keynum=3;break;case 0xef: /*第5个键按下*/ keynum=4;break;case 0xdf: /*第6个键按下*/ keynum=5;break;}}}void dir(keynum) /*显示函数*/{switch(keynum){case 0:LED1=segtab[0];delay(100);break;case 1:LED2=segtab[1];delay(100);break;case 2:LED3=segtab[2];delay(100);break;case 3:LED4=segtab[3];delay(100);break;case 4:LED5=segtab[4];delay(100);break;case 5:LED6=segtab[5];delay(100);break;}}void main() /*主函数*/{while(1){dir(keynum); /*调用显示函数*/readkey(); /*调用键盘函数*/ }}。

相关文档
最新文档