课题: 数显温度传感器设计
专业: 2012级电子信息工程。
班级一班。学号: 12153504
姓名陈亚玲。
指导教师李敏。
设计日期: 2014.12.17
成绩:重庆大学城市科技学院电气学院。
基于at89c51单片机的数显。
温度传感器设计。
一、 设计目的作用。
本次课程设计,是以设计一个具有数据温度显示器为最终的标。他是由单片机,温度传感器和led数码管显示器以及其他相关部件共同实现的。
1、掌握51单片机最小系统的设计;
2、掌握温度传感器ds18b20的使用;
3、掌握c51的编程方式。
二、设计任务与要求。
基于at89c51单片机的数显温度传感器设计主要具有如下功能,具体要求如下。
1).温度传感器ds18b20检测环境温度。
2).用两个二位数码管显示温度。
3).设定一个温度,当检测的温度达到这个设定值时,用蜂鸣器实现报警。
三、 设计的具体实现。
本次课程设计是由at89c52单片机主控制电路、ds18b20测温电路及led数码管显示电路三部分组成。整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。根据软件的功能,可以将其分为主程序部分和子程序部分。
在运行主程序时,采用外部中断0和外部中断1来调用子程序。
1、设计原理。
1)主程序。
主程序的主要功能是负责温度的实时显示、读出并处理ds18b20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度。
2)读出温度。
读出温度子程序的主要功能是读出ram中的9字节,在读出时需进行crc校验,校验有错时不进行温度数据的改写。
3)显示温度。
本设计采用两个二位一体数码管显示,小数部分保留一位,整数部分完全显示。
2、系统设计。
首先确定课程设计的目的是设计一个温度计,由单片机,温度传感器和led数码管显示器以及其他相关部件共同实现。
根据所要实现的功能,先在proteus软件上**,根据所选用的硬件可以将整个软件设计成若干个子程序,譬如初始化,复位,发送指令,读取数据,显示温度等构成,可以将以上子程序分别设计,实现各自功能,再在主程序中调用,实现预期功能。
在proteus软件中画出相应的电路图,将编好的程序编译后的文件**到电路图中的单片机中,进行**,对温度传感器设置不同的参数,如若不能达到预期效果,则进行修改直至成功,于此同时,将编译好的程序**到单片机开发板中,进行测试。
图1.0a 系统总体设计框图。否。是。
1.0b流程图。
3、系统实现。
单片机主控制电路。
单片机主电路由现在比较通用的at89c52系列单片机及外围电路构成,主要功能是把温度传感器送来的数据经过处理再通过i/o口送达显示电路中。
本设计采用at89c52单片机,它有高可靠,抗干扰,低功耗的特点。at89c52单片机的rst端外部有两种操作方式:上电自动复位和按键手动复位。
此处晶振采用12mhz。复位电路采用上电结合按钮复位。
图a晶振电路。
图b复位电路。
测温控制电路。
温度测量电路主要由ds18b20温度传感器及其外围电路构成,把采集到的数据送入单片机中进行处理。
图c测温模块。
温度显示。温度显示电路主要由4个8段共阳led数码管及其外围电路构成,主要功能是把单片机发送的数据以数字的形式显示出来。
led 数码管是由八个发光二极管组成的显示器件,这种显示块有共阴极与共阳极两种led 显示器的驱动方式分静态和动态两种方式:动态扫描方式静态方式是把 led 的公共极接地(指共阴极)7 段码,经锁存器给到各 led,数据更新时间无严格限制。该方式硬件结构复杂,软件编程简单。
动态扫描方式是每个 led 公共极分别由一根位选线控制,选通该位 led由并口给出 7 段码,则该位亮,延时一段时间,再选通下一位,给出下一位的 7 段码。依此类推,反复进行。此方式的数据更新频率应大于 25hz;当然越高越好。
此方案硬件结构简单但对编程要求高。在应用中只要将一个8位并行输出口与显示块的发光二极管引脚相连即可8 位并行输出口输出不同的 7 段码,即可显示不同的字符。通常将控制发光二极管的 8 位数据称为段码,其公共端称位码。
本实验用 p2口的4 位产生扫描线,作为 led 的位选通信号,led 显示的数据(7段码)由 p1 口给出。实验系统选用的是共阳极数码管,下表为 7 段 led 数码管(共阳极)显示字符与 7 段码的对应关系。
led共阳数码管对应图。
图d显示模块图。
报警模块。本设计采软件处理报警,利用有源蜂鸣器进行报警输出,采用直流供电。当所测温度超过获低于所预设的温度时,数据口相应拉高电平,报警输出。
(也可采用发光二级管报警电路,如过需要报警,则只需将相应位置1,当参数判断完毕后,再看报警模型单元alarm的内容是否与预设一样,如不一样,则发光报警)报警电路硬件连接见图:
蜂鸣器电路连接图。
设计总程序:
#include<>
#include<>
#define uchar unsigned char
#define uint unsigned int
sbit dq=p0^0;
sbit beep=p0^7;
sbit p22=p2^2;
sbit p23=p2^3;
sbit p24=p2^4;
sbit p25=p2^5;
void reset();
void write_byte(uchar val);
uchar read_byte(void);
void read_temp();
void led_display();
void alarm();
uchar tempinth,tempintl,tempdfh,tempdfl,tempdf,num;
uchar table[10]= uchar setvalue_low=15;
uchar setvalue_high=33;
main()
void delay(uint t)
void reset() dq=1;
void write_byte(uchar val)
uchar i;
for(i=8;i>0;i--)
dq=1;_nop_()nop_()
dq=0;_nop_()nop_()nop_()nop_()nop_()
dq=val&0x01;
delay(6);
val=val>>1;
dq=1; _nop_()
uchar read_byte(void)
uchar i;
uchar value=0;
for(i=8;i>0;i--)
dq=1;_nop_()nop_()
value>>=1;
dq=0;_nop_()nop_()nop_()nop_()
dq=1;_nop_()nop_()nop_()nop_()
if(dq)
value|=0x80;
delay(6);
dq=1;
return(value);
void read_temp()
uchar ch1,ch2;
reset();
write_byte(0xcc);
write_byte(0x44);
reset();
write_byte(0xcc);
write_byte(0xbe);
ch1=read_byte();
ch2=read_byte();
tempdf=ch1&0x0f;
num=(ch2<<4)|(ch1>>4);
tempinth=table[num/10];
tempintl=table[num%10]&0x7f;
tempdfh=table[num/10
tempdfl=table[tempdf%10];
void led_display()
p2=0x0;
p22=1;
p1=tempinth;
p2=0x0;
p23=2;
p1=tempdfh;
delay(50);
p2=0x0;
p24=1;
p1=tempintl;
delay(50);
p2=0x0;
p25=2;
p1=tempdfl;
delay(50);
p2=0x0;
void alarm()
if(setvalue_low<=num &&setvalue_high>=num)
beep=1;
else beep=~beep;
4、总结。要想完成好这次课程设计,首先要弄懂数字温度计的工作原理,与外部电路的连接,单片机原理,汇编语言等。这其中有以前课堂上学过的也有需要我们自学研究的,这不仅考察了自己原来的知识程度还加强了我们独立获取知识并加以运用的能力。
在这次的课程设计中,我学到了团队合作,两个人要相互配合,明确分工,才能高效率的将任务完成,这也训练了我们的团队合作能力。
初次之外,我们对于软件的运用也更加熟练,并且学会了另外一个软件proteus,对于以后的课程的学习奠定了基础。
5、附录。元件清单。
6、参考文献。
课程设计报告格式 课程设计
洛阳理工学院。课程设计说明书。课程名称。设计课题。专业。班级。学号。姓名。完成日期2014年12月26日。问题描述 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的内容要求。基本要求 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的基本要求。测试数据 小四宋体,行间距单倍行距,每...
课程设计总结,课程设计报告
课程设计总结,课程设计报告。3.尝试应用项目管理软件进行项目进程的规划管理 绘制甘特图,不作硬性要求 二 选题说明。人事管理是企业信息管理的重要部分,面对大量的人事工资信息,财务部门采用人力处理将浪费大量的时间 人力和物力,且数据的准确性低。因此,开发一个界面友好,易于操作的人事工资管理软件进行自动...
课程设计 课程设计报告格式
学校名。课程设计报告。课程名称 c语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...