学校作息时间控制系统的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告
题目学校作息时间控制系统的设计系(部)
专业(班级)
姓名
学号
指导教师
起止日期
单片机原理及应用课程设计任务书系(部):专业:指导教师:
目录
一.设计原理3
(1)总体设计:3
(2)分模块设计:4
(3)设计示意图4
三.仿真分析4
(1)调节工作模式:5
(2)闹铃实现:5
(3)温度测量:6
四.设计心得6
五.参考文献7
一.设计原理
(1)总体设计:
首先对设计要求有个整体的了解,明白需要实现哪些功能,实现这些功能需要哪些元器件,要驱动这些元件需要编写什么程序,最后进行总体调试。本次作息时间的设计,使用了单片机A T89C51,LCD为AMPIRE12864,温度元件为DS18B20,还有一个声
音播放器SOUNDER。对于LCD和DS18B20 要进行初始化。将本次设计分成5个模块分别进行设计,分成:温度模块、LCD显示模块、时间模块、声音模块、调节模块。分模块设计好了以后,再综合起来设计主程序main(),实现所需要求。
(2)分模块设计:
1.LCD显示模块设计:该模块包括的函数为LCD_inti()//LCD 的初始化、checkbusy()//检查LCD是否忙碌、writecode() //写命令、writedata() //写数据、hanzi()//显示汉字、zifu()//显示数字或字符。
2.温度模块设计:该模块的函数为inti()//DS18B20的初始化、readchar()//读一个字节、writechar()//写入一个字节、readtemp()//读取温度、worktemp()//温度计算。
3.时间模块设计:本次是采用T0中断的工作方式1获取时间的。其函数为void timer() interrupt 1 //T0中断函数、workhour()//时间计算。
4.声音模块设计:该模块比较简单,其函数为void s_fmq()//蜂鸣器叫、nling()//判断是否闹铃。
5.调节模块设计:该模块要实现5个模式的调节和转变。模式0:正常工作状态;
模式1:修改时间;模式2:选择一个需要改变的闹铃;模式3:修改选定的闹铃的分钟;模式4:修改选定的闹铃的小时
(3)设计示意图
图一. 总设计示意图
三.仿真分析
5个具体模块的功能实现,已经在程序注释中解释了,现在主要分析怎么操作这些功能的实现。如图二所示
图二:总的硬件电路图
(1)调节工作模式:
调节模式的实现只用了三个按钮,分别是mode 、inc和dec按钮。如图三所示:
图三:三个调节按钮
(2)闹铃实现:
程序初始化的时候对20个闹铃时间进行了赋值,其闹铃的时间分别是{8:00、8:45、8:55、9:40、10:00、10:45、10:55、11:40、14:00、14:45、14:55、15:40、16:00、16:45、16:55、17:40、19:00、19:45、19:55、20:40}。如果要修改闹铃时间,可以依次进入调节模式2、3、4进行修改。当到了闹铃时间时,则蜂鸣器会响起来。
图十:蜂鸣器
(3)温度测量:
本次设计采用了DS18B20温度芯片,该芯片能测量环境中的温度变化,通过单片机的处理就可以显示出实时温度值。当环境温度改变时,显示出来的温度也会随着改变
图十一:DS18B20温度芯片
四.设计心得
刚刚学完汇编语言,猜测可能使用汇编来编程的。没想到必须得用C语言。好久没有使用C 语言编程了,当年学的时候觉得这个是软件,专业是搞硬件的与本专业联系不大,就学的不怎么好,现在都忘了差不多了。在课程设计之前,有一个星期的实训时间,做了关于流水灯,名字学号显示,方波,方阵。流水灯、方波,若要用刚学不久的汇编语言还好说,还是可以写出来的,可是要用C语言还真是有点问题。自己趁着这个时间,复习了汇编语言的程序,可也只能方波和流水灯,但是看到同学用C语言只用了很简单的几行程序就编出方波的程序时,我又一次的被打击到了。没想到C语言在自己的专业上还有这么大的用,突然想起单片机书上第一章的内容写的是单片机的高级语言是C语言。
这次做的是学校作息时间控制系统,很贴近生活实际,通过翻以前上课用的书籍,以及上网查阅资料。自己对这次的编程有了一点的概念。而LCD12864这块显示器却让我有点头痛,这个东西之前并没有接触过,教科书上也没有关于它的介绍。它的硬件结构,驱动程序都要自己另外查阅资料。与单片机的接口连接好搞定,可是它的显示地址却有点把不准。很费时间。当搞清显示模块时,一切似乎都好办了,当显示出自己的名字和学号班级时,莫名的成就感,接下来将时间模块移植进去就可以了,不过还得做一点点小小的修改。程序这一块我不是很强,移植进去后运行没有错误,可就是不显示,而且屏幕还黑了一半,当时心都有点发凉,这毕竟是搞了很久的东西,要是这个结果就有点对不起观众了。请教与班上的程序高手,做了些适当的修改,当自己的姓名和时间一起终于显示出来了的时候,那种兴奋是莫名的。作为练习,还移植了一个温度模块,功能多才是王道。
对于学习的态度还是该端正,学的东西都会有用的,只不过有些东西你暂时不知道用在那里而已。当那一天你真的要用时,若是因自己没学扎实而不会时,那是该多么的遗憾。
五.参考文献
1.单片机典型系统设计实例精讲/彭为等编著.—北京:电子工业出版社,2006.5
ISBN 7-121-02461-6
2.单片机C51程序设计教材与实验/祁伟等编著。—北京:北京航空航天大学出版社,2006.1 ISBN 7-81077-736-X
3.单片机微型计算机技术/刘国荣等编著。—北京:机械工业出版社.2000.1
4.单片机原理与应用/曾屹等编著。—长沙:中南大学出版社.2009.5 (高等院校培养应用型人才电子技术类课程规划教材) ISBN 987-7-81105-832-
#include
#include
#define LCD P0
sbit DQ=P3^7; //定义DS18B20数据端口
sbit P07=P0^7; //小数点控制I0
sbit mode=P1^0; //key1 分
sbit inc=P1^1; //kye2 时
sbit dec=P1^2; //key3 闹铃
sbit fmq=P1^7; //蜂鸣器接口
sbit E=P2^0; //用于DS18B20接线端口