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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

1602lcd显示的秒表1.docx

1、1602lcd显示的秒表11602lcd显示的秒表(1)1602lcd显示的秒表(1)PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000HFFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。Flash 存储器编程时,

2、该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。 XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。2.2系统分析设计的电路主要是能多次记时和查询时间,记时的多少通过显示电路显示出来,每一次计时可以通过控制电路查询出来。设计框图如图2-1所示; 图2-13硬件系统的设计3.1硬件介绍根据设计要求和设计思路,硬件电路有两部分组成,即单片机按键电路,LCD显示器电路。图2-2 为硬件电路设计框图。图2-2系统硬件电路根据课题设计要求,它由以下几个部件组成:单片机89C52RC、电源、时分秒显示模块。时分秒显示采

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

4、分主要介绍显示模块,显示模块是实现数字钟的重要部分,在显示时,首先将时间十进制数据转化为显示段码,然后送往液晶显示。显示段码采用动态扫描的方式。在要求改变显示数据的类别时,只须改变R1(指向数据缓冲区的指针)指向的十进制数据缓冲区即可。如图4-1所示:图4-1结束语通过这次实验,我学会了熟练运用protues,keil,protel等软件,在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。其次,在这次课程设计中,我们运用到了以前所学的专业课知识。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学

5、我发现效率很高,这是我做这次课程设计的又一收获后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。附录1 protel原理图附录2 PCB图附录3 protues仿真图附录4 程序清单#include #include #define ucha

6、r 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);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 K

7、eyCount=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;/蜂鸣器void Beep() uchar i,j=70; for (i=0;i180;i+) while(-j);BEEP=BEEP; BEEP=0;/延时void DelayX(unit ms) uchar i;

8、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_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_

9、Write_Data(LCD_Display_Buffer2*i); LCD_Write_Data(:); /Time0中断 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+;

10、 if(Time_Buffer3=24) /时 Time_Buffer3=0; /主函数 void main() uchar 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(Promptsi-1,0); bre

11、ak; case 2: case 4:TR0 =0; Display_String(Promptsi-1,0); break; default:TR0=0; break; 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); Beep(); DelayX(100); while (K2=0) ; /等待释放K2键 Show_Second(); /1602LCD显示驱动函数 e #include

12、#include #define uchar unsigned char #define uint unsigned 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; while(ms-) for (t=0;t

13、120;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 (LCD_Busy_Check() ); LCD_RS=0;LCD_RW=0;LCD_EN=0; _nop_(); _nop_(); P0=cmd; DelayNOP(); LCD_EN=1;DelayNOP(); LCD_EN

14、=0; /向LCD写数据 void LCD_Write_Data(uchar str) while (LCD_Busy_Check() ; LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=str;DelayNOP(); LCD_EN=1;DelayNOP();LCD_EN=0; /初始化LCD void LCD_Initialize() DelayMS(5);LCD_Write_Command(0x38); DelayMS(5);LCD_Write_Command(0x0c); DelayMS(5);LCD_Write_Command(0x06); DelayMS(5);LCD_W

15、rite_Command(0x01); DelayMS(5); /设置显示位置 void LCD_Set_POS(uchar Position) LCD_Write_Command(Position|0x80); /显示函数,在LCD指令行上显示字符串 void Display_String(uchar*str,uchar LineNo) uchar k; LCD_Set_POS(LineNo); for (k=0;k16;k+) LCD_Write_Data (strk); 附录5元器件清单序号名称型号数量1单片机STC89C5212排针2.54mm单排针2排3排阻2K14瓷片电容30pf25晶振11.0592MHZ16单片机插座40P17按键18万能板双面板10cm*15cm19电解电容10uF/16V110电阻10K111电阻1K112可调电阻W103113发光二极管红114蜂鸣器HYDZ115PNP三极管90121

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1