我的单片机课程设计文档Word文档格式.docx
- 文档编号:22509763
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:51
- 大小:543.29KB
我的单片机课程设计文档Word文档格式.docx
《我的单片机课程设计文档Word文档格式.docx》由会员分享,可在线阅读,更多相关《我的单片机课程设计文档Word文档格式.docx(51页珍藏版)》请在冰豆网上搜索。
分辨率为128*64,内置8192个16*16的汉字和128个16*8点的ASCII字符集。
显示图形较点阵显示完整。
低功耗,显示亮度较好,无闪烁感.。
显示内容丰富多彩.
鉴于上述原因,我们采用方案一
3总体方案
3.1工作原理
利用单片机AT89S52单片机作为本系统的中控模块。
单片机可把由DS18B20读来的数据利用软件来进行处理,从而把数据传输到数码管显示模块,实现温度显示。
数码管显示模块为主要的显示模块,把单片机传来的数据显示出来,。
在显示电路中,主要靠按键来实现各种显示要求的选择与切换。
DS18B20产品的特点
(1)只要求一个端口即可实现通信。
(2)在DS18B20中的每个器件上都有独一无二的序列号。
(3)实际应用中不需要外部任何元器件即可实现测温。
(4)测量温度范围在-55。
C到+125。
C之间。
(5)数字温度计的分辨率用户可以从9位到12位选择。
(6)内部有温度上、下限告警设置。
3.2总体设计
图3.1设计总体框图如图
4系统硬件模块设计
4.1系统各功能模块
基于单片机的数字温度报警系统主要由数码管接口模块、温度测量模块、键盘电路模块、蜂鸣电路模块和LED流水灯电路模块组成。
各模块的功能如下:
4.1.1主控电路模块
主控电路模块由AT89S52单片机、时钟电路和复位电路构成。
是本次最小系统整个电路的核心。
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
时钟电路由一个12MHz的石英晶体振荡器和两个33pF的的电容组成振荡电路和分频电路。
复位电路采用上电复位和按键复位结合的方式对电路进行复位,主要是通过RST引脚送入单片机。
4.1.2数码管接口模块
数码管单片机最小系统包括晶体振荡电路、复位电路和液晶显示等部分。
为了便于调整温度上下限和显示温度值,我采用两个四位一体共阳型数码管显示器进行显示。
位控口接在P2口线上,实现对显示的控制。
在P2口线上接了8个PNP型三极管使得位控线的驱动电流加大,从而提高驱动能力;
P0.0--P0.7做为段控口接a--dp,数码管显示电路模块在调整阶段主要用来指示调整的上下限温度值,在测温阶段主要用来温度值。
4.1.3温度测量模块
温度测量传感器采用DALLAS公司DS18B20的单总线数字化温度传感器,测温范围为-55℃~125℃,可编程为9位~12位A/D转换精度,测温分辨率达到0.0625℃,采用寄生电源工作方式,CPU只需一根口线便能与DS18B20通信,占用CPU口线少,可节省大量引线和逻辑电路。
也是本次我设计的基于单片机的数字温度报警系统的核心模块之一。
4.1.4键盘模块
P1口则用于与键盘相接。
每个按键都通过一个10K的上拉电阻接电源+Vcc,按键的另一端接地。
当有键按下时,与该键相连的P1口的相应位变为低电平,单片机检测到该变化后即转到相应的键处理程序。
本次设计的基于单片机的数字温度报警系统主要用该模块实现上下限温度的调整和温度的测量开启和测量
4.1.5蜂鸣器电路模块
单片机P3.1口线上接上一个1KΩ电阻然后再通过一个PNP型三极管与蜂鸣器相连接组成蜂鸣器电路。
在该系统中蜂鸣电路主要完成超限报警和18B20故障报警功能。
4.1.6LED流水灯电路模块
单片机P3口线上接上一个470Ω电阻然后再与LED灯的阴极相连接,LED灯的阳极接正五伏电压。
在该系统中LED流水灯电路模块的设置可以增强系统人性化设计,在系统初始化显示P.的时候同时LED流水灯闪烁。
5系统软件设计
5.1单片机资源使用的情况
基于单片机的数字温度报警器用到了单片机的P1口,P2口,P3口,用到了口线的基本输入输出功能。
其中独立式键盘接在P1口线,并且通过上拉电阻接VCC,按键结果键值储存在内部数据存储器中。
单片机P3口线上接上一个470Ω电阻然后再与LED灯的阴极相连接,实现流水灯功能。
P3.1接18B20实现温度数据的接收。
P3.2口通过PNP三极管接蜂鸣器,实现超限报警。
5.2程序的流程框图
5.2.1主程序流程框图
图5.1主程序流程框图
5.2.2温度转换命令子程序
主要功能是读出RAM中的2字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图下图示
图5.2温度转换子程序流程框图
5.2.3温度计算子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如下图所示。
图5.3温度转换子程序流程框图
5.2.4读出温度子程序
转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图如下图所示
图5.3读温度子程序流程框图
5.2.5检测DS18B20是否正常工作子程序
图5.5检测DS18B20是否正常工作子程序流程框图
5.2.6超上/下限温度报警子程序
图5.6超上/下限温度报警子程序流程框图
6系统测试与结果分析
6.1硬件测试
硬件测试的主要是检查电路各种参数是否符合设计要求。
先排除硬件电路故障,
利用万用表或逻辑测试仪器,检查电路中各器件以及引脚是否连接是否稳固,是否有短路故障。
先将单片机AT89S52芯片取下,对电路板进行通电检查,通过观察看是否有异常,测单片机的电源引脚看是否是正常的电压,是否有虚焊的情况,然后用万用表测试各电源电压,若这些都没有问题,则将单片机AT89S52芯片插上,接通电源观察电路指示灯是否正常。
人为升高温度看是否超限报警。
断开开18b20插槽,看是否报警。
6.2软件测试
软件调试是利用仿真编译工具进行在线仿真调试,除发现和解决程序错误外,也可以发现硬件故障。
本设计采用的调试软件是keil。
程序调试时,先是一个模块一个模块地进行,一个子程序一个子程序地调试,最后联起来统调。
当程序调试无误后,就可以用用下载线将生成的hex文件下载到AT89S52的FLASHROM中。
6.3实验结果测试
下好程序后,上电(按键复位后)能够自动显示系统提示符“P.”并且流水灯循环两灭,当我按下开始键的时候,DS18B20开始工作,数码管上显示实时温度,并且测量精度小数点后两位。
与温度计测量结果数据比较如下表所示。
但我按下停止键的时候,DS18B20停止工作,数码管上可以通过开始自动显示系统提示符“P.”。
超限和断开18b20后会报警。
测试结果测量值都在误差允许范围内,因此符合设计要求,本设计成功完成预期目标。
表6.1实验测试结果
实验项目
数字温度计测量温度值(℃)
温度计测量
85.79
78.44
63.4
40.2
36.0
22.2
15.0
9.0
显示温度
85.776
78.476
63.356
40.411
35.961
22.101
15.152
9.120
图6.1实验测试系统初始状态显示P.和流水灯结果
图6.2实验测试上下限温度调整状态结果
图6.3实验测试进入温度测量后的显示结果
6.4设计总结
在这次单片机课程设计筹备过程中,我都学到了很多,。
当然,总的来说,这里面的酸甜苦辣都是我人生难得的一大笔财富。
通过此次的单片机课程设计,我学到了许多以前在课本上学不到的东西,同时也把以前学到的理论知识运用到了此次的课程设计中,很好地加强了我在单片机方面的知识,特别是在中断处理部分。
整个调试程序的过程让我对keil软件有了更深一步的了解。
重要的是,我的PCB制作能力有了很大的提高,懂得了电路的布线规则,知道如何去减小或者避免不必要的麻烦。
这次课程设计使我懂得了理论与实际相结合的重要性,只掌握书上的理论知识是远远不够的,而应该把所学的理论知识与实践相结合,把理论运用与实践,从实践中验证理论,从而提高自己的实际动手能力和独立思考的能力,为以后踏入社会打下基础。
调试硬件电路,一定要心细、眼明、头脑要清醒。
在调试的过程中,一定要仔细测量各个点的电压,分析思考为什么会出现这种现象,这个现象是什么原因引起的,针对这个现象我们应该怎么去解决。
很重要的一点就是我们要有耐性和毅力还有很强的抗挫折能力。
准备了这么久,我终于要交上了课程设计作品,在作品完成期间我遇到很多困难,几乎没有说过一次好觉,尽管很艰苦,一次又一次品尝到了解决问题的喜悦,最终完成了这次课程设计,在课程设计中我们发现了自己知识的不足,通过老师和同学的帮助,以及去图书馆查找资料,终于把问题都解决了,让我学到了很多,同时也巩固了所学的知识。
参考文献
[1]谢嘉奎.电子线路[M],北京:
高等教育出版社,1999年
XieJiaKuielectroniccircuit[M],Beijing:
highereducationpress,1999
[2]康华光.单片机的C语言应用程序[M],北京:
北京航空航天大学出版社,
1999
Kanguhguano.MCUClanguageapplication[M],Beijing:
Pekingaerospaceuniversitypress,1999
[3]李广弟,朱月秀.单片机基础[M],北京:
北京航空航天大学出版社,2010年
LiAnDi,basedZhuYueXiu.Microcontroller[M],Beijing:
PekingUniversityofaeronauticspress,2010
[4]阎石.数字电子技术[M].第四版,高等教育出版社,2009年
YanShi.Digitalelectronictechnology[j].Jfourthedition,highereducationpress,2009
[5]谢自美.电子线路设计与实验测试[M].第二版.华中科技大学,2010年
Xiesincebeauty.Circuitdesignandtheexperimenttest[M].Secondedition.Huazhonguniversityofscienceandtechnology,2010
[6]康华光.电子技术基础模拟部分[M].第五版.华中科技大学出版社,2005.7
Kanguhguano.Electronictechnologybasicanalogpart[j]fifthedition.Huazhonguniversityofscienceandtechnologypress,2005.7
[7]曹才开.电路分析基础[M].第四版,北京:
清华大学出版社,2009
CaoCaiopen.Circuitanalysis[j].Jfourthedition,Beijing:
tsinghuauniversitypress,2009
致谢
在这次课程设计的撰写过程中,我得到了许多人的帮助。
首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把这个简易调频发射做得更加完善。
在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。
其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。
同时也感谢湖南工学院为我提供良好的单片机课程设计的环境。
最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学,我感谢在这这么多天以来给过我帮助和关注的所有人,更加感谢给过我挫折的所有人。
你们用不同的方式给了我成长,也是你们促使我在走过的大学时光里一直努力,终可以在课程设计的最后那一天无愧的说一声:
我成功了。
附录一
附录1.1总体原理图
PBC顶层图
PBC底层图
附录二
汇编程序代码
;
*********************************************************************
项目名称:
单片机数字温度报警器
设计者:
王琨
设计日期:
2010年12月28日
***********************************************************************
功能介绍:
1、上电或者复位初始状态数码管显示p.并且流水灯循环闪动
2、按下S1键进入上限温度调整状态。
S2是调十位,S3调个位。
数字前显示“H”字样表明调上限
3、按下S1键进入下限温度调整状态。
数字前显示“L”字样表明调下限
4、再按S1键进入温度测量状态,按S2可以退出该状态
LED数码管显示器设定;
P0.7---P0.0段控线,接LED的显示段dp,g,f,e,d,c,b,a
P2.7---P2.0位控线,从左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)
显示缓冲区设定从左至右依次为7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)
独立式键盘设定;
8个按键S2至S9分别依次接在P1.0至P1.7口线;
子程序;
DISP(数码管显示子程序)
DL(1毫秒延时子程序,晶振频率12MHz)
;
键盘扫描子程序KEY:
P1口数据处理子程序
DI;
缓冲单元赋值
十进制加1子程序入口:
R0,出口:
R0DADD1:
十位、个位数缓冲单元清0子程序CLR0
;
灭灯TSF1
读出转换后的温度值GETWD
读到的温度值进行处理CL
做好读温度的准备READY
读DS18B20的程序READ_18200:
写DS18B20的子程序WRITE_1820
DS18B20复位初始化START1820
流水灯循环LEDXZ
**********************************************************************
常数表格;
TAB(共阳数码管字型代码表)
DISBH(系统提示符P.字型代码序号表)
***********************;
键功能程序;
KEYS1
KEYS2
数据存储器变量及常量单元定义;
伪指令定义区
T_HEQU60H;
T_H中为整数温度值
T_LEQU61H;
T_L中为小数温度值
LED0EQU78H;
LED1EQU79H;
LED2EQU7AH;
数码管温度小数个位
LED3EQU7BH;
数码管温度小数十位
LED4EQU7CH;
数码管温度整数个位
LED5EQU7DH;
数码管温度整数十位
LED6EQU7EH;
LED7EQU7FH;
HINGEQU67H;
设定值上限
LOWDEQU68H;
设定值下限
T29HEQU6AH;
上一次温度高字节暂存
T28HEQU6BH;
上一次温度低字节暂存
FLAGBIT47H;
是否检测到DS18B20标志位
SDATABITP3.0;
DS18B20数据总线
系统起始程序区
ORG0000H
START:
LJMPMAIN
系统监控程序区
ORG0030H
MAIN:
MOVSP,#7FH;
确立堆栈区
MOVPSW,#00H;
初始化PSW,通用寄存器组为第
MOVR0,#20H;
RAM区首地址
MOVR7,#96;
RAM区单元个数
ML:
MOV@R0,#00H
INCR0
DJNZR7,ML
CLREA
TSF:
MOVDPTR,#DISBH;
提示符“P.”字符代码表首地址
MOVR5,#08H
MOVR0,#78H
DISPTSF:
CLRA
MOVCA,@A+DPTR
MOV@R0,A
INCR0
INCDPTR
DJNZR5,DISPTSF
DIS:
LCALLDISP;
调显示子程序显示提示符“P.”
LCALLLEDXZ;
流行灯
LCALLKEY
JB20H.0,KEYS1;
是S2键,转KEYS2执行
LJMPDIS
KEYS1:
LCALLTSF1;
灭灯p.
MOVP3,#0FFH;
灭流水灯
MOVLED3,#29;
数码管上左边显示'
H'
,表明是设置上限
MOVLED0,#0
MOVLED1,#2
MOVHING,#20;
上限默认值
K1:
LCALLDISP;
先设置上限
JB20H.0,KEYS11
JB20H.1,A2
JB20H.2,A22
LJMPK1
A2:
LCALLJIALED1;
调加一子程序
A22:
LCALLJIALED0
LJMPK1
;
设定数值上限
KEYS11:
MOVA,LED1
MOVB,#10
MULAB
ADDA,LED0
MOVHING,A
*******************************
KEYS2:
LCALLTSF1;
MOVLED3,#30;
数码管左边显示'
L'
,表明是设置下限
MOVLED1,#1
MOVLOWD,#10;
下限默认值
K2:
LCALLDISP
LCALLKEY;
再设置下限温度
JB20H.0,KEYS22
JB20H.1,A3
JB20H.2,A33
LJMPK2
A3:
LCALLJIALED1;
A33:
LJMPK2
设定数值下限
KEYS22:
MOVLOWD,A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)