显示的秒表毕业设计_第1页
显示的秒表毕业设计_第2页
显示的秒表毕业设计_第3页
显示的秒表毕业设计_第4页
显示的秒表毕业设计_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1、1602LCD显示的秒表摘 要简单的1602LCD秒表显示器是一种日常生活中使用非常广泛的工具,对现代社会越来越流行。它可以进行一些简易的文字显示及广告标示的投放及日常秒表等功能。本系统提供详细的秒表变化信息,同时还可进行暂停、清零、计数。该电路采用AT89C51单片机作为核心,功耗小,能在3V的低压工作,电压可选用35V电压供电。本系统硬件部分由AT89C51单片机、LCD1602液晶屏、独立按钮、蜂鸣器系统等部分构成。最终在proteus仿真软件上得以实现。软件部分在keil环境下用C51语言编写,包括时间显示、时间清零、时间暂停等。关键字:AT89C51;液晶屏LCD1602;独立按钮;

2、Proteus 仿真器1602LCD display timerAbstract1602LCD stopwatch display simple is very broad a tool used for daily life, increasingly popular in modern society. It can carry out some simple text display and advertising signs and daily stopwatch functions. The system provides a stopwatch change information

3、 in detail, also can pause, clear, count. The circuit uses AT89C51 microcontroller as the core, power consumption is small, can work in low-voltage 3V, voltage can choose 35V supply voltage. The hardware of system is composed of AT89C51 single chip, LCD1602 LCD screen, independent buttons, buzzer sy

4、stem parts. Finally realized in the Proteus simulation software. The software in keil environment using C51 language, including time, time, time zero pause.Keywords: AT89C51; LCD Screen 1602;Independence Button;Proteus Simulator目 录摘 要iAbstractii1 绪论11.1 课题背景11.2 研究目标11.3 相关技术11.3.1 AT89C51芯片21.3.2 L

5、CD1602字符显示器简介52 硬件设计102.1 硬件系统框图102.2 单元电路设计102.2.1 电源的设计102.2.2 显示系统分析与设计112.2.3 控制系统设计122.2.4 单片机外围电路设计123 软件设计153.1 主程序的设计153.3.1 主程序功能概述153.3.2 主程序设计流程153.3.3 主程序代码与分析163.2 1602LCD子程序的设计253.2.1 秒表子程序功能概述253.2.2 秒表子程序设计流程253.2.3 秒表子程序代码254 软件调试及系统仿真284.1 软件编译调试环境284.1.1 Keil工程的建立与调试284.1.2 编译和连接2

6、94.2 系统仿真环境 Proteus304.2.1 Proteus原理图的绘制304.2.2 仿真结果31总 结33参考文献34致 谢35外文文献36中文翻译491 绪论1.1 课题背景众所周知单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。本设计要制作的就是单片机于生活中最为常见的一种应用简易秒表计时器。此简易秒表计时器以AT89C51单片机作为核

7、心,以1602LCD显示器屏幕作为秒表显示。可以显示简易的秒表计数、暂停、累加、清除等功能。简易秒表计时器显示电路制作一个单片机计时装置需要的材料需要有软硬件的支持,硬件方面AT89C51单片机,晶振,电源,液晶屏LCD1602,按键,排阻。最终实验在PROTEUSF仿真软件模拟器上演示,显示其所设计的所有秒表简易的功能。1.2 研究目标本设计中采用型号为AT89C51的单片机,AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含6个中断源,3个16位可编程定时计数器,2个全双工串行通信口,片内含8KB的可反复擦写的Flash只读程序存储器(RO

8、M)和256B的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-52指令系统,片内置通用8位中央处理器和Flash存储单元。简易秒表显示电路由LCD1602和AT89C51开发板主板组成, 制作一个单片机秒表显示装置需要的材料需要有软硬件的支持,硬件方面AT89C51单片机,晶振,电源,液晶屏LCD1602。通过在keil4软件上的代码编写,将AT89C51芯片与液晶屏1602LCD及晶振、蜂鸣器等一系列硬件产品进行联系起来,最终使其在Proteus仿真软件上演示。简易秒表实现的功能是计数、暂停、累加、清除。1.3 相关技术单片机是一种集成在

9、电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。 1.3.1 AT89C51芯片图1.1 AT89C51单片机的简介AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可

10、擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要性能与MCS-51 兼容4K字节可编程FLASH存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24MHz三级程序存储器锁定1288位内部RAM32可编程I/O线两个16位计数器两个16位定时

11、器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路为了更好地了解AT89C51芯片的每一个引脚的功能性与它的位置性,更好的学习AT89C51的芯片内容,从Proteus软件中寻找出AT89C51的引脚图进行细化的分析与对比了解,如图1.2 AT89C51所示:引脚结构图 1.2 AT89C51管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校

12、验时,P0输出原码,此时P0外部必须接上拉电阻。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时

13、,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口:P3口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外

14、部中断1)P3.4 T0(计时器0外部输入)P3.5 T1(计时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如

15、想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电

16、源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。单片机的应用目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能

17、IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴: (1)在智能仪器仪表上的应用 (2)在工业控制中的应用 (3)在家用电器中的应用 (4)在计算机网络和通信领域中的应用 (5)单片机在医用设备领域中的应用 (6)在各种大型电器中的模块化应用 (7)单片机在汽车设备领域中的应用 此

18、外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。1.3.2 LCD1602字符显示器简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。 1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780。LCD1602主要技术参数: (1)显示容量:162个字符 (2)芯片工作电压:4.55.5V (3)工作电流:2.0mA(5.0V) (4)模块最佳工作电压:5.0V (5)字符尺寸:2.954.35(WH)mm引脚功能说明:1602LCD采用标准的14脚(无背光)或16脚(带背光

19、)接口,各引脚接口说明如表1.1所示。编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极表1.1 引脚接口说明 第1脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存

20、器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。基本操作时序:(1)读状态:输入:RS=L,RW=H,E=H;输出:D0D7=状态字(2)写指令:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲;输出:无(3)读数据:输入:RS=H,RW=H,E=H;输出:D0D7=

21、数据(4)写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲;输出:无需要两个写时序: 当我们要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0D7,最后E引脚一个高脉冲将数据写入。 当我们要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0D7,最后E引脚一个高脉冲将数据写入。 LCD1602控制指令 通过1602LCD控制命令表来细致的了解11条控制指令,来进行学习与编程。1602液晶模块内部的控制器共有11条控制指令,其控制命令如表1.2所示。表1.2 控制命令表序号指令RS

22、R/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平) 指令1:清显示,指令码01H,光

23、标复位到地址00H位置。 指令2:光标复位,光标返回到地址00H。 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。 指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时

24、显示5x7的点阵字符,高电平时显示5x10的点阵字符。 指令7:字符发生器RAM地址设置。 指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙 指令10:写数据。指令11:读数据。与HD44780相兼容的芯片对应的操作时序表如表1.3所示。读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无 表1.3 基本操作时序表读

25、写操作时序如图1.3、1.4所示。图1.3表示读指令的时序图,通过对RS指令电位的拉高或拉底来进行表示RS的读指令操作,R/W通过改变电位的变化进行读指令或写指令,使能E进行功能的通过性,DB0-DB7表示数据线进行数据的输入与输出。图1.3 读操作时序图1.4表示写指令的时序图,通过对RS指令电位的拉高或拉底来进行表示RS的写指令操作,R/W通过改变电位的变化进行读指令或写指令,使能E进行功能的通过性,DB0-DB7表示数据线进行数据的输入与输出,来控制写指令。图1.4 写操作时序LCD1602的标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表

26、示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,图1.5是1602LCD内部显示地址。LCD 160216字X 2行000102030405060708090A0B0C0D0E0F27404142434445464748494A4B4C4D4E4F67图1.5 1602LCD内部显示地址 例如第二行第一个字符的地址是40H,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是B(40H)+B(80H)=B(C0H)。 在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。 160

27、2液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。如表1.4所示,表示CGROM与CGRAM中字符代码与字符图形的对应关系。表1.4 CGROM与CGRAM中字符代码与字符图形对应关系 高位低位0000000100100011010001010110XXXX0000CGRAM(1)0PpXXXX0001(2)!1AQaqXXXX0010(3)”2BRbrXXXX0011(4)#3CScsXXXX0100 (5)$4DTdtXXXX0101(6)%5EUeuXXXX0

28、110(7)&6FVfvXXXX0111(8)7GWgwXXXX1000(1)(8HXhxXXXX1001(2)9IYiyXXXX1010(3)*;JZjzXXXX1011(4)+:KkXXXX1100(5)NnXXXX1111(8)/?O-o2 硬件设计2.1 硬件系统框图本系统以AT89C51单片机为核心,本系统选用12MHZ的晶振,使得单片机有合理的运行速度。起振电容30pF对振荡器的频率高低、振荡器的稳定性和起振的快速性影响较合适,复位电路为按键高电平复位。设计的硬件系统主要是能多次记时和查询时间,记时的多少通过显示电路显示出来,每一次计时可以通过控制电路查询出来。设计硬件系统框图如图

29、2.1所示。 图2.1 系统框图2.2 单元电路设计本系统中,硬件电路主要有电源电路,晶振电路,复位电路,显示电路以及一些独立按键电路等,本系统采用AT89C51单片机为中心器件,利用定时器计数器定时和记数的原理,结合硬件电路如电源电路,晶振电路,复位电路,显示电路,蜂鸣器电路以及一些按键电路等来设计秒表计数器,将软、硬件有机地结合起来。硬件系统采用PROTEUS功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。最终在仿真软件proteus上实现及演示其功能。2.2.1 电源的设计电源电路是系统最基本的部分,任何电路都离不开电源部分,随着半导体工艺的发展,稳压电路也采用集成电路器

30、件来制成。可采用独立的稳压电源。这种供电方式的优点是稳压可靠,且有各种成熟电路可供选择。由集成稳压器具有体积小,外界线路简单,使用方便,工作可靠等优点。因此,在各种电子设备中应用十分普遍,为了跟上时代的发展,可采用W7800系列三端稳压器,主要利用它的输出电压是固定的在使用中不能进行调整等优点。2.2.2 显示系统分析与设计显示部分是本次设计的重要部分,一般有以下两种方案:方案一:采用LED显示,在单片机应用系统中最常用的LED数码管为7段数码管,可利用LED显示器灵活地构成所要求位数的显示,分静态显示和动态显示。对于静态显示方式,所需的译码驱动装置很多,引线多而复杂,且可靠性也较低。而对于动

31、态显示方式,虽可以避免静态显示的问题,但设计上如果处理不当,易造成亮度低,有闪烁等问题。方案二:采用LCD显示。是一种低功耗显示器件,具有显示内容丰富、体积小、重量轻、寿命长、使用方便、安全省电等优点,在计算器、万用表、袖珍式仪表和低功耗微机应用系统中得到广泛使用。其显示的质量高,每个显示器每一点在收到信号后就一直保持那种彩色和亮度,恒定发光,而不像阳极射线管显示器那样刷新亮点,画面质量高且不闪烁。鉴于上述原因,我们采用方案二,选择1602LCD显示器来进行秒表显示来显示秒表。如图2.2所示。图2.2 14位1602LCD通过介绍1602LCD来了解每个引脚的说明,如表2.1所示。表2.1 1

32、602LCD引脚接口说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2DataI/O2VDD电源正级10D3DataI/O3VL液晶显示偏压信号11D4DataI/O4RS数据命令选择端口(H/L)12D5DataI/O5R/W读/写选择端(H/L)13D6DataI/O6E使能信号14D7DataI/O7D1Data I/O15BLA背光源正极8D1Data I/O16BLK背光源负极 通过学习电路引脚来学习电路的各个数据与功能。显示电路部分引脚分析: 3脚:VL,液晶显示偏压信号,用于调整LCD1602的显示对比度,一般会外接电位器用以调整偏压信号,此脚电压为0时可以得到最强的对比度

33、。4脚:RS,数据/命令选择端,当此脚为高电平时,可以对1602进行数据字节的传输操作,而为低电平时,则是进行命令字节的传输操作。命令字节,即是用来对LCD1602的一些工作方式作设置的字节;数据字节,即使用以在1602上显示字节。5脚:R/W,读写选择端。当此脚为高电平可对LCD1602进行读数据操作,反之进行写数据操作。6脚:E,使能信号,其实是LCD1602的数据控制时钟信号,利用该信号的上升沿实现对LCD1602的数据传输。714脚:8位并行数据口,使得对LCD1602的数据读写大为方便。基本操作时序:(1)读状态:输入:RS=L,RW=H,E=H;输出:D0D7=状态字(2)写指令:

34、输入:RS=L,RW=L,D0D7=指令码,E=高脉冲;输出:无(3)读数据:输入:RS=H,RW=H,E=H;输出:D0D7=数据(4)写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲;输出:无需要两个写时序: 当我们要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0D7,最后E引脚一个高脉冲将数据写入。 当我们要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0D7,最后E引脚一个高脉冲将数据写入。2.2.3 控制系统设计为了能够更好的控制系统,使得用户方便快捷的控制秒表显示

35、器的功能,对于本次实验设计,我们加入了两个按键与一个蜂鸣器来帮助用户完成体验。对于按键K1,首次按下K1键时开始计时,LCD1602屏幕开始计数,计时器以秒为单位进行累加;再次按下时暂停,显示所需要的秒数时间;第三次按下k1时,计数器继续累计计时,再次按下时停止计时,显示累加之后的计数结果。按键K2用于清零秒表的功能,使得秒表可以多次重复使用。而蜂鸣器则提醒用户是否有按键,作为提示性功能,服务于用户。2.2.4 单片机外围电路设计晶振电路AT89C51内部的振荡电路是一个高增益反相放大器,引脚RXD和TXD分别是此反向振荡放大器的输入端和输出端。该反向放大器可以配置为内部方式的片内振荡器。如图

36、2.3所示,这里选用12MHE的内部振荡方式,电路如下:电容器C1,C2起稳定振荡频率,快速起振的作用,C1,C2可在20100PF之间取,这里取30PF,接线时要使晶振振荡器尽可能接近单片机。 图2.3 晶振图复位电路采用上电+按键复位电路,上电后,由于电容充电,使RST持续一段时间高电平时间。当单片机已在运行之中时,按下复位按键也能使RST持续一段时间的高电平,从而实现上电加开关复位的操作。这不仅能时单片机复位,而且还能使单片机的外围芯片也同时复位,当程序出现错误时,可以随时使电路复位。复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除

37、了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。除PC之外,复位操作还对其他一些寄存器有影响,它们的复位状态如表2.2所示。复位电路图如图2.4所示。表2.2 一些寄存器的复位状态寄存器复位状态寄存器复位状态PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0-P3FFHSCON00HIPXXBSBUF不定IE0XBPCON0XXX0000BTMOD00H 因AT89C51单片机需高电平(3.75.5V)复位,且复位时流入单片机的电流不能超过10mA。

38、具体参数:根据所需要的复位参数可得当按下SW键时出现两个机器周期的高电平在单片机REST端产生的压降等于: = 图2.4 复位电路3 软件设计 在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。把一个多功能的复杂程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。所以在设计此次的毕业设计时,将程序分开,主程序实现每个功能与按键,实现对函数的延时及计时器的缓冲与累加显示功能,而子程序1602LCD实现各功能的接口。3.1 主程序的设计本电路设计采用AT89C51单片机为核心,利用晶振产生频率

39、为1HZ的时钟脉冲信号,利用液晶屏LCD1602显示计算及其时间信息,通过对AT89C51单片机的编程控制液晶屏LCD1602的显示。显示计时、累加、清零在LCD1602显示屏幕上,通过按键K1K2切换选择。外部按键可及时暂停、计时、清零等秒表计时的信息。3.3.1 主程序功能概述1602LCD秒表显示器的主程序功能是调用每个功能的函数,声明每个功能函数,实现K1、K2键函数的功能,与时间timer()函数计时器的完成。3.3.2 主程序设计流程在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。把一个多功能的复杂程序划分为若干的简单的、功能单一的程序模块,有利于程序的优化和分工,提

40、高了程序的阅读性和可靠性,使程序的结构层次一目了然。为了能够更清楚的表达主程序设计流程,所以用流程图3.1展示其在实验设计中的作用。图3.1 流程图3.3.3 主程序代码与分析/-Main.c-/名称:用1602LCD设计秒表/-/说明:首次按下K1键时开始计时,再次按下时暂停,第三次按下时继续/ 累计计时,再次按下时停止计时,K2键用于清零秒表/-# include # include #define uchar unsigned char#define uint unsigned int#define delayNOP() _nop_();_nop_();_nop_();_nop_();/

41、LCD控制函数void LCD_Initialize();void LCD_Set_POS(uchar);void LCD_Write_Data(uchar);void Display_String(uchar *,uchar);/按键的设计与实现sbit K1=P10;sbit K2=P11;sbit BEEP=P30;sbit LCD_RS=P20;sbit LCD_RW=P21;sbit LCD_EN=P22;uchar KeyCount=0;uchar code msg1=Second Watch 0 ;uchar code msg2=# ;uchar code Prompts16=

42、# 1- , #2- #2 , #1-2#3- , # 1-2#3-4 /计时缓冲与显示缓冲uchar Time_Buffer =0,0,0,0;uchar LCD_Display_Buffer =00:00:00:00;/-/蜂鸣器/-void BeeP() uchar i,j=70; for (i=0;i180;i+) while (-j); BEEP=BEEP; BEEP=0;/-/延时/-void DelayX(uint ms) uchar i; while(ms-) for (i=0;i120;i+);/-/显示计时/-void Show_Second() uchar i; LCD_

43、Set_POS(0X45); /设置LCD显示起点 for (i=3;i!=0xff;i-) /将两位整数的1、100s,秒,分,时转换为8位数字字符 LCD_Display_Buffer2*i+1=Time_Bufferi/10+0; LCD_Display_Buffer2*i=Time_Bufferi%10+0; /在i=3,2,1,0时分别显示时,分,秒,1/100s LCD_Write_Data(LCD_Display_Buffer2*i+1); LCD_Write_Data(LCD_Display_Buffer2*i); LCD_Write_Data(:); /-/Time0中断/-

44、void Time0() interrupt 1 using 0 TH0=-10000/256; TL0=-10000%256; Time_Buffer0+; if(Time_Buffer0=100) Time_Buffer0=0; Time_Buffer1+; if(Time_Buffer1=60) /秒 Time_Buffer1=0; Time_Buffer2+; if(Time_Buffer2=60) /分 Time_Buffer2=0; Time_Buffer3+; if(Time_Buffer3=24) /时 Time_Buffer3=0;/-/主函数/-void main() uc

45、har i; IE=0x82; TMOD=0X01; TH0=-10000/256; TL0=-10000%256; LCD_Initialize(); Display_String(msg1,0x00); Display_String(msg2,0x40); while (1) if (K1=0) DelayX(100); i=+KeyCount; switch(i) /按键选择 case 1: case 3: TR0=1; Display_String(Promtsi-1,0); break; case 2: case 4: TR0=0; Display_String(Promtsi-1,

46、0); break; default:TR0=0; break; while (K1=0); / Beep(); else if (K2=0) TR0=0; KeyCount=0; for(i=0;i4;i+) Time_Bufferi=0; Display_String(msg1,0); Beep(); DelayX(100); While (K2=0); / Show_Second(); 主函数代码分析:#include,#include 皆属于头文件,前者是定义51单片机特殊功能寄存器和位寄存器的,后者包含特殊指令例如:crol(),cror()。#define uchar unsigned char;#define uint unsigned int;#define delayNOP()_nop_();_nop_();_nop_();_nop_()皆属于宏定义,后者是将四个延时周期定义在一起并用delayNOP()表示。void LCD_intialize(); void LCD_Set_POS(uchar);voidLCD_Write_Data(uchar);voidDisplay_String(char*,char);皆为调用函数,第一个是调用LCD初始化函数;第二个是

温馨提示

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

评论

0/150

提交评论