单片机计数器设计报告..
- 格式:doc
- 大小:397.74 KB
- 文档页数:13
单片机计数器实验报告单片机计数器实验报告引言:单片机是一种集成电路,内部集成了处理器、存储器和各种输入输出接口等功能模块。
它广泛应用于各个领域,包括电子设备、通信、汽车电子、家电等。
在这次实验中,我们将学习并实践单片机计数器的原理和应用。
实验目的:1. 理解单片机计数器的工作原理;2. 掌握单片机计数器的编程方法;3. 实现简单的计数功能。
实验器材:1. 单片机开发板;2. 电脑;3. USB数据线;4. 连接线。
实验步骤:1. 准备工作:a. 将单片机开发板连接到电脑上,确保连接稳定;b. 打开开发板的开发环境软件。
2. 编写程序:a. 在开发环境软件中创建一个新的项目;b. 编写程序代码,实现计数功能;c. 调试程序,确保程序没有错误。
3. 烧录程序:a. 将开发板与电脑连接,确保连接稳定;b. 在开发环境软件中选择烧录选项,将程序烧录到单片机中。
4. 运行程序:a. 断开开发板与电脑的连接;b. 将开发板连接到外部电源,确保供电正常;c. 按下开发板上的复位按钮,启动程序。
实验结果:经过以上步骤,我们成功实现了单片机计数器的功能。
当按下复位按钮后,计数器从0开始计数,每经过一个固定的时间周期,计数值加1。
我们可以通过开发板上的数码管显示当前的计数值。
实验分析:单片机计数器是通过定时器模块实现的。
定时器是单片机中的一个重要模块,它可以根据设定的时间间隔来触发中断或执行特定的操作。
在本实验中,我们使用了定时器模块来实现计数功能。
通过编写程序,我们可以设定定时器的工作模式和时间间隔。
在每个时间间隔结束时,定时器会触发中断,程序会执行中断服务程序,从而实现计数器的自动递增。
同时,我们还可以通过程序控制数码管的显示,将计数值实时显示出来。
实验总结:通过本次实验,我们学习了单片机计数器的原理和应用,并成功实现了一个简单的计数功能。
单片机计数器在各个领域都有广泛的应用,例如工业自动化、仪器仪表、电子游戏等。
基于AT89C51单片机的计数器设计单片机(Microcontroller)是一种集成了微处理器、存储器和各种输入输出功能的芯片,广泛应用于嵌入式系统中。
AT89C51单片机是英特尔公司生产的一款典型的8位微控制器,其具有强大的功能和灵活的设计特性,被广泛应用于工业控制、汽车电子、消费类电子产品等领域。
在众多应用中,计数器是一种常见的电子器件,被广泛应用于各种领域,比如工业控制、实验测量、智能家居等。
基于AT89C51单片机的计数器设计,可以实现对信号的计数和显示,具有较高的稳定性和可靠性。
本文将介绍基于AT89C51单片机的计数器设计。
首先介绍AT89C51单片机的基本特性和引脚布局,然后讨论计数器的原理和设计思路,最后给出具体的设计方案和实现步骤。
一、AT89C51单片机的基本特性和引脚布局AT89C51是一款高性能、低功耗的8位CMOS微控制器,其主要特性包括:1. 内置4KB闪存程序存储器,用于存储用户程序;2. 128字节RAM,用于存储临时数据和寄存器;3. 32个通用I/O引脚,用于连接外部器件和传感器;4. 完整的串行通信接口(UART),用于与外部设备进行通信;5. 定时器/计数器和PWM输出,用于实现各种定时和计数功能;6. 多种工作模式选择,包括被动低功耗模式和中断工作模式。
AT89C51单片机的引脚布局如下图所示:(图片)P0、P1、P2和P3是AT89C51单片机的四个通用I/O端口,分别具有8个引脚,用于连接外部设备和传感器。
X1和X2是晶体振荡器的输入和输出端,用于提供时钟信号。
RESET 是复位端,用于复位单片机。
EA和PSEN是扩展ROM控制端和程序存储器的读取端,用于外接ROM和实现程序存储。
ALE/PROG是地址锁存器的输入,用于地址总线的多路选择。
RXD 和TXD是串行通信接口的接收和发送端口,用于与外部设备进行通信。
二、计数器的原理和设计思路计数器是一种常用的数字电路,用于对输入信号进行计数和显示。
简易计算器摘要:计算器是人们的日常生活中是最常见的电子产品之一,它应用极广、发展迅猛,并且不断出现着拥有更加强大功能的计算器。
为了解和研究计算器,本次课设设计制作了一个简易计算器,能够在十四位的计算范围内进行“+”、“-”、“*”、“/”的基本运算,能进行负数以及小数点后两位的精确结果显示。
该计算器以AT89C51单片机芯片作为核心。
采用LCD1602工业字符液晶进行显示。
完成的计算器经过检验能够完整的实现预设功能,各种细节完善,具有很高的使用价值。
关键词:单片机;简易计算器;AT89C51;LCD1602Simple CalculatorAbstract:Calculator is People's Daily life is one of the most common electronic products, used very wide, developing rapidly, and constantly appear more powerful function with have calculators. In order to understand and study calculator, this class set design made a simple calculator, can the calculation in within 14 "+" and "-" and "*", "/" the basic computing, can carry out negative and two decimal places accurate results are shown. This calculator with AT89C51 chips as the core. Using liquid LCD1602 industrial characters displayed. Complete calculator after inspection can complete realization, various details preset functions to perfect, have high use value.Keywords:MCU; Simple calculator;AT89C51;LCD1602目录中文摘要............................................................1英文摘要............................................................2单片机课程设计......................................................4 1 课程设计任务.....................................................41.1 主要功能设计................................................41.2 任务目的....................................................42 整体设计方案......................................................42.1 方案论证....................................................42.2 系统框图....................................................53 硬件电路的设计...................................................63.1 计算机Protel总图............................................63.2 显示电路设计方案............................................93.3 键盘设计方案................................................93.4 复位电路设计...............................................103.5 晶振电路设计...............................................104 控制软件设计....................................................114.1 程序时序总图...............................................114.2 液晶显示软件设计...........................................124.3 键盘输入软件设计...........................................134.4 计算函数设置...............................................155 系统调试........................................................185.1 硬件调试...................................................185.2 软件调试...................................................18 参考文献...........................................................20 个人小结...........................................................21 附录...............................................................24 附录1..........................................................24 附录2..........................................................251课程设计任务1.1 主要功能设计以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602工业字符型液晶显示屏构成,内部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。
批阅长沙理工大学实验报告年级光电班号姓名同组姓名实验日期月日指导教师签字:批阅老师签字:内容一、实验目的四、实验方法及步骤二、实验原理五、实验记录及数据处理三、实验仪器六、误差分析及问题讨论单片机定时器/计数器实验一、实验目的1、掌握51单片机定时器/计数器的基本结构。
2、掌握定时器/计数器的原理及编程方法。
二、实验仪器1、装有keil软件的电脑2、单片机开发板三、实验原理51单片机有2个16位的定时器/计数器,分别是T0和T1,他们有四种工作方式,现以方式1举例。
若定时器/计数器0工作在方式1,计数器由TH0全部8位和TL0全部8位构成。
方式1作计数器用时,计数范围是:1-65536(2^16);作定时器用时,时间计算公式是:T=(2^16-计数初值)×晶振周期×12。
四、实验内容1、计算计数初值单片机晶振频率为6MHz,使用定时器0产生周期为120000μs等宽方波连续脉冲,并由P1.0输出。
设待求计数初值为x,则:(2^16-x)×2×10^-6 = 120000×10^-6解得x=5536。
二进制表示为:00010101 10100000B。
十六进制为:高八位(15H),低八位(A0H)。
2、设置相关控制寄存器TMOD设置为xxxx0001B3、程序设计ORG 0000HAJMP MAINORG 30HMAIN: MOV P1,#0FFH ;关闭所有灯ANL TMOD,#0F0H ;置定时器0工作方式1ORL TMOD,#01H ;不影响T1的工作MOV TH0,#15H ;设置计数初始值MOV TL0,#0A0HSETB EA ;CPU开中断SETB ET0 ;定时器0开中断SETB TR0 ;定时器开始运行LOOP: JBC TF0,INTP ;如果TF0=1,则清TF0并转到INTPAJMP LOOP ;然跳转到LOOP处运行INTP: MOV TH0,#15H ;重新设置计数初值MOV TL0,#0A0HCPL P1.0 ;输出取反AJMP LOOPEND AJMP LOOPEND4、实验仿真新建工程项目文件中,并为工程选择目标器件为AT公司的AT89S51。
单片机计数器的设计可以根据具体的需求进行灵活的选择。
以下是一个简单的单片机计数器的设计:
确定计数范围:根据需求确定计数器的范围,例如0-99或0-999。
选择计数器类型:根据计数范围选择合适的计数器类型,可以是二进制计数器、十进制计数器或BCD码计数器等。
确定计数方式:确定计数的方式,可以是递增计数、递减计数或双向计数等。
确定计数信号源:确定计数信号的来源,可以是外部信号源或内部时钟信号源。
连接计数器到外设:根据需求将计数器的输出连接到外设,例如LED显示器、数码管或继电器等。
编写计数器程序:使用适当的单片机编程语言编写计数器程序,包括计数器的初始化、计数操作和显示操作等。
测试和调试:在硬件连接完成后,对计数器进行测试和调试,确保计数器功能正常。
以上是一个简单的单片机计数器的设计流程,具体的实施可以根据具体的需求和单片机型号进行调整。
姓名班级指导老师时间信息工程学院图1 硬件电路连接图(二)显示电路两位数码管循环显示00~99电路数码管只要就是用于数字得显示.数码管有共阴与共阳得区分,单片机都可以进行驱动,但就是驱动得方法却不同。
两位数码管循环电路就是由电阻、二极管与数码管组成,电源+5V通过560得电阻直接给数码管得7个段位供电,P0、0—P0、7对应了两个接数码管得A,B,C,D,E,F,G与小数点位,P2、6接显示个位数得数码管得3、8引角,P2、7则接十位数得。
P2、6与P2、7端口分别控制数码管得十位与个位得供电,当相应得端口变成低电平时,驱动相应得三极管会导通,+5V通过二极管与驱动三极管给数码管相应得位供电,这时只要P0口送出数字得显示代码,数码管就能正常显示需要得数字。
图2 十位显示动态数码管(共阳数码管)图3 个位显示静态数码管(共阴数码管)(三)时钟电路时钟电路得晶振频率越高,系统得时钟频率越高,单片机得运行速度也越快。
晶振频率根据设计需要设为12MHz,又根据谐振性质,电路中得电容应选择为30pF左右。
图4 时钟电路(四)复位电路MCS—51单片机得复位就是靠外部电路实现得。
MCS—51单片机工作之后,只要在她得RST引线上加载10ms以上得高点平,单片机就能有效地复位。
MCS-51单片机通常采用上电自动复位与按键复位两种方式。
最简单得复位电路如图5:图5 复位电路上电瞬间,RC电路充电,RST引线出现正脉冲,只要RST保持10ms以上得高电平,就能使单if(i++==100)//如果i=0{i=0;count++;P0=CODE[count/10];P2=~CODE[count%10];if(count==99)count=0; //如果到了99,则重新从0开始计数}}结果与分析(可以加页):(一)调试结果1.初始状态图7:初始状态结果图2.开始计时后按下按键暂停图8:中间状态图示(二)问题分析及解决措施1、一开始时没有分清楚数码管就是共阴数码管还就是共阳数码管,C语言程序中默认数码管就是共阴,所以两个P接口得值都就是按照共阴去写得,导致数码管选段及位显有问题,后来经过老师得指点,将共阳数码管P2得接口改成了共阴。
扬州大学能源与动力工程学院课程设计报告题目:计数器课程:单片机原理及应用课程设计专业:电气工程及其自动化班级:电气1001*名:**学号:*********第一部分任务书《单片机原理及应用》课程设计任务书一、课题名称音乐倒数计数器二、课程设计目的课程设计是课程教学中的一项重要内容,是达到教学目标的重要环节,是综合性较强的实践教学环节,它对帮助学生全面牢固地掌握课堂教学内容、培养学生的实践和实际动手能力、提高学生全面素质具有很重要的意义。
《单片机原理及应用》是一门理论性、实用性和实践性都很强的课程,课程设计环节应占有更加重要的地位。
单片机原理及应用课程设计的目的是让学生在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能将课堂上学到的理论知识与实际应用结合起来,而且能进一步加深对电子电路、电子元器件等知识的认识与理解,同时在软件编程、排错调试、相关软件和仪器设备的使用技能等方面得到较全面的锻炼和提高。
为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。
通过单片机硬件和软件设计、调试、整理资料等环节的培训,使学生初步掌握工程设计方法和组织实践的基本技能,逐步熟悉开展科学实践的程序和方法。
三、课程设计内容设计以89C51单片机和外围元器件构成的单片机应用系统,并完成相应的软硬件调试。
1. 系统方案设计:综合运用单片机课程中所学到的理论知识,学生根据所选课题的任务、要求和条件进行总体方案的设计。
2. 硬件电路设计:对方案中以单片机为核心的电路进行设计计算,包括元器件的选择和电路参数的计算,并画出总体电路图。
3. 软件设计:根据已设计出的软件系统框图,用汇编语言或C51编制出各功能模块的子程序和整机软件系统的主程序。
4. 调试:在单片机EDA仿真软件环境Proteus下进行仿真设计并调试;或在单片机周立功实验箱上进行相关设计并调试。
文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.单片机定时器计数器实验报告篇一:单片机计数器实验报告篇一:单片机计数器实验报告计数器实验报告计数器实验报告㈠ 实验目的实验目的1. 学习单片机内部定时学习单片机内部定时//计数器的使用和编程方法;计数器的使用和编程方法;2. 2.进一步掌握中断处理程序的编程方法。
进一步掌握中断处理程序的编程方法。
㈡ 实验器材实验器材1. 2. 3. 4. 5.G6W 仿真器一台仿真器一台 MCS MCS —51实验板实验板 一台一台一台 PC PC 机 一台一台一台 电源 一台一台一台 信号发生器信号发生器 一台一台㈢ 实验内容及要求实验内容及要求8051内部定时计数器,按计数器模式和方式1工作,对P3.4P3.4((T0T0)引脚进行计数,使用)引脚进行计数,使用8051的T1作定时器,作定时器,50ms 50ms中断一次,看T0内每50ms 来了多少脉冲,将计数值送显(通过LED 发光二极管8421码来表示),1秒后再次测试。
秒后再次测试。
㈣ 实验说明实验说明1. 本实验中内部计数器其计数器的作用,外部事件计数器脉冲由P3.4引入引入定时器T0T0。
单片机在每个机器周期采样一次输入波形,。
单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样,同时这就决定了输入波形的频率不能超过机器周期频率。
能超过机器周期频率。
2. 2. 计数脉冲由信号发生器输入(从计数脉冲由信号发生器输入(从T0端接入)。
3. 计数值通过发光二极管显示,要求:显示两位,十位用L4L4~~L1的8421码表示,个位用L8L8~~L5的8421码表示码表示4. 将脉搏检查模块接入电路中,对脉搏进行计数,计算出每分钟脉搏跳动算出每分钟脉搏跳动次数并显示次数并显示㈤ 实验框图实验框图((见下页见下页) )程序源代码程序源代码 ORG 00000H LJMP MAIN ORG 00000H LJMP MAINORG 001BH AJMP MAIN1 MAIN:MOV SP,#60HMOV TMOD,#15H MOV 20H,#14H MOV TL1,#0B0H MOVTH1,#3CHMOV TL0,#00H;T0的中断入口地址的中断入口地址 ; ;设置T1做定时器做定时器,T0,T0做计数器,都于方式1工作工作 ; ;装入中断次数装入中断次数装入中断次数 ; ;装入计数值低装入计数值低8位 ;装入计数值高8位MOV TH0,#00HSETB TR1 ;启动定时器T1 SETB TR0 ;启动计数器T0SETB ET1 ;允许T1中断中断 SETB EA ; SETB EA ;允许CPU 中断中断 SJMP $; SJMP $;等待中断等待中断MAIN1: PUSH PSW PUSH ACC CLR TR0CLR TR1 MOV TL1,#0B0H MOV TH1,#3CHDJNZ 20H,RETUNT MOV 20H ,#14HSHOW: MOV R0,TH0 MOV R1,TL0MOV A,R1 MOV B,#0AH DIV ABMOV C,ACC.3MOV P1.0,C MOV C,ACC.2 MOV P1.1,C MOVC,ACC.1 MOV P1.2,C MOV C,ACC.0 MOV P1.3,CMOV A,B MOV C,ACC.3MOV P1.4,C MOV C,ACC.2 MOV P1.5,C MOV C,ACC.1 MOV P1.6,C MOV C,ACC.0MOV P1.7,C ;保护现场保护现场;装入计数值低8位;装入计数值高8位,50ms;,50ms;允许允许T1中断中断;未到1s,1s,继续计时继续计时继续计时 ;1s ;1s 到重新开始到重新开始;显示计数器T0的值的值;;读计数器当前值读计数器当前值 ; ;将计数值转为将计数值转为十进制十进制;显示部分,将A 中保存的十位赋给L0~L3 将B 中保存的各位转移到A 中 ;将个位的数字显示在将个位的数字显示在L4~L7上;RETUNT:MOV TL0,#00H;将计数器将计数器T0清零清零 MOV TH0,#00H MOV TH0,#00HSETB TR0SETB TR1POP ACCPOP PSWRETI ;中断返回中断返回在频率为1000HZ 时,时,L0~L7L0~L7显示为5050;频率为;频率为300HZ时,时,L0~L7L0~L7显示为1515,结果正确,程序可以正确运行。
单片机系统课程设计报告学院(部):电气与信息工程学院专业:电气工程及其自动化学生姓名:指导老师:班级:学号2013年12月单片机系统课程设计报告一:系统设计要求:1.最大计数值为:99时59分59秒9/10秒,约100小时。
2.系统采用2个按键控制输入,其中一个按键用作系统清0,另一个按键用作秒表的启动/停止。
3. 系统采用7个LED数码管实现计时显示。
4.电路原理图:使用protel或visio或proteus 绘制。
5. 编程思路,用visio画程序设计流程图,且用文字描述二:系统设计:1:总体方案的设计数字秒表具有显示直观、读取方便、精度高等优点,在计时中广泛应用。
本设计中用单片机和数码管组成数字秒表,力求结构简单。
设计中包括硬件电路的设计和系统程序的设计。
硬件电路主要有主控制器、控制按钮与显示电路组成。
主控制器采用单片机AT89C51,显示电路采用七位共阳极数码管显示计时时间。
2.硬件设计2.1.:输出设计:设计要求在数码管上进行数据显示,,输出硬件设计可以采用1个BCD七段译码器74LS47驱动数码管的段选端,输出字形信息,采用3—8译码器输出作为动态扫描时数码管的位选痛信号。
这样在一定程度上节约了单片机的硬件资源,也简化了软件设计时的任务量。
在硬件设计时还应当注意一下问题:(1)数码管接口方法与动态扫描原理;(2)时、分、秒计数单元地址的分配及BCD码的调整方法;(3)按键识别与消除抖动的方法。
2.2:显示设计:数码管显示可以分为静态显示和动态显示两种。
由于本设计需要采用数码管显示时间,如果静态显示则占用的口线多,硬件电路复杂,所以采用动态显示。
秒表设计原理图如图1.0所示。
单片机采用通用的AT89C51芯片,显示器为7个共阳极LED数码管,用1个BCD七段译码器74LS47驱动数码管(74LS47的输入为BCD码,其输出级为集电极开路输出,可直接驱动七段数码管,具有首尾消零等特点),用3—8译码器74LS138的输出作为动态扫描时数码管的选通信号。
因为采用了上述两个芯片,所以在对数码管进行扫描显示时,只需要单片机的7条I/O线就能完成显示功能。
电路图中采用P1.0~P1.3作为显示数据值的输出,连接在BCD 七段译码器74LSs4的13~10管脚上(译码器74LS47的BCD 码输入端);P1.4~P1.6作为扫描值的输出端连接在3—874LS138译码器的输入端(74LS138的A,B,C)。
因此,写程序应将P1口的高四位为扫描值,低四位为显示数据值(分离BCD 码)。
单片机的P0.0~P0.1分别接在两个开关上,以控制启动/停止和清零。
秒表系统功能如下:(1)开机时,秒表显示从00:00:00:0开始计时。
(2)按键S1控制秒表的启动/停止。
(3)按键S2控制秒表的清零。
硬件电路按总体框图进行设计:图1:硬件电路总体框图三:系统总体电路的设计AT89C51单片机为主电路的核心部分,各个电路均与单片机相连,由单片机统筹协调各个电路的运行工作。
开始键和暂停键使用了检测的方法,所以需要连到单片机的P0.0和P0.1引脚上,对这两个I/O 口进行循环扫描,检测是否按下。
显示电路由七位数码管组成,采用动态显示方式,因此有8位段控制和7位位控制,并且通过74LS47译码器进行控制8位段控制,接P1口,P1.0~P1.3分别控制数码管的a b c d e f g 显示,位控制有3—8段译码器74LS138进行位控制接在P1.4~P1.6的I/O 口上,对数码管实现位控制。
系统总体电路如下图所示:控制开AT89C51 单片机74LS4774LS138七位数图2:总体电路图四:软件设计4.1主程序设计本系统程序主要模块由主程序、定时中断服务程序、显示子程序和扫描子程序组成。
其中主程序是整个程序的主体。
可以对各个中断程序进行调用。
协调各个子程序之间的关系。
主程序:首先进行初始化。
设置秒表的计时初值为00:00:00:0,设置T0高低位初值,且允许T0中断。
然后检测S1~S2是否按下,当S1按下时,启动T0进行4ms定时,开始进行计时。
系统主程序流程图:主程序置显示初值:00.00.00.0置T0为4ms定时开T0中断NS1~S2按下Y启动,停止,清零图3:主程序流程图4.2:定时器T0中断服务子程序:中断服务子程序的作用是进行“时”、“分”、“秒”的计时与显示。
定时器T0用于定时,定时周期设为4ms,中断累计25次(即0.1秒),对0.1秒计数单元进行加1操作。
时间计数值分别存放在2DH(0.1秒)、2CH(秒)、2BH(分)、2AH(时)内存单元中。
在计数单元中采用组合BCD码计数,0.1秒是满10进位,时、分、秒满60进位。
0.1S计时采用内部中断方式计时,通过内部中断设置4ms的定时溢出中断,单片机的频率为12MHz,则机器周期为1us,要实现4ms的定时,在4ms内需要计数N次:①:N=4ms÷1us=4000次令定时器/计数器0工作方式1下,此时计数初值X为:②:X=最大计数值M-计数次数N=65536-4000=61536=0F060H即向TH0写入计数初值0F0H,向TL0写入计数计数初值60H。
TMOD初始化:TMOD=00000001B=01H。
GATE=0,C/T=0,M1=0,M0=1.TCON初始化:TR0=1,启动T0。
IE初始化:开放中断EA=1,允许定时器T0中断ET0=1。
定时器T0中断服务程序流程图如图所示:定时器中断入重装计数初值中断次数加1中断次数到25吗中断次数清零,0.1秒位加0.1秒位到10吗0.1秒位清零,秒钟位加一秒钟位到60吗秒钟位清零,分钟位加分钟位到60吗分钟位清零,小时位加一小时位到99时位清零中断返回图4:TO中断服务流程图显示子程序DISP:DISP子程序的作用是分别将时间计数单元2DH(0.1秒)、2CH(秒)、2BH(分)、2AH(时)中的十进制时间值(组合BCD码)转化为个位和十位(分离BCD码)并分别存放在显示缓冲中。
显示缓冲区的地址为20H~26H。
其中20H中存放0.1秒数据,21H~22H中存放秒数据,23H~24H中存放分钟数据,25H~26H中存放小时数据。
由于每一个地址单元内均为分离BCD码,用BCD七段译码器74LS47直接进行译码,因此不需要软件方式对BCD码数据进行译码。
扫描子程序SCAN:SCAN的作用是把显示缓冲区中的数据依次送往显示器显示。
把扫描值作为高4位,显示数值作为低4位,输出到P1口,以完成显示。
因为采用3—8译码器74LS138作为扫描输出,故用28H单元存放扫描指针,即28H单元中存放的是数码管的序号。
显示时,只需取出20H~26H某一地址中的数据,并从P1口的低4位输出,同时P1口的高四位作为扫描值输出,这样就能保证数码管正常工作。
4.3 系统调试Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件,它可以仿真、分析各种模拟器件和集成电路。
该软件的主要特点为:实现了单片机仿真和SPICE电路仿真相结合的功能,支持目前主流单片机系统的仿真,提供了软件调试的功能,具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
在电子领域中起到了很大的作用,它的出现仿真不需要先焊接电路板,可以先仿真调试通过之后再焊接电路,节省了不少在硬件调试上花费的时间。
打开已经画好的Proteus DSN文件,双击图中的AT89C51芯片,就弹出一个窗口,在program file项中通过路径选择在keil中生成hex文件,双击选中后确定,这样仿真图中的AT89C51芯片就已经读取了本设计中的hex文件。
然后进行仿真,仿真图如下所示:图5:proteus仿真图五:源程序ORG 0000HJMP STARTORG 000BHJMP TIM0START:MOV SP,#70H MOV 28H,#00MOV 2AH,#00H MOV 2BH,#00MOV 2CH,#00MOV 2DH,#00MOV P1,#0F0HMOV R5,#1MOV TMOD,#01H MOV TH0,#0F0H MOV TL0,#60HMOV IE,#82HMOV R4,#25 LOOP:JB P0.0,N2 CALL DELAYSETB TR0MOV A,R5CPL AMOV R5,AN1:JNB P0.0,$CALL DELAYN2:JB P0.1,LOOP CALL DELAYCJNE R5,#0,LOOP CLR TR0JMP STARTN3:JNB P0.1,$CALL DELAYJMP LOOPTIM0:MOV TH0,#0F0H MOV TL0,#60HPUSH ACCPUSH PSWDJNZ R4,X2MOV R4,#25CALL CLOCKCALL DISPX2:CALL SCANPOP PSWPOP ACCRETISCAN:MOV R0,#28H CJNE @R0,#7,X3MOV @R0,#00X3:MOV A,@R0ADD A,#20HMOV R1,AMOV A,@R0SWAP AORL A,@R1MOV P1,AINC @R0RETCLOCK:CJNE R5,#1,X4MOV A,2DHADD A,#1DA AMOV 2DH,ACJNE A,#10H,X4MOV 2DH,#00MOV A,2CHADD A,#1MOV 2CH,ACJNE A,#60H,X4 MOV 2CH,#00MOV A,2BHADD A,#1DA AMOV 2BH,ACJNE A,#60H,X4 MOV 2BH,#00MOV A,2AHADD A,#1MOV 2AH,ACJNE A,#99H,X4 MOV 2AH,#00X4:RETDISP:MOV R1,#20H MOV A,2DHMOV @R1,2DHINC R1MOV A,2CHMOV @R1,AMOV B,#10DIV ABMOV @R1,BINC R1MOV @R1,AINC R1INC R1MOV A,2BHMOV B,#10HDIV ABMOV @R1,BINC R1MOV @R1,AMOV A,2AHMOV B,#10HDIV ABMOV @R1,BINC R1MOV @R1,ARETDELAY:MOV R6,#60HD1:MOV R7,#248DJNZ R7,$DJNZ R6,D1RETEND六:总结经过两个星期紧张而充实的单片机实训,老师所要求的程序最终在自己的努力下调试出来了,并且通过了老师的验收,这次实训让我有了很大的收获。
从刚开始接到课题:一个计数到99小时59分59秒0.9秒的计时秒表如何实现。