单片机实验报告 2.docx

上传人:b****1 文档编号:531909 上传时间:2023-04-29 格式:DOCX 页数:84 大小:55.89KB
下载 相关 举报
单片机实验报告 2.docx_第1页
第1页 / 共84页
单片机实验报告 2.docx_第2页
第2页 / 共84页
单片机实验报告 2.docx_第3页
第3页 / 共84页
单片机实验报告 2.docx_第4页
第4页 / 共84页
单片机实验报告 2.docx_第5页
第5页 / 共84页
单片机实验报告 2.docx_第6页
第6页 / 共84页
单片机实验报告 2.docx_第7页
第7页 / 共84页
单片机实验报告 2.docx_第8页
第8页 / 共84页
单片机实验报告 2.docx_第9页
第9页 / 共84页
单片机实验报告 2.docx_第10页
第10页 / 共84页
单片机实验报告 2.docx_第11页
第11页 / 共84页
单片机实验报告 2.docx_第12页
第12页 / 共84页
单片机实验报告 2.docx_第13页
第13页 / 共84页
单片机实验报告 2.docx_第14页
第14页 / 共84页
单片机实验报告 2.docx_第15页
第15页 / 共84页
单片机实验报告 2.docx_第16页
第16页 / 共84页
单片机实验报告 2.docx_第17页
第17页 / 共84页
单片机实验报告 2.docx_第18页
第18页 / 共84页
单片机实验报告 2.docx_第19页
第19页 / 共84页
单片机实验报告 2.docx_第20页
第20页 / 共84页
亲,该文档总共84页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机实验报告 2.docx

《单片机实验报告 2.docx》由会员分享,可在线阅读,更多相关《单片机实验报告 2.docx(84页珍藏版)》请在冰点文库上搜索。

单片机实验报告 2.docx

单片机实验报告2

单片机应用系统设计报告

题目单片机应用系统设计

学院信息学院

专业电气工程及自动化

班级12电气升本

学生姓名朱婉婉

学号

7月16日至7月28日共11天

13年7月18日

一、设计内容及要求

必做实验内容:

1.使用中文液晶128x64点阵LCD,采用16点阵字库显示当前时间“时时:

分分:

秒秒”

2.用4个按键设置现在时间:

K1进入设置现在时间;

K2调整小时;

K3调整分;

K4设置完成。

3.增加闹铃功能,时间到了使用音乐声

可选实验内容:

4.增加闹铃功能,时间到发出声响并启动继电器

5.增加秒表计数功能,精度为0.01秒

6.增加万年历显示“年月日”

课程设计要求

方案设计前要求完成设计报告,每个组一份;

方案实施过程中完善设计报告,每个成员独立进行;

方案实施结束,经过指导老师验收后完成设计报告,每个成员独立完成,其中设计图纸每个组只需要1份。

二、设计原始资料

单片机的C语言应用程序设计(第四版)

8051系列单片机C程序设计完全手册

三、主要参考资料

THGQC-1实验指导书C8051F

串行实时时钟芯片S—3530A及其在51单片机系统中的应用

时钟芯片S-3530A与C8051F040单片机的通讯接口设计

四、进程安排

教学内容学时地点

资料查阅与学习讨论1天2--216单片机实验室

分散设计5天2--216单片机实验室

编写报告3天2--216单片机实验室

成果验收1天2--216单片机实验室

(单片机应用系统设计)

设计任务书

学院:

信息学院

班级:

12电气升本

学生姓名:

朱婉婉学号

指导教师:

时间:

2013年7月16日到2013年7月26日

摘要

数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。

在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。

单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。

基于这种情况,我们课程设计小组两人多方查阅资料,反复论证设计出了这款既简单实用,又价格便宜的——单片机电子时钟。

关键词:

单片机时钟计时

一、概述1

1、总体功能1

2、实验要求1

二、硬件电路图及说明3

1、硬件电路图3

2、12864LCD液晶显示屏3

3、按键功能3

4、实时时钟芯片S-3530A3

三、电路及程序设计7

四、设计特点16

五、调试17

1、主循环程序流程3

2、关于3530读出数据的更改3

3、关于秒表的设置3

4、关于时间的设置3

5、遇到的具体问题3

6、注意事项3

六、总结及体会19

七、使用说明书21

八、程序及简单注解22

1、main.c3

2、I2C.c3

3、LCD.c3

一、概述

1、总体功能

本次设计时钟电路,使用了STC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,用一扬声器来进行定时提醒,同时使用C语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:

键盘、芯片、扬声器、显示屏即可满足设计要求。

2、实验要求

必做实验内容:

1.使用中文液晶128x64点阵LCD,采用16点阵字库显示当前时间“时时:

分分:

秒秒”

2.用4个按键设置现在时间:

K1进入设置日期;(K1=1)

K2调整年;

K3调整月;

K4调整日。

K1进入设置现在时间;(K1=2)

K2调整小时;

K3调整分;

K4调整秒。

K1设置完成(K1=3)

增加

闹铃功能,时间到了使用音乐声(指示灯闪动10秒)

可选实验内容

增加闹铃功能,三次闹铃

增加秒表计数功能,精度为0.01秒0.00-200.00

增加万年历显示“年月日”二月28天、29天

增加星期显示

增加整点闹铃指示灯闪动5次

增加整点闹铃开关

反字

小图形

被设置的数字闪动,其他自己认为可添加的内容

课程设计要求

方案设计前要求完成设计报告,每个组一份;

方案实施过程中完善设计报告,每个成员独立进行;

方案实施结束,经过指导老师验收后完成设计报告,每个成员独立完成,其中设计图纸每个组只需要1份

二、硬件电路图及说明

1、硬件电路图

LCD时钟控制系统利用C8051F020芯片作为控制中心,配合液晶显示128*64液晶显示模块、独立式键盘模块、实时时钟/日历芯片模块等电路,实现日历时钟实现显示年月日时分秒。

总体设计方框图如图1所示:

图1

2、12864LCD液晶显示屏

带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。

可以显示8×4行16×16点阵的汉字也可完成图形显示低电压低功耗是其又一显着特点。

由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁

得多,且该模块的价格也略低于相同点阵的图形液晶模块。

12864接口定义及其与C8051F020的接口:

引脚及内部结构如图2所示:

图2液晶显示电路

3、按键电路

K1连接P3.0口,K2连接P3.1口,K3;连接P3.2口,K4连接P3.3口

键盘是由若干按键组成的开关矩阵,它是微型计算机最常用的输入设备,用户可以通过键盘向计算机输入指令、地址和数据。

一般单片机系统中采和非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。

按键开关的抖动问题,键盘与单片机的连接组成键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的。

当开关S未被按下时,P3.0输入为高电平,S闭合后,P3.0输入为低电平。

而按键会有抖动现象,因此必须考虑如何去除抖动,常用的去抖动的方法有两种:

硬件方法和软件方法。

单片机中常用软件法。

软件法其实很简单,就是在单片机获得P3.0口为低的信息后,不是立即认定S1已被按下,而是延时10毫秒或更长一些时间后再次检测P3.0口,如果仍为低,说明S1的确按下了,这实际上是避开了按键按下时的抖动时间。

而在检测到按键释放后(P3.0为高)再延时5-10个毫秒,消除后沿的抖动,然后再对键值处理。

本次实验去抖动采用软件方式。

四个按键分别接到P3.1、P3.2、P3.3和P3.4。

对于这种键各程序可以采用不断查询的方法,功能就是:

检测是否有键闭合,如有键闭合,则去除键抖动,判断键号并转入相应的键处理。

4、实时时钟芯片S-3530A

S-3530是一款低功耗的CMOS实时时钟/日历芯片,它提供二个中断输出和掉电检测器,所有的地址和数据通过I2C总线接口串行传递。

最大总线速度为400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动增加。

(1)器件特性:

●低工作电流:

典型值为0.7μA(VDD=3.0V);

●世纪标志;

●大工作电压范围:

1.0~5.5V;

●BCD码设置时间参数

●低休眠电流;典型值为0.25μA(VDD=1.8~5.5V时);

●稳压电路

●报警和定时器;

●掉电检测器;

●内部集成的振荡器电容;

●I2C总线从地址:

读:

0A3H;写:

0A2H;

三、电路与程序设计

1、程序流程图

主程序:

开始

关看门狗程序

初始化系统时钟

初始化定时器1

开中断

调用函数TestI2C()

结束

子程序TestI2C():

开始

读取3530数据

时间赋初值

将初值读入3530

清屏

在16,0处显示05年01月01日,在16,2处显示00时00分00秒

读取3530数据

调用函数set_value()

分为0且秒小于11

↓Y

整点报时LED灯闪烁

调用函数alarm_check()

刷新显示时分秒,刷新显示年月日

miaobiao_on为偶且不为0

↓Y

显示秒表

miaobiao_on为0

↓Y

显示星期

延时100ms

设置flag1标志位为1

按键判断程序set_value():

根据设计原则,判断按键并作出相应反应.

开始

读取按键值

有键按下且flag1=1

flag=0

按下的键为K1

flag=1;key2=1;flag1=0;

在(112,0)显示“年”

按下的键为K2

flag=3;flag1=0;

在(112,0)显示“闹”

按下的键为K3

flag=7;miaobiao_on=1;flag1=0;

在(16,4)显示“秒表:

XXX:

XX”

flag=1

按下的键为K1

flag=2;key2=1;flag1=0;

在(112,0)显示“时”

按下的键为K2

key2++;flag1=0;

key2=2

在(112,0)显示“月”

key2=3

在(112,0)显示“日”

按下的键为K3

key2=1

年加1,星期根据平年闰年加1或2

将数据读入3530

更新星期和年的显示flag1=0;

key2=2

月加1,星期根据月的日期增加

将数据读入3530

更新星期和月的显示flag1=0;

key2=3

月加1,星期根据月的日期增加

将数据读入3530

更新星期和月的显示flag1=0;

按下的键为K4

退出时钟设置

flag=0;flag1=0;key2=0;

清除提示字符

flag=2

按下的键为K1

退出时钟设置

flag=0;flag1=0;key2=0;

清除提示字符

按下的键为K2

key2++;flag1=0;

key2=2

在(112,0)显示分

key2=3

在(112,0)显示秒

按下的键为K3

key2=1

时加1

将更改的数据读入3530

刷新显示时,flag1=0;

key2=2

分加1

将更改的数据读入3530

刷新显示分,flag1=0;

key2=3

秒加1

将更改的数据读入3530

刷新显示秒,flag1=0;

按下的键为K4

退出时钟设置

flag=0;flag1=0;key2=0;

清楚提示字符

flag=3

按下的键为K2

alarm_num不等于0

flag=4;flag1=0;

在(00,6)显示“1”

在(64,6)显示第一个闹钟设置时间

flag=0;flag1=0;

退出闹钟功能,清除提示字符

按下的键为K3

alarm_num<3

alarm_num加1

alarm_num=0;关闹钟

flag=4

按下的键为K2

alarm_num>1

flag=5;在(00,6)显示2

在(64,6)显示第二个闹钟设置时间

flag1=0;

开闹钟在(112,6)显示“开”

flag=0;flag1=0;

退出闹钟设置,清楚提示字符

按下的键为K3

闹钟1的时加1,刷新显示闹钟时间,flag1=0;

按下的键为K4

闹钟1的秒加1,刷新显示闹钟时间,flag1=0;

flag=5

按下的键为K2

alarm_num>2

flag=6;在(00,6)显示3

在(64,6)显示第二个闹钟设置时间

flag1=0;

开闹钟在(112,6)显示“开”

flag=0;flag1=0;

退出闹钟设置,清楚提示字符

按下的键为K3

闹钟1的时加1,刷新显示闹钟时间,flag1=0;

按下的键为K4

闹钟1的秒加1,刷新显示闹钟时间,flag1=0;

flag=6

按下的键为K1

按下的键为K2

按下的键为K3

按下的键为K4

flag=7

按下的键为K1

按下的键为K2

按下的键为K3

按下的键为K4

闹钟判断程序alarm_check():

判断闹钟是否开,根据闹钟开启数量判断是否到设定时间,若到,则启动LED灯闪

四.设计特点:

1.该时钟由四个按键控制,按键功能分明:

K1进入设置日期;(K1=1)

K2调整年;

K3调整月;

K4调整日。

K1进入设置现在时间;(K1=2)

K2调整小时;

K3调整分;

K4调整秒。

K1设置完成(K1=3)

进入闹铃设置。

2.秒表采用定时器中断控制,计时精确。

K3一次进入秒表。

K3两次开始计时。

K3三次计时停止。

K4退出秒表。

3.显示页面结构清晰,功能明确。

平时若无设置,则只显示年月日,时分秒以及星期

4.进入设置后会出现一些提示字符,表述明了。

五.调试:

1.主循环程序流程

实验初期,原来的流程是测试按键,完成所有操作后再刷新显示,进入主循环,但是,这样在测试按键,等待操作时会造成较大的延时。

因此该方案未录取。

最后采用的方案是:

检测到一次按键,就更改flag和flag1标志位,记录按键次序后就进入主循环,然后继续检测有无按键操作,这样对于程序就基本不会造成延时,而且程序的流程也更清晰。

关于标志位:

flag用来记录之前按键次数和次序

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中读出的数据格式为BCD码,而程序中修改则按照16进制进行。

所以会有数据错误。

解决方法:

在设置时钟时间时,要先读出3530数据,更改后再读入3530中,而3530中的数据存放为BCD码,读出后并不表示时间的真实数据,因此,我编写了两个转化函数:

change()将16进制转化为BCD码

fchange()将BCD码转化为16进制

读出数据后先将其转化为16进制,进行操作后再转化为BCD码,读入3530数据更改中,因为“时”的数据表示只需低4位和高4位中的低两位,所以最高2位中会有一些脏数据,在读出后应先与上0x3f再进行转化操作。

3.关于秒表设置

秒表采用定时器1,初值为(65536-18432),并利用一个计数变量miaobiao,初值为10,中断中重新赋初值,每次中断miaobiao减1,减至0时,秒表计数变量加1,miaobiao重新赋值为10!

4.关于时间的设置

在时间设置时遇到的问题基本上是因为考虑的不够周全,刚开始时,没考虑到闰年,大小月等情况,因此,闰年的二月不能调出29号,大小月也不能区别,遇到这个问题后就开始更改程序的细节问题,使得设置时间时所有的日子都能设置出。

要考虑的设置:

年有闰年,平年,月有大小月,星期要随着年,月,日的更改而更改。

5.遇到的具体问题

在运行时,显示屏幕卡屏。

只要一运行秒表程序,很快就会使程序卡在某一点。

原因:

在原来的中断程序中还有加入显示代码,造成在运行时,显示屏幕卡屏。

因为屏幕中显示的时间和秒表分别由两个计数器控制,在刷新时因为计数器冲突而造成了卡屏的现象。

那是因为屏幕中显示的时间和秒表分别由两个计数器控制,在刷新时因为计数器冲突而造成了卡屏的现象。

更改方法:

将中断程序中的显示代码取出,直接放在主循环程序中,这样就能顺利运行了。

6.注意事项

在设计秒表时,定时器1的主要程序放在main.c文件中,而一些显示程序则在I2C.c文件中,因此,在调用这些变量时就会出现编译错误。

为解决该现象,我在main.c文件中先编写了一个小的调用显示程序,在需要显示时再调用该程序,就解决了变量调用问题。

六.总结及体会:

本次课程设计是用AT89S51单片机CPU及LCM1602设计一个数字时钟,经过一个星期的调试,结果满足设计要求,验证无误。

通过单片机硬件电路的调试,实现了预先设定的功能,设计主要用到的元件不多,最主要的是程序也比较长比较麻烦,同时也遇到了少量困难,尤其是关于校时模块的设计实现。

关于显示模块,在以前的实验中做过,所以问题很容易解决。

学以致用,将从书本上学到的知识应用于实践,学会了初步的电子电路仿真设计虽然过程中遇到了一些困难,但是在解决这些问题的过程无疑也是对自己自身专业素质的一种提高。

当最终调试成功的时候也是对自己的一种肯定。

此次的设计作业不仅增强了自己在专业设计方面的信心,鼓舞了自己,更是一次兴趣的培养,为自己以后的学习方向的明确了重点。

另外在这次实验中我们遇到了不少的问题针对不同的问题我们采取不同的解决方法,最终一一解决设计中遇到的问题。

在我们曾经遇到不懂的问题时,利用网上的资源,搜索查找得到需要的信息

七.使用说明书:

该产品为电子时钟,能显示年月日,时分秒及星期,有秒表功能,闹钟功能(注1),会进行整点报时,有四个按键控制功能的选择使用,下文中分别称为K1,K2,K3,K4

XX年XX月XX日XX

XX时XX分XX秒

星期X

按键说明:

K1:

进入时间设置

K1按一次,设置年月日

K1按两次,设置时分秒

K2移位,K3加1,K4退出

K1按三次,退出设置

如右图,在时间设置时,屏幕右上角会根据按键操作而出现“时”“分”“秒”“年”“月”“日”提示当前操作的作用对象。

K2:

进入闹钟设置

XX年XX月XX日XX

XX时XX分XX秒

星期X

K3选择开闹钟的次数(0-3),若开的闹钟个数为零则表示闹钟关闭

K2进入闹钟时间设置,K3时加,K4分加

再按K2退出

闹钟操作界面如右图:

右上角会出现“闹”提示字。

最下一行显示当前设置闹钟时间,闹钟次数,及闹钟开关状况。

XX年XX月XX日

XX时XX分XX秒

秒表:

XXX:

XX

K3:

开启秒表

K3开始/停止计时

K4退出秒表.

秒表界面:

注1:

闹钟功能,本产品闹钟最多能设置3个不同时间,可选择开闹钟的次数,例如,若选择次数为1时,则只会对闹钟一设置的时间作出反应(LED灯闪),次数为2时,则对前两个闹钟设定时间作出反应,因此,建议将常用的闹钟时间设在前面.

八.程序及简单注释:

1、main.c

#include"c8051f020.h"

#include

voidDelay1us(unsignedcharus)

{

while(us)

{

_nop_();_nop_();_nop_();_nop_();_nop_();

--us;

}

}

voidSYSCLK_Init(void)

{

inti;//delaycounter

OSCXCN=0x65;//startexternaloscillatorwith

for(i=0;i<256;i++);//Waitforosc.tostartup

while(!

(OSCXCN&0x80));//Waitforcrystalosc.tosettle

OSCICN=0x88;

}

#definePRT0CFP0MDOUT

#definePRT1CFP1MDOUT

#definePRT2CFP2MDOUT

voidPORT_Init(void)

{

XBR0=0x07;//EnableSMBus,SPI0,andUART0

//XBR1=0x04;

XBR2=0x40;//Enablecrossbarandweakpull-ups

//EMI0CF=0x27;

//EMI0TC=0x21;

EMI0TC=0x21;

EMI0CF=0x2f;//EMIF端口接到P4-P7,选择复用方式,工作模式为不带块选择。

P74OUT=0x3F;

P0MDOUT=0x00;

P1MDOUT|=0x1f;//P1.2-P1.5推挽输出

}

voidSPI0_Init(void)

{

SPI0CFG=0x03;//datasampledon1stSCKrisingedge

SPI0CFG|=0xC0;//CKPOL=1;

SPI0CN=0x03;//Mastermode;SPIenabled;fla

SPI0CKR=SYSCLK/2/8000000-1;

}

unsignedcharCount1ms;

voidTimer0_Init(void)

{

CKCON|=0x8;

TMOD|=0x1;//16Bit

Count1ms=10;

TR0=0;//STOPTimer0

TH0=(-SYSCLK/1000)>>8;//setTimer0tooverflowin1ms

TL0=-SYSCLK/1000;

TR0=1;//STARTTimer0

IE|=0x2;

}

voidTimer1_Init(void)

{

CKCON|=0x8;

TMOD|=0x10;//16Bit

TR1=0;//STOPTimer0

TH1=(65535-18432)/256;//setTimer0tooverf

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

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

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