1602lcd显示的秒表 实用_第1页
1602lcd显示的秒表 实用_第2页
1602lcd显示的秒表 实用_第3页
1602lcd显示的秒表 实用_第4页
1602lcd显示的秒表 实用_第5页
已阅读5页,还剩44页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、 目 录 1 概述. 1.1 课题的研究意义和目的 . 1 2 方案论证 . 2.1 STC89C52 主要功能特性. 2.2 系统分析 . 4 3 硬件系统的设计 . 3.1 硬件介绍 . 3.2 部分硬件原理图 . 3.3 最小单片机系统 . 6 4 系统的软件设计 . 7 5 软硬件联调 . 错误 ! 未定义书签5.1 正面图 . 错误 ! 未定义书签5.2 反面接线 . 错误 ! 未定义书签5.3 测试结果 . 错误 ! 未定义书签。 结束语 . 8 参考文献 . 错误 ! 未定义书签。 附录 . 错误 ! 未定义书签附录 1 protel 原理图 . 附录 2 PCB 图 . 1附录

2、 3 protues 仿真图 . 1附录 4 程序清单 . 11 附录 5 元器件清单 . 20 盐城工学院课程设计说明书( 2011) 1 概述 1.1 课题的研究意义和目的 1、通过本实验的设计初步了解单片机工作原理和各功能端口的相关设置; 2、掌握 PROTEUS 软件的安装和配置过程; 3、学会绘制电路原理图; 4、了解装载程序和调试; 5、PROTEUS VSM 与 uVision3 的联调; 6、用单片机仿真软件,并进行调试; 7、掌握单片机相应的编程步骤,了解秒表相关的工作流程; 8、熟悉 KEILPROTEUS 等相关软件的使用。 2 方案论证 2.1 STC89C52 主要功

3、能特性 1、兼容 MCS51 指令系统 2、 8k 可反复擦写 ( 大于 1000 次) Flash ROM ; 3、 32 个双向 I/O 口; 4、 256x8bit 内部 RAM ; 5、 3 个 16 位可编程定时 / 计数器中断; 6、时钟频率 0-24MHz ; 7、 2 个串行中断,可编程 UART 串行通道; 8、 2 个外部中断源,共 8 个中断源; 1 盐城工学院课程设计说明书( 2011) 9、 2 个读写中断口线, 3 级加密位; 10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能; 11、有 PDIP、PQFP、TQFP 及 PLCC 等几种封装形式,以适应不同产品的

4、需求。 STC89C52 为 8 位通用微处理器,采用工业标 准的 C51 内核,在内部 功能及管脚排布上与通用的 8xc52 相同,其主要用于会聚调整时的功能控 制。功能包括对会聚主 IC 内部寄存器、数据 RAM 及外部接口等功能部件 的初始化,会聚调整控制,会聚测试图控制,红外遥控信号 IR 的接收解码 及与主板 CPU 通信等。主要管脚有: XTAL1 ( 19 脚)和 XTAL2 ( 18 脚) 为振荡器输入输出端口,外接 12MHz 晶振。 RST/Vpd ( 9 脚)为复位输入 端口,外接电阻电容组成的复位电路。 VCC ( 40 脚)和 VSS ( 20 脚)为 供电端口,分别

5、接 +5V 电源的正负端。 P0P3 为可编程通用 I/O 脚,其功 能用途由软件定义,在本设计中, P0 端口( 3239 脚)被定义为 N1 功能 控制端口,分别与 N1 的相应功能管脚相连接, 13 脚定义为 IR 输入端, 10 脚和 11 脚定义为 I2C 总线控制端口, 分别连接 N1 的 SDAS( 18 脚)和 SCLS ( 19 脚)端口, 12 脚、 27 脚及 28 脚定义为握手信号功能端口,连接主板 CPU 的相应功能端, 用于当前制式的检测及会聚调整状态进入的控制功能。 P0 口: P0 口是一组 8 位漏极开路型双向 I/O 口, 也即地址 /数据总 线复用口。作为

6、输出口用时,每位能吸收电流的方式驱动 8 个 TTL 逻辑门 电路,对端口 P0 写 “1时”,可作为高阻抗输入端用。在访问外部数据存储 器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线复用, 在访问期间激活内部上拉电阻。在 Flash 编程时, P0 口接收指令字节,而 在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1 口: P1 是一个带内部上拉电阻的 8 位双向 I/O 口, P1 的输出缓 冲级可驱动(吸收或输出电流) 4 个 TTL 逻辑门电路。对端口写 “1”,通 过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时, 因为内部存在上拉电阻,某

7、个引脚被外部信号拉低时会输出一个电流 (IIL) 。 与 AT89C51 不同之处是, P1.0 和 P1.1 还可分别作为定时 /计数器 2 的外部计数输入( P1.0/T2 )和输入( P1.1/T2EX ), Flash 编程和程序校验期间, P1 接收低 8 位地址。表 .P1.0 和 P1.1 的第二功能 功 能 特 引脚号 性 2 盐城工学院课程设计说明书( 2011) T2,时钟 P1.0 输出 T2EX ( 定时 / P1.1 计 数 器 2) P2 口: P2 是一个带有内部上拉电阻的 8 位双向 I/O 口, P2 的输出 缓冲级可驱动 (吸收或输出电流) 4 个 TTL

8、逻辑门电路。 对端口 P2 写 “1,” 通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用 时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流 (IIL) 。在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行 MOVX DPTR 指令)时, P2 口送出高 8 位地址数据。在访问 8 位地址 的外部数据存储器(如执行 MOVX RI 指令)时, P2 口输出 P2 锁存器 的内容。 Flash 编程或校验时, P2 亦接收高位地址和一些控制信号。 P3 口: P3 口是一组带有内部上拉电阻的 8 位双向 I/O 口。 P3 口输 出缓冲级可驱动 (吸收

9、或输出电流) 4 个 TTL 逻辑门电路。 对 P3 口写入 “1” 时,它们被内部上拉电阻拉高并可作为输入端口。 此时,被外部拉低的 P3 口 将用上拉电阻输出电流( IIL )。 P3 口除了作为一般的 I/O 口线外,更重要 的用途是它的第二功能 。 P3 口还接收一些用于 Flash 闪速存储器编程和 程序校验的控制信号。 RST:复位输入。当振荡器工作时, RST 引脚出现两个机器周期以上高 电平将使单片机复位。 ALE/PROG :当访问外部程序存储器或数据存储器时, ALE (地址锁存 允许)输出脉冲用于锁存地址的低 8 位字节。一般情况下, ALE 仍以时钟 振荡频率的 1/6

10、 输出固定的脉冲信号,因此它可对外输出时钟或用于定时 目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。对 Flash 存储器编程期间,该引脚还用于输入编程脉冲( PROG)。如有必要, 可通过对特殊功能寄存器( SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激 活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 禁 止位无效 。 3 盐城工学院课程设计说明书( 2011) PSEN:程序储存允许( PSEN)输出是外部程序存储器的读选通信号,当 AT89C52 由外部程序

11、存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次 PSEN 信号。 EA/VPP :外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000H FFFFH ), EA 端必须保持低电平(接地) 。需注意的是:如果加密位 LB1 被编程, 复位时内部会锁存 EA 端状态。 如 EA 端为高电平 (接 Vcc 端), CPU 则执行内部程序存储器中的指令。 Flash 存储器编程时,该引脚 加上 +12V 的编程允许电源 Vpp ,当然这必须是该器件是使用 12V 编程电 压 Vpp 。 XTAL1 :振荡器反相放大器

12、的及内部时钟发生器的输入端。 XTAL2 :振荡器反相放大器的输出端。 2.2 系统分析 设计的电路主要是能多次记时和查询时间, 记时的多少通过显示电路显示出 来,每一次计时可以通过控制电路查询出来。设计框图如图 2-1 所示 ; 控制部分 计数与存 显示部 储部分 分 图 2-1 3 硬件系统的设计 3.1 硬件介绍 根据设计要求和设计思路, 硬件电路有两部分组成, 即单片机按键电路, LCD 显示器电路。图 2-2 为硬件电路设计框图。 4 盐城工学院课程设计说明书( 2011) 按键电路 STC89C LCD显示电路 52 图 2-2 系统硬件电路根据课题设计要求, 它由以下几个部件组成

13、: 单片机 89C52RC、电源、时分秒显示模块。 时分秒显示采用动态扫描, 以降低对单片机端口数的要求, 同时也降低系统的功耗。显示模块中时分秒显示驱动、校时模块都通过 89C52RC 的 I/O 口控制。显示模块中的复位电路由 89C52RC 的 RESET 端控制。 电源部分:电源部分有二部分组成。一部分是由 220V 的市电通过变压、整 流稳压来得到 +5V 电压,维持系统的正常工作;另一部分是由 5V 的电池供电, 以保证停电时正常走时。正常情况下电池是不提供电能的,以保证电池的寿命。 3.2 部分硬件原理图 3.2.1STC89C52 管脚图 如图 3-1 所示: 5 盐城工学院课

14、程设计说明书( 2011) 图 3-1 3.2.2 1602LCD 液晶硬件图 如图 3-2 所示: 图 3-2 3.3 最小单片机系统 如图 3-3 所示: 6 盐城工学院课程设计说明书( 2011) C1 30pF X1 C2 11.0592M 30pF R1 10k C3 10uF 图 3-3 4 系统的软件设计 此部分主要介绍显示模块,显示模块是实现数字钟的重要部分,在显示时,首先将时间十进制数据转化为显示段码, 然后送往液晶显示。 显示段码采用动态扫描的方式。 在要求改变显示数据的类别时, 只须改变 R1(指向数据缓冲区的指针)指向的十进制数据缓冲区即可。如图 4-1 所示: 7 盐

15、城工学院课程设计说明书( 2011) 图 4-1 结束语 通过这次实验,我学会了熟练运用 protues,keil ,protel 等软件,在做本次课程设计的过程中, 我感触最深的当属查阅大量的设计资料了。 为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。 其次,在这次课程设计中,我们运用到了以前所学的专业课知识。虽然过去 从未独立应用过它们, 但在学习的过程中带着问题去学我发现效率很高, 这是我 8 盐城工学院课程设计说明书( 2011) 做这次课程设计的又一收获后,要做好一个课程设计,就必须做到: 在设计程序之前,对所用单片机的内部结构有一个系统的了解, 知

16、道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图; 在设计程序时, 不能妄想一次就将整个程序设计好, 反复修改、不断改进是程序设计的必经之路;在设计课程过程中遇到问题是很正常德, 但我们应该将每次遇到的问题记录下来, 并分析清楚,以免下次再碰到同样的问题的课程设计结束了, 但是从中学到的知识会让我受益终身。 附录 1 protel 原理图 JP1 HEADER 16 1 2 3 4 5 6 7 8 9 10111213141516 RW C1 RS d0d1d2d3d4d5d6d7 E 20pF 19 U1 39 d0 VCC x1 X1 P00 CRYSTAL 38 d1

17、P01 d0d1d2d3d4d5d6d7 C2 37 d2 P02 16151413121110 18 36 d3 9 RP1 X2 P03 35 d4 RESPACK4 P04 20pF 34 d5 P05 R1 33 d6 P06 9 32 d7 RESET P07 1 2 3 4 5 6 7 8 VCC 21 RS C310k P20 22 RW P21 23 E P22 29 24 PSEN P23 10uF 30 25 ALE/P P24 VCC 31 26 VCC EA/VP P25 27 P26 Q1 K1 28 1 P27 R2 P10 21 PNP SW-PB 2 P30 2

18、2 10K P11 P31 K2 3 23 P12 P32 4 24 SW-PB P13 P33 5 25 P14 P34 LS1 6 26 P15 P35 7 27 P16 P36 8 28 P17 P37 8051 SPEAKER 9 盐城工学院课程设计说明书( 2011) 附录 2 PCB 图 10 盐城工学院课程设计说明书( 2011) 附录 3 protues仿真图 C1 20pF X1 U1 19 XTAL1 P0.0/AD0 C2 CRYSTAL P0.1/AD1 P0.2/AD2 18 XTAL2 P0.3/AD3 20pF P0.4/AD4 R1 P0.5/AD5 9 P0.

19、6/AD6 RST P0.7/AD7 10k C3 P2.0/A8 P2.1/A9 29 P2.2/A10 PSEN P2.3/A11 10uF 30 ALE P2.4/A12 31 EA P2.5/A13 P2.6/A14 K1 ( 启停控制 ) P2.7/A15 1 P1.0 P3.0/RXD 2 P1.1 P3.1/TXD 3 K2 ( 清零 ) P1.2 P3.2/INT0 4 P1.3 P3.3/INT1 5 P1.4 P3.4/T0 6 P1.5 P3.5/T1 7 P1.6 P3.6/WR 8 P1.7 P3.7/RD AT89C51 CLOCK=12M 附录 4 程序清单 #i

20、nclude #include #define uchar unsigned char #define unit unsigned int #define delayNOP() _nop_();_nop_();_nop_();_nop_(); /LCD 控制 void LCD_Initialize(); void LCD_Set_POS(uchar); void LCD_Write_Data(uchar); LCD1 LM016L S D E S D E V V V 1 2 3 39 d0 38 d1 37 d2 36 d3 35 d4 34 d5 33 d6 32 d7 21 RS 22 R

21、 W 23 E 24 25 26 27 28 10 11 12 13 14 15 16 17 S W E 0 1 2 3 4 5 6 7 R R D D D D D D D D 4 5 6 7 8 9 0 1 2 3 4 1 1 1 1 1 S W E 0 1 2 3 4 5 6 7 R R d d d d d d d d 0 1 2 3 4 5 6 7 d d d d d d d d 9 8 7 6 5 4 3 2 1 RP1 RESPACK-8 LS1 SOUNDER 11 盐城工学院课程设计说明书( 2011) void Display_String(uchar *,uchar); sb

22、it 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= :1- , :1- :2 , :1-2 :3- , :1-2 :3-4 ; / 计时缓冲与显示缓冲 uchar Time_Buffer =0,0,0,0; uchar LCD_Display_Buffer=00:00:00:00; / 蜂

23、鸣器 void Beep() 12 盐城工学院课程设计说明书( 2011) uchar i,j=70; for (i=0;i180;i+) while(-j);BEEP=BEEP; BEEP=0; / 延时 void DelayX(unit ms) uchar i; while(ms-) for(i=0;i 120;i+) ; / 显示计时 void Show_Second() uchar i; LCD_Set_POS(0x45);/ 设置 LCD 显示起点 for(i=3;i!=0xff;i-) /将两位整数的 1/100s,秒,分,时转换为 8 位数字字符 LCD_Display_Buff

24、er2*i+1=Time_Bufferi/10+0; 13 盐城工学院课程设计说明书( 2011) LCD_Display_Buffer2*i =Time_Bufferi_x0010_+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 中断 void Time0() interrupt 1 using 0 TH0=-10000/256; TL0=-10000%6;

25、 Time_Buffer0+; if(Time_Buffer0=100) Time_Buffer0=0; Time_Buffer1+; if(Time_Buffer1=60) /秒 Time_Buffer1=0;Time_Buffer2+; if(Time_Buffer2=60) /分 14 盐城工学院课程设计说明书( 2011) Time_Buffer2=0;Time_Buffer3+; if(Time_Buffer3=24) /时 Time_Buffer3=0; /主函数 void main() uchar i; IE=0x82; TMOD=0x01; TH0=-10000/256; TL

26、0=-10000%6; LCD_Initialize(); Display_String(msg1,0x00); Display_String(msg2,0x40); while(1) if(K1=0) DelayX(100); i=+KeyCount; switch(i) 15 盐城工学院课程设计说明书( 2011) case 1: case 3:TR0 =1; Display_String(Promptsi-1,0); break; case 2: case 4:TR0 =0; Display_String(Promptsi-1,0); break; default:TR0=0; brea

27、k; while (K1=0) ; /等待释放 K1 键 Beep() else if(K2=0) TR0=0; KeyCount=0; for(i=0;i4;i+) Time_Bufferi=0; /清零计时缓冲 Display_String(msg1,0); 16 盐城工学院课程设计说明书( 2011) Beep(); DelayX(100); while (K2=0) ; / 等待释放 K2 键 Show_Second(); /1602LCD 显示驱动函数e #include #include #define uchar unsigned char #define uint unsign

28、ed int #define DelayNOP()_nop_();_nop_();_nop_();_nop_(); bit LCD_Busy_Check(); void LCD_Initialize(); void LCD_Set_POS(uchar) ; void LCD_Write_Command(uchar); void LCD_Write_Data(uchar); /延时 void DelayMS(uint ms) uchar t; 17 盐城工学院课程设计说明书( 2011) while(ms-) for (t=0;t120;t+); /LCD 忙检查 bit LCD_Busy_Check() bit Result; LCD_RS=0;LCD_RW=1;LCD_EN=1;DelayNOP(); Result=(bit)(P0&0x80); LCD_EN=0; return Result; /向 LCD 写指令 void LCD_Write_Command(uchar cmd) while (LC

温馨提示

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

评论

0/150

提交评论