倒计数器实验报告
倒计时计时器实验报告

倒计时计时器实验报告倒计时计时器实验报告引言:倒计时计时器是一种常见的时间管理工具,广泛应用于各个领域。
本实验旨在探究倒计时计时器的原理和应用,并通过实验验证其准确性和稳定性。
实验目的:1. 理解倒计时计时器的工作原理;2. 掌握使用倒计时计时器的方法;3. 验证倒计时计时器的准确性和稳定性。
实验器材:1. 倒计时计时器;2. 秒表;3. 电池。
实验步骤:1. 将电池插入倒计时计时器;2. 设置倒计时时间为10分钟;3. 启动倒计时计时器;4. 同时启动秒表;5. 观察并记录倒计时计时器和秒表的时间变化;6. 当倒计时计时器归零时,停止秒表。
实验结果:在本次实验中,倒计时计时器设置为10分钟。
实验过程中,观察到倒计时计时器和秒表的时间变化如下所示:开始时间:倒计时计时器显示10:00,秒表显示00:00;1分钟后:倒计时计时器显示09:00,秒表显示01:00;2分钟后:倒计时计时器显示08:00,秒表显示02:00;......8分钟后:倒计时计时器显示02:00,秒表显示08:00;9分钟后:倒计时计时器显示01:00,秒表显示09:00;10分钟后:倒计时计时器归零,秒表显示10:00。
实验讨论:通过实验结果可以看出,倒计时计时器在设定时间内准确地进行倒计时,并在倒计时结束时发出提示音。
同时,秒表的计时结果与倒计时计时器显示的时间相符,验证了倒计时计时器的准确性和稳定性。
倒计时计时器的应用十分广泛。
在生活中,倒计时计时器常用于厨房烹饪、运动训练等场景,帮助人们精确掌握时间。
在工作中,倒计时计时器可以帮助人们提高工作效率,合理安排时间。
在考试中,倒计时计时器可以帮助考生掌握答题时间,提醒时间不足。
需要注意的是,在使用倒计时计时器时,应确保其准确性和稳定性。
定期检查电池电量,及时更换电池,以免影响计时器的正常工作。
此外,倒计时计时器应放置在稳定的平面上,避免受到外界干扰。
结论:本次实验验证了倒计时计时器的准确性和稳定性。
Labview倒计时器实验报告

实验报告
科目:虚拟仪器
题目:基于LABVIEW的倒计时器指导教师:刘笃喜
班级:192202
学号:123234
姓名:王晓飞
一.实验目的
1.熟悉LABVIEW的设计过程,巩固课堂知识。
2.制作一个倒计时器。
3.要求有前面板,程序图,功能实现倒计时,可以暂停,可以连续运作,可以停止。
二.实验工具
1.计算机,可以联网,查资料
BVIEW程序。
三.实验步骤
1.启动LABVIEW,创建VI程序,在前面板和后面板上进行试验。
2.学习老师演示程序的编辑方法及步骤,自己再验证演示程序。
3.分析实验思路,完成编程。
四.实验内容
1.前面板设计
2.程序图设计
五.实验介绍
1.前面板显示倒计时时间,有暂停,计时和停止显示灯。
倒计时开始,计时显示灯亮;按开关则暂停灯亮,暂停计时;计时完或按停止,停止灯亮。
2.程序图由while循环和条件循环构成。
六.实验总结
经过一段时间的设计和操作,终于完成了这个设计作业,在这过程中遇到了很多困难,比如说:程序图画好了,但是没有效果,或者找不到某个控件,如果遇到了这类问题,我在自己和伙伴解决不了的情况下就会去找同学,寻求帮助。
在付出努力之后,终于做好了这次的作业,虽然并不是很好,但是我还是很高兴。
在整个过程中,我对于虚拟仪器这门课程有了更深的了解,对所学的知识有了一定的巩固,我觉的这是一次成功的作业。
数电实验一:倒计时定时器、BCD代码转化器(设计报告)

数电实验1设计报告实验名称:倒计时定时器 实验目的:1.掌握组合逻辑与时序逻辑电路的设计方法及调试方法2.熟练掌握常用MSI 逻辑芯片的功能及使用方法3.初步掌握Verilog HDL 数字系统设计方法4.熟悉PLD 实验箱的结构和使用及Quartus II 软件的基本操作5.掌握采用Quartus II 软件和实验箱设计实现逻辑电路的基本过程设计任务及要求:一、 倒计时定时器:用适当的中小规模集成电路设计一个定时器,实现60s 以内的定时功能,可以设置60s 以内任何时间作为倒计时的起点,将设计下载到实验箱并进行硬件功能测试。
要求:用开关或按键进行定时设置倒计时计数状态用两位数码管显示计时结束时用彩灯或声响作为提电路设计过程: 1.关于74192芯片 可实现减法计数:74HC192 两位:两片74HC1922.不进行任何的反馈,预置也不起作用的一位倒计时器U174192N A 15B 1C 10D 9UP 5QA 3QB 2QC 6QD 7DOWN4~LOAD 11~BO 13~CO12CLR 14加法计数功能,UP 为加法脉冲输入端 减法计数功能,Down 为减法脉冲输入端 减法计数到0000时,借位Bo =0 加法计数到1111时进位Co =03.计到零停止计数功能,设置启动开关,启动前停在预置值5.加入译码器完成数码管显示设计原理图:数码管动态扫描原理图:分析统图:管脚分配方案:实验题目:BCD代码转换器实验目的:1、掌握组合逻辑与时序逻辑电路的设计方法及调试方法2、熟练掌握常用MSI逻辑芯片的功能及使用方法3、初步掌握Verilog HDL数字系统设计方法4、熟悉PLD试验箱的结构和使用及Quartus 2软件的基本操作5、掌握用Quartus2软件和实验箱设计实现逻辑电路的基本方法设计任务:BCD代码转换1、8421码与5421码之间的转换2、余3码与5421之间的转换3、8421码与2421码之间的转换4、5421码与2421码之间的转换用74283和其它中小规模组合电路实现代码之间的双向可控转换,完成对逻辑设计的波形仿真、下载电路设计步骤(一)、代码转换的设计:写出真值表,找出逻辑关系,利用加法器和逻辑器件,设计对应的电路原理图1、8421码与5421码8421:0000、0001、0010、0011、0100、0101、0110、0111、1000、10015421:0000、0001、0010、0011、0100、1000、1001、1010、1011、1100方法:8421到5421后五个数加00115421到8421后五个数加1101利用开关控制器:1表示8421到5421,0表示54214到84212、余3码与5421码余3码:0011、0100、0101、0110、0111、1000、1001、1010、1011、11005421码:0000、0001、0010、0011、0100、1000、1001、1010、1011、1100方法:余3码到5421:前五个数加11015421到余3码:前五个数加0011利用开关控制器:0表示余3码到5421,1表示5421到余3码3、8421吗与2421码8421:0000、0001、0010、0011、0100、0101、0110、0111、1000、10012421:0000、0001、0010、0011、0100、1011、1100、1101、1110、1111方法:8421到2421:后五个数加01102421到8421:后五个数加1010利用开关控制器:1表示8421到2421,0表示2421到84214、5421码与2421码5421码:0000、0001、0010、0011、0100、1000、1001、1010、1011、11002421码:0000、0001、0010、0011、0100、1011、1100、1101、1110、1111方法:5421到2421:后五个数加00112421到5421:后五个数加1101利用开关控制器:1表示2421到5421,0表示5421到2421原理图、下载电路及管脚分配:1、8421码与5421码之间的转换管脚分配:2、余三与5421码之间的转换管脚分配:3、8421码与2421码管脚分配:4、5421码与2421码管脚分配:。
倒计时器设计报告

课程设计任务书学生姓名:专业班级:指导教师:___辛宏卫______工作单位:西安电子科技大学题目: 365倒计时电路的设计初始条件:给定Protel 99SE应用软件, 集成译码器、数码管、计数器、脉冲发生器等元器件.要求完成的主要任务:1.设计工作量:一月;2.技术要求: (1)要求设计的365倒计时器在接通电源后从显示值365递减,即电路进行减计数运算;(2)利用Protel软件完成365倒计时器原理图与PCB板的绘制,并对相关特性信号进行仿真.时间安排:第1周,安排任务,通过上网,看书查询资料第2周,设计图纸,购买元件,准备工具,制作电子版实验报告第3—4周,上交报告,等待老师答复。
通过电脑工具模拟仿真,查错,开始焊接电路板第5 周,上交作品,评分指导教师签名:年月日目录摘要...................................................... 错误!未定义书签。
Abstract .................................................... 错误!未定义书签。
1 电路原理图的设计.......................................... 错误!未定义书签。
单元电路的设计............................................ 错误!未定义书签。
计数部分................................................ 错误!未定义书签。
译码显示部分............................................ 错误!未定义书签。
脉冲设计 (4)总图设计.................................................. 错误!未定义书签。
设计电路总图............................................ 错误!未定义书签。
数电实验一:倒计时定时器、BCD代码转换器(实验报告)

数电实验1实验报告项目一:倒计时定时器1、设计修改方案(1)加入分频网络分频采用74290芯片10分频级联,由于试验箱自身晶振提供50MHZ的时钟信号,所以需要利用分频分出500HZ用于扫描网络,分出1HZ用于计时器(2)首先用74244过7446接入8位数码管的a至g(3)实现60秒以内任意输入在十位和各位的74192计数器的指数端连接4个拨码开关,这样就可以随意输入倒计时的初始数值2、实验数据及仿真分析(1)完整电路图(附后)(2)仿真波形不接数码管译码器的数字结果:初始值为78可以看到十位数字从设定的7逐次递减为6、5、4…..,而各位在十位减1的周期内由9、8、7…逐次减为0。
符合倒计时定时器的要求。
且在计数减为00时,停止计时,指示灯由低电平转为高电平。
接译码器后数码管段选模拟波形:初始值78根据7段数码管的亮灭规律也可以看出,个位十位轮流显示,十位1、2、3号管亮显示为数字“7”,各位7段数码管全亮显示数字“8”,随后十位“7”在一段时间内不变,各位从数字“7”显示到数字“0(除7以外其他段数码管亮)”。
说明两位数码管显示正确。
(3)硬件测试管脚分配如下:由于拨码开关一共8个,置数开关S1,暂停开关S2占去两个,就只剩下6个拨码开关用来控制设置初始值。
由于要求60S以内,所以十位最高位和次高位默认接地,这样十位最多只能到6,各位4位个再用4个拨码开关进行控制,既可以完成60S以内任意数字设为初始计数值。
另外将计数停止口led1接13管脚,若计数结束,则红色LED灯全亮。
硬件测试:将电路按上述管脚分配拷入试验箱,拨码开关全关闭时,最左边两位数码管亮并显示两个数字“0”。
十位两位拨码开关拨为“10”,十位显示为4,各位的4位拨码开关拨为“0101”,各位显示数字“5”,此时计数器显示初始值为“45”,将S1分配的置数开关(右数第一个)由0拨为1,计时器从45变为44、43、42、41、40、39、38…..倒计时正常,将S2分配的暂停开关(右数第二个)由0拨为1,计时器停止到24不动,拨回后则继续由24开始倒计时。
倒计时器实训报告

一、实训目的本次实训旨在使学生掌握倒计时器的基本原理、电路设计方法及制作过程,提高学生的动手能力、创新能力和团队合作精神。
通过本次实训,学生能够:1. 理解倒计时器的工作原理及电路组成;2. 掌握倒计时器电路的设计与制作方法;3. 学会使用常用电子元件及电路调试技巧;4. 培养学生的团队协作精神和创新意识。
二、实训内容1. 倒计时器原理及电路分析2. 倒计时器电路设计与制作3. 倒计时器调试与测试4. 倒计时器性能优化三、实训过程1. 倒计时器原理及电路分析倒计时器是一种计时装置,用于实现预定时间的倒计时功能。
其工作原理如下:(1)利用计数器实现倒计时功能,通常采用十进制计数器(如74LS160);(2)利用555定时器产生1Hz的方波信号,作为计数器的时钟信号;(3)通过按键输入预定时间,实现倒计时;(4)当倒计时结束时,发出报警信号。
2. 倒计时器电路设计与制作(1)电路设计根据倒计时器原理,设计如下电路:- 74LS160计数器作为核心元件,实现倒计时功能;- 555定时器产生1Hz方波信号;- 按键输入预定时间;- 报警电路实现倒计时结束报警。
(2)电路制作按照电路设计图,制作如下电路:- 将74LS160、555定时器、按键、报警电路等元件焊接在电路板上;- 连接电路板上的元件,确保连接正确;- 进行电路调试,检查电路是否正常工作。
3. 倒计时器调试与测试(1)调试- 检查电路连接是否正确,确保无短路、断路现象;- 对电路进行调试,观察倒计时功能是否正常;- 检查报警电路是否在倒计时结束时发出报警信号。
(2)测试- 测试倒计时器在不同预定时间下的倒计时功能;- 测试报警电路是否在倒计时结束时发出报警信号;- 测试电路的抗干扰性能。
4. 倒计时器性能优化根据测试结果,对倒计时器进行以下优化:- 调整电路参数,提高倒计时精度;- 优化报警电路,增强报警效果;- 改进电路设计,提高电路可靠性。
基于fpga的倒计时时钟实验报告总结
基于FPGA的倒计时时钟实验报告总结一、实验目的本实验旨在通过FPGA技术,设计一个能够进行倒计时的时钟电路,并进行相应的功能验证。
二、实验内容1. 确定实验目标:设计一个基于FPGA的倒计时时钟电路,实现倒计时功能。
2. 学习FPGA设计工具:熟悉并掌握FPGA设计工具的使用方法,包括逻辑综合、时序分析等。
3. 编写时钟电路代码:利用Verilog硬件描述语言编写时钟电路的代码。
4. 进行仿真验证:对时钟电路进行仿真验证,确保设计的正确性和稳定性。
5. 下板实验验证:将设计好的时钟电路下载到FPGA开发板上,进行实际验证。
三、实验步骤与结果分析1. 设计倒计时时钟电路通过学习资料和实验指导,我们利用Verilog HDL进行倒计时时钟电路的设计,并对其功能进行初步测试。
初步测试结果表明,设计的倒计时时钟电路能够正常工作。
2. 时钟电路仿真验证我们利用FPGA设计工具对时钟电路进行了仿真验证,通过时序分析和波形仿真,确认了时钟电路的正确性和稳定性。
仿真结果显示,时钟电路能够准确地进行倒计时操作。
3. 下板实验验证将设计好的时钟电路下载到FPGA开发板上进行实际验证。
经过实际测试,我们发现倒计时时钟电路能够稳定可靠地进行倒计时操作,符合设计要求。
四、实验总结通过本次实验,我们深入学习了FPGA技朰,并成功设计并验证了基于FPGA的倒计时时钟电路。
实验中我们克服了一些困难,如时钟电路设计的复杂性和仿真验证的精确性等。
我们顺利完成了实验目标,掌握了FPGA设计工具的使用方法,提高了自己的实践能力和动手能力。
这次实验为我们今后在FPGA领域的研究打下了坚实的基础,也对我们的专业素养、工程实践能力提出了更高的要求。
五、改进建议在今后的实验中,我们可以进一步深入研究FPGA技术,探索更多的应用场景,提高我们的设计水平。
注重团队合作、创新思维,不断提升自己的综合素质和实践能力,为将来的科研工作和工程实践打下更加坚实的基础。
方便预置的倒计时数显定时器实验报告
一、内容提要在人们日常生活中,或大众关心的某项活动中,或电器使用过程中,常常需要一个倒计时计时器,用以醒目的显示要做的事件所剩下的时间,提醒人们做好准备。
报告主要讲述了方便预置倒计时器工作原理以及其各个组成部分,记述了我们在整个设计过程中对各个部分的设计思路、对各部分电路设计方案的选择、元器件的筛选、以及对它们的调试、对调试结果的分析,到最后得到比较满意的实验结果的方方面面。
二、设计要求及主要指标1.设置开始键。
按动开始键倒计时开始,定时结束后声响提示。
2.设置预置键。
定时时间可以在范围60妙任意预置,预置后的定时可重复使用3.数字式显示剩余时间。
4.定时时间到自动进入预置状态,倒计时时预置键无效。
三、方案选择及电路工作原理1)设计方案电路的结构框图定时结束信号两位十进制计数器2)基本原理倒计时数显式定时器电路由多谐振荡器—输出脉冲信号源、预置计数器(加法)、倒计时计数(减法)、D触发器、数码显示管和声响提示电路构成。
四、单元电路设计计算1)多谐振荡器—输出脉冲信号源时基电路要求送出频率为1s 的方波脉冲。
选用555定时器完成上述功能图1. 555的管脚图和功能表12 3 456 7 8 OUT555DIS GND Vcc COTH TRR D(a) 管脚图(b )功能表TH 1 R DT 01 OUT 01导通 >V CO 或 V CC32 TR> V CO 或 V CC31 21 不变<V CO 或 V CC32 > V CO 或 V CC31 21 不变⨯ ⨯⨯< V CO 或 V CC31 21 01导通 截止由定时器555内部结构得知,2个比较器出发输入端6和2是接在一个端点上并跟电容C 连接,这个端点上的电容电压c u 变动,会同时导致两个比较器的输出电平改变,使RS 触发器的输出改变。
电源CC U 经1R 和2R 给电容C 充电。
当c u 上升到32CC U 时,6U =2U =32CC U , 输出电压o u 为低电平,放电管T 导通,电容C 经2R 、放电端⑦放电,c u 开始下降,当下降到31CC U 时,6U =2U =31CC U ,输出电压o u 为高电平。
数码管倒计时计时器实验结论
数码管倒计时计时器实验结论1. 引言数码管倒计时计时器是一种常见的电子设备,用于倒计时和计时的功能。
本次实验旨在探究数码管倒计时计时器的工作原理和应用场景,并通过实际操作验证其性能和准确性。
2. 实验目的本次实验的主要目的是研究数码管倒计时计时器的原理、结构和工作方式,并通过实际操作来验证其在倒计时和计时方面的准确性和稳定性。
3. 实验材料与方法3.1 实验材料•数码管倒计时计时器设备•电源适配器•手动开关3.2 实验方法1.将电源适配器连接到数码管倒计时计时器设备上,并将适配器插入电源插座。
2.使用手动开关控制数码管倒计时/计时模式的切换。
3.设置所需时间或开始倒计/正计过程。
4.观察数码管显示并记录结果。
4. 实验结果与分析4.1 数码管显示准确性测试为了验证数码管倒计时/正记时间的准确性,我们进行了一系列的测试。
4.1.1 倒计时功能测试1.设置倒计时时间为5分钟。
2.启动倒计时功能。
3.观察数码管显示,并使用标准时间工具验证倒计时的准确性。
4.记录结果。
结果表明,倒计时功能在5分钟内准确无误地进行了倒数。
4.1.2 正记时间功能测试1.设置正记时间为10分钟。
2.启动正记时间功能。
3.观察数码管显示,并使用标准时间工具验证正记时间的准确性。
4.记录结果。
结果表明,正记时间功能在10分钟内准确无误地进行了计时。
4.2 数码管显示稳定性测试为了验证数码管显示的稳定性,我们进行了长时间持续运行测试。
1.将倒计时设置为30秒。
2.启动倒计时功能并观察数码管显示。
3.让实验设备持续运行30分钟,并记录每隔5分钟的数码管显示结果。
经过长时间持续运行测试,数码管显示保持稳定且无明显闪烁或错误。
这证明了该设备在长时间使用过程中能够保持稳定的性能和准确的显示效果。
5. 结论通过本次实验,我们得出了以下结论:1.数码管倒计时计时器能够准确地进行倒计时和正记时间的功能。
2.数码管显示在设置的时间范围内准确无误,并通过标准时间工具进行验证。
实验三5秒倒计时警报器
实验三5秒倒计时器报警一、实验目的1、进一步熟悉keil C仿真软件及单片机实验板的使用。
2、了解中断控制功能的作用,中断的好处,中断的控制及设置。
3、学会运用中断功能设计简单的程序。
4、运用蜂鸣器5、运用计时器简单倒计时二、实验原理1、实验板硬件电路图蜂鸣器原理图由图4,中断系统共有5个中断请求源,它们是:(1)INT0*—外部中断请求0,外部中断请求信号(低电平或负跳变有效)由INT0*引脚输入,中断请求标志为IE0。
(2)INT1*—外部中断请求1,外部中断请求信号(低电平或负跳变有效)由INT1*引脚输入,中断请求标志为IE1。
(3)定时器/计数器T0计数溢出的中断请求,标志为TF0。
(4)定时器/计数器T1计数溢出的中断请求,标志为TF1。
(5)串行口中断请求,标志为发送中断TI或接收中断RI。
图4单片机的P3端口除了当一般的I/O口使用外,还有第二功能,P3.2(INT0)脚是外部中断0的输入脚,P3.3(INT1)脚是外部中断1的输入脚。
2、单片机程序设计1)功能说明:第一,单片机P0端口的8只LED做左移右移,不断循环。
第二,当按外部中断INT0开关K1时,循环中断,4只led灯一起亮起,然后左移5位,同时计时,相当于5秒倒计时。
第三,蜂鸣响起,加上led闪烁报警。
2)程序设计思路及程序流程。
实现这种程序的方法有很多,这里介绍一种。
(1)产生中断控制灯闪烁程序(逐条程序加注释)ORG 00H; 起始地址JMP START; 跳到主程序STARTORG 03H; INT0中断起始地址JMP EXT0; 跳到中断程序START: MOV IE,#81H; INT0中断开通MOV IP,#01H; INT0中断优先MOV TCON,#00H; INT0为电平触发MOV SP,#70H; 设定堆栈指针LOOP: MOV R0,#8; 设置左移位数MOV A,#0FEH; 设置左移初值LOOP1: MOV P0,A; 输出至P0ACALL DELAY; 调用延时程序RL A; 左移一位DJNZ R0,LOOP1; 判断移动次数MOV R1,#8; 设置右移次数LOOP2: RR A; 右移一位MOV P0,A; 输出至P0LCALL DELAY; 调用延时程序DJNZ R1,LOOP2; 判断移动次数JMP LOOP; 重设显示值EXT0: PUSH ACC; 将A压入堆栈PUSH PSW; 将PSW压入堆栈SETB RS0; 设定工作寄存器组1CLR RS1;MOV R2,#4; 设置闪烁次数MOV A,#0F0H; 设置初始亮暗情况LOOP3: MOV P0,A; 输出至P0LCALL DELAY; 调用延时程序roo: RL A;mov P0,ALCALL DELAYDJNZ R2,roo;;DJNZ R2,LOOP3; 判断闪烁次数;设置蜂鸣,bee: setb p1.4 ;mov r4,#64h ;loo: mov r3,#0f9h ;loo1: djnz r3,loo1 ;判断循环蜂鸣次数djnz r4,loo ;cpl p1.4 ;mov A,#0FFH ;设置全灭mov R3,#0F0H;设置闪烁次数;子程序闪烁shan:mov P0,A ;输出至ALCALL DELAY;调用延时CPL A; 取反ADJNZ R3,shan;判断重复闪烁mov R3,#100 ;增加闪动循环次数DJNZ R3,shan ;POP PSW; 从堆栈取回PSW值POP ACC; 从堆栈取回A值RETI; 返回主程序;延时1s的子程序2*100*100*50=1000000微秒=1秒DELAY: MOV R5,#50;DL Y1: MOV R6,#100;DL Y2: MOV R7,#100;DJNZ R7,$;2微秒DJNZ R6,DL Y2;DJNZ R5,DL Y1;RET;RETEND; 程序结束三、实验步骤及调试过程1、汇编语言程序的编写与调试Step1:按往常步骤导入.HEX文件Step2:调试如图:图1,中断前执行左右移动流水灯图2执行外部中断4灯左移倒计时5秒图3灯闪烁加蜂鸣Step3:选择对应的端口,(不知道端口的可以到电脑中“控制面板”-“硬件和声音”-“打印和设备”中查看)再点击“Download 下载”,同时按下单片机开关,即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<1>编程使用四位LED同时显示5A7C(要求将5A7C设在数据段并用XLAT译码显示)程序如下:COMA EQU60HCOMB EQU61HCOMC EQU62HCOMMODE EQU63HSTACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDATA SEGMENTDMTABLE DB 3FH,06H,5BH,4FH,66H,6DHDB 7DH,07H,7FH,6FHDB 77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV AL,89H ;方式0,A口、B口输出,C口输入OUT COMMODE,ALMOV SI,3000H ;建立缓冲区,存放要显示的键值MOV [SI],05HMOV [SI+1],0AHMOV [SI+2],07HMOV [SI+3],0CHMOV DI,3004HBEGIN:CALL DIS ;显示刷新CALL CLEAR ;清屏JNZ BEGINDIS PROC NEAR ;显示子程序PUSH AXMOV SI,3000HMOV DL,7FHMOV AL,DLAGAIN:OUT COMB,ALMOV AL,[SI]MOV BX,OFFSET DMTABLEXLAT DMTABLEOUT COMA,ALCALL DALLYINC SIMOV AL,DLTEST AL,0EFHJZ OUT1ROL AL,1MOV DL,ALJMP AGAINOUT1:POP AXRETDIS ENDPCLEAR PROC NEAR ;清除数码管显示子程序MOV AL,00HOUT COMA,ALRETCLEAR ENDPDALLY PROC NEAR ;延时子程序PUSH CXMOV CX,0009HA1: MOV AX,0030HA2: DEC AXJNZ A2LOOP A1POP CXRETDALLY ENDPCODE ENDSEND START实验结果:数码管上显示5A7C,按键无效实验三:<2>编程使键盘为:上行:5C7F 下行:E0A4 ,并能左移显示<3>在<2>的基础上,按动A显示ABCD,按动5显示0123,按动C显示98EF <3>的程序如下:COMA EQU60HCOMB EQU61HCOMC EQU62HCOMMODE EQU63HSTACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDATA SEGMENTDMTABLE DB 79H,3FH,77H,66HDB 6DH,39H,07H,71HDB 3FH,06H,5BH,4FHDB 77H,7CH,39H,5EHDB 6FH,7FH,79H,71HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV AL,89H ;方式0,A口、B口输出,C口输入OUT COMMODE,ALMOV SI,3000H ;建立缓冲区,存放要显示的键值MOV [SI],01HMOV [SI+1],01HMOV [SI+2],01HMOV [SI+3],01HMOV DI,3004HBEGIN:CALL DIS ;显示刷新CALL CLEAR ;清屏CALL CCSCAN ;扫描按键JNZ INK1 ;有按键按下,则跳转JMP BEGININK1: CALL DIS ;消抖CALL DALLYCALL DALLYCALL CLEARCALL CCSCANJNZ INK2JMP BEGININK2: MOV CH,7FHMOV CL,00HCOLUM:MOV AL,CH ;键盘扫描OUT COMB,ALIN AL,COMCL1: TEST AL,20HJNZ L2MOV AL,00HJMP KCODEL2: TEST AL,10HJNZ NEXTMOV AL,04HKCODE:ADD AL,CL ;AL为按键键值MOV SI,3000H ;判断按键是否为A,5,CCMP AL,04HJZ DIS0123CMP AL,02HJZ DISABCDCMP AL,05HJZ DIS98EFCALL PUTBUF ;保存按键值CALL UNPRESS ;松手检测NEXT: INC CL ;检测下一列MOV AL,CHTEST AL,10HJZ KERRROR AL,1MOV CH,ALJMP COLUMKERR: JMP BEGINDIS0123:MOV [SI],08HMOV [SI+1],09HMOV [SI+2],0AHMOV [SI+3],0BHJMP BEGINDISABCD:MOV [SI],0CHMOV [SI+1],0DHMOV [SI+2],0EHMOV [SI+3],0FHJMP BEGINDIS98EF:MOV [SI],10HMOV [SI+1],11HMOV [SI+2],12HMOV [SI+3],13HJMP BEGINCCSCAN PROC NEAR ;扫描按键是否按下MOV AL,00HOUT COMB,ALIN AL,COMCNOT ALAND AL,30HRETCCSCAN ENDPCLEAR PROC NEAR ;清除数码管显示子程序MOV AL,00HOUT COMA,ALRETCLEAR ENDPDIS PROC NEAR ;显示键值子程序PUSH AXPUSH CXPUSH DXMOV SI,3000HMOV DL,7FHMOV AL,DLAGAIN:OUT COMB,ALMOV AL,[SI]XOR AH,AHMOV BX,OFFSET DMTABLEADD AX,BXMOV DI,AXMOV AL,[DI]OUT COMA,ALCALL DALLYINC SIMOV AL,DLTEST AL,10HJZ OUT1ROR AL,1MOV DL,ALJMP AGAINOUT1:POP DXPOP CXPOP AXRETDIS ENDPPUTBUF PROC NEAR ;保存键值并左移子程序PUSH BXMOV SI,3000HMOV BL,[SI+1]MOV [SI],BLMOV BL,[SI+2]MOV [SI+1],BLMOV BL,[SI+3]MOV [SI+2],BLMOV [SI+3],ALPOP BXRETPUTBUF ENDPUNPRESS PROC NEAR ;松手检测PUSH AXKON: CALL DISCALL CLEARCALL CCSCANJNZ KONPOP AXRETUNPRESS ENDPDALLY PROC NEAR ;延时子程序PUSH CXPUSH AXMOV CX,0009HA1: MOV AX,0030HA2: DEC AXJNZ A2LOOP A1POP AXPOP CXRETDALLY ENDPCODE ENDSEND START实验结果:按动A,数码管显示ABCD,按动5显示0123,按动C显示98EF,按动其他键,数码管显示相应键值,并左移显示。
实验四:3.要求实现:a)定义键盘按键,5个为数字键2、3、4、5、9,3个功能键:设置SET、清零CLR、开始START;b)显示器上的四位显示为秒(两位)、10毫秒(两位);c)通过键盘的按键SET,可以设置倒计数器初始时间(最大为55秒);d)按START键启动倒计数直到计到零停止,或松开START键停止计数,按CLR键清零。
程序如下:COMA EQU60HCOMB EQU61HCOMC EQU62HCOMMODE EQU63HSTACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDATA SEGMENTDMTABLE DB 3FH,06H,5BH,4FH,66H,6DHDB 7DH,07H,7FH,6FH,00HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV AL,89H ;方式0,A口、B口输出,C口输入OUT COMMODE,ALZERO1:MOV SI,3000H ;建立缓冲区,存放要显示的键值XOR AL,ALMOV [SI],ALMOV [SI+1],ALMOV [SI+2],ALMOV [SI+3],ALMOV DI,3004HBEGIN:CALL DIS ;显示刷新CALL CLEAR ;清屏CALL CCSCAN ;扫描按键JNZ INK1 ;有按键按下,则跳转JMP BEGININK1: CALL DIS ;消抖CALL DALLYCALL DALLYCALL CLEARCALL CCSCANJNZ INK2JMP BEGININK2: MOV CH,7FHMOV CL,00HCOLUM:MOV AL,CH ;键盘扫描OUT COMB,ALIN AL,COMCL1: TEST AL,20HJNZ L2MOV AL,02HJMP KCODEL2: TEST AL,10HJNZ NEXTMOV AL,06HKCODE:ADD AL,CL ;AL为按键键值CMP AL,08H ;判断是否为功能键JZ SETCMP AL,06HJZ BEGINCMP AL,07HJZ ZERO1JMP BEGINCALL UNPRESS ;松手检测NEXT: INC CL ;检测下一列MOV AL,CHTEST AL,10HJZ KERRROR AL,1MOV CH,ALJMP COLUMKERR: JMP BEGINSET: MOV SI,3000H ;功能键设置入口XOR AL,ALMOV [SI],ALMOV [SI+1],ALMOV [SI+2],ALMOV [SI+3],ALCALL UNPRESSCALL INPUT ;等待输入CALL UNPRESSCMP AL,06HJZ START1CMP AL,07HJZ SETCMP AL,08HJZ SETMOV SI,3000HMOV [SI+1],ALCALL INPUTCMP AL,06HJZ START1CMP AL,07HJZ SETCMP AL,08HJZ SETCMP AL,05H ;判断是否大于55JS X2MOV AL,[SI+1]CMP AL,09HJNZ X1MOV AL,05HMOV [SI+1],ALX1: MOV AL,05HX2: MOV SI,3000HMOV [SI],ALX3: CALL INPUTCMP AL,06HJZ START1CMP AL,07HJZ SETCMP AL,08HJZ SETJMP X3START1:CALL CCSCAN ;扫描START是否一直按着JNZ COUNTJMP BEGINZERO: XOR AL,ALMOV SI,3000HMOV [SI],ALMOV [SI+1],ALMOV [SI+2],ALMOV [SI+3],ALJMP BEGINCOUNT:CALL DIS ;10毫秒显示减一MOV SI,3000HMOV DH,[SI]MOV DL,[SI+1]MOV CH,[SI+2]MOV CL,[SI+3]DEC CLCMP CL,0FFHJNZ X4MOV CL,09HDEC CHX4: CMP CH,0FFHJNZ X5MOV CH,09HDEC DLX5: CMP DL,0FFHJNZ X6MOV DL,09HDEC DHX6: CMP DH,0FFHJZ ZEROMOV [SI],DHMOV [SI+1],DLMOV [SI+2],CHMOV [SI+3],CLCALL DELLYJMP START1CCSCAN PROC NEAR ;扫描按键是否按下MOV AL,00HOUT COMB,ALIN AL,COMCNOT ALAND AL,30HRETCCSCAN ENDPCLEAR PROC NEAR ;清除数码管显示子程序MOV AL,00HOUT COMA,ALRETCLEAR ENDPDIS PROC NEAR ;显示键值子程序PUSH AXPUSH CXPUSH DXMOV SI,3000HMOV DL,7FHMOV AL,DLAGAIN:OUT COMB,ALMOV AL,[SI]XOR AH,AHMOV BX,OFFSET DMTABLEADD AX,BXMOV DI,AXMOV AL,[DI]CALL DALLYINC SIMOV AL,DLTEST AL,10HJZ OUT1ROR AL,1MOV DL,ALJMP AGAINOUT1:POP DXPOP CXPOP AXRETDIS ENDPUNPRESS PROC NEAR ;松手检测PUSH AXKON: CALL DISCALL CLEARCALL CCSCANJNZ KONPOP AXRETUNPRESS ENDPINPUT PROC NEARCOLUM1:CALL DISMOV CH,7FHMOV CL,00HCOLUM2:MOV AL,CHOUT COMB,ALIN AL,COMCL3: TEST AL,20HJNZ L4MOV AL,02HJMP KCODE1L4: TEST AL,10HJNZ NEXT1MOV AL,06HJMP KCODE1NEXT1:INC CLMOV AL,CHTEST AL,10HROR AL,1MOV CH,ALJMP COLUM2KCODE1:ADD AL,CL ;AL为按键键值RETINPUT ENDPDALLY PROC NEAR ;延时子程序PUSH CXPUSH AXMOV CX,0009HA1: MOV AX,0030HA2: DEC AXJNZ A2LOOP A1POP AXPOP CXRETDALLY ENDPDELLY PROC NEAR ;10毫秒减一延时计数PUSH CXPUSH AXMOV CX,0010HB1: MOV AX,0014HB2: DEC AXJNZ B2LOOP B1POP AXPOP CXRETDELLY ENDPCODE ENDSEND START实验结果:<1>数码管前两位为秒数,后两位为10毫秒数,最大倒计时数为55秒,设置秒数时,若检测到秒数大于55,则自动将秒数改为55。