版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
宁波工程学院设计与讨论课程设计报告课题题目:用1602LCD显示秒表学院名称:电子与信息工程学院专业:学生姓名:3学生姓名:学生姓名:指导教师:起讫时间:2013年1月2日至2013年1月11日目录技术指标1.1整体功能要求1.2系统结构要求1.3设计条件整体方案设计1.整体方框图及原理第三章硬件设计模块3.1相关元器件的简介3.2晶振电路设计3.3复位电路设计3.4控制电路设计3.5秒表显示电路设计3.6整体电路图3.7整机原件清单第四章软件设计第五章仿真与测试第六章设计小结5.1设计任务完成情况5.2问题及改进5.3心得体会参考文献技术指标整体功能要求分组独立计时秒表:设计一个单片机控制的秒表系统,利用单片机的定时器计数器定时和计数的原理,结合显示电路、LCD液晶显示器以及按键来设计计数器。用K1键控制秒表1计时的启动与暂停,用K2键控制秒表1的复位。用K3键控制秒表2的启动与暂停,用K4键控制秒表2的复位,每按一次按键蜂鸣器都会发出警报声。并且秒表1,2互不影响各自计时,同时在1602LCD上显示。系统结构要求:系统结构如图2-1所示单片机单片机显示电路键盘电路外围电路电源电路图2-1用1602LCD设计的秒表系统框图设计条件软件要求:uVision,protuse仿真软件电源条件:5V。整体方案设计图2-1原理框图注:图2-1原理框图中K1键为秒表1的启动与暂停控制键,K3键为秒表1的复位键,K2为秒表2的启动与暂停控制键,K4为秒表2的复位键。本系统中,硬件电路主要有电源电路,晶振电路,复位电路,显示电路以及一些按键电路等,本系统采用AT89C51单片机为中心器件,利用定时器计数器定时和记数的原理,结合硬件电路如电源电路,晶振电路,复位电路,显示电路,蜂鸣器电路以及一些按键电路等来设计计数器,将软、硬件有机地结合起来。硬件系统采用PROTEUS功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。第三章硬件设计模块3.1.1AT89C51性能AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的只读程序存储器和128字节的随机存储器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51功能性能:与MCS-51成品指令系统完全兼容;4KB可编程闪速存储器;寿命:1000次写/擦循环;数据保留时间:10年;全静态工作:0-24MHz;三级程序存储器锁定;128*8B内部RAM;32个可编程I/O口线;2个16位定时/计数器;5个中断源;可编程串行UART通道;片内震荡器和掉电模式。3.1.2AT89C51各引脚功能T89C51提供以下标准功能:4KB的Flash闪速存储器,128B内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路,同时,AT89C51可降至0Hz静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作,掉电方式保存RAM中的内容,但震荡器停止工作并禁止其他所有工作直到下一个硬件复位。AT89C51采用PDIP封装形式,引脚配置如图3所示。图3AT89C51的引脚图AT89C51芯片的各引脚功能为:P0口:这组引脚共有8条,P0.0为最低位。这8个引脚有两种不同的功能,分别适用于不同的情况,第一种情况是89C51不带外存储器,P0口可以为通用I/O口使用,P0.0-P0.7用于传送CPU的输入/输出数据,这时输出数据可以得到锁存,不需要外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;第二种情况是89C51带片外存储器,P0.0-P0.7在CPU访问片外存储器时先传送片外存储器的低8位地址,然后传送CPU对片外存储器的读/写数据。P0口为开漏输出,在作为通用I/O使用时,需要在外部用电阻上拉。P1口:这8个引脚和P0口的8个引脚类似,P1.7为最高位,P1.0为最低位,当P1口作为通用I/O口使用时,P1.0-P1.7的功能和P0口的第一功能相同,也用于传送用户的输入和输出数据。P2口:这组引脚的第一功能与上述两组引脚的第一功能相同即它可以作为通用I/O口使用,它的第一功能和P0口引脚的第二功能相配合,用于输出片外存储器的高8位地址,共同选中片外存储器单元,但并不是像P0口那样传送存储器的读/写数据。P3口:这组引脚的第一功能和其余三个端口的第一功能相同,第二功能为控制功能,每个引脚并不完全相同,如下表1所示:表1P3口各位的第二功能P3口各位第二功能P3.0RXT(串行口输入)P3.1TXD(串行口输出)P3.2/INT0(外部中断0输入)P3.3/INT1(外部中断1输入)P3.4T0(定时器/计数器0的外部输入)P3.5T1(定时器/计数器1的外部输入)P3.6/WR(片外数据存储器写允许)P3.7/RD(片外数据存储器读允许)Vcc为+5V电源线,Vss接地。ALE:地址锁存允许线,配合P0口的第二功能使用,在访问外部存储器时,89C51的CPU在P0.0-P0.7引脚线去传送随后而来的片外存储器读/写数据。在不访问片外存储器时,89C51自动在ALE线上输出频率为1/6震荡器频率的脉冲序列。该脉冲序列可以作为外部时钟源或定时脉冲使用。:片外存储器访问选择线,可以控制89C51使用片内ROM或使用片外ROM,若=1,则允许使用片内ROM,若=0,则只使用片外ROM。 :片外ROM的选通线,在访问片外ROM时,89C51自动在线上产生一个负脉冲,作为片外ROM芯片的读选通信号。RST:复位线,可以使89C51处于复位(即初始化)工作状态。通常89C51复位有自动上电复位和人工按键复位两种。XTAL1和XTAL2:片内震荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接89C51片内OSC(震荡器)的定时反馈回路。3.1.31602LCD引脚接口说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2DataI/O2VDD电源正极10D3DataI/O3VL液晶显示偏压信号11D4DataI/O4RS数据命令选择端口(H/L)12D5DataI/O5R/W读/写选择端(H/L)13D6DataI/O6E使能信号14D7DataI/O7D1DataI/O15BLA背光源正极8D1DataI/O16BLK背光源负极3.1.4引脚说明:3脚:VL,液晶显示偏压信号,用于调整LCD1602的显示对比度,一般会外接电位器用以调整偏压信号,此脚电压为0时可以得到最强的对比度。
4脚:RS,数据/命令选择端,当此脚为高电平时,可以对1602进行数据字节的传输操作,而为低电平时,则是进行命令字节的传输操作。命令字节,即是用来对LCD1602的一些工作方式作设置的字节;数据字节,即使用以在1602上显示字节。
5脚:R/W,读写选择端。当此脚为高电平可对LCD1602进行读数据操作,反之进行写数据操作。
6脚:E,使能信号,其实是LCD1602的数据控制时钟信号,利用该信号的上升沿实现对LCD1602的数据传输。
7~14脚:8位并行数据口,使得对LCD1602的数据读写大为方便。
基本操作时序:(1)读状态:输入:RS=L,RW=H,E=H;输出:D0~D7=状态字(2)写指令:输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲;输出:无(3)读数据:输入:RS=H,RW=H,E=H;输出:D0~D7=数据(4)写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲;输出:无需要两个写时序:
①当我们要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。
②当我们要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。3.1.5DDRAM地址与显示位置的对应关系1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下:3.2.1晶振电路设计如图2-3所示,这里选用12MHE的内部振荡方式,电路如下:电容器C1,C2起稳定振荡频率,快速起振的作用,C1,C2可在20~100PF之间取,这里取20PF,接线时要使晶振振荡器尽可能接近单片机。3.2.2复位电路设计采用上电+按键复位电路,上电后,由于电容充电,使RST持续一段时间高电平时间。当单片机已在运行之中时,按下复位按键也能使RST持续一段时间的高电平,从而实现上电加开关复位的操作。这不仅能时单片机复位,而且还能使单片机的外围芯片也同时复位,当程序出现错误时,可以随时使电路复位。复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动3.2.3控制电路设计3.2.4秒表显示电路设计3.2.5整体电路图3.2.7整机原件清单软件设计在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。把一个多功能的复杂程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。4.1定时器T0中断voidTime0()interrupt1using0 { TH0=(65536-10000)/256; TL0=(65536-10000)%256; if(++millisecond1==100) { millisecond1=0; if(++second1==60) { second1=0; if(++minute1==60) { minute1=0; if(++hour1==24) { hour1=0;minute1=0; second1=0; } } } } }4.2定时器T1中断voidTime1()interrupt3using1 { TH1=(65536-10000)/256; TL1=(65536-10000)%256; if(++millisecond2==100) { millisecond2=0; if(++second2==60) { second2=0; if(++minute2==60) { minute2=0; if(++hour2==24) { hour2=0;minute2=0; second2=0; } } } } }4.3秒表1显示voiddisplay_s1(ucharmis,s,m,h) {s1_string[3]=h/10+'0'; s1_string[4]=h%10+'0'; s1_string[6]=m/10+'0'; s1_string[7]=m%10+'0'; s1_string[9]=s/10+'0'; s1_string[10]=s%10+'0'; s1_string[12]=mis/10+'0'; s1_string[13]=mis%10+'0'; Display_String(s1_string,0x00); }4.4秒表2显示voiddisplay_s2(ucharmis,s,m,h) {s2_string[3]=h/10+'0'; s2_string[4]=h%10+'0'; s2_string[6]=m/10+'0'; s2_string[7]=m%10+'0'; s2_string[9]=s/10+'0'; s2_string[10]=s%10+'0'; s2_string[12]=mis/10+'0'; s1_string[13]=mis%10+'0'; Display_String(s2_string,0x40); }4.5主函数voidmain() { uinttmp=0; uinttmp1=0; BEEP=0; IE=0x8A; TMOD=0x11; TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=(65536-10000)/256; TL1=(65536-10000)%256; LCD_Initialize(); Display_String(str1,0x00); P1=0xff;while(1) { if(K1==0) { Beep(); while(K1==0); tmp=tmp+1;keycount1=tmp%2; } if(K2==0) { Beep(); while(K2==0); tmp1=tmp1+1; keycount2=tmp1%2; } if(K3==0) { Beep(); while(K3==0); millisecond1=0; second1=0; minute1=0; hour1=0; TR0=0; keycount1=-1; tmp=0;display_s1(millisecond1,second1,minute1,hour1); } if(K4==0) { Beep(); while(K4==0); millisecond2=0; second2=0; minute2=0; hour2=0; TR1=0; keycount2=-1; tmp1=0; display_s2(millisecond2,second2,minute2,hour2); }switch(keycount1) { case1: TR0=1; display_s1(millisecond1,second1,minute1,hour1); break; case0: TR0=0; display_s1(millisecond1,second1,minute1,hour1); break; } switch(keycount2) { case1: TR1=1; display_s2(millisecond2,second2,minute2,hour2); break; case0: TR1=0; display_s2(millisecond2,second2,minute2,hour2); break; } } }4.6LCD 控制bitLCD_Busy_Check(); voidLCD_Initialize(); voidLCD_Set_POS(uchar) ; voidLCD_Write_Command(uchar); voidLCD_Write_Data(uchar); voidDisplay_String(uchar*,uchar);sbitK1=P1^0;sbitK2=P1^1;sbitK3=P1^2;sbitK4=P1^3;sbitBEEP=P3^0;sbitLCD_RS=P2^0;sbitLCD_RW=P2^1;sbitLCD_EN=P2^2;ucharkeycount1=-1;ucharkeycount2=-1;ucharcodestr1[]="secondcount";uchars1_string[]="N100:00:00:00";uchars2_string[]="N200:00:00:00";ucharmillisecond1,se
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业生产管理与效率提升(标准版)
- 公共交通运营统计分析制度
- 公共交通车辆购置管理制度
- 南充市营山县2025年下半年公开考核招聘事业单位工作人员备考题库及一套完整答案详解
- 2026年重庆大学电气工程学院量子智能传感器团队劳务派遣工程技术人员招聘备考题库完整答案详解
- 养老院投诉处理与改进制度
- 2026年遵义市市直事业单位公开选调备考题库及一套答案详解
- 2026年聊城幼儿师范学校第二批公开招聘工作人员9人备考题库及1套完整答案详解
- 2026年梧州市长洲区荣祥投资有限公司招聘备考题库及参考答案详解
- 2026年韶关市大宝山资源综合利用有限公司招聘备考题库参考答案详解
- 蓝丝带的故事
- 上海市中医住院医师规范化培训细则(年7月12日)
- 样板加油站打造方案
- 浙江省杭州市西湖区2023-2024学年六年级上学期期末科学试卷
- 水站运维服务投标方案(技术标)
- 西安大地种苗有限公司种子加工储备中心建设项目(固废环保设施)竣工环境保护验收监测报告
- 不锈钢管道安装施工工艺
- GB/T 6003.1-2022试验筛技术要求和检验第1部分:金属丝编织网试验筛
- GB/T 96.1-2002大垫圈A级
- 印章证照外借申请登记表
- 2022年天津市津南创腾经济开发有限公司招聘笔试试题及答案解析
评论
0/150
提交评论