基于单片机电子秒表系统课程设计说明书_第1页
基于单片机电子秒表系统课程设计说明书_第2页
基于单片机电子秒表系统课程设计说明书_第3页
基于单片机电子秒表系统课程设计说明书_第4页
基于单片机电子秒表系统课程设计说明书_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、测控仪器设计课程设计手册设计课题:基于单片机的电子秒表系统设计一、设计要求设计一个电子秒表,类似于一般秒表功能,有启动、暂停、复位等按键。计时长度为300秒,需要显示百分之一秒。设计分析2.1 方案设计数字电子秒表具有显示直观、读数方便、精度高等优点,在计时中应用广泛。本设计采用单片机组成数字电子秒表,力求结构简单,精度高。本系统以C51系列单片机为中心器件,利用其定时器/计数器定时计数原理,结合电源电路、晶振电路、复位电路、显示电路等硬件电路及部分关键电路设计定时器。 .将软件和硬件有机地结合起来。其中,软件系统采用汇编语言编写程序,硬件系统采用PROTEUS强大的功能实现,简单易观察,在仿

2、真中可观察到实际工作状态。本设计利用AT5189C单片机的定时器/计数器计时计数原理,使其计时准确。使用中断系统可以启动暂停功能。根据要求,知道秒表设计的主要功能是计时和显示。所以设置了两个按键和LCD显示时间,两个按键分别是启动、停止和复位按键。使用这两个功能可以实现秒表的全部功能,而LCD可以显示高达4.59.99秒的计时。电路原理图设计最基本的是正确,其次是布局合理,最后在正确和合理布局的前提下力求美观。硬件电路图按图1.1设计。ATAT89C51单片机控制器复位电路开关电路LCD显示图1.1 数字秒表硬件电路基本原理图管存储在存储单元31H- 33H中。其中,31H存储分钟变量,32H

3、存储秒变量,33H存储10ms计数值,即存储毫秒数据,每个地址单元为十进制BCD码。由于采用软件动态扫描实现数据显示功能,因此将十进制BCD码数据对应的段码存储在ROM表中。显示时,先取出31H-33H某个地址的数据,然后找到对应的显示位,从P1口输出,即可显示该地址单元的数据值。定时由中断完成,定时溢出中断周期为1ms 。发生中断时,会向CPU致溢出中断请求。每发出一个中断请求,毫秒计数单位就加一,当达到10次时,十毫秒位加一。以此类推,直到4.59.99秒重置。看钥匙的处理。这两个键可以通过中断方法或扫描方法来识别。复位键的主要作用是复位值,时间要求不是很严格。启动和停止键用于锁定时间,需

4、要更精确的控制。因此,可以扫描复位按钮。启动和停止键被外部中断。设计包括硬件电路的设计和系统程序的设计。其硬件电路主要包括主控制器、显示电路及回零、启动、检查、停止仪表电路等。主控制器采用STC 52单片机,显示电路采用LCD显示定时时间,两个按钮采用接触式按钮。89C2.2 背景知识介绍2.2.1微控制器相关知识在单片机的选择上,本课题充分借鉴了单片机在众多异形产品上的使用经验,并根据自身的实际情况,选择了 AT 89C51。AT 89C51微控制器采用 40 引脚双列直插式封装。图1.2为引脚排列图,40个引脚说明如下:主电源引脚 Vss 和 Vcc 对地 正常工作时Vcc为+5V电源外部

5、晶振引脚 XTAL1 和 XTAL2 XTAL1 的振荡电路的反相放大器的输入端为外接晶振的引脚。使用外部振荡器时,将此引脚接地。 XTAL2 振荡电路的反相放大器输出端。是外部晶体的另一端。使用外部振荡器时,此引脚连接到外部振荡器源。 1.2 STC 89C51 MCU管脚图控制或与其他电源引脚 RST/VPD、ALE / 和/ Vpp复用 RST/VPD 振荡器运行时,该引脚出现两个机器周期的高电平(从低电平跳变高电平),这将复位单片机。在 Vcc 掉电期间,该管脚可以连接到备用电源,VPD 为器件提供备用电源,以保持器件 RAM 中的数据。 ALE/正常操作提供ALE功能(地址锁存使能)

6、将地址的低字节锁存到外部锁存器,ALE引脚周期性地以恒定频率(振荡器频率的1/6)致一个正脉冲信号。因此,它可以用作外部输出的时钟,或用于计时目的。但是请注意,每当访问外部数据存储器时,都会跳过一个 ALE 脉冲,并且 ALE 端子可以驱动(灌入或拉出)八个 LSTTL 电路。对于 EPROM 类型的微控制器,在 EPROM 编程期间,此引脚接收编程脉冲(功能)从外部程序存储器取指令(或数据)期间,外部程序存储器读选通信号输出端每机器周期有效两次。八个 LSTTL 输入也可以被驱动。 /Vpp和/Vpp是内部程序存储器和外部程序存储器的选择端。当/Vpp 为高时,访问内部程序存储器,当/Vpp

7、 为低时,访问外部程序存储器。对于 EPROM 类型的微控制器,在 EPROM 编程期间,21V EPROM 编程电源 (Vpp) 被施加到该引脚。输入/输出引脚 P0.0 - P0.7、P1.0 - P1.7、P2.0 - P2.7、P3.0 - P3.7。 P0 口(P0.0 - P0.7)为 8 位开漏双向 I/O 口。访问外部存储器时,是分时传输的低字节地址和数据总线。八个 LSTTL 负载由灌电流驱动。 P1 端口(P1.0 - P1.7)是一个带有部分提升电阻的 8 位双向 I/O 端口。能够驱动(灌入或拉出电流)四个 LSTTL 负载。 P2口(P2.0-P2.7)为8位准双向I

8、/O口,带部分提升电阻。访问外部存储器时,输出高 8 位地址。端口 2 可以驱动(灌入或拉出电流)四个 LSTTL 负载。 P3 端口(P3.0 - P3.7)是一个带有部分提升电阻的 8 位双向 I/O 端口。能够驱动(灌入或拉出电流)四个 LSTTL 负载。AT 89C51 具有以下标准功能:8k 字节闪存、256 字节 RAM、32 位 I/O 线、看门狗定时器、2 个数据指针、三个 16 位定时器/计数器、一个 6 向量 2 级中断结构、全双工串口、晶振和时钟电路。此外,AT 89C52 可以低至 0Hz 的静态逻辑操作,支持 2 种软件可选的省电模式。在空闲模式下,CPU 停止工作,

9、内容 RAM、定时器/计数器、串行端口和中断继续工作。在掉电保护模式下,RAM容量被保存,振荡器被冻结,单片机的所有工作都停止,直到下一次中断或硬件复位。 CPU是微控制器的核心部件。它由操作员和控制器等组件组成。(1) 运算符运算符的功能是执行算术和逻辑运算。可以对半字节(4位)、单字节等数据进行操作,例如可以完成加减乘除、加1、减1、BCD码小数调整、比较、等算术运算。 AND、OR、XOR、补码、循环等逻辑运算,并将运算结果的状态信息致到状态寄存器。89C51 运算符还包括一个用于位操作的布尔处理器。它使用进位标志位C作为累加器,可以在进位标志位和其他可寻址位之间进行置位、复位、取反、等

10、于1传输、等于0传输、等于1传输和清0位操作例如数据传输也可以在进位标志位和其他可以移位和寻址的位之间进行逻辑与或或操作。(2) 程序计数器 PC程序计数器PC用来存放要执行的指令的地址,共16位,可以直接寻址64K的程序存储器。执行指令时,PC容量的低8位通过P0口输出,高8位通过P2口输出。(3) 进行登记指令代码存储在指令寄存器中。当CPU执行指令时,将从程序存储器中读取的指令代码送入指令寄存器,经过译码后,时序与控制电路发出相应的控制信号,完成指令功能。本设计采用了 ATMEL 的 AT 89C51 微处理器,主要基于以下几个因素: AT 89C52有51个内核,仿真调试的软硬件资源丰

11、富。性价比高,货源充足。 功耗低,功能强大,灵活性高。 DIP40封装,体积小,易于产品小型化。擦写次数超过1000次,方便编程调试。工作电压宽度:2.7V-6V,方便交直流供电。2.2.2TC1602LCD就是在两片平行的玻璃中放置一块液晶。两片玻璃之间有许多纵横细线。通过是否通电来控制棒状晶体分子改变方向,使光线折射产生图像。比CRT好得多,但更贵。1) LCD的特点低压微功率扁平结构被动显示型(无眩光、无眼刺激、无眼疲劳)显示大量信息(因为像素可以做得非常小)易于着色(在色谱上非常准确地再现)无电磁辐射(对人体安全,有利于信息)寿命长(此设备几乎没有劣化问题,因此寿命极长,但液晶背光的寿

12、命有限,但背光部分可以更换)3.硬件设计在本系统中,硬件电路主要包括电源电路、晶振电路、复位电路、显示电路和一些按键电路。3.1 单片机介绍系统设计采用C51系列单片机。AT 89C51 是一款低压、高性能 CMOS 8 位微处理器,具有 4K 字节的闪存可编程可擦只读存储器。该器件采用ATMEL高密度非易失性存储器制造技术制造,兼容行业标准MCS-51指令集和输出引脚(由于C-51具体知识学过微机原理,不再赘述详细在这里) 。 AT 51 是一款高效的微控制器,因为89C它在单个芯片中结合了多功能 8 位 CPU 和闪存。3.2 电源电路电源电路是系统中最基本的部分,任何电路都离不开电源部分

13、。由于三端集成稳压器件组成的稳压电源电路简单、性能稳定、工作可靠、调整方便,已逐渐取代分立元件。它在生产中被广泛使用。由于是小型系统,我们使用7809电源提供+5V稳压。3.3 晶振电路MCS-51单片机的振荡电路是一个高增益反相放大器。引出XTAL1和XTAL2分别是反相振荡放大器的输入和该部分时钟工作电路的输入和反相振荡器的输出。反向放大器可以配置为片上振荡器。这里,我们选择51单片机12MHZ的部分振荡方式。电路如下:电容C1和C2起稳定振荡频率和快速启动振荡的作用。 C1和C2可以取20-100PF之间。晶振X1尽量靠近单片机。图2晶振电路3.4 复位电路使用上电+按键复位电路,上电后

14、,由于电容充电, RST会持续一段高电平时间。当单片机已经运行时,按下复位按钮也可以使用使RST持续一段时间的高电平,从而实现上电和开关复位的操作。这不仅复位微控制器,而且使微控制器的外围芯片也同时复位。当程序发生错误时,可以随时复位电路。电路图如下:图3复位电路3.5 显示电路显示电路可采用液晶显示或数码管显示。我们用的是数码管显示电路。它用2 个共阳极LED 显示。 LED为七段显示器,由7个条状发光二极管和一个小点状发光二极管组成,根据每个灯管的明暗组合成字符。在使用数码管显示时,我们有两种选择:静态和动态。静态显示程序简单,显示稳定,但占用端口较多;动态显示使用较少的端口,可以节省单片

15、机的I/O端口。在设计中,我们使用LED动态显示,并使用P0端口来驱动显示。由于P0口的输出级为漏极开路电路,驱动时需要外接上拉电阻输出高电平。电路图如下所示:图4显示了电路3.6 键盘电路在按键电路中,我们可以直接连接I/O口上的按键,或者通过I/O口设计一个键盘,然后通过键盘扫描程序判断是否有按键按下。键盘扫描电路省去了I/O口,但编程有点复杂。在这里,因为我们使用的按钮较少,而且系统是一个小系统,所以有足够的I/O端口可以使用。为了简化程序,我们用按键电路用部分P3口作为开关, P3.3是启停, P3.4是清零,用外部中断INT1启动,用软件消除抖动。电路图如下所示:图5键盘电路四、硬件

16、主电路图设计用pretues画出其硬件的主电路图,见附录。5. 软件设计5.1 软件设计概述在软件设计中,一般采用模块化编程方法,具有明显的优势。将一个多功能、复杂的程序分成几个简单的、单一功能的程序模块,有利于程序的设计和调试,有利于优化和分工,提高程序的可读性和可靠性。结构层次一目了然。应用系统的程序由一个包含多个模块的主程序和各种子程序组成。每个程序模块必须完成明确的任务,实现特定的功能,并在需要时调用相应的模块。功能说明: LCD1602液晶显示“秒表” ,显示时间0.00.00-4.59.99秒,每秒自动递增1 ; “开始”、“暂停”键和“清除”键。5.2主程序流程图这里采用序列结构

17、,通过扫描键来确定要实现的功能。如下:赋初始值赋初始值开始LCD1602显示复位键P3.3是否按下查看键P3.3是否二次按下调用最终缓存区数据进行显示否 是是否否是查看键P3.4是否按下LCD清零6、测试数据和设计结果详情见附录。七、总结通过这个设计,我学到了很多知识,并且把学到的理论知识通过实验整合,让我对它的理解更加深刻。对于Proteus和Keil软件和系统的操作和操作,我们有更进一步的理解和应用,增强了动手能力,也更深入的接触到了所学与实物的结合。因为这个课程设计不仅设计了编程的知识,还涉及到了其他学科的知识,比如PROTEUS的基础知识。总之,通过本次课程设计,不仅加深了我对单片机理

18、论方面的理解,更好地应用了理论的实践方面,而且锻炼了我们各方面的能力,培养了坚强的毅力和耐心和细心。在做事。同时,我也意识到团队合作需要一种合作精神。我想这将为自己踏上这份工作,更好地融入新的团队打下良好的基础。附录一:(程序);定义计时单元地址最小 EQU 31H ;存储分钟变量SEC EQU 32H ;存储第二个变量DEDA EQU 33H;存储 10ms 计数值;按钮端口状态值K1_N EQU 34H;存储按钮的当前端口状态值K1_P EQU 35H ;存储按钮的最后一个端口状态值K1_C EQU 37H ;存储密钥计数单位X EQU 36H ;LCD 地址变量;按键引脚定义K1 EQU

19、 P3.3 ;按钮 1 引脚定义K2 EQU P3.4 ;关键 2 引脚定义;LCD管脚定义RS EQU P3.5 ; LCD RS 引脚定义RW EQU P3.6 ; LCD RW 引脚定义E EQU P3.7 ; LCD RS 引脚定义组织结构 0000H ;程序从地址 0 开始执行JMPMAIN组织机构 0BH ;定时器 0 中断地址设置JMP T0_INT;主程序 主要的: ;开始MOV SP, #60H ;堆栈指针指向 60HCLR E ;E=0,禁用读/写 LCDACALL SET_LCD ;调整液晶控制子程序ACALL INIT ;初始化变量MOV K1_P,#01H ;按最后一

20、个端口设置1ACALL INIT_TIMER ;调用初始化定时器呼叫菜单;调用工作菜单子程序循环:调用转换;计时处理调用循环1;调用复位键子程序呼叫键;判断一个键是否被按下JZ 循环;无按键转动 LOOP移动 K1_P, K1_N ;交换数据呼叫键0;调用键功能子程序JMP 循环;在 LOOP 处跳转到循环;初始变量清除子程序INIT: ;初始变量被清除CLR 一个; A 清零MOV K1_C,A ; K1_C 最初为 0MOV DEDA,A ;以秒为单位的 DEDA 最初为 0MOV SEC,A ;第二个 SEC 最初为 0移动最小值,A; MIN 最初设置为 0MOV K1_N,A ; K

21、1_N 最初为 0MOV K1_P,A ; K1_P 最初为 0CLR TR0 ;开始中断RET;定时器初始化设置子程序INIT_TIMER: ;定时器初始化MOV TMOD,#00000001B ;定时器0模式1MOV IE, #10000010B ;打开中断MOV TL0,#LOW(65536-10000);定时初值加载到低位移动 TH0,#HIGH(65536-10000);时序初始值装入高位RET;中断服务程序T0_INT: ;定时器T0中断程序推加速;堆栈保护MOV TL0,#LOW(65536-10000) ;重新加载MOV TH0,#HIGH(65536-10000)INC DE

22、DAMOV A,DEDA ;10ms 计数值加 1CJNE A,#100,TTMOV DEDA,#0公司证券交易委员会;秒加 1MOV A,SECCJNE A,#60,TTINC 最小值 ;点加1MOV SEC,#0MOV A,MINCJNE A,#05,TTMOV DEDA,#0 ;百分比、分、秒的单位清零MOV SEC,#0移动最小值,#0TT: 流行音乐 ACC ;出栈视网膜;从中断程序返回;在子程序中判断按键是否被按下循环1:K2,循环2;判断是否按下了reset键JMP 主要;跳转到主程序循环 2:RET;判断K1键是否按下钥匙:CLR A ;A 清零MOV K1_N,A ;一个值被

23、致到 K1_NMOV C,K1 ; K1 值被致到 CRLC A ;用进位标志左移一位ORL K1_N,A ;逻辑或运算的两位MOV A, K1_N ; K1_N 值被致到 AXRL A,K1_P ;A键被按下,A中的内容不为零RET;功能键子程序;K1第一次按键功能子程序键0:MOV A,K1_P; K1_P 值致到 AACC.0,KEY3; A的第0位为1,转KEY3INC K1_C ;将 1 加到 K1_CMOV A, K1_C ; K1_C 值被致到 ACJNE A,#01H,KEY1 ;K1键是第一次按下吗?MOV DPTR,#MENU1 ;是,保存 MENU1 信息移动 A,#1

24、;设置第一行显示调用 LCD_PRINT ;调用显示字符子程序SETB TR0 ;开始中断RET;K1键第二次按下功能子程序键1:MOV A, K1_C ; K1_C 值被致到 ACJNE A,#02H,KEY2 ;第二次按下K1键吗?MOV DPTR,#MENU2 ;是,保存 MENU2 信息移动 A,#1 ;设置第一行显示调用 LCD_PRINT ;调用显示字符子程序CLR TR0 ;停止中断转帐;;K1键第三次按下功能子程序关键2:MOV A, K1_C ; K1_C 值被致到 ACJNE A,#03H,KEY3 ;K1键是第三次按下吗?MOV DPTR,#MENU3 ;是的,保存MEN

25、U3信息移动 A, #1 ;设置第一行显示调用 LCD_PRINT ;调用显示字符子程序SETB TR0 ;开始中断RET;K1键第四按功能子程序关键3:MOV A, K1_C ; K1_C 值被致到 ACJNE A,#04H,KEY4 ;K1键是第四次按下吗?MOV DPTR,#MENU4 ;是,保存 MENU4 信息移动 A,#1 ;设置第一行显示调用 LCD_PRINT ;调用显示字符子程序CLR TR0 ;开始中断关键4:转帐;子程序返回; - - - - - - - - - 液晶显示器 - - - - - - - - - ; LCD控制子程序SET_LCD: ;克莱尔ACALL IN

26、IT_LCD ;初始化 LCDMOV R5,#10呼叫延迟移动 DPTR,#LMESS1 ;指向显示消息 1 的指针移动 A,#1 ;显示在第一行ACALL LCD_PRINT ;调用显示字符子程序移动 DPTR,#LMESS2 ;指向显示消息 2 的指针移动 A,#2 ;显示在第二行ACALL LCD_PRINT ;调用显示字符子程序RETLMESS1: DB ,0 ; LCD 第一行显示信息LMESS2:数据库“时间”,0; LCD第二行显示信息;LCD初始化子程序INIT_LCD:MOV A,#38H;设置 8 位、2 行、5x7 点阵ACALL WR_COMM ;调用写命令子程序呼叫延

27、迟1 ;呼叫延迟子程序MOV A,#0CH ;显示时,光标不闪烁ACALL WR_COMM ;调用写命令子程序;呼叫延迟1 ;呼叫延迟子程序MOV A,#01H ;液晶显示ACALL WR_COMM ;调用写命令子程序;呼叫延迟1 ;呼叫延迟子程序RET;写指令子程序WR_COMM:MOV P1,ACLR RS ;RS=0,选择指令寄存器CLR RW ;RW=0,选择写模式SETB E ;E=1, 内容读/写 LCM呼叫延迟1 ;呼叫延迟子程序CLR E ;E=0,禁用读写LCMRET;写数据子程序WR_DATA:MOV P1,ASETB RS ;RS=1,选择数据寄存器CLR RW ;RW=

28、0,选择写模式SETB E ;E=1, 内容读/写 LCD阿卡尔德;呼叫延迟子程序CLR E ;E=0,禁用读/写 LCD阿卡尔德;呼叫延迟子程序RET;清除该行液晶字符CLR_LINE: 移动 R0,#24CL1: MOV A,# ACALL WR_DATADJNZ R0,CL1RET;LCD 保存到工作菜单中东欧:移动 DPTR, #MENU0 ;保存到工作菜单移动 A,#1 ;第一行调用 LCD_PRINTRET;工作菜单MENU0: DB 秒时钟 0,0MENU1:数据库“开始计数 1”,0菜单 2:数据库“暂停计数 2”,0MENU3: DB BEGIN COUNT 3,0MENU4

29、: DB 暂停计数 4,0;菜单显示子程序;一行两行显示字符LCD_打印:CJNE A,#1,LINE2 ;判断是否是第一行线路1:ACALL CLR_LINE ;清除本行字符数据移动 A, #80H ;设置LCD第一行地址ACALL WR_COMM ;写命令JMP 填充第 2 行:ACALL CLR_LINE ;清除本行字符数据MOV A,# 0C0H ;设置LCD的第二行地址ACALL WR_COMM填充:CLR A;填写字符MOVC A,A+DPTR ;从消息区获取字符CJNE A,#0,LC1;判断是否为结束码RET;数据输入LC1:ACALL WR_DATA公司 DPTR ;指针递增 1JMP 填充;继续填写字符RET;转换数据子程序转换:;转换为 ASCII 并显示移动 X,#5 ;定位ACALL SKOW_LINE2 ;显示数据公司 X ;MO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论