我的单片机课程设计文档.docx

上传人:b****8 文档编号:9373702 上传时间:2023-02-04 格式:DOCX 页数:51 大小:543.29KB
下载 相关 举报
我的单片机课程设计文档.docx_第1页
第1页 / 共51页
我的单片机课程设计文档.docx_第2页
第2页 / 共51页
我的单片机课程设计文档.docx_第3页
第3页 / 共51页
我的单片机课程设计文档.docx_第4页
第4页 / 共51页
我的单片机课程设计文档.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

我的单片机课程设计文档.docx

《我的单片机课程设计文档.docx》由会员分享,可在线阅读,更多相关《我的单片机课程设计文档.docx(51页珍藏版)》请在冰豆网上搜索。

我的单片机课程设计文档.docx

我的单片机课程设计文档

1项目综述

1.1设计目的

通过单片机数字温度报警器的设计,使得建立构成单片机系统的的整机概念,了解单片机系统各单元电路特别是DS18B20之间的关系及相互影响,从而能正确设计、计算发射的各个单元电路:

包括AT89S52单片机主控模块、DS18B20温度采集芯片、独立式键盘、流水灯、蜂鸣器。

数字温度计是日常生活中常见的也是应用非常广泛的电子器件,研究本课题既可以了解数字温度计报警电路的相关原理,又可以提高对于keil和Protues的应用能力和运用书本知识的能力。

1.2设计任务

设计一个具有特定功能的数字温度计。

该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。

测量温度范围0℃~99℃,测量精度小数点后两位,可以通过开始和结束键控制数字温度计的工作状态。

可以设置上限和下限温度,并且18B20出现故障能够报警。

1.3基本要求

(1)测量温度信号:

外界温度;

(2)测量温度范围:

0℃~99℃;

(3)显示方式:

8位数码管显示;

(4)两个键,一键开启测温,一键关闭测温

(5)温度超限报警和18B20故障报警

(6)上限下限温度设定

 

2方案论证与比较

2.1温度采集部分方案论证

2.1.1方案一

由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。

采用热敏电阻,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,而我们对实验的精度要求较高,对于检测小于1摄氏度的信号是不适用的。

2.1.2方案二

考虑到用温度传感器,在单片机电路设计中,可以采用一只温度传感DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。

从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,

2.2显示部分方案论证

2.2.1方案一

数码管显示,每一个二极管的状态分别用0和1表示,若为0,则表示LED无电流,即熄灭状态,;若为1则表示二极管被点亮。

可以静态显示和动态显示,虽然设计上如果处理不当,易造成亮度低,闪烁问题。

但是相对液晶来说价格低,动态显示也比较丰富

2.2.2方案二

液晶显示,FWD12864-0402B是一种具有4位/8位并行,2线或3线串行多种接口方式,内部有中文汉字库的点阵图形液晶显示模块;分辨率为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键进入下限温度调整状态。

S2是调十位,S3调个位。

数字前显示“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;先设置上限

LCALLKEY

JB20H.0,KEYS11

JB20H.1,A2

JB20H.2,A22

LJMPK1

A2:

LCALLJIALED1;调加一子程序

LJMPK1

A22:

LCALLJIALED0

LJMPK1

;设定数值上限

KEYS11:

MOVA,LED1

MOVB,#10

MULAB

ADDA,LED0

MOVHING,A

;*******************************

KEYS2:

LCALLTSF1;灭灯p.

MOVP3,#0FFH;灭流水灯

MOVLED3,#30;数码管左边显示'L',表明是设置下限

MOVLED0,#0

MOVLED1,#1

MOVLOWD,#10;下限默认值

K2:

LCALLDISP

LCALLKEY;再设置下限温度

JB20H.0,KEYS22

JB20H.1,A3

JB20H.2,A33

LJMPK2

A3:

LCALLJIALED1;调加一子程序

LJMPK2

A33:

LCALLJIALED0

LJMPK2

;设定数值下限

KEYS22:

MOVA,LED1

MOVB,#10

MULAB

ADDA,LED0

MOVLOWD,A

;*******************************

LCALLTSF1;灭灯p.

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

当前位置:首页 > 高等教育 > 医学

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

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