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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机电子钟实训报告.docx

1、单片机电子钟实训报告单片机电子钟实训报告 学院:河南工程学院 系别:电气信息工程系 专业班级:通信技术1032 姓名:叶永柏 学号:201020707259前言单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅

2、以必要的电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显数字时钟是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医院、学校等企事业单位,各种体育赛事及至我们每个人的日常生活中都发挥着重要的作用。本系统是基于AT89C51单片机设计的一个具有六位LED显示的数字时实时钟,采用独立式按键进行时间调整,同时引入一个内部充电电源在停止外部供电时,仍具有内部计时的功能。该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。本文以对单片机的学习和认识,并通过本次课程设计加以应用,从而达到一个对所学知识的巩固、更深一步的理解,面对一个电子设计,应对出系统的方案,分析出各

3、个板块来,再对各个板块进一步的具体的设计,先进行硬件电路设计,此时一定要考虑好要用什么元件、各个元件的具体参数、是否能实现应有功能,从而得到一个完整的硬件电路。目录第一章 设计任务1.1设计目的1.2设计要求第二章 总体设计2.1 硬件部分2.2 电子时钟电路图2.3 电子时钟程序设计第三章 电子时钟调试3.1 软件调试3.2硬件调试第四章 总结第五章 参考文献第一章 设计任务1.1设计目的 课程设计的主要目的是通过对电子时钟的设计实践,了解单片机系统控制过程、设计要求、应完成的工作内容和具体设计方法。通过设计也有助于复习、巩固以往所学的知识,达到灵活应用的目的。课程设计应强调能力培养为主,在

4、独立完成设计任务的同时,还要注意其他方面的能力的培养与提高,如独立工作能力与创造力;综合运用专业及基础知识的能力,解决实际工程技术问题的能力;差于图书资料、产品手册和各种工具书的能力;工程绘图的能力;书写技术报告和编制技术资料的能力。1.2设计要求在课程设计中,学生是主体,应充分发挥他们的主动性和创造性。教师的主导作用是引导其掌握完成设计内容的方法。为保证顺利完成设计任务还应做到以下几点:1、在接受设计任务后,应根据设计要求和应完成的设计内容进度计划,确定各阶段应完成的工作量,妥善安排时间。2、在方案确定过程中应主动提出问题,以取得指导老师的帮助,同时要广泛讨论,依据充分。在具体设计过程中要多

5、思考,尤其是主要参数,要经过计算论证。3、说明书要求文字通顺、简练,字迹端正、整洁。4、应在规定的时间内完成所有的设计任务。5、如果条件允许,应对自己的设计线路进行实验讨论,考虑进一步改进的可能性。第二章 总体设计2.1 硬件部分1、系统设计总框图图2-1 设计总框图此次课程设计的的电子钟由单片机AT89C51、时钟电路、动态数码管显示电路组成。运用C语言来控制单片机AT89C51来实现动态数码管显示,并在此基础上综合运用,时间电子钟的设计(包括时钟、秒表、显示)。2、电路组成及工作原理 本文数字时钟设计原理主要利用AT89C51单片机, P2口控制LCD1602显示,P1口与按键相接用于时间

6、的校正。整个系统工作时,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”计数器的输出,通过LCD1602显示器显示出来。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。3、单片机AT89C51(1)

7、 AT89C51简介 单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可能还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换器及A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。(2)AT89C51的主要性能参数与MCS-51产品指令系统完全兼容,4k 字节可重擦写FLASH闪

8、速存储器。1000次擦写周期。全静态操作:0Hz24MHz。三级加密程序存储器,1288字节内部RAM32个可编程I/O口线,2个16位定时/计数器6个中断源,可编程串行URAR通道,低功耗空闲和掉电模式。AT89C51提供以下标准功能:4k 字节FLASH闪速存储器,128字节内部RAM,32个I/O口线,2个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51降至0Hz的静态逻辑操作,并支持两种可选的节电工作模式。空闲方式体制CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器体

9、制工作并禁止其他所有不见工作直到下一个硬件复位。下图为单片机AT89C51各管脚图:图2-2 单片机AT89C51管脚图4、1602LCD显示部分1602LCD 分为带背光和不带背光两种,基控制器大部分为 HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别1602LCD 主要技术参数: 显示容量:162 个字符 芯片工作电压:4.55.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.954.35(WH)mm 引脚功能说明 1602LCD 采用标准的 14脚(无背光)或 16脚(带背光)接口,各引脚接口说明如表 10-13所示: 编号 符号 引脚

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

11、整对比度。 第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第 5 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS和 R/W共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W 为高电平时可以读忙信号,当 RS 为高电平 R/W为低电平时可以写入数据。 第 6 脚:E端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。 第 714脚:D0D7为 8 位双向数据线。 第 15脚:背光源正极。 第 16脚:背光源负极。2.2 电子时钟电路图图2-3 线路连接图2.3 电子时钟程序设计1、程序流程图如图2-4所示

12、 图2-42、电路元器件清单低压电源 4.5V导线若干AT89C51 单片机1微动开关按钮4LCD1602显示器1NPN三极管1电阻 10K1滑动变阻器 10K1电容10uF1电容30pF2晶振12MHZ13、电子时钟C语言源程序/* 使用LCD1602与单片机实现的时钟与日期 显示年、月、日、时、分、秒(24小时制) 时间可调, 年份20009999 jiahuhenan 2012年10月9日*/#include/*全局变量的定义与设置*/sbit key_mean=P10; /按键的定义sbit key_ok =P11;sbit key_set =P12;sbit RS =P15; /LC

13、D控制端口sbit RW =P16;sbit E =P17;sfr PORT =0xA0;/flagchar flag_sec=0; /值为20代表1schar flag_en_ok=0;char flag_en_key=0; /值为1表示键盘有效,否则无效char flag_ok=0; /key_up与key_down的功能选择char flag_mean=0;char flag_set=0; /key_up与key_down的功能标识char flag_year_leap=0;/短语 /code char string_time= Setting time ? 0; code char s

14、tring_year= Setting year ? 0; code char string_month= Setting month ? 0; code char string_mday= Setting day ? 0; code char string_week= Setting week ? 0; code char string_hour= Setting hour ? 0; code char string_minute=Setting minute? 0; code char string_second=Setting second? 0;/年月日时分秒的定义struct DAT

15、A_TIME short year; /待选 char month; char mday ; char week ; char hour ; char minute; char second;time;struct time_char /time的字符型 char ch_year4; char ch_month2; char ch_mday2; char ch_week1; char ch_hour2; char ch_minute2; char ch_second2;time_ch;/*子函数*/LCD的延时程序void LCD_delay(void) char i; for(i=123;i

16、=0;i-);/向写指令函数void wcmd(char cmd ) RS=0; RW=0; E=1; LCD_delay(); PORT=cmd; LCD_delay(); E=0;/向LCD写数据函数void wdata(char DATA) RS=1; RW=0; E=1; LCD_delay(); PORT=DATA; LCD_delay(); E=0;/写字符串void wstring(char *pt,char i)/i为字符的个数,不带0 char j; for(j=0;ji;j+) wdata(ptj); /时间数据的格式转换void tran_2_ch(char *pt,ch

17、ar DATA) pt0=DATA/10+0x30; pt1=DATA-pt0*10+0x10;void tran_4_ch(char *pt,int DATA) pt0=DATA/1000; pt1=DATA/100-pt0*10; pt2=DATA/10-pt0*100-pt1*10; pt3=DATA-pt0*1000-pt1*100-pt2*10; pt0+=0x30; pt1+=0x30; pt2+=0x30; pt3+=0x30;/格式转换的实现void tran_ch(void) tran_4_ch(time_ch.ch_year ,time.year ); tran_2_ch(

18、time_ch.ch_month,time.month); tran_2_ch(time_ch.ch_mday ,time.mday ); /tran_2_ch(time_ch.ch_week ,time.week*10+1); time_ch.ch_week0=time.week+0x30; tran_2_ch(time_ch.ch_hour ,time.hour ); tran_2_ch(time_ch.ch_minute,time.minute); tran_2_ch(time_ch.ch_second,time.second);/是否是闰年char leep_year(int year

19、)/如果是闰年则flag_year_leep=1,否则=0 if(year%400=0)|year%4=0&year%100!=0)return 1; else return 0;/星期的判断void de_week(void) int i,j,day=0; char mweek; for(i=2000;itime.year;i+) if(leep_year(i)day+=366; else day+=365; for(j=1;j=30) if(time.month=1|time.month=3|time.month=5|time.month=7 |time.month=8|time.mont

20、h=10|time.month=12) /天数为31天的月,1、3、5、7、8、10、12 if(time.mday=32) time.mday=1;time.month+; if(time.month=4|time.month=6|time.month=9|time.month=11) if(time.month=31) time.mday=1;time.month+; tran_ch(); if(time.month=2&time.mday=28) if(flag_year_leap&(time.mday=30) time.mday=1;time.month+; if(!flag_year

21、_leap)&(time.mday=29) time.mday=1;time.month+; tran_ch(); if(time.month=13) time.month=1;time.year+;tran_ch();/年的进位/时间的进位void time_carry(void) if(time.second=60) time.minute+;time.second=0; if(time.minute=60) time.hour+ ;time.minute=0; if(time.hour =24) time.mday+ ;time.hour=0 ;time_carry_mon_year()

22、;de_week();/屏幕的显示函数void dsp(void) if(flag_en_key=0)/非设置模式下的显示 tran_ch(); wcmd(0x02);/return cursor wstring(time_ch.ch_hour,2); wdata(:); wstring(time_ch.ch_minute,2); wdata(:); wstring(time_ch.ch_second,2); wstring( ,3); wcmd(0x80+0x40); wstring( ,3); wstring(time_ch.ch_year,4); wdata(-); wstring(ti

23、me_ch.ch_month,2); wdata(-); wstring(time_ch.ch_mday,2); wstring(WK,2); wdata(time_ch.ch_week0); if(flag_en_key=1)/设置模式下的显示 if(flag_set2) tran_ch(); wcmd(0x02);/return cursor wstring(time_ch.ch_hour,2); wdata(:); wstring(time_ch.ch_minute,2); wdata(:); wstring(time_ch.ch_second,2); wstring( ,3); /显示

24、字符串void dsp_string(char *pt) char i=0; wcmd(0x80+0x40);/将光标调整至第二行 while(pti) wdata(pti); i+; /退出按键模式void exit_key(void) char i; flag_en_key=0; flag_en_ok=0; flag_ok=0; flag_mean=0; flag_set=0; wcmd(0x80+0x40); for(i=0;i=16;i+) wdata(0);/按键的处理int solve_key(void) /if(key_mean=0); if(key_ok=0)/确定或退出 if

25、(flag_ok) exit_key(); time_carry_mon_year(); de_week(); return 0; else flag_ok=1; if(key_set =0) if(flag_ok=0)/时分秒的选择 flag_set+; if(flag_set=6)flag_set=0; switch(flag_set) case 0:dsp_string(string_year);break; case 1:dsp_string(string_month);break; case 2:dsp_string(string_mday);break; case 3:dsp_st

26、ring(string_hour);break; case 4:dsp_string(string_minute);break; case 5:dsp_string(string_second);break; if(flag_ok=1)/时分秒的设置 switch(flag_set) case 0:time.year+ ;if(time.year=10000)time.year=2000;break; case 1:time.month+ ;time_carry_mon_year();break; case 2:time.mday+ ;time_carry_mon_year();break; case 3:time.hour+ ;if(time.hour=24)time.hour=0;break; case 4:time.minute+;if(

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

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