1、DS18B20温度传感器蜂鸣器实验剖析学年论文(课程论文、课程设计)题 目:DS18B20温度传感器,蜂鸣器实验姓 名学 号:所在学院:专业年级:2015年 9月 21日2.1 DS18B20传感器介绍2.2数码管显示数字的基本原理2.3电路的连接方法 3.2 系统功能图3.3电路的连接方法 1.绪 论1.1 本论文的背景 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,各种数字系统的应用也使人们的生活更加舒适。数字化控制、智能控制为现代人的工作、生活、科研等方面带来方便。其中数字温度计就是一个典型的例子。 数字温度计与传统的温度计相比,具有读数
2、方便、测温范围广、测温精确、功能多样话等优点。其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用STC89C52单片机作控制器,数字温度传感器DS18B20测量温度,单片机接受传感器输出,经处理用LED数码管实现温度值显示。1.2 关于AT89C52单片机基本概念1)、何谓单片机 一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。 2)、MCS51单片机和8051、8031、89C51等的关系我们平常
3、老是讲8051,又有什么8031,现在又有89C51,它们之间究竟是什么关系? MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。1.3 使用的软件介绍 单片机的程序设计需要在特定的编译器中进行。编译器完成对程序的编译、连接等工作并且最
4、终生成可执行文件(.hex 文件)。对单片机程序的开发,一般采用Keil 公司的 Vision 系列的集成开发环境。 Vision 开发工具当前的最高版本是 Vision4,它支持汇编语言以及C51 语言的程序设计。本章主要介绍 Vision4 集成开发环境,以及如何运用Vision4 集成开发环境进行单片机程序设计与仿真。Keil Vision 系列是非常优秀的编译器,受到广大单片机设计者的广泛使用。其特点如下: 支持汇编语言、C 语言等多种单片机设计语言; 可视化的文件管理,界面友好; 支持丰富的产品线,除了51 以及兼容的单片机内核外,还增加了对ARM 核产品的支持; 具有完备的编译连接
5、工具; 具备丰富的仿真调试功能,可以仿真并口、串口、定时/计数器、中断、D/A 和A/D 资源; 内嵌RTX-51 实时多任务操作系统; 支持在一个工作空间中进行多项目的程序设计; 支持多极代码优化1.4 本论文的主要内容基于单片机的DS18B20数字温度计设计。单片机蜂鸣器设计。更理解单片机怎样设计电路,理解单片机怎样用,为毕业设计建立了一个基础。2 基于单片机的DS18B20温度传感器用数码管显示温度2.1 DS18B20传感器介绍独特的单线接口仅需一个端口引脚进行通信简单的多点分布应用无需外部器件可通过数据线供电测温范围-55+125,以0.5递增可编程的分辨率为912位,对应的可分辨温
6、度分别为0.5、0.25、0.125和0.0625应用包括温度控制、工业系统、消费品、温度计和任何热感测系统负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作.2. DS18B20外形及引脚说明图3 DS18B20外形及引脚GND:地DQ:单线运用的数据输入/输出引脚VD:可选的电源引脚2.2数码管显示数字的工作原理介绍 数码管是一种常用数字显示原件,其内部是由多个并联的Led 灯构成。按照连接led 的公共端的不同可以分为:共阴极数码管、共阳极数码管两种。数码管按照顺序依次排列,有数学里个位、十位、百位、千位,对应与每一位数码管就有数码管的为选概念,共阳极数码管高电平选通,共阴
7、极数码管低电平选通;对于单个的数码管每一个笔划,国际上有统一的规范,按顺时针顺序排列:a、b、c、d、e、f、g、h 是数码管的段信号。由此差别就晓得数码管的单片机控制方法了。图4.13 数码管示意图首先使用Proteus 绘制数码管显示电路,先添加数码管原件,此处绘制电路选用共阴极数码管。单机键盘P的快捷键调出原件对话框,输入7seg 就可以看到:6 位的数码管单个数码管的形状如上图所示:内部由8 个LED 灯构成,其中HGFEDCBA为段码,由高到低的顺序排列。由于我们使用的是共阴数码管,把段码相应的位置2,同时把公共端(又称位选端)置0,相应的数码管发光。如上显示数字“6”,这相应的段码
8、为0x7d,即二进制01111101.共阴数码管段码显示0F 列举如下:0x3f,0x06,0x5b,0x4f,0x66,/040x6d,0x7d,0x07,0x7f,0x6f,/590x77,0x7c,0x39,0x5e,0x79,/AE2.3电路的连接方法VCC链接到单片机的VCC端口,把GND端口链接到端口,然后端口链接到单片机的.端口。然后把单片机是上面的口链接到数码管,按循序链接到别的。2.4 系统功能方框图本方案设计的系统由单片机系统、温度传感器、数码管显示模块、其总体架构如下图:单片机测温电路时钟、复位电路显示电路驱动电路图1 系统总体方框图系统的程序DS18B20单片机测温度系
9、统程序#include reg52.h#include intrins.h#define SkipRom 0xcc#define ConvertTemperature 0x44#define ReadScratchpad 0xbesbit DQ=P27;unsigned int buffer6;unsigned char code buff12=0X3f,0X06,0X5b,0X4f,0X66, 0X6d,0X7d,0X07,0X7f,0X6f,0x40,0x00 ;/数字09及EP=OC共阴数码管代码 /*延时*/函数名称:void One_Wire_Delay(unsigned char
10、delay_time)/函数功能:延时/函数参数:delay_time/*void One_Wire_Delay(unsigned char delay_time) while(delay_time)delay_time-;/延时时间:=(8+delay_time*6)us;/*初始化*/函数名称:void init_ds18b20(void)/函数功能:初始化DS18B20/函数参数:无/*void init_ds18b20(void) DQ=0;/复位信号 One_Wire_Delay(50);/延时600us DQ=1; One_Wire_Delay(4);/延时30us while(D
11、Q=1); One_Wire_Delay(52);/延时300us DQ=1; _nop_();/*写一个字节*/函数名称:void wr_byte(unsigned int wdata)/函数功能:DS18B20写一个字节/函数参数:wdata/*void wr_byte(unsigned int wdata) unsigned int n; for(n=0;n1; DQ=1; _nop_(); One_Wire_Delay(5);/延时128us /*读一个字节*/函数名称:unsigned int rd_byte(void)/函数功能:DS18B20读一个字节/函数参数:wdata/*u
12、nsigned int rd_byte(void) unsigned int m,bb=0; bit b; for(m=0;m8;m+) DQ=0; _nop_(); DQ=1; b=DQ; One_Wire_Delay(12);/延时70us if(b) bb|=0x011) flag_1=1; else flag_1=0; if(flag_1) msb=msb; lsb=lsb+1; t1=(msb4);/整数部分 t2=(lsb&0x0f)*0.0625*10000; /if(flag) / / t1=t1; / t2=t2+1; / /t2=t2*0.06*100; if(flag_1
13、) buffer0=10;/负数 else buffer0=11; buffer1=t1/100; buffer2=(t1/10)%10; buffer3=t1%10; buffer4=t2/1000; buffer5=(t2%1000)/100; /buffer6=(t2%100)/10; /buffer7=t2%10; /*/*ds18b20显示*/函数名称:void display(void)/函数功能:DS18B20显示/函数参数:无/*void display(void)unsigned int j,b=0xdf,k;for(j=0;j1)|0x80; for(k=0;k5;k+)
14、One_Wire_Delay(60);/延时20us void main(void) while(1) rd_ds18b20(); display() ; 3 单片机蜂鸣器实验51单片机的一个I/O口控制speaker发声,演唱祝你平安歌曲。主要器件以及电路图单片机AT89C51,蜂鸣器speaker。3.2 系统功能图蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,52
15、单片机3.3电路的连接方法原理图见下面图GND链接到实验班上面的GND端口,VCC连接到板子上面的VCC端口,然后把DQ段连接的到P0.4口。然后启动电路下载就可以了。蜂鸣器电路时钟,复位电路单片机蜂鸣器电路的喇叭出歌声蜂鸣器的正极接到VCC(5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。程序中改变单片机P3.7引脚输出波
16、形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变P3.7输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。#include#define uchar unsigned charsbit beep=P04;uchar timer0h,timer0l,time;code uchar sszymmh=6,2,3,5,2,1,3,2,2,1,3,2,6,2,1 ,5,2,1,6,2,4,3,2,2,5,2,1,6,2,1,5,2,2,3,2,2,1,2,1,6,1,1,5,2,1,3,2,1,2,2,4,2,2,3,3,2,1,5,2,
17、2,5,2,1,6,2,1,3,2,2,2,2,2,1,2,4,5,2,3,3,2,1,2,2,1,1,2,1,6,1,1,1,2,1,5,1,6,0,0,0; code uchar FREQH=0xf2,0xf3,0xf5,0xf6,0xf7,0xf8, 0xf9,0xf9,0xfa,0xfa,0xfb,0xfb,0xfc,0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff; code uchar FREQL=0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8
18、C,0xD8,0x68,0xE9,0x5B,0x8F,0xEE,0x44,0x6B,0xB4,0xF4,0x2D,0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16;void delay(uchar t) uchar t1;unsigned long t2;for(t1=0;t1t;t1+)for(t2=0;t28000;t2+);TR0=0;void song()TH0=timer0h;TL0=timer0l;TR0=1;delay(time);void main (void)uchar k,i;TMOD=1;EA=1;ET0=1;while(1)i=0;while(i100)k=sszymmhi+7*sszymmhi+1-1;timer0h=FREQHk;timer0l=FREQLk;time=sszymmhi+2;i=i+3;song();void t0int()interrupt 1TR0=0;beep=!beep;TH0=timer0h;TL0=timer0l;TR0=1;院(部)或教研室意见 学院或教研室主任: 年 月 日
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2