基于AT89C51的数字温度显示装置.docx
- 文档编号:5261084
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:25
- 大小:895.94KB
基于AT89C51的数字温度显示装置.docx
《基于AT89C51的数字温度显示装置.docx》由会员分享,可在线阅读,更多相关《基于AT89C51的数字温度显示装置.docx(25页珍藏版)》请在冰豆网上搜索。
基于AT89C51的数字温度显示装置
课程设计
数字温度显示装置
王俊岭
20060162
测控06级四班
吴晔洪占勇张阳党学明
2010年01月22日
设计题目
数字温度显示装置
成绩
课
程
设
计
主
要
内
容
本设计课题是根据我们所学的课本知识,选取的一个能够检验我们所学知识是否扎实的设计,难度适中,模块涵盖较全,通过设计要完成一个从测温芯片获取温度并实时显示到点阵式式LED显示屏幕上。
设计小组主要解决的问题有:
一、从已知器件获取温度信息二、芯片与单片机的通讯三、数据格式转换四、单片机最小系统五、驱动功率放大六、点阵式LED的驱动。
七、电路图和PCB版图的绘制。
设计达到的目标是实时显示特定区域温度,分辨率为1℃。
本次设计的难点有:
一、用单片机编写通过单总线与DS18B20的通讯时序,对时序要功率要求高。
二、利用单片机有限的接口实现对16X32LED显示屏的控制,这需要设计扩展电路来扩充接口
三、单片机的接口输出功率有限,需要设计功率放大电路
指
导
教
师
评
语
建议:
从学生的工作态度、工作量、设计(论文)的创造性、学术性、实用性及书面表达能力等方面给出评价。
签名:
200年月日
合肥工业大学课程设计任务书
目录
一、设计题目
二、设计人员、分工与进度安排
三、设计概述
四、总体设计
五、电路与PCB图
六、调试程序
七、仿真调试
八、课程设计总结
九、参考资料
一十、附录
i.程序代码
ii.原理图
iii.PCB版图
一、设计题目:
基于AT89C51的数字温度显示装置
二、设计人员、分工与进度安排
班级:
组员:
时间安排
第一周周一,小组讨论确定设计题目,初步提出设计方案,并进行任务分解与分配工作。
第二周周一,提交《课程设计任务书》
第二周周三,提交完整的《课程设计任务书》一份,包括课程设计的详细方案。
第三周周三,小组提供完整的《课程设计总结报告》,包括课程设计的详细资料与图纸。
提出设计的完善与改进方案。
第三周周五,进行课程设计答辩。
三、设计概述:
a)装置技术规格
测量范围-55℃~+125℃,增值量为1℃
非易失行温度警告设置
b)所需器件
AT89C51一片、DS18B20一片、点阵LED、5V电源等
c)装置优点
微型化、低功率、高性能、抗干扰能力强等优点
本设计课题是根据我们所学的课本知识,选取的一个能够检验我们所学知识是否扎实的设计,难度适中,模块涵盖较全,通过设计要完成一个从测温芯片获取温度并实时显示到点阵式式LED显示屏幕上。
主要解决的问题有从已知器件获取温度信息、通讯、数据格式转换、单片机最小系统、功率放大、点阵式LED的驱动。
难点在于通讯和驱动。
四、总体设计思路及实施步骤:
(一)设计思路:
此次设计的整个过程是从DS18B20测温芯片读取温度,然后显示到屏幕上。
考虑到此次设计的特点,可以吧这个功能的实现分为两大部分:
(一)、从DS18B20获取温度信息,难点在于单片机上没有现成的单总线模块可用,DS18B20的单总线通信的时序要用程序写成,对程序的时序要求高;
(二)、将获取的温度信息显示到屏幕上。
难点在于要用单片机有限的接口资源实现对16x32LED的驱动。
(二)难点解决
i.DS18B20与单片机的通信。
DS18B20是一款常用的温度芯片,通过借阅图书馆书籍,查阅DS18B20芯片资料(见附录二)和单片机相关网络,可以解决掉这个问题。
ii.16x32LED的驱动。
这部分的解决办法应该把精力放到硬件搭建上,硬件是软件运行的基础。
51单片机的借口资源主要有P0—P3四个八位口,共可以控制32根线,很显然是不能满足设计的,这就要从硬件上进行构建,构建一个可以驱动48根LED的接口,同时还要留出测温芯片的借口。
硬件实现上有两种主要的方法:
一是扩展并行接口,可以用8255、8155等芯片来扩展,但是这种扩展控制复杂,成本高,小范围扩展使用较好,对于驱动LED,需要的I\O口太多。
并行扩展就不能很好的发挥作用。
另一种是用数据串入并出的方法来实现,就是用串入并出移位寄存器来实现对LED的驱动。
这种办法的优点就是占用的I\O口少,数据传递只需要一位端口和几个控制端口。
但是这种方法的数据传递速度比并行发差距很大,不过,用在显示上很是可以的。
(三)硬件电路搭建
综合考虑,硬件电路的搭建用串入并出的方法实现对LED的驱动。
74HC595是一款较好的8位串入并出移位寄存器芯片,具有可控的输入,输出,清零端和级联口,可以通过级联实现更多的并行输出。
设计共有32列,计划用4片74HC595级联形成对列线的控制。
由于单片机实现的功能比较单一,单片机的控制行线由P0、P2两个并行端口控制。
测温芯片的连接比较容易,占用一根总线。
控制系统原理框图
3.3~5V
外接电源3.3~5V
DS18B20与微处理器的连接图
详细设计:
本系统采用AT89C51单片机作控制器,整个电路主要由单片机控制及其接口电路、驱动显示电路、电源电路、温度测试电路等部分组成。
1.1单片机控制电路
本设计由AT89C51构成单片机最小应用系统.同时配有12MHz晶振和上电复位电路等。
1.216x32点阵显示器的设计
图2是一种8x8的LED点阵单色行共阳模块的内部结构图,其单点工作电压Uf为1.8V,正向电流IF为8~10mA。
当某一行线为高电平而某一列线为低时,其行列交叉的点就被点亮;而当其某一列线为高时,其行列交叉的点为暗;当某一行线为低电平时,无论列线如何,对应这一行的点全部为暗。
用四个8x8点阵显示可构成16x16点阵显示器,其连接方法如图3所示。
图中,将(A)和(B)的8列、(C)和(D)的8列分别对应相连,同时将(A)和(C)的8
行、(B)和(D)的8行分别对应相连。
即可形成一个16行(每一行有16个LED)、16列(每一列也有16个LED)的16x16点阵显示器,可将这256个点称为一页,这样,显示字符时。
只要对一页中对应的亮灭进行控制即可。
如果需要,也可以把2个16x16点阵显示器相连从而构成16x32的点阵显示器。
2、LED点阵显示器的扫描驱动(行码驱动)
LED显示屏驱动电路的设计应与所用控制系统相配合。
驱动通常分为动态扫描型及静态锁存型驱动二大类。
静态锁存要求每一个点都要有一根控制线路,在此很显然是很难实现的,电路搭建以动态扫描型驱动电路的设计。
动态扫描型驱动方式是指显示屏上的16行发光二极管共用一组列驱动寄存器,然后通过行驱动管的分时工作,来使每行LED的点亮时间占总时间的1/16。
只要每行的刷新速率大于50Hz,利用人眼的视觉暂留效应,人们就可以看到一幅完整的文字或画面。
AT89C51单片机有四个I/O口(P0、P1、P2、P3),每个I/O口有8位,如果都采用并行输出,显然不能满足要求,因此,本设计中的行扫描驱动采用并口输出,而场扫描驱动使用串入并出移位寄存器来实现数据的串行输出和并行控制列线。
2.1行扫描驱动
由于16x32点阵显示器有16行,为充分利用单片机的接口,设计计划用P0、P2两个端口形成16位行控制输出端口,运行时让16位中的一位置位,其余清零,则可以控制相应的行亮,此时如果对应点上的列线为零位,则可以控制相应的点变亮。
如果一行32点全部点亮,则通过74LS154的电流将达320mA,而实际上,单片机的端口是不能提供这么大的电流的,P0口没有内置上拉电阻,需要外接上拉电阻,而P2口虽然有内置的上拉电阻,仍然不足以同时驱动一行的LED。
因此,设计对行驱动端口使用74LS07进行功率放大,但是经过仿真实验,发现P2口的功率仍然达不到,因此,电路上对P2口也外接上拉电阻以提高驱动功率。
2.2列扫描驱动(位码驱动)
本系统场扫描驱动电路的设计可用串入并出的通用集成电路74HC595来作为数据锁存。
74HC595是一个八位串行输入三态并行输出的移位寄存器,其管脚见图4所示,其中SI是串行数据的输入端,RCK是存储寄存器的输入时钟,SCK是移位寄存器的输入时钟,Q'H是串人数据的输出,G是对输人数据的输出使能控制,QA~QH为串入数据的并行输出。
从SI口输入的数据可在移位寄存器的SCK脚上升沿的作用下输入到74HC595中。
并在RCK脚的上升沿作用下将输入的数据锁存在74HC595中,这样,当G为低电平时,数据便可并行输出。
设计使用P3.0、P3.1、P3.2、P3.3、P3.4来分别输出串行数据、移位时钟SCK、存储信号RCK和并行输出的使能信号G和清零信号/SCLR。
2.3扫描显示工作过程
将4片74HC595进行级连,可共用一个移位时钟SCK及数据锁存信号RCK。
这样,当第一行需要显示的数据经过8x4=32个SCK时钟后便可将其全部移入74HC595中,此时还将产生一个数据锁存信号RCK将数据锁存在74HC595中,并在使能信号G的作用下,使串入数据并行输出,从而使与各输出位对应的场驱动管处于放大或截止状态;同时由行扫描控制电路产生信号使第一行扫描管导通,相当于第一行LED的正端都接高,显然,第一行LED管的亮灭就取决于74HC595中的锁存信号;此外,在第一行LED管点亮的同时,再在74HC595中移入第二行需要显示的数据,随后将其锁存,同时由行扫描控制电路将第一行扫描管关闭而接通第二行,使第二行LED管点亮,以此类推,当第十六行扫描过后再回到第一行,这样,只要扫描速度足够高,就可形成一幅完整的文字或图像。
3.DS18B20和外围电路
DS18B20是一款应用普遍的温度芯片,单总线连接,可以在总线上获取转换电源而不用必须外接电源,但是设计上为了保证工作的可靠性,同时减轻软件人员的工作,设计由电源单独给芯片供电,由P1.0端口和18B20总线相连
五、电路与PCB图
电路原理图
PCB排版
PCB仿真图
六.调试程序
七.仿真及调试
八.课程设计总结
此次课程设计是一个把我们所学的书本知识形成系统并用一个具体实物我自己的思路表现出来的机会。
通过这次设计不仅可以检验我们的理论知识,还能很好的提高我们的动手能力。
通过短短三周的课程设计,我觉得自己的知识得到了巩固,视野变得开阔了,认识到了从理论到实践是还是有很大差距的。
在这次设计中,我作为组长,一方面要统筹分配小组各成员的任务,督促并帮助他们完成各自的任务,另一方面,自己也负责着电路原理图的绘制。
分配工作是一个值得考虑的问题,既要分的合理又要针对不同人的能力分配工作,保证任务能够完成。
这次的任务分配,我认为还存在很大问题,针对一个完整的设计工作,分配任务的过程就是自己对此次课程设计的理解和认识的表现。
通过分解任务可看出自己是怎样分解一个设计任务的,而任务分解的话坏直接关系到设计任务的工作难度,分解设计也就是设计接口的过程,接口设置的还坏关系到各个分任务的难度和物理的可实现性。
此次任务中,有些人员负责后期仿真,有人负责硬件,有人负责软件。
但是,真正工作时,发现可很多问题,首先,从接口上看,硬件是软件运行的平台,软件的编写要涉及到接口电路,而硬件的搭建要考虑软件的使用情况。
所以在分配工作时要注意软硬件不是完全分离的。
其次,负责仿真的人在前期没有什么事情做,而到后期仿真的时候,仿真却不是一个人的事情,仿真成功与否与软硬件都有很大的关系,所以负责这两面的人员都要参与仿真,仿真不是一个人的事情,更不是一个不管前期,只负责仿真的事情。
我自己负责电路原理图的绘制,在完成这份任务的过程中,我也学到了很多东西。
首先是基本学会了Proteus这款电子制作软件。
这是一款很好用的软件,不仅可以在这个平台上画电路原理图、PCB版图,还可以仿真运行单片机程序,使设计者在制作实物之前尽可能多的获取相关信息。
我们此次设计用51单片机来做控制器,控制测温和显示。
虽然在功能上,我我完成了任务,但是后期发觉电路还是有很多可以改进的地方。
但是硬件的更改直接关系到程序的编制,由于时间的原因,没有再次更改硬件原理图。
但是我觉得应该记录下来。
这些更改主要有以下几个方面:
i.单片机的能力是十分强大的,但是设计中仅仅是一个测温显示,就用掉了几乎所有的接口资源,资源利用率低,观察设计图,接口主要用在了显示上,用掉了21个端口,其中行扫描用了16个,这种接法,电路简单,但是资源浪费,应该有办法降低行扫描控制线。
这里我主要想到了三种方法:
一是用列扫描式的方法,只需要5根控制线。
但是这种方法速度慢,如果单片机时钟不够快的话,刷屏效果差。
所以多单片机的时钟有较高要求。
二是用一个八位I\O口和一个扩展芯片(如8255)来实现I\O口的扩充。
这种方发的实质是扩展I\O口,用一个八位端口在外围芯片的帮助下扩展为16位。
这种方法成本高,软件复杂。
三是使用一片四—十六译码器(如74154),通过单片机上的四位端口可以把从0000到1111十六种不同的状态信号送到译码器,由此产生相应的行扫描信号。
这种方法的使用的行扫描控制端口最少,对程序的影响小,而且扫描没有变慢。
是一个很好的改进方案。
通过改进,显示仅仅用到9为端口,比现行的21位节省了12位,节省出来的端口可以用来构成通信线路。
可以连接其他器件,可以扩充存储器等等。
与现有设计相比,使用译码器可以为设计产品的升级提供很大空间。
ii.LED点阵屏幕发光亮度与电源供电能力有很大关系。
在这次的设计中,行扫描线控制一行,在一行全部都亮的情况下,相应的行控制线应该能提供足够的电流,开始用的是功率芯片7407,但是功率仍然不足,所以一又加了上拉电阻,进一步提高功率,而实际上,此处完全可以接三极管来放大功率,放大效果好,工作稳定。
其次是在行扫描时,不同行亮的LED不同,造成电流大小不同,进而造成LED的亮度可能有变化,这个不足可以通过在列控制线上增加恒流电路来弥补。
通过以上几个大的变化,显示部分变为:
改进后显示原理图
在程序编写上,我也参与了显示部分的程序设计工作,此次设计由单片机直接驱动16X32LED点阵,对行列扫描的控制要求就较高。
开始时,我们只是把显示停留到想法上,但是真正转换成程序代码时,总是一头雾水,我认为是我们对模块化设计思想的认识和理解不足。
几经修改,最终我们把一个显示模块有分为多个子程序,小到一个字节的传递就是一个程序。
这样,显示程序就变得比较条理,写完底层支撑程序,真正的显示程序就变为控制调用不同显示子程序的顺序。
通过这次的程设计,我对模块化程序设计思想有了更深的认识和了解。
九、参考资料
万光毅单片机实验与实践教程
(一)北京航空航天大学出版社
浦昭邦、王宝光测控仪器设计(第二版)机械工业出版社
胡汉才单片机原理及接口技术(第二版)清华大学出版社
学林电子
一十、附录
程序:
BYTE_1EQU20H
BYTE_2EQU21H
BYTE_3EQU22H
BYTE_4EQU23H
SAVE_1EQU24H
SAVE_2EQU25H
DDSBITP3.0
SHBITP3.1
STBITP3.2
OEBITP3.3
MRBITP3.4
WD_1EQU26H
WD_2EQU27H
FUHAOBIT7FH;
WDIOBITP1.0;
TMEPEQU28H;
ORG0000H
AJMPMAIN;
ORG0040H
MAIN:
MOVSP,#40H;
LCALLDS18B20;
MOVR5,#80H;
LOOP1:
LCALLDISPLAY;
DJNZR5,LOOP1;
LJMPMAIN;
DS18B20:
LCALLRST;
MOVA,#0CCH;
LCALLWRITE;
MOVA,#44H;
LCALLWRITE;
LCALLRST
MOVA,#0CCH;
LCALLWRITE;
MOVA,#0BEH;
LCALLWRITE;
LCALLREAD;
RET
RST:
CLRWDIO
MOVR7,#32;
LCALLDELAY15;
JBWDIO,RST_0;
MOVR7,#28;
LCALLDELAY15;
RST_0:
RET;
WRITE:
CLRC;
MOVR1,#8;
WR_1:
CLRWDIO;
MOVR7,#1;
LCALLDELAY15;
RRCA;
MOVWDIO,C;
MOVR7,#1;
LCALLDELAY15;
SETBWDIO;
NOP;
DJNZR1,WR_1;
SETBWDIO;
RET;
READ:
CLRC;
MOVR1,#2;
MOVR0,#TMEP;
RD_1:
MOVR2,#8;
RD_2:
SETBWDIO;
NOP;
NOP;
CLRWDIO;
NOP;
NOP;
SETBWDIO;
MOVR7,#1;
LCALLDELAY15;
MOVC,WDIO;
RRCA;
DJNZR2,RD_2;
MOV@R0,A;
INCR0;
DJNZR1,RD_1;
LCALLBCD;
RET;
BCD:
MOVA,TMEP+1;
CLRC;
CLRFUHAO;
SUBBA,#80H;
JCBCD_1;
SETBFUHAO;
LCALLWORK_BCD;
BCD_1:
MOVR2,TMEP;
MOVR3,TMEP+1;
MOVA,R2;
ANLA,#00000111B;
RLA;
RLA;
RLA;
RLA;
MOVR2,A;
MOVA,R3;
ANLA,#11110000B;
SWAPA;
ORLA,R2;
MOVTMEP,A;
RET;
WORK_BCD:
CLRC;
MOVA,TMEP;
CPLA;
ADDA,#1;
MOVTMEP,A;
CPLA;
ADDCA,#0;
MOVTMEP+1,A;
RET;
DELAY15:
MOVR4,#7;
DELAY_1:
DJNZR4,DELAY_1;
DJNZR7,DELAY15;
RET;
DISPLAY:
CLRC;
MOVA,#80;
SUBBA,TMEP;
JNCGG0;
SJMPCONTINUE;
GG0:
LJMPGG;
CONTINUE:
LCALLBCDD
MOVDPTR,#TAB1;
MOVSAVE_1,DPL;
MOVSAVE_2,DPH;
MOVP0,#00H;
MOVP2,#00H;
MOVR0,#0;
MOVR1,#80H;
MOVP0,R1;
LCALLT;
LCALLSHEET;
M:
INCR0;
CJNER0,#8H,MM;
MOVP0,#00H;
MOVP2,#00H;
MOVR1,#80H;
MOVP2,R1;
MOVR0,#0;
MOVDPTR,#TAB1+8;
MOVSAVE_1,DPL;
MOVSAVE_2,DPH;
LCALLT;
LCALLSHEET;
N:
INCR0;
CJNER0,#8,NN;
RET;
MM:
SETBC;
MOVA,R1;
RRCA;
MOVR1,A;
MOVP0,R1;
CLRC;
INCSAVE_1;
MOVA,SAVE_2;
ADDCA,#0;
MOVSAVE_2,A
LCALLT;
LCALLSHEET;
SJMPM;
NN:
SETBC;
MOVA,R1;
RRCA;
MOVR1,A;
MOVP2,R1;
LCALLT;
LCALLSHEET;
SJMPN;
T:
MOVR2,#12;
MOVDPL,SAVE_1;
MOVDPH,SAVE_2;
LCALLTT;
MOVBYTE_1,A;
MOVR2,WD_1;
LCALLTT;
MOVBYTE_2,A;
MOVR2,WD_2;
LCALLTT;
MOVBYTE_3,A;
JBFUHAO,TTT;
MOVR2,#10;
LCALLTT;
MOVBYTE_4,A;
RET;
TT:
MOVA,#16;
MOVB,R2;
MULAB;
MOVCA,@A+DPTR;
RET;
TTT:
MOVR2,#11;
LCALLTT;
MOVBYTE_4,A;
RET;
BCDD:
MOVA,TMEP;
MOVB,#10;
DIVAB;
MOVWD_1,A;
MOVWD_2,B;
RET;
GG:
MOVDPTR,#TAB2;
MOVSAVE_1,DPL;
MOVSAVE_2,DPH;
MOVP0,#00H;
MOVP2,#00H;
MOVR0,#0;
MOVR1,#80H;
MOVP0,R1;
LCALLL;
LCALLSHEET;
P_P:
INCR0;
CJNER0,#8,PP;
MOVP0,#00H;
MOVP2,#00H;
MOVR0,#0;
MOVDPTR,#TAB2+8;
MOVSAVE_1,DPL;
MOVSAVE_2,DPH;
LCALLL;
LCALLSHEET;
Q:
INCR0;
CJNER0,#8,QQ;
RET
PP:
SETBC;
MOVA,R1;
RRCA;
MOVR1,A;
MOVP0,R1;
CLRC;
INCSAVE_1;
MOVA,SAVE_2;
ADDCA,#0;
MOVSAVE_2,A;
LCALLL;
LCALLSHEET;
SJMPP_P;
QQ:
SETBC;
MOVA,R1;
RRCA;
MOVR1,A;
MOVP2,R1;
LCALLL;
LCALLSHEET;
SJMPQ;
L:
MOVDPL,SAVE_1;
MOVDPH,SAVE_2;
MOVA,#0;
MOVCA,@A+DPTR;
MOVBYTE_1,A;
MOVBYTE_2,A;
MOVBYTE_3,A;
MOVBYTE_4,A;
RET
SH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C51 数字 温度 显示装置