南昌大学
数字电路与逻辑设计实验报告
姓 名: 付 容
学 号: 6100212236
学 院: 信息工程学院
班 级: 电气信息I类126班
实验名称: 数字钟设计
一、实验目的
1、熟悉数字系统的分析和设计方法;
2、熟悉根据任务的要求合理选择集成器件的方法;
3、学习和掌握数字钟的工作原理及设计方法,并且通过对数字钟的制作
进一步了解各种中、小规模集成电路的功能及使用方法;
4、学习使用protel软件进行电子电路的原理图设计、印制电路板设计;
5、初步掌握PCB板的制作流程及其工艺;
6、掌握数字系统的调试方法;
7、提高检查故障和排除故障的能力。
二、实验任务
利用中、小规模集成电路设计并制作一个数字显示时、分、秒的时钟,应具备如下功能:
1、能进行正常的时、分、秒计时功能,以数字形式显示时、分、秒的时间;
2、时应以24小时计时周期,计数序列为00—23;
3、计时出现误差时能校正,可以分别对时和分进行校正。
三、实验器材
计算机、protel软件、555定时器一个、6个74LS161、3个74LS90、个74LS48、6个数码管、若干个74LS00和74LS04、电源、开关。
四、实验原理
1、电路的总体原理框图
2、数字钟的构成
数字钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能。因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、振荡电路组成。数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。通常使振荡电路构成数字钟。
⑴555振荡电路
555定时器振荡电路给数字钟提供一个频率稳定准确的1KHz的方波信号,可保证数字钟的走时准确及稳定。不管是指针式的电子钟还是数字显示的电子钟都使用了555振荡电路。
⑵分频器电路
分频器电路用74LS90芯片将1kHz的高频方波信号经3次分频后得到1Hz的方波信号供秒计数器进行计数。分频器实际上也就是计数器。
⑶时间计数器电路
时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为12进制计数器。
⑷译码驱动电路
译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。
⑸数码管
数码管通常有发光二极管(LED)数码管和液晶(LCD)数码管,本设计提供的为LED数码管。
3、数字钟工作原理
数字电子钟的原理方框图如上图,该电路系统由秒信号发生器、“时、分、秒”计数器、译码器及数码显示管、校时电路、整点报时电路等组成。秒信号发生器是整个系统的时基信号,它直接决定计时系统的精度,本实验用555定时器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用六十进制计数器,每累计60秒发出一个“分脉冲”信号,该信号作为“分计数器”的时钟脉冲。“分计数器”采用六十进制计数器,每累计60分钟发出一个“时脉冲”信号,该信号作为“时计数器”的时钟脉冲。译码显示电路将“时”、“分”、“秒”计数器的输出状态经七段显示译码器译码,通过LED七段共阴极数码显示管显示出来。整点报时电路是根据计时系统的输出状态产生脉冲信号,然后去触发一音频发生器实现报时。校时电路是用来对“时”、“分”、“秒”显示数字进行校对调整的。
五、实验设计方案
1、六十进制计数器电路
由两片74160构成的六十进制计数器如下图所示。首先将两片74160构成一百进制计数器,然后采用整体置数法接成六十进制计数器。电路的59状态译码产生LD'=0信号,同时加到两片74LS161上,在下一个计数脉冲(第60个计数脉冲)到达时将0000同时输入两片74LS161中,从而得到六十进制计数器。进位输出可有门电路G的输出直接得到。
2、二十四进制计数器电路
由两片74LS161构成的二十四进制计数器如下图所示。首先将两片74160构成一百进制计数器,然后采用整体置数法接成二十四进制计数器。电路的23状态译码产生LD'=0信号,同时加到两片74LS161上,在下一个计数脉冲(第24个计数脉冲)到达时将0000同时输入两片74LS161中,从而得到二十四进制计数器。
3、秒信号发生器电路
秒信号发生器是整个系统的时基信号,它直接决定计时系统的精度,本实验用555定时器来实现。先将555定时器的2、6管脚连在一起构成施密特触发器,然后再通过RC积分电路构成多谐振荡器。接入电路的二极管D1、D2使电容C1的充电电流和放电电流流经不同的路径,充电电流只流经R1,放电电流只流经R2,因此电容C1的充电时间为
T1=R1C1Ln2
电容C1的放电时间为
T2=R2C1Ln2
输出脉冲的占空比为
q=R1/(R1+R2)
若取R1=R2=71千欧然后与一个2千欧的电位器串联,则电路的振荡周期为
T=T1+T2=1s
4、校时电路
校准电路实质上是由一个555定时器接成的频率为1KHz的多谐振荡器,如下图示。从图中可知,秒脉冲进入计数器,数字钟正常工作。校时时先按下按钮J2,若按下J2则10Hz脉冲信号进入分计数器的个位,而分脉冲被阻止进入,因而较快的校准分计数器的计数值;若按下J1则100Hz脉冲信号进入时计数器个位,而时脉冲被阻止进入,因而较快的校准时计数器的计数值。
5、译码显示电路
译码电路的功能是将“秒”、“分”、“时”计数器的输出代码进行翻译变成相应的数字。用于驱动LED七段数码管的译码器为74LS48。由74LS48和LED七段数码管组成的数码显示电路如下图所示。将“秒”、“分”、“时”计数器的每位输出分别接到相应七段译码器的输入端,便可进行不同数字的显示。在译码器输出与数码管之间串联的为限流电阻。
六、实验总电路图
Multisim仿真原理图
七、实验仿真结果
1、1kHz脉冲信号:
2、秒时钟:
3、分时钟:
4、时时钟:
5、实验总仿真图:
八、实验总结
1、仿真过程中遇到的问题及解决方法
刚接到数字钟这个实验设计的时候,感觉脑子中一片混乱,理不出来一个清晰的思路。但是我先看了一遍课本,充分理解、熟悉课本中所讲的每个集成芯片的功能和它们的接法,然后又查阅了相关的资料。经过这个过程之后,我构思出来了数字钟大致的电路图和所要用到的集成芯片。但是在真正设计、画电路图的时候却不断出现了一些细节问题。比如用74LS161芯片构成60进制计数器后,在Multisim里找不到实验室用到的CD4511BE型号的译码器,那我该如何选合适的译码器进行译码?用555定时器产生1Hz的秒脉冲信号后,在保证原理图一定正确的情况下,为什么数码管一直显示0,不会走数字呢?24进制的地方为什么仿真结果总是会有些不对,从09变成10的时候中间会有一个类似于“8”一样的数出现,使得24进制与60进制不能同步进行,总是慢一秒?。于是我又去查资料,并请教了一些同学、老师才逐渐掌握了解决这些问题的方法,最后将问题一个个的击破了。经上网百度后,我知道用74LS48译码比较合适;问同学、老师后,我知道1Hz数码管能走数字,但是周期太长,所以将555定时器改成1KHz的才能很直观的看到实验仿真结果;在24进制的个位上加一个非门后就能实现正常功能。经过几次修改完善之后,我的设计仿真终于做出来了。
2、画protel原理图遇到的问题
①用单刀双掷开关实现校时电路时发现所选开关没有封装,后来经老师点拨在“元件库”中查找到了带封装的单刀双掷开关;
②不知道花PCB板的时候需要在板子的某个角落放总电源,否则整块板子无法供电使用,就连555定时器也需要电源驱动才能正常产生脉冲信号,加个电源开关更能使整个电路设计的合理、规范;
3、心得体会
此次的数字钟设计重点在于理论设计、对各种集成芯片的应用和电路本身的原理的熟悉,与电路的仿真和实际的连线有很大的差距。在此次的数字钟设计过程中,让我更进一步地熟悉了芯片的结构及掌握了各芯片的工作原理和其具体的使用方法。在连接六十进制及其进位输出和用555定时器构成多谐振荡器的接法中,熟悉了逻辑电路及其芯片各引脚的功能,在电路出错时能准确地找出错误所在并及时纠正。
这次电子课程设计让我收获很大,通过这次的设计实验进一步地增强了实验的动脑、动手能力。让我体会到了学习知识时理论联系实际的重要性,并发现自己的知识面是很窄的,对很多简单的理论问题都比较难于解决,更别说实际的的问题了。所以,以后遇到这种动手操作的能力我一定要格外重视,并且努力完成它,争取做到最好的效果。
第二篇:数字温度计电路设计与调试 杭电微机原理课程设计
微机接口技术课程设计说明书
课程名称:数字温度计电路设计与调试
学 院: 机械工程学院
专 业:机械设计制造及其自动化
组 员:
指导老师:
日 期: 20##年5月20日
目 录
1.课程设计任务书………………………3
2.说明书正文……………………………5
2.1 前 言……………………………5
2.2 现 状……………………………6
2.3 任务分析与方案设计…………… 7
2.4 系统电路原理图…………………10
2.5元器件参数选择及清单………… 14
2.6 电路的调试………………………15
3. 心得体会…………………………… 17
4. 参考文献…………………………… 18
5. 附录………………………………… 19
1.课程设计任务书
1.1 任务要求
在Dais实验台基础上设计并调试一个外接口电路,能够测量和显示所测量(依具体题目定)的值,且具有一定的控制功能,编程并调试完成整个开发系统。每组一题,分别由3~4位同学合作完成。
1.2 主要技术要求
1) 测温题要求温度测量:0摄氏度~+100摄氏度;
电机转速题要求:0~1500r/min;称重题要求:自行设定。
2) 显示精度:0.1g
1.3 主要完成任务
1、查找相关资料,确定课程设计方案;
2、微机接口电路硬件的焊接、装配、逐步排除故障及调试;
3、用Protel2004绘制微机最小系统配置原理图;
4、用Protel2004绘制相关项目的接口原理图;
5、编写有关项目的程序,并进行调试;
6、按照相关项目内容要求,上机进行联调;
7、编写课程设计报告。
1.4提交成果
1). 课程设计说明书一本。(电子文档和打印稿各一份)
要求:内容完整,图表完备,条理清晰,分析有据,计算精确。
所附电路图布局合理,清晰完备,图形和符号要规范。
2). 所用元器件清单。
3). 电路实体一套。
要求:该电路实体必须是经过自己安装调试通过并达到性能指标要求的电路实体。
1.5 时间按排
4.23晚:布置任务与接口电路只是授课
4.24~5.05:查找相关资料,初拟总体方案;讨论确定总方案;上级熟悉 Protel2004 软件;微机最小系统配置原理图,相关接口电路图设计;借领工具,分发参考资料、PCB板及相关元器件。
5.06~5.16:接口 电路PCB板焊接、装配、调试;各项目相关程序设计、编写及调试;软硬件联合调试。
5.17~5.19: 编写课程设计说明书;答辩及验收课程设计成果;归还所借工具,上交课程设计成果。
5.20~5.21 :提交修改后的最终报告及成果。
1.6 注意事项
1、 按时上下机,严禁玩游戏,注意公共卫生。
2、 爱护实验室内一切实验设施,违者按零分计。
3、 爱护借用的工具,丢失工具者按原价赔偿。故意损坏工具者按零分计,并原价赔偿。
4、 注意安全。下课时关闭总闸与空调,拔掉电烙铁,关好门窗。
5、 不准用实验桌上乱写乱画,否则按零分计。
笔在
2.说明书正文
2.1 前 言
从晶体管、集成电路,到超大规模集成电路,日新月异的微电子技术是计算机技术飞速发展的基础。计算机的发展,加快了信息技术革命,使人类进入信息时代。多媒体计算机技术的应用,实现了文字、数据、图形、图像、动画、音响的再现和传输;国际互联网(Internet)把世界联成一体,形成信息高速公路,令人真正感到天涯咫尺。
以半导体集成电路为中心的微电子技术的进步,使计算机向着微型、高性能、低成本的方向迅猛发展。至今,集成电路已发展到第四代,即超大规模集成电路(VLSI)。今天的微处理器,不仅CPU,而且连同存储器、输入/输出接口等电路也做在同一块硅片上。微处理器的飞速发展使微机高度微型化、快速化、大容量化和低成本化,单台微机的性能已达到中型机以上水平。
微型计算机软硬件不断翻新,但工作原理基本上没变,通过学习微机的工作原理、CPU结构和功能、各种寻址方式和微机的指令系统、汇编语言程序设计、中断的工作原理及处理方法和接口技术,以期能在理论上及实践上掌握和应用微型计算机的主要技术。
微机原理是一门专业基础课程,它的主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言设计以及微型计算机各个组成部分介绍等内容。要求学生对微机原理中的基本概念有较深入的了解,能够系统地掌握微型计算机的结构、8086微处理器和指令系统、汇编语言程序设计方法、微机系统的接口电路设计及编程方法等,并具有综合运用所学知识分析问题和解决问题的能力
本次温度测量控制程序设计采用汇编语言程序编写,要求设计者具备微机原理的理论知识和实践能力。微机原理和接口技术是一门实践性强的学科,不但要求有较高的理论水平,而且还要求有实际的动手能力。本课程设计的主要目的是提高实践能力,包括提高汇编等语言的编程能力及对接口等硬件的理解分析能力和设计接口电路的能力,在进行课程设计的过程中,通过让学生体验自己分析解决问题,从而帮助学生系统地掌握微机原理的接口技术的相关知识。程序使用Dais实验台进行模拟,包括程序输入、调试、运行,最后进行结果分析,验证程序的正确性。
学习微机原理与应用的理论知识后,通过本次课程设计加深对它的理解和掌握。在设计过程中,广泛查阅各种所需的资料,通过实践来加深和巩固理论,同时将自己对这门技术的理解应用在设计当中,提高实践水平和综合能力。
2.2 现 状
随着企业生产规模的逐渐扩大,对生产过程的自动化程度要求越来越高,系统控制在向着更加复杂,可靠性及精确性要求更高的方向发展。这就要求必须有更加先进的控制系统与之相适应。微型计算机自出现以来,便以其集中度高、功能强、体积小、功耗低、价格廉、灵活方便等一系列优点,广泛应用于国防、航空航天、海洋、地质、气候、教育、经济、日常生活的各个领域,并发挥着巨大的作用。随着自动控制理论和计算机应用技术的发展,生产过程将进一步微机化、规范化和科学化,使各生产只能管理部门能够利用计算机终端通过电话线或光纤通讯电路与微机控制系统联网,随着从公用数据库中了解分析生产情况,以便对下一步的生产和技术改造进行决策,有利于提高生产率和产品质量。
本课题中,可以实时监控到环境中的温度,并以温度控制电机速度,既能了解分析情况,又能完成生产的自动化。
2.3 任务分析与方案设计
2.3.1任务分析
热敏电阻温度测量控制电机原理是通过给热敏传感器一个温度,该传感器发生变化,从而使电阻或电容等参数发生变化, 传出到A/D转换芯片。转换成便于处理的数字信号输出到CPU运算控制。CPU根据程序将这种结果输出到显示器。直至显示这种结果。
利用实验系统上的0809作为 A/D 转换器, 实验系统上的电位器提供模拟量输 入,编制程序,将模拟量转换成数字,通过数码管显示出来。再根据数码管显示。具体的分工:傅巧珍负责软件的编程工作,车晓东、包帅、柴杰负责硬件的焊接和调试,最后一起联机调试。
2.3.2方案设计
(1)用热敏电阻测温度的方法,通过热敏电阻测得温度。
(2)将其转化为电压值,再由电压值转化成 LED 灯的显示值。
(3)其中根据 LED 灯的值来判断个状态的显示值。
2.4系统设计与开发
(1)接口电路设计
输入接口电路的功能是将传感器输出的电信号经过必要的转换或信号放大与处理,使之符合微机控制系统要求。接口电路的组成与传感器输出测量信号的形式有关,与微机处理系统功能要求有关,因此可根据输出信号的形式和系统的功能要求决定接口电路的类型
1、传感器激励电源
电路由U1、D1、R1、R2、R3、C1、RW1组成产生稳定的电压源,即传感器工作电压。热敏电阻传感器在工作时,希望它只跟测试温度发生对应关系。但现实中,热敏电阻传感器的激励电源引起的微小变化将严重影响测试的精度,必须要专用的稳压源供电。在电路中R1、D1、C1为运算放大器同相输入端提供稳定的基准参考电压,输出电压经R2、RW1、R3分压,经RW1可调端反馈到运算放大器的反相输入端,这样调整RW1就能输出稳定的设定电压值。
2、传感器接口电路
传感器接口是连接传感器与放大器的端口,电路由R4、R5、R6、RW2、C2、Q1组成。热敏电阻传感器在温度变化场下将产生电阻率的变化,为获得对应的电压值,将热敏电阻传感器RD-A设计放置在Q基极的上偏置;与下偏置RW2、R4、C2(C2为旁路电容)共同组成Q1基极的偏置电路,调整RW2就能改变基极电压的起始点,上偏置热敏电阻传感器随着温度的变化其阻值也跟着变化,进而改变了基极Ib的大小,由于Q1的放大作用将发射电流Ie放大,流经R6时产生随温度变化的对应电压值。
3、跟随器
其功能是输入输出阻抗和放大电流的作用。
4、十倍放大器
将电路中的R7、R8、R9阻值设计为10K欧姆,这样运算放大器将组成十倍的反相运算放大器,RW3为调整U3的共模抑制电压,调整时,使U3的同相输入端、反相输入端的输入为零(即2、3端接地),调整RW3使U3的6脚输出为零。
5、可谓反相器
电路中R10、R12、RW5、R11组成可调反相放大器,调整RW5就能微调U4放大倍数,RW4为调整U4的共模抑制电压值大小。
6、信号输出接口
由RW6、R13、C3、JP1组成信号输出接口电路。调整RW6就能改变输出电压大小,这样能确保在最大量程时,输出电压不超过5V。
7、A/D转换程序设计
A/D转换程序主要由三大块组成:
(1)A/D转换器启动程序;
(2)查询等待转换结束程序
(3)读取转换结果程序
A/D转换程序设计常采用三种方式:1、查询方式2、延时方式3、中断方式
1.查询方式
利用程序查询结果信号EOC是否到,若EOC为高电平,说明转换结束,可读出转换结果。
2.延时方式
延时方式是利用延时程序等待转换结束。
3.中断方式
中断方式是利用转换结束信号发出中断申请,中断响应后在中断服务程序中处理转换结果。
(1)电路原理图
如图分别是热敏电阻测温放大电路(图1),微机最小模式系统配置原理图(图2)
图1热敏电阻测温放大接口电路原理图
图2 微机8086最小模式系统配置
(2)软件设计开发
流程图讲解
首先是初始化一下,自己给 LED 灯一个初始的 6 位数可以是 000000,然后 通过子程序 BCD 查表显示出来,再返回来从外界测的一个温度,输入温度值, 通过一个线性关系 T=a*U+b,51*U=AL,AL 为最终显示,要是最终显示等于, 即 T=11/10*AL+16,将转换后的 T 值的高四位和低四位分别放入 LED 灯的最后两 位,然后比较其大小,LED 第一盏灯表示的是状态灯,温度值大于 80 的时候状 态为 3,当大于 50 小于 80时状态为 2,小于50时的状态为1.其状态值存入BUF+0位中。
2.5 元器件参数选择及清单
单电源:+12V,+5V
分辨率:8位
显示精度:0.1
转换时间:取决于时钟频率
2.6 软硬件调试
硬件调试
电路板焊接完成后,连线接通电路板,用万用表测电路板输出端的电压,先顺时针缓慢调整电位器RW6,这时万用表的电压读数会随着RW6的变化而发生递减(递增)的变化,当停止调整RW6时如果读数继续跳动而不会停止,说明焊接上可能出现虚焊或者元器件没焊牢。如果读数停止跳动,当继续旋转电位器RW6,电压继续发生变化,通过电位器RW6的顺时针或逆时针的旋转,如果万用表中电压的读数能够从正直递减到零(从负值递增到零),说明硬件调试成功。
软件调试
设计的程序是使用汇编语言编写的。程序完成后就可以对它进行编译和执行,如果发现有错误,则返回程序中修改,完成后再次编译和执行,就这样周而复始的重复进行,直到没有出现编译错误之后就可以运行了。
运行的时候也有问题出现。例如程序的结构有问题,对于寄存器的使用不合理,或对于寄存器的重复使用导致数据混乱,循环不能正常的结束等问题。要解决这些问题就要对汇编用深入的理解,画清楚流程图,使用结构简单的循环,分布编写程序,同时注意对程序的注释可以减少问题。对于寄存器的使用问题可以才用入栈出栈来保存部分寄存器的值来安排寄存器的使用。
对于循环,注意结束循环的条件,避免在程序中产生无限循环的情况,无限循环显示的除外。对于一些寄存器的隐含用法要引起注意,对于控制端口地址的写入,数据的输出,都有特定的寄存器提供使用。
但请切记,工作台要适当的关机,以免烧坏一些元件。
联合调试
联机运行时,数字温度计并不能得到预期效果,LED只是显示了一个数字,不能根据温度的变化转换成不同的数字,经检查,问题出在编写的程序上。需要重新转到程序开始处运行,重新读取模拟量才能进行转换。
另外,在调试时发现出现的温度与寄存中的数据不同,显然在程序中受到了改变,需要在程序中保存寄存中的温度值,不使其受到循环移位的影响。
调试结果
用温度传感器,测量热水的温度,随温度的变化,LED显示管显示的数字随之改变。在开始时,会看到数字不断变大,经过一段时间后,温度会一个较为稳定的数字左右变换。
3.心得体会
第一次做课程设计,遇到的麻烦可想而知。
首先是用 Protel2004 画电路图。居然是英语版的软件,对我们机械学子来说那是多么痛苦啊。只能翻出牛津字典,和小组成员共同努力克服困难,画出电路图。
接下来是电路板的焊接,有之间焊接音响电路板的经验,这次的焊接没有遇到什么困难。在零件、工件齐全的前提下,很快的完成了电路版的焊接。但是由于粗心,还是出现了点小问题。还好不是很大的问题。真的要细心啊不管做什么事情。可能有时候一个小问题就能造成很严重的后果。
我做的主要是硬件部分,手活比较细。最难得还数汇编程序,班花除了很大的力。负责硬件部分让我增强了自己的动手能力和动脑能力。在帮助班花编成的过程中遇到各种困难,但是这更加激发了我学习汇编程序的热情,使我有更多的兴趣去学习微机原理和其他程序的汇编。
通过对这程序的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。通过查阅以下资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。
通过这次的课程设计,我明白了,要做好一个课题,需要我们的耐心,细心,好奇心,更需要恒心。课程设计的顺利完成少不了我们小组的默契合作。同时也知道了该如何学以致用。课后的整理对课程设计是非常重要也是必不可少的,特别是画原理图等方面要花一定功夫。
在设计制作的过程中,我们发现:实践出真知、应用是王道。书本的知识毕竟是死的。只有通过我们的双手把它呈现在世人面前,才是真正有价值的,才能真正检验我们是否理解了老师所讲的内容。通过本次“优生免考”课程设计,我们两个人真切的体会到了其中的真谛。我们在学习了课程中基本的软件及实验后,通过自己的设计理念,将自己心目中理想的台灯设计出来,供人们使用——这是一件极其有意义的事情。对于工科学生来说,理论并不是十分重要的。我认为中国的工科教育应该向日本学习。这即是时代所需,又是迫不得已。21世纪的创新特点之一是周期性更短,所以,工科生没有必要将时间花在研究它是怎么来的,而应该关注它是怎么用的。同时,我们的教育模式不会培养出理论大家,应用是唯一的出路。
最后就是感谢指导老师在我们课程设计过程中对我们的帮组,让我们更快的完成了任务。
4.参考文献
1.微机原理与接口技术(第2版)彭虎 周佩玲 傅忠谦 编著 电子工业出版社
2.微机原理与接口技术学习指导(第2版)彭虎 周佩玲 傅忠谦 编著 电子工业出版社
3.微机原理与接口技术课程设计 李国栋 汪新中 陆志平 周盛华 编著 浙江大学出版社
4.百度网站 www.baidu.com
5.附录
5.1程序设计清单及注释
CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
ORG 3390H ;初始程序
H5: JMP START
ZXK EQU 0FFDCH ;字形口地址
ZWK EQU 0FFDDH ;字位口地址
LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H
BUF DB ?,?,?,?,?,?
ADPORT EQU 0FFE0H
START : MOV BUF,00H
MOV BUF+1,00H
MOV BUF+2,00H
MOV BUF+3,00H
MOV BUF+4,00H
MOV BUF+5,00H
P5: MOV AL,00H ;选择IN0端口
MOV DX,ADPORT
OUT DX,AL
CALL DIS ;调用子程序DIS
;--------------------------------------------------------------------------------------------------
MOV DX,ADPORT
IN AL,DX
MOV DX,0FFE4H
NOT AL
OUT DX,AL
NOT AL
;-----------------------------------------------------------------------------------------------
MOV DX,ADPORT
IN AL,DX ;取AD转换后得到的数据到AL
MOV BL,3
DIV BL
MOV BL,1 ;将AL中的值除BL中的值
MUL BL ;将AL中的值乘BL中的值
ADD AL,16
CALL ADS
JMP P5
ADS: MOV CL,AL ;将AL中的值存入CL
PUSH CX ;CX进栈
MOV AH,AL ;将AL中的次低位和最低位各放入BUF+4和BUF+5
AND AL,0FH ;将AL中高四位清零
MOV BUF+5,AL ;将AL中的值放入BUF+5
AND AH,0F0H ;将AH中的低四位清零
MOV CL,4 ;将4存入CL中
SHR AH,CL ;将AH右移四位
MOV BUF+4,AH ;将AH中的值放入BUF+4
POP CX ;CX出栈(恢复现场)
MOV AL,CL ;将CL中的值返回给AL
CMP AL,70 ;将AL中的值(温度)与90比较
JNB B1 ;若大于90转到B1
CMP AL,50 ;将AL中的值与50比较
JNB B2 ;若大于50转到B2
MOV BUF+3,1H ;将数值1放入BUF+0
JMP AB ;无条件转到AB
B1: MOV BUF+3,3H ;将数值3放入BUF+0
JMP AB ;无条件转到AB
B2: MOV BUF+3,2H ;将数值2放入BUF+ 0
AB: RET
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DIS: MOV CL,20H
MOV BX,OFFSET BUF
DIS1: MOV AL,[BX]
PUSH BX
MOV BX,OFFSET LED
XLAT
POP BX
MOV DX,ZXK
OUT DX,AL
MOV AL,CL
MOV DX,ZWK
OUT DX,AL
PUSH CX
MOV CX,0100H
DELAY: LOOP $
POP CX
CMP CL,01H
JZ EXIT
INC BX
SHR CL,1
JMP DIS1
EXIT: MOV AL,00H
MOV DX,ZWK
OUT DX,AL
RET
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CODE ENDS
END H5