ImageVerifierCode 换一换
格式:DOCX , 页数:40 ,大小:346.18KB ,
资源ID:4990507      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4990507.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(LCD显示的秒表单片机课程设计.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

LCD显示的秒表单片机课程设计.docx

1、LCD显示的秒表单片机课程设计单片机课程设计题目: 1602LCD显示的秒表系别/班级:信息工程系11级嵌入式技术与应用专业 小组成员:王玉瑶 吴秋云 吴颖盈 项念念小组成员学号:110407115 110407215 110407116 110407216指导老师:万振宇老师1 单片机原理32 课程设计的任务与要求33 课程设计目的44 芯片资料5 4.1 AT89C515 4.2 1602LCD8 5 电路分析16 6 代码分析217 设计分析 298 调试成功与否 319 参考文献 3610 附录 1602LCD秒表的显示源代码37 1602LCD秒表的显示原理图 43一、单片机原理单片

2、机控制秒表是集于单片机技术、模拟电子技术、数字技术为一体的机电一体化高科技产品,具有功耗低,安全性高,使用方便等优点。它是一种在线式实时控制计算机,需要有较强的抗干扰能力,较低的成本。本次设计内容为以8051单片机为核心的秒表,采用数码管显示,单片机技术控制。利用单片机的定时器/计数器定时和技术的原理,用集成电路芯片、LCD数码管以及按键来设计计时器。将软、硬件有机地结合起来,使它拥有正确的计时、暂停、清零、并同时可以用数码管显示,在现实生活中应用广泛。2、课程设计的任务与要求设计任务:利用AT89C51单片机结合1602LCD显示器设计一个秒表设计要求:1 本设计实现一个1602LCD显示秒

3、表 2. 利用AT89C51控制整个电路来实现秒表的显示。大体上可以讲1602LCD秒表的显示主要包括硬件和软件两部分。重点就是各部分硬件的连接设计以及程序的编写。本章讲述的就是系统硬件的设计,其中包括各模块的器件选择和电路设计。三、 课程设计目的 MCS-51单片机原理及应用课的课程设计是四个学生一组完成一个老师给的一个题目,叫1602LCD显示的秒表。为了让我们能够综合运用自己学的课程的基本知识,能够进行单片机的应用,掌握单片机程序设计调试和应用电路设计、分析及调试检测。 通过这个实验:1.、使我们增进对单片机知识的进一步认识,也同时加深对单片机理论知识的理解。2、使我们掌握单片机的内部功

4、能模块的应用,3、使我们了解和掌握单片机应用系统的软硬件设计过程,方法即实现,为了以后设计和实现单片机应用系统打下基础。4、芯片资料4、1 AT89C51AT89C51是128字节内部RAM,4KB可编程Flash存储器(可擦写1000次),三级程序存储器保密,静态工作频率:0Hz-24MHz ,2个16位定时/计数器 ,一个串行通讯口 ,6个中断源 ,32条I/O引线 ,有片内时种振荡器。输入输出引脚资料:(1) P0端口P0.0-P0.7 P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8个TTL。 在访问外部程序和外部数据存储器时,P0口

5、是分时转换的地址(低8位)/数据总线,访问期间内部的上拉电阻起作用。(2) P1端口P1.0P1.7 P1是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。(3) P2端口P2.0P2.7 P2是一个带有内部上拉电阻的8位双向I/0端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。(4) P3端口P3.0P3.7 P2是一个带有内部上拉电阻的8位双向I/0端口。输出时

6、可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。其它控制或复用引脚:(1) ALE/PROG 30 访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率输出脉冲信号(此频率是振荡器频率的1/6)。在访问外部数据存储器时,出现一个ALE脉冲。(2) PSEN 29 该引是外部程序存储器的选通信号输出端。当AT89C51由外部程序存储器取指令或常数时,每个机器周期输出2个脉冲即两次有效。但访问外部数据存储器时,将不会有脉冲输出。(3) EA/Vpp 31 外部访问允许端。当该引脚访问外部程序存储器时,应输入低电平。

7、要使AT89C51只访问外部程序存储器(地址为0000H-FFFFH),这时该引脚必须保持低电平。AT89C51特殊功能寄存器列表(适用于同一架构的芯片) 符号 地址 注释 *ACC E0H 累加器 *B F0H 乘法寄存器 *PSW D0H 程序状态字 SP 81H 堆栈指针 DPL 82H 数据存储器指针低8位 DPH 83H 数据存储器指针高8位 *IE A8H 中断允许控制器 *IP D8H 中断优先控制器 *P0 80H 端口0 *P1 90H 端口1 *P2 A0H 端口2 *P3 B0H 端口3 PCON 87H 电源控制及波特率选择 *SCON 98H 串行口控制器 SBUF

8、99H 串行数据缓冲器 *TCON 88H 定时器控制 TMOD 89H 定时器方式选择 TL0 8AH 定时器0低8位 TL1 8BH 定时器1低8位 TH0 8CH 定时器0低8位 TH1 8DH 定时器1高8位 带*号的特殊功能寄存器都是可以位寻址的寄存器4.1 1602LCD1602字符型LCD简介:字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。 1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780.1602LCD主要技术参数: 显示容量:162个字符 芯片工作电压:4.55.5V 工作电

9、流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.954.35(WH)mm引脚功能说明:1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如下表1所示:编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极 表1:引脚接口说明 第1脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接

10、地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。1602LCD的指令说明及时序:1602液晶模块内部的控制器共有

11、11条控制指令,如下表2所示:序号指令RSR/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读出的数据内容 表2:控制命令表1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明

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

13、线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。 指令7:字符发生器RAM地址设置。 指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙 指令10:写数据。 指令11:读数据。与HD44780相兼容的芯片时序下表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=数据

14、,E=高脉冲输出无 表3:基本操作时序表读写操作时序如图2和3所示: 图2 读操作时序 图3写操作时序1602LCD的RAM地址映射及标准字库表: 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,图4是1602的内部显示地址。图4 1602LCD内部显示地址 例如第二行第一个字符的地址是40H,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。 在对液晶模块的初始化中要先设置其显示模式,在液

15、晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图5所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码 图5字符代码与图形对应图1602LCD的一般初始化(复位)过程: 延时15mS 写指令38H(不检测忙信号) 延时5mS 写指令38H(不检测忙信号) 延时5mS 写指令38H(不检测忙信号) 以后每次写指令、读/写数据操作均需要检测忙信号 写指令38H:显示模式设置 写指令08H:显示关闭 写指令01

16、H:显示清屏 写指令06H:显示光标移动设置 写指令0CH:显示开及光标设置五、电路分析总体设计分析 本系统中,硬件电路主要有电源电路,晶振电路,复位电路,显示电路以及一些按键电路等,本系统采用AT89C51单片机为中心器件,利用定时器计数器定时和记数的原理,结合硬件电路如电源电路,晶振电路,复位电路,显示电路,蜂鸣器电路以及一些按键电路等来设计计数器,将软、硬件有机地结合起来。硬件系统采用PROTEUS功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。5.1电源电路 电源电路是系统最基本的部分,任何电路都离不开电源部分,随着半导体工艺的发展,稳压电路也采用集成电路器件来制成。可

17、采用独立的稳压电源。这种供电方式的优点是稳压可靠,且有各种成熟电路可供选择。由集成稳压器具有体积小,外界线路简单,使用方便,工作可靠等优点。因此,在各种电子设备中应用十分普遍,为了跟上时代的发展,可采用W7800系列三端稳压器,主要利用它的输出电压是固定的在使用中不能进行调整等优点。5.2晶振电路 AT89C51内部的振荡电路是一个高增益反相放大器,引脚RXD和TXD分别是此反向振荡放大器的输入端和输出端。该反向放大器可以配置为内部方式的片内振荡器。如图所示,这里选用12MHE的内部振荡方式,电路如下:电容器C1,C2起稳定振荡频率,快速起振的作用,C1,C2可在20100PF之间取,这里取3

18、0PF,接线时要使晶振振荡器尽可能接近单片机。5.3复位电路 采用上电+按键复位电路,上电后,由于电容充电,使RST持续一段时间高电平时间。当单片机已在运行之中时,按下复位按键也能使RST持续一段时间的高电平,从而实现上电加开关复位的操作。这不仅能时单片机复位,而且还能使单片机的外围芯片也同时复位,当程序出现错误时,可以随时使电路复位。复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。除PC之外,复位操作还对其他一些寄存器有影响,

19、它们的复位状态如表1所示。寄存器复位状态寄存器复位状态PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0-P3FFHSCON00HIPXX000000BSBUF不定IE0X000000BPCON0XXX0000BTMOD00H表1 一些寄存器的复位状态 因STC89C52单片机需高电平(3.75.5V)复位,且复位时流入单片机的电流不能超过10mA。具体参数:根据所需要的复位参数可得当按下SW键时出现两个机器周期的高电平在单片机REST端产生的压降等于:=图 复位电路5.4 显示电路 显示电路既可以选用液晶显示器

20、,也可以选用数码管显示,我们采用液晶显示电路1602LCD引脚接口说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2Data I/O2VDD电源正极10D3Data I/O3VL液晶显示偏压信号11D4Data I/O4RS数据命令选择端口(H/L)12D5Data I/O5R/W读/写选择端(H/L)13D6Data I/O6E使能信号14D7Data I/O7D1Data I/O15BLA背光源正极8D1Data I/O16BLK背光源负极显示电路部分引脚分析: 3脚:VL,液晶显示偏压信号,用于调整LCD1602的显示对比度,一般会外接电位器用以调整偏压信号,此脚电压为0时可以得到

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

22、2)写指令:输入: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引脚一个高脉冲将数据写入。 6、代码分析#include,#include 皆属于头文件,前

23、者是定义51单片机特殊功能寄存器和位寄存器的,后者包含特殊指令例如:crol( ),cror( )。#define uchar unsigned char,#define uint unsigned int,define delayNOP()nop();nop();nop()皆属于宏定义,后者是将三个延时周期定义在一起,用一个delayNOP()表示。Void LCD_intialize, void LCD_Set_POS(uchar), void Display_String(char*,char);皆为调用函数,第一个是调用LCD初始化函数;第二个是调用LCD的显示位置函数;第三个是调用L

24、CD写数据函数;第四个是调用LCD指定行上显示字符串函数。Sbit K1=P10, sbit K2=P21,sbit BEEP=30, sbit LCD_RS=P20, sbit LCD_RW=P21, sbit LCD_EN=P22;皆为个函数接口声明,定义K1、K2为两个控制开关;定义BEEP为扬声器接口;RS为寄存器选择高电平(1)时选择数据寄存器、低电平(0)时选择指令寄存器;RS为读写信号,高电平(1)时惊醒读操作,低电平(0)时进行写操作;E(或EN)端为使能端(enable),将单片机与LCD1602显示器连接。Uchar KeyCount=0 ;KeyCount为按键计数变量,

25、用于累计按键的次数。定义其为无符号整型,并且付初值为0.uchar code msg1=Second Watch 0 ,uchar code msg2= ;定义两个一维数组,在protues仿真软件中,当按下play键后,1602LCD显示屏是会出现这两个数组中的字符。uchar code Prompts16= : 1- , : 2- :2 , : 1-2 :3- , : 1-2 :3-4 定义一个二维数组,将其中的一维显示于1602LCD上。K1为启停控制按钮,第一次按下时开始计数,显示“:1- ”;当第二次按下时停止计数,显示: 2- :2 ; uchar Time_Buffer =0,0

26、,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;定义一个调用蜂鸣器的子函数。For(i=0;i180;i+)用于控制蜂鸣器响的时间,BEEP=BEEP用于使蜂鸣器进行短暂的响一下又不响的效果。因为蜂鸣器接地,只有当P3.0接入高电平(即1)时,蜂鸣器才工作。所以在响了一声过后,级(执行完成之后)将BEEP赋值为0,让它处于不导通状态,蜂鸣器不响。void D

27、elayX(uint ms) uchar i; while(ms-) for (i=0;i120;i+);定义一个延时子函数void Show_Second() uchar i; LCD_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(:); 定义显示计时函数 LCD_Set_POS(0X45),调用函数,用于调用设置显示位置函数,在此子函数中又嵌套了一个函数调用,LCD_Write_Command(Position|0X80)(即LCD_Write_Command(0X45|0X80))函数。进行或操作:45010001018010000000C5110

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2