欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    单片机电子时钟LCD显示综合实验报告.docx

    • 资源ID:13052473       资源大小:108.61KB        全文页数:12页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机电子时钟LCD显示综合实验报告.docx

    1、单片机电子时钟LCD显示综合实验报告单片机综合实验报告题 目: 电子时钟(LCD)显示一、实验内容:以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:使用字符型LCD显示器显示当前时间。显示格式为“时时:分分:秒秒”。用4个功能键操作来设置当前时间,4个功能键接在P1.0P1.3引脚上。 功能键K1K4功能如下。K1进入设置现在的时间。K2设置小时。K3设置分钟。K4确认完成设置。程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然后开始计时。二、实验电路及功能说明1)单片机主控制模块以AT89C51单片机为核心进行一系列控制。2)时钟显示模块

    2、用1602为LCD显示模块,把对应的引脚和最小系统上的引脚相连,连接后用初始化程序对其进行简单的功能测试。测试成功后即可为实验所用,如图:3)时间调整电路用4个功能键操作来设置当前时间,4个功能键接在P1.0P1.3引脚上。 功能键K1K4功能如下。K1进入设置现在的时间。 K2设置小时。K3设置分钟。K4确认完成设置。如图:三、实验程序流程图:主程序: 时 钟 主 程 序 流 程子程序:四、实验结果分析 实验结果及分析:单片机的晶振可以根据要求设定。6MHZ为和现实时间显示相同。实验采用12MHZ晶振采用方式1定时,选取50ms采用20次中断达到一秒,采用查表方式控制LCD显示。当烧入程序后

    3、开始运行,根据初始值设定可以观察到显示的时间,这里为了更明显观察显示数据变化把起始值设为 23:59:50 运行后显示,K1为进入现在设置时间,当按下K1后显示, 和实验要求相比较,实现了按下K1进入现在时间设置,按下K4确认完成时间设置的功能;不同之处: 当进入时间设置时在按下K1设置小时,再次按下K1是设置分钟。增加功能:进入时间设置并选择设置位置后K2键位数字增加功能,K3键为数字减小功能。根据仿真结果能够确定编程正确,基本实现了所有功能,而且有所改进。五、心得体会每次做单片机实验都会有不同的等收获,而这次的实验让我感觉收获更大。这次的实验让我巩固了以往所学,而且锻炼了自己发现问题解决问

    4、题的能力。在编程过程,发现自己对C语言很生疏,很多技巧和函数运用都不会,通过参考资料和询问同学终于让我完成了程序,并实现了程序的功能。这不仅提高了自己动手能力,也培养了自己的思考能力。这次在编程过程中学到了很多新东西,特别是LCD的显示,在设定的显示字符后,正确编译后显示各种设定值,LCD显示16位字符,在最初编程时编译正确但是LCD上的显示字符有缺失,显示不完整,经过不断调试发现空格同样占据字符,只有所有字符不超过16位且位置正确时才能完整正确显示。时间的显示需要每一个显示的位子有定义,而且要给“:”留下特定位子。同时编程时发现还可以显示其他如日期。但本实验不需要且很难完成最终没实现。在仿真

    5、过程中发现许多模型不知道名称,最后搜索了一份Proteus 元件库,里边有很多元件模型的名称。最后搭建成功了仿真模型,并且运行成功。 在这里要感谢老师在以往实验过程中不厌其烦的帮助自己解决所遇到的问题和传授一些知识和小窍门。让我对单片机有机会加深了解,体会到了单片机的强大,学到了很多,感谢。六、程序清单#include #include #define uchar unsigned char#define uint unsigned int #define DelayNOP() _nop_();_nop_();_nop_();_nop_();sbit K1 =P10; /选择调整小时,分钟sb

    6、it K2 =P11; /增加sbit K3 =P12; /减小sbit K4 =P13;sbit SPK=P30; sbit RS =P20;sbit RW =P21;sbit E =P22; uchar code Str1 = Current Time ; /一下两个字符串的串长均为16 uchar code Str2 = Set New Time; uchar HMS_String= 00:00:00 ;/带显示的时间串 bit Settime=0; /是否修改时间 bit Change_H_or_M =1;/1表示修改时.0表示修改分 uchar MilliSecond,Hour =2

    7、3,Minute=59, Second =50; /延时函数 void DelayMS(uint x) uchar i; while(x-) for(i=0;i120;i+); /LCD忙状态检测 bit LCD_Busy_Check() bit result; RS = 0;RW = 1;E = 1;DelayNOP();result = (bit)(P0 & 0x80);E = 0; return result; /写LCD命令 void LCD_Write_Command(uchar cmd) while(LCD_Busy_Check();/判断LCD是否忙碌 RS = 0;RW = 0

    8、;E = 0;_nop_();_nop_();P0 = cmd; DelayNOP(); E = 1;DelayNOP();E = 0; /设置LCD显示位置 void LCD_Set_Pos(uchar pos) LCD_Write_Command(pos | 0x80); /写LCD数据 void LCD_Write_Data(uchar dat) while(LCD_Busy_Check();/判断LCD是否忙碌 RS = 1;RW = 0;E = 0; P0 = dat; DelayNOP(); E = 1;DelayNOP();E = 0; /LCD初始化 void LCD_Init

    9、ialize() LCD_Write_Command(0x38);DelayMS(1); LCD_Write_Command(0x0c);DelayMS(1); LCD_Write_Command(0x06);DelayMS(1); LCD_Write_Command(0x01);DelayMS(1); / 显示函数,在LCD指定的行上显示字符串 void Display_String(uchar*str,uchar LineNo) uchar k; LCD_Set_Pos(LineNo); for(k=0;k;/显示修改标志 else HMS_String3 = ; /不显示修改标志HMS_

    10、String4 = h/10 + 0; /时十位 HMS_String5 = h/10 + 0; HMS_String5 = h%10 + 0; /时个位 HMS_String5 = h%10 + 0; HMS_String7 = m/10 + 0; /分 HMS_String8 = m/10 + 0;HMS_String8 = m%10 + 0; /分 HMS_String8 = m%10 + 0;HMS_String10= s/10 + 0; /秒 HMS_String11= s/10 + 0; HMS_String11= s%10 + 0; /秒 HMS_String11= s%10 +

    11、 0;Display_String(HMS_String,0x40); /设置时间 void Change_Time() Settime=0; if(K1=0) /按下k1键即进入修改状态 TR0 = 0; Display_String(Str2,0x00); /第一行提示修改时间 Settime = 1; while (Settime) if(K1 = 0) /确定调整小时还是分钟 while(K1 = 0) Change_H_or_M = !Change_H_or_M; else if(K2 = 0) /增加 while(K2 = 0); if(Change_H_or_M=1) if(+H

    12、our = 24) Hour = 0; else if(+Minute = 60) Minute = 0; else if(K3 = 0) /减少 while(K3 = 0); if(Change_H_or_M = 1) if(-Hour = 0xff) Hour = 23; else if(-Minute = 0xff) Minute = 59; else if(K4 = 0) /确定 while(K4 = 0); Display_String(Str1,0x00); /第一行还原显示str1 Settime = 0; TR0 = 1; Display_HMS(Hour,Minute,Sec

    13、ond); /外层While在这里结束 /定时器0中断 void Time0() interrupt 1 TH0 = (65536 -50000)/256; TL0 = (65536 -50000)%256; /重新装入50MS定时 if(+MilliSecond = 20) /50*20=1s MilliSecond = 0; if(+Second = 60) Second = 0; if(+Minute = 60) Minute = 0; if(+Hour = 24) Hour = 0;Minute = 0;Second = 0; /主函数 void main() TMOD = 0x01; TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; IE = 0x82; SPK = 0; LCD_Initialize(); Display_String(Str1,0x00); /第一行显示 TR0 = 1; P1 = 0xFF; while(1) Display_HMS(Hour,Minute,Second); /第二行显示时分秒 DelayMS(500); Change_Time(); /显示过程中允许修改时间


    注意事项

    本文(单片机电子时钟LCD显示综合实验报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开