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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机实验报告Word格式文档下载.docx

1、成果验收1天2-216单片机实验室(单片机应用系统设计) 设计任务书学院:信息学院班级:12电气升本学生姓名:朱婉婉学号指导教师:时间:2013年7月16日到2013年7月26日摘要数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公 室等公共场 所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先 进的石英技术,使数字钟具有走时准确、性能稳定 、携带方便等优点,它还用于计时、自动报时 及自动控制等各个领域。尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使 用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计, 因此进行数字

2、钟的 设计是必要的。在这里我们将已学过的比较零散的数字电路的知识有机的、 系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、 调试电路的能力。单片机具有 体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的 智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技 术改造和产品的更新换代,应用前景广阔基于这种情况 , 我们课程设计小组两人多方查阅资料,反复论证设计出了这款既简单 实用,又价格便宜的单片机电子时钟。关键词:单片机时钟计时1、总体功能 12、实验要求 1二、硬件电路图及说明 31、硬件电路图 32、 12864LCD液晶

3、显示屏 33、 按键功能 34、 实时时钟芯片 S-3530A 3三、电路及程序设计 7四、设计特点 16五、调试 171 、主循环程序流程 32、 关于 3530 读出数据的更改 33、 关于秒表的设置 34、关于时间的设置 35、 遇到的具体问题 36、 注意事项 3六、总结及体会 19七、使用说明书 21八、程序及简单注解 221 、 32、 33、 3一、概述1 、总体功能本次设计时钟电路,使用了 STC89C5单片机芯片控制电路,单片机控制电路简单且 省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、 秒,用一扬声器来进行定时提醒,同时使用C语言程序来控制

4、整个时钟显示,使得编程变 得更容易,这样通过四个模块:键盘、芯片、扬声器、显示屏即可满足设计要求。2、实验要求:分分:秒秒”1.使用中文液晶128x64点阵LCD采用16点阵字库显示当前时间“时时 2.用4个按键设置现在时间:K1进入设置日期;(K1= 1)K2调整年;K3调整月;K4调整日。(K1 = 2)K4调整秒。K1设置完成(K仁3)增加 闹铃功能,时间到了使用音乐声(指示灯闪动 10 秒) 可选实验内容 增加闹铃功能,三次闹铃 增加秒表计数功能,精度为秒-增加万年历显示“年月曰” 二月28天、29天 增加星期显示增加整点闹铃指示灯闪动5次增加整点闹铃开关被设置的数字闪动,其他自己认为

5、可添加的内容 课程设计要求 方案设计前要求完成设计报告,每个组一份;其中设计图纸每方案实施结束,经过指导老师验收后完成设计报告, 每个成员独立完成,个组只需要1份二、硬件电路图及说明1、硬件电路图LCD时钟控制系统利用C8051F020芯片作为控制中心,配合液晶显示 128*64液晶显示模 块、独立式键盘模块、实时时钟/日历芯片模块等电路,实现日历时钟实现显示年月日时分秒。总体设计方框图如图 1 所示:图12、 12864LCD液晶显示屏带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国 标一级、二级简体中文字库的点阵图形液晶显示模块; 其显示分辨率为12

6、8X64,内置8192 个16*16点汉字,和128个 16*8点ASCI I字符集利用该模块灵活的接口方式和简单、方便的 操作指令,可构成全中文人机交互图形界面。 可以显示8X4行16X 16点阵的汉字也可完成 图形显示低电压低功耗是其又一显着特点。 由该模块构成的液晶显示方案与同类型的图形 点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁 得多,且该模块的价格也略低于相同点阵的图形液晶模块。12864接 口定义及其与C8051F02啲接口 :引脚及内部结构如图 2 所示:图 2 液晶显示电路3、 按键电路K1连接口,K2连接口,K3;连接口,K4连接口键盘是由若干按键组成的开关矩阵

7、, 它是微型计算机最常用的输入设备, 用户可以通 过键盘向计算机输入指令、 地址和数据。 一般单片机系统中采和非编码键盘, 非编码键盘 是由软件来识别键盘上的闭合键, 它具有结构简单, 使用灵活等特点, 因此被广泛应用于 单片机系统。 按键开关的抖动问题, 键盘与单片机的连接组成键盘的按键有触点式和非触 点式两种,单片机中应用的一般是由机械触点构成的。 当开关S未被按下时,输入为高电平,S闭合后,输入为低电平。而按键会有抖动现象,因此必须考虑如何去除抖动,常用 的去抖动的方法有两种: 硬件方法和软件方法。 单片机中常用软件法。 软件法其实很简单, 就是在单片机获得口为低的信息后,不是立即认定S

8、1已被按下,而是延时10毫秒或更长 一些时间后再次检测口,如果仍为低,说明 S1 的确按下了,这实际上是避开了按键按下 时的抖动时间。而在检测到按键释放后(为高)再延时 5-10 个毫秒,消除后沿的抖动, 然后再对键值处理。本次实验去抖动采用软件方式。四个按键分别接到、和。对于这种键各程序可以采用不断查询的方法,功能就是: 检 测是否有键闭合,如有键闭合,则去除键抖动,判断键号并转入相应的键处理。4、实时时钟芯片S-3530AS-3530是一款低功耗的CMO实时时钟/日历芯片,它提供二个中断输出和掉电检测 器,所有的地址和数据通过l2C总线接口串行传递。最大总线速度为400Kbits/s,每次

9、读 写数据后,内嵌的字地址寄存器会自动增加。(1)器件特性:低工作电流:典型值为卩A(VDD=;世纪标志;大工作电压范围:;BCD码设置时间参数低休眠电流;典型值为卩A (VDD=时)稳压电路报警和定时器;掉电检测器;内部集成的振荡器电容;|2C总线从地址:读:0A3H写:0A2H三、电路与程序设计1、程序流程图主程序:开始一结束子程序 Testl2C():开始读取3530数 据时间赋初值将初值读入3530清屏在16, 0处显示05年01月01日,在16,2处显示00时00分00秒读取3530数调用函数set value()分为0且秒小于11J 丫 整点报时LED灯闪烁调 用 函 数alarm

10、 check()刷新显示时分秒,刷新显示年月日miaobiao_on 为偶且不为0 NI 丫显示秒表按键判断程序set_value():根据设计原则,判断按键并作出相应反应读取按键值有键按下且flag1=1按下的键为K1flag=1;key2=1;flag仁0;在(112,0)显示“年”按下的键为K2 flag=3;flag1=0;在(112,0) 显示“闹”K3flag=7;miaobiao_ on=1; 在(16,4)显示“秒表:XXX:XXflag=2;flag 1 = 0;在(112,0)显示“时”J按下的键为K2key2+;key2=2在(112,0)显示“月”key2=3在(112

11、,0)显示“日”按下的键为K3key2=1年加1,星期根据平年闰年加1或2将数据读入更新星期和年的显示flag 仁0;月加1,星期根据月的日期增 加将数据读入3530更新星期和月的显示月加1星期根据月的日期增加按下的键为K4退出时钟设置flag=0;flag 1= 0;key2=0;清除提示字符flag=2按下的键为K1 key2=0;清除提示字符 按下的键为K2 在(112,0)显示分在(112,0)显示秒F将更改的数据读入3530刷新显示秒,flag仁0;清楚提示字符alarm_num不等于 0flag=4;在(00,6)显示“1”在(64,6)显示第一个闹钟设置时间alarm_ num=

12、0;关闹 钟flag=4退出闹钟设置,清楚提示字符闹钟1的时加1,刷新显示闹钟时间,flag1=0;闹钟1的秒加1,刷新显示闹钟时间,flag1=0;alarm_ numflag=6;在(00,6)显示 3在(64,6)显示第二个闹钟设置时开闹钟在(112,6)显示“开”按下的键为k3I J I J Iflag=6按下的键为kPflag=7闹钟判断程序alarm_check():判断闹钟是否开,根据闹钟开启数量判断是否到设定时间,若到,则启动LED灯闪四.设计特点:1.该时钟由四个按键控制,按键功能分明: K1进入设置日期;K1设置完成(K1 = 3) 进入闹铃设置。2.秒表采用定时器中断控制

13、,计时精确。 K3一次进入秒表。K3两次开始计时。K3三次计时停止。K4退出秒表。3.显示页面结构清晰,功能明确。平时若无设置,则只显示年月日,时分秒以及星期4.进入设置后会出现一些提示字符,表述明了。5.调试 :1.主循环程序流程实验初期,原来的流程是测试按键, 完成所有操作后再刷新显示, 进入主循环, 但是, 这样在测试按键,等待操作时会造成较大的延时。因此该方案未录取。 最后采用的方案是:检测到一次按键,就更改 flag 和 flag1 标志位,记录按键次序后就 进入主循环, 然后继续检测有无按键操作, 这样对于程序就基本不会造成延时, 而且程序 的流程也更清晰。 关于标志位: flag

14、 用来记录之前按键次数和次序 flag=0 表示之前无按键操作 flag=1 表示 K1 按一下 flag=2 表示 K1 按两下 flag=3表示K2按一下 flag=4表示K2按两下 flag=5表示K2按三下 flag=6表示K2按四下 flag=7表示K3按一下 flag1 表示之前有无按键按下 flag1=1 ,表示无按键, flag1=0 ,表示已有按键按下过。2.关于 3530读出数据的更改遇到的具体问题:时间设置时, 10 以下的都能正确显示,两位数的就不会正确显示。 在设置“时”时,只能加到 12,而程序中的时钟为 24小时制,所以不正确。原因: 3530 中读出的数据格式为

15、BCD码,而程序中修改则按照16进制进行。所以会有数据错误。解 决方法:在设置时钟时间时,要先读出 3530数据,更改后再读入 3530中,而 3530中的 数据存放为BCD码,读出后并不表示时间的真实数据,因此,我编写了两个转化函数: change ()将16进制转化为BCD码 fchange ()将BCD码转化为16进制 读出数据后先将其转化为16进制,进行操作后再转化为BCD码,读入3530数据更改中, 因为“时”的数据表示只需低 4位和高 4位中的低两位, 所以最高 2位中会有一些脏数据, 在读出后应先与上 0x3f 再进行转化操作。3.关于 秒表设置秒表采用定时器1,初值为(6553

16、6-18432),并利用一个计数变量 miaobiao,初值为 10,中断中重新赋初值, 每次中断 miaobiao 减1,减至 0时,秒表计数变量加 1,miaobiao重新赋值为10!4.关于时间的设置在时间设置时遇到的问题基本上是因为考虑的不够周全,冈H开始时,没考虑到闰年, 大小月等情况,因此,闰年的二月不能调出 29号,大小月也不能区别,遇到这个问题后就开始更改程序的细节问题,使得设置时间时所有的日子都能设置出。要考虑的设置:年有闰年,平年,月有大小月,星期要随着年,月,日的更改而更改。5.遇到的具体问题在运行时,显示屏幕卡屏。只要一运行秒表程序,很快就会使程序卡在某一点。在原来的中

17、断程序中还有加入显示代码, 造成在运行时,显示屏幕卡屏。因为屏幕中显示的时间和秒表分别由两个计数器控制, 在刷新时因为计数器冲突而造成了卡屏的现 象。那是因为屏幕中显示的时间和秒表分别由两个计数器控制, 在刷新时因为计数器冲突而造成了卡屏的现象。更改方法:将中断程序中的显示代码取出,直接放在主循环程序中,这样就能顺利运行了。6.注意事项在设计秒表时,定时器1的主要程序放在文件中,而一些显示程序则在文件中, 因此,在调用这些变量时就会出现编译错误。 为解决该现象,我在文件中先编写了一个小的调用显 示程序,在需要显示时再调用该程序,就解决了变量调用问题。6.总结及体会:本次课程设计是用AT89S5

18、单片机CPU及 LCM160设计一个数字时钟,经过一个星期的调试, 结果满足设计要求,验证无误。通过单片机硬件电路的调试,实现了预先设定的功能,设计主要用 到的元件不多,最主要的是程序也比较长比较麻烦,同时也遇到了少量困难,尤其是关 于校时模块的设计实现。关于显示模块,在以前的实验中做过,所以问题很容易解决。学以致用,将从书本上学到的知识应用于实践,学会了初步的电子电路仿真设计虽然过程 中遇到了一些困难,但是在解决这些问题的过程无疑也是对自己自身专业素质的一种提 高。当最终调试成功的时候也是对自己的一种肯定。 此次的设计作业不仅增强了自己在专业设计方面的信心,鼓舞了自己,更是一次兴趣的培养,为

19、自己以后的学习方向的明确了 重点。另外在这次实验中我们遇到了不少的问题针对不同的问题我们采取不同的解决方 法,最终一一解决设计中遇到的问题。在我们曾经遇到不懂的问题时,利用网上的资源, 搜索查找得到需要的信息7.使用说明书:XX年XX月XX日XXXX 时 XX分 XX秒星期X该产品为电子时钟,能显示年月日,时分秒及星期,有秒表功能,闹钟功能(注1),会进行整 点报时,有四个按键控制功能的选择使用,下文中分别称为K1,K2,K3,K4 按键说明:K1:进入时间设置K1按一次,设置年月日 K1按两次,设置时分秒K2移位,K3加1,K4退出“时” “分” “秒” “年” “月K1按三次,退出设置 如

20、右图,在时间设置时,屏幕右上角会根据按键操作而出现“日”提示当前操作的作用对象。K2:进入闹钟设置XX 年 XX月 XX 日秒表:K3选择开闹钟的次数(0-3),若开的闹钟个数为零则 表示闹钟关闭 K2进入闹钟时间设置,K3时加,K4分加 再按K2退出 闹钟操作界面如右图:右上角会出现“闹”提示字。 最下一行显示当前设置闹钟时间,闹钟次数,及闹钟开 关状况。 K3:开启秒表 K3开始/停止计时 K4退出秒表. 秒表界面: 注1:闹钟功能,本产品闹钟最多能设置 3个不同时间,可选择开闹钟的次数,例如,若选择次数为1时,则只会 对闹钟一设置的时间作出反应(LED灯闪),次数为2时,则对前两个闹钟设

21、定时间作出反应 因此,建议将常用的闹钟时间设在前面.八.程序及简单注释:1、#include#include voidDelaylus(unsignedcharus) while(us) _nop_();_nop_();-us; voidSYSCLK_lnit(void) inti;unsignedchar*l2CDataBuff; intn=0,i,flag=1,m=0,h,f,hm=0,s=0,bs=0,l=0,q=0,q1=1,h1,h2,f1,f2; charBYTE_NUMBER; SM_BUSY=1;COMMAND=(CLOCK3530_ADDRESS_RESET|READ);C0

22、MMAND=(CL0CK3530_ADDRESS_DATEH0UR|WRITE);C0MMAND=(CL0CK3530_ADDRESS_DATEH0UR|READ);SM_BUSY=1;EIE1|=2; var=GetRealClockStatus();ResetRealClock();var=GetRealClockStatus();SetRealClockStatus(0xc2);GetRealClock();SetRealClock();LCD_WriteHZ(32,4,wu);LCD_WriteHZ(64,4,wu);LCD_WriteHZ(96,4,wu);LCD_WriteHZ(3

23、2,2,wu);LCD_WriteHZ(64,2,wu);LCD_WriteHZ(96,2,wu);LCD_WriteHZ(64,0,wu);LCD_WriteHZ(80,0,wu);LCD_WriteHZ(0,0,wu);LCD_WriteHZ(112,0,wu);LCD_WriteHZ(112,2,wu);LCD_WriteHZ(112,4,wu);LCD_WriteHZ(0,6,wu);LCD_WriteHZ(16,6,wu);LCD_WriteHZ(32,6,wu);LCD_WriteHZ(112,6,wu);LCD_WriteHZ(16,0,xiao);LCD_WriteHZ(32,

24、0,xin);LCD_WriteHZ(48,0,xi);LCD_WriteHZ(64,0,xue);LCD_WriteHZ(80,0,yuan);LCD_WriteHZ(96,0,xiao);LCD_DispChar(0,2,1);LCD_DispChar(8,2,2);LCD_DispChar(16,2,3);LCD_DispChar(24,2,0);LCD_DispChar(32,2,4);LCD_DispChar(40,2,0);LCD_DispChar(48,2,0);LCD_DispChar(56,2,3);LCD_DispChar(64,2,6);LCD_WriteHZ(80,2,

25、wu1);LCD_WriteHZ(96,2,xi1);LCD_WriteHZ(112,2,zhan);LCD_DispChar(0,4,1);LCD_DispChar(8,4,2);LCD_DispChar(16,4,3);LCD_DispChar(24,4,0);LCD_DispChar(32,4,4);LCD_DispChar(40,4,0);LCD_DispChar(48,4,0);LCD_DispChar(56,4,2);LCD_DispChar(64,4,1);LCD_WriteHZ(80,4,zhu);LCD_WriteHZ(96,4,wan);LCD_WriteHZ(112,4,wan);for(i=0;i=30;i+)Delay1ms(500);InitLCD();STA=0;break;I2CDataBuff+;BYTE_NUMBER-;else/FreeSMBusSTO=1; SM_BUSY=0;/主发送器从地址+WRITE已发送收到NACK /从器件不应答发送STOP+STAR重

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

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