18b20测温数码管显示实验-实验说明文档
十三.DS18B20 测量温度系统
![十三.DS18B20 测量温度系统](https://img.taocdn.com/s3/m/d322f9edb8f67c1cfad6b8ca.png)
十三.DS18B20 测量温度系统[实验任务]用一片DS18B20 构成测温系统,测量的温度精度达到0.1 度,测量的温度的范围在-20度到+50度之间,用4位数码管显示出来。
[硬件电路图][实验原理]DS18B20 数字温度计是DALLAS 公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计。
DS18B20 产品的特点(1)、只要求一个I/O口即可实现通信。
(2)、在DS18B20中的每个器件上都有独一无二的序列号。
(3)、实际应用中不需要外部任何元器件即可实现测温。
(4)、测量温度范围在-55。
C到+125。
C之间。
(5)、数字温度计的分辨率用户可以从9位到12位选择。
(6)、内部有温度上、下限告警设置。
DS18B20详细引脚功能描述1 GND地信号;2 DQ数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源;3 VDD可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
DS18B20的使用方法。
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:初始化时序、读时序、写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
[C语言源程序]#include<reg52.h>code unsigned char seg7code[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //显示段码void Delay(unsigned int tc) //显示延时程序{while( tc != 0 ){unsigned int i;for(i=0; i<100; i++);tc--;}}sbit TMDAT =P3^1; //DS18B20 的数据输入/输出脚DQ,根据情况设定unsigned int sdata;//测量到的温度的整数部分unsigned char xiaoshu1;//小数第一位unsigned char xiaoshu2;//小数第二位unsigned char xiaoshu;//两位小数bit fg=1; //温度正负标志void dmsec (unsigned int count) //延时部分{unsigned char i;while(count--){for(i=0;i<115;i++);}}void tmreset (void) //发送复位{unsigned char i;TMDAT=0; for(i=0;i<103;i++);TMDAT = 1; for(i=0;i<4;i++);}bit tmrbit (void) //读一位//{unsigned int i;bit dat;TMDAT = 0;i++;TMDAT = 1;i++; i++; //微量延时//dat = TMDAT;for(i=0;i<8;i++);return (dat);}unsigned char tmrbyte (void) //读一个字节{unsigned char i,j,dat;dat = 0;for (i=1;i<=8;i++){ j = tmrbit(); dat = (j << 7) | (dat >> 1); } return (dat);}void tmwbyte (unsigned char dat) //写一个字节{unsigned char j,i;bit testb;for (j=1;j<=8;j++){ testb = dat & 0x01;dat = dat >> 1;if (testb){ TMDAT = 0; //写0i++; i++;TMDAT = 1;for(i=0;i<8;i++); }else{ TMDAT = 0; //写0for(i=0;i<8;i++);TMDAT = 1;i++; i++;}}}void tmstart (void) //发送ds1820 开始转换{ tmreset(); //复位dmsec(1); //延时tmwbyte(0xcc); //跳过序列号命令tmwbyte(0x44); //发转换命令44H,}void tmrtemp (void) //读取温度{unsigned char a,b;tmreset (); //复位dmsec (1); //延时tmwbyte (0xcc); //跳过序列号命令tmwbyte (0xbe); //发送读取命令a = tmrbyte (); //读取低位温度b = tmrbyte (); //读取高位温度if(b>0x7f) //最高位为1 时温度是负{a=~a; b=~b+1; //补码转换,取反加一fg=0; //读取温度为负时fg=0}sdata = a/16+b*16; //整数部分xiaoshu1 = (a&0x0f)*10/16; //小数第一位xiaoshu2 = (a&0x0f)*100/16%10;//小数xiaoshu=xiaoshu1*10+xiaoshu2; //小数}void DS18B20PRO(void){ tmstart();//dmsec(5); //如果是不断地读取的话可以不延tmrtemp(); //读取温度,执行完毕温度将存于}void Led(){if(fg==1) //温度为正时显示的数据{ P2=P2&0xef;P0=seg7code[sdata/10]; //输Delay(8); P2=P2|0xf0; P2=P2&0xdf;P0=seg7code[sdata%10]|0x80; //输出个Delay(8); P2=P2|0xf0; P2=P2&0xbf;P0=seg7code[xiaoshu1]; //输出小数点Delay(8); P2=P2|0xf0; P2=P2&0x7f;P0=seg7code[xiaoshu2]; //输出小Delay(4); P2=P2|0xf0;}if(fg==0) //温度为负时显示的数据{ P2=P2&0xef;P0=seg7code[11]; //负号Delay(8); P2=P2|0xf0; P2=P2&0xdf;P0=seg7code[sdata/10]|0x80; //输出十位Delay(8); P2=P2|0xf0; P2=P2&0xbf;P0=seg7code[sdata%10]; //输出个位Delay(8); P2=P2|0xf0; P2=P2&0x7f; P0=seg7code[xiaoshu1]; //输出小Delay(4); P2=P2|0xf0;}}main(){fg=1;while(1){DS18B20PRO(); Led();}}。
18b20测温数码管显示实验--精确到小数点后4位
![18b20测温数码管显示实验--精确到小数点后4位](https://img.taocdn.com/s3/m/feb9fe2001f69e314232940a.png)
18b20测温数码管显示实验--精确到小数点后4位//滑国虎于09.9.20完成////DS18B20的读写程序,数据脚P1.5 ////温度传感器18B20程序,采用器件默认的12位转化 ////最大转化时间750微秒,显示温度-55到+125度,显示精度 // //为0.1度,显示采用4位LED共阳显示测温值 ////P0口为段码输入,P27~P21为位选 ///***************************************************/#include "reg51.h"#include "intrins.h" //_nop_();延时函数用 #define Disdata P0 //段码输出口 #define discan P2 //扫描口 #define uchar unsigned char #define uint unsigned intsbit DQ=P1^5; //温度输入口 sbit DIN=P0^7; //LED小数点控制 uint h;uint temp;//uchar codedis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x bf};//共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮""-"uchar code scan_con[7]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd}; //列扫描控制字uchar data temp_data[2]={0x00,0x00}; //读出温度暂放 uchar data display[7]={0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //显示单元数据,共4个数据和一个运算暂用/*****************11us延时函数*************************///void delay(uint t) //11us{for (;t>0;t--);}///****************DS18B20复位函数************************/ow_reset(void){char presence=1;while(presence){while(presence){DQ=1;_nop_();_nop_();//从高拉倒低DQ=0;delay(50); //550 usDQ=1;delay(6); //66 uspresence=DQ; //presence=0 复位成功,继续下一步}delay(45); //延时500 uspresence=~DQ;}DQ=1; //拉高电平 }/****************DS18B20写命令函数************************/ //向1-WIRE 总线上写1个字节void write_byte(uchar val){uchar i;for(i=8;i>0;i--){DQ=1;_nop_();_nop_(); //从高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_(); //5 usDQ=val&0x01; //最低位移出delay(6); //66 usval=val/2; //右移1位}DQ=1;delay(1);}/****************DS18B20读1字节函数************************/ //从总线上取1个字节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_(); //4 usDQ=1;_nop_();_nop_();_nop_();_nop_(); //4 usif(DQ)value|=0x80;delay(6); //66 us}DQ=1;return(value);}/****************显示扫描函数***************************/ scan(){char k;for(k=0;k<7;k++) //4位LED扫描控制{Disdata=dis_7[display[k]]; //数据显示 P0if (k==2){DIN=0;} //小数点显示 P0.7discan=scan_con[k]; //位选 P2delay(150);discan=0xff;}}/****************读出温度函数************************/ //read_temp(){ow_reset(); //总线复位delay(200);write_byte(0xcc); //发命令write_byte(0x44); //发转换命令ow_reset();delay(1);write_byte(0xcc); //发命令write_byte(0xbe);temp_data[0]=read_byte(); //读温度值的低字节temp_data[1]=read_byte(); //读温度值的高字节temp=temp_data[1];temp=temp&0x0f; //去掉符号位temp=temp<<8; //temp为16位temp=temp|temp_data[0]; // 两字节合成一个整型变量。
DS18B20单总线温度采集实验
![DS18B20单总线温度采集实验](https://img.taocdn.com/s3/m/92fdcb2a78563c1ec5da50e2524de518964bd337.png)
DS18B20单总线温度采集实验一、实验目的1. 熟悉Keil IDE uVision集成开发环境软件的使用方法。
2. 学习DS18B20 单总线温度传感器的使用。
二、实验内容DS18B20 为单总线12 位(二进制)温度读数。
内部有64 位唯一的ID 编码。
工作电压从 3.0~5.5V。
测量温度范围从-55℃~125℃。
高位±0.0625℃分辨率。
三、实验要求1. 数码管显示温度数据,显示百、十、个位并保留一位小数。
2. 画出程序流程图,并独立编写C51程序。
3. 做好实验前预习,完成proteus仿真和实物搭建。
四、实验硬件电路及芯片特性DS18B20 内部框图:温度寄存器格式:DSl8B20 工作过程中的协议如下:初始化ROM 操作命令存储器操作命令处理数据初始化:单总线上的所有处理均从初始化开始。
单片机将总线拉低至少480μs 然后释放总线,DS18B20 检测到上升沿后在等待15~60μs 后拉低总线,说明器件存在。
拉低持续时间为60~240μs。
读写时序:推荐的读时序:DS18B20 的核心功能是直接数字温度传感器。
温度传感器可以配置成9、10、11 和12 位方式。
相应的精度分别为:0.5℃、0.25℃, 0.125℃和0.0625℃。
默认的分辨率为12 位。
DS18B20 在空闲低功耗状态下加电(寄生电源工作方式)。
主机必须发出Convert T [44h]命令使其对测量温度进行A-D 转换。
接下来进行采集转换,结果存于两字节高速温度寄存器并返回到空闲低功耗状态。
如果DS18B20 在外部VDD 供电方式下,单片机可以在发出Convert T 命令并总线为1 时(总线为0 表示正在转换)发出“read time slots”命令。
温度分辩率配置:五、实验步骤1. 在Keil IDE u Vision集成开发环境下建立工程文件,编辑源文件、编译、链接并生成目标文件,仿真调试验证结果。
18B20温度传感器数码管显示
![18B20温度传感器数码管显示](https://img.taocdn.com/s3/m/138fbf3d10661ed9ad51f3a8.png)
南京航空航天大学金城学院课题任务报告题目一个单片机实现温度传感网络并用数码管显示的设计系部自动化系专业自动化学生姓名XXX 学号XXXXXX 指导教师XX 职称XX 毕设地点南京XXXX大学2013年12月14日课题任务书学生姓名XXX 学号XXXXXXX 系部自动化系题目一个单片机实现温度传感网络并用数码管显示的设计题目来源其他题目性质系统设计类别设计个人单篇内容解释:DS18B20是美国DALLAS半导体公司推出的第一片支持“一线总线”接口的温度传感器,它具有微型化,低功耗,高性能,抗干扰能力强,易配微处理器等优点,可直接将温度转化成数字信号处理器处理。
测量的温度范围是—55~125℃,测温误差0.5℃。
可编程分辨率9~12位,对应的可分辨温度分别为0.5℃,0.25℃,0.125℃和0.0625℃。
相较热电偶传感器而言可实现高精度测温。
对热电偶温度传感器来说该项目实现的过程为:靠光敏电阻检测光照的大小,光的改变最终改变电阻的大小,给电阻外加一个电压,就改变了电压的大小,再用PCF8951AD转换器件检测电压的变化并转换为数字信号,再传到单片机上作一定的处理后去控制相应的数码管显示出当时的温度。
而对DS18B20来说过程则简单的多了,热电偶电阻传感器一直到单片机之前的部分都可以用一个DS18B20来代替了,真正的实现了数字化。
单片机后面的部分则两者是一样的!DS18B20与热电阻温度传感器相比价格上,来说要贵出很多!所以在温度的测量精度要求不是很高的话可以选择热电阻温度传感器,实验者应则情而定。
本实验由于就要用到一个DS18B20故此选用DS18B20!对于本次实验的的开发板,DS18B20测得温度数字信号后通过“一线总线”由J10或J48指针用单根杜邦线传输到单片机的P1.3口,P0口接到J3排针,P2.2和P2.3分别接到J2的锁存器。
由单片机内部微处理器处理后发到数码管作出相应的显示!实验步骤:实验之前先看本次实验的开发板(裸板)的样图。
DS18B20温度测量设计实验报告
![DS18B20温度测量设计实验报告](https://img.taocdn.com/s3/m/029814a3910ef12d2af9e77d.png)
课程设计说明书(论文)题目: 温度测量课程名称: 单片机课程设计专业: 电子信息工程班级: 电信0901学生姓名:学号: 31 16 10设计地点: 3#北603指导教师:设计起止时间:2012年5月2日至2012年5月22日目录一、设计功能要求: (3)二、系统总体设计方案: (5)1、基本设计思想: (5)2、实施方案论述: (6)三、系统分析与设计: (6)1、程序流程图及说明 (6)2、温度计的的电路设计 (9)四、源码清单: (12)五、改进意见与收获体会: (18)六、主要参考资料: (19)一、设计功能要求:本次的设计主要是利用了数字温度传感器DS18B20测量温度信号,计算后可以在LCD数码管上显示相应的温度值。
其温度测量范围为-55~125℃,精确到0.5℃。
本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。
数字温度计所测量的温度采用数字显示,控制器使用单片机89C51,测温传感器使用DS18B20,用LCD1602实现温度显示。
从温度传感器DS18B20可以很容易直接读取被测温度值,进行转换即满足设计要求。
本次使用的单片机89C51和MCS-51是完全兼容的,是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器。
其主要特点如下:• 8位CPU。
•工作频率最高为24M。
• 128B数据存储器。
• 4KB程序存储器。
•程序存储器的寻址空间为64KB。
•片外数据存储器的寻址空间为64KB。
• 128个用户位寻址空间。
• 21个字节特殊功能寄存器。
• 4个8位的并行I/O接口:P0、P1、P2、P3。
•两个16位定时/计数器。
•两个优先级别的5个中断源。
• 1个全双工的串行I/O接口,可多机通信。
• 111条指令,喊乘法指令和除法指令。
DS18B20数字温度计设计实验报告(1)【范本模板】
![DS18B20数字温度计设计实验报告(1)【范本模板】](https://img.taocdn.com/s3/m/aa9bc7280c22590103029d83.png)
单片机原理及应用课程设计报告书题目:DS18B20数字温度计姓名: 李成学号:133010220指导老师:周灵彬设计时间: 2015年1月目录1. 引言 (3)1。
1.设计意义31.2。
系统功能要求32。
方案设计 (4)3. 硬件设计 (4)4. 软件设计 (8)5。
系统调试106. 设计总结 (11)7. 附录 (12)8. 参考文献 (15)DS18B20数字温度计设计1.引言1.1. 设计意义在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。
而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持。
其缺点如下:●硬件电路复杂;●软件调试复杂;●制作成本高.本数字温度计设计采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件,测温范围为—55~125℃,最高分辨率可达0。
0625℃。
DS18B20可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的热点。
1.2. 系统功能要求设计出的DS18B20数字温度计测温范围在0~125℃,误差在±1℃以内,采用LED数码管直接读显示.2. 方案设计按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路.数字温度计总体电路结构框图如4。
1图所示:图4.13。
硬件设计温度计电路设计原理图如下图所示,控制器使用单片机AT89C2051,温度传感器使用DS18B20,使用四位共阳LED 数码管以动态扫描法实现温度显示。
AT89C51 主 控制器 DS18B20 显示电路 扫描驱动主控制器单片机AT89C51具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要,很适合便携手持式产品的设计使用.系统可用两节电池供电。
AT89C51的引脚图如右图所示:VCC:供电电压。
DS18B20温度测量与控制实验报告
![DS18B20温度测量与控制实验报告](https://img.taocdn.com/s3/m/a83a459ed1f34693dbef3e0c.png)
课程实训报告《单片机技术开发》专业:机电一体化技术班级: 104201学号: 10420134姓名:杨泽润浙江交通职业技术学院机电学院2012年5月29日目录一、DS18B20温度测量与控制实验目的……………………二、DS18B20温度测量与控制实验说明……………………三、DS18B20温度测量与控制实验框图与步骤……………………四、DS18B20温度测量与控制实验清单……………………五、DS18B20温度测量与控制实验原理图…………………六、DS18B20温度测量与控制实验实训小结………………一、实验目的1.了解单总线器件的编程方法。
2.了解温度测量的原理,掌握 DS18B20 的使用。
二、实验说明本实验系统采用的温度传感器DS18B20是美国DALLAS公司推出的增强型单总线数字温度传感器。
Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
DS18B20测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
DS18B20可以程序设定9~12位的分辨率,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20 内部结构DS18B20 内部结构主要由四部分组成:64 位光刻 ROM、温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器。
DS18B20 的管脚排列如下: DQ 为数字信号输入/输出端;GND 为电源地;VDD 为外接供电电源输入端(在寄生电源接线方式时接地)。
光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该DS18B20 的地址序列码。
温度传感器ds18b20实验报告
![温度传感器ds18b20实验报告](https://img.taocdn.com/s3/m/64f267540a4e767f5acfa1c7aa00b52acec79c53.png)
温度传感器ds18b20实验报告温度传感器DS18B20实验报告引言:温度传感器是一种用于测量环境温度的设备,它在许多领域都有广泛的应用,如气象学、工业控制、冷链物流等。
本实验报告将介绍DS18B20温度传感器的原理、实验装置和实验结果,并对其性能进行评估。
一、实验原理DS18B20温度传感器是一种数字温度传感器,采用单总线接口进行通信。
它采用了最新的数字温度传感器技术,具有高精度、低功耗、抗干扰等特点。
其工作原理是利用温度对半导体材料电阻值的影响,通过测量电阻值的变化来确定温度。
二、实验装置本实验使用的实验装置包括DS18B20温度传感器、Arduino开发板、杜邦线和计算机。
Arduino开发板用于读取传感器的温度数据,并通过串口将数据传输到计算机上进行处理和显示。
三、实验步骤1. 连接电路:将DS18B20温度传感器的VCC引脚连接到Arduino开发板的5V 引脚,GND引脚连接到GND引脚,DQ引脚连接到Arduino开发板的数字引脚2。
2. 编写代码:使用Arduino开发环境编写代码,通过OneWire库和DallasTemperature库读取DS18B20传感器的温度数据。
3. 上传代码:将编写好的代码上传到Arduino开发板上。
4. 监测温度:打开串口监视器,可以看到DS18B20传感器实时的温度数据。
四、实验结果在实验过程中,我们将DS18B20温度传感器放置在不同的环境中,记录了其测得的温度数据。
实验结果显示,DS18B20温度传感器具有较高的精度和稳定性,能够准确地测量环境温度。
五、实验评估本实验评估了DS18B20温度传感器的性能,包括精度、响应时间和抗干扰能力。
实验结果表明,DS18B20温度传感器具有较高的精度,能够在0.5℃的误差范围内测量温度。
响应时间较快,能够在毫秒级别内完成温度测量。
同时,DS18B20温度传感器具有较好的抗干扰能力,能够在干扰环境下保持稳定的测量结果。
温度控制DS18B20器实验
![温度控制DS18B20器实验](https://img.taocdn.com/s3/m/7e26dc2e3169a4517723a37a.png)
温度控制DS18B20器实验DALLAS最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。
一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
DS18B20、DS1822 “一线总线”数字化温度传感器同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
DS1822的精度较差为±2°C 。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
而且新一代产品更便宜,体积更小。
DS18B20、DS1822 的特性DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。
可选更小的封装方式,更宽的电压适用范围。
分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20的性能是新一代产品中最好的!性能价格比也非常出色!DS1822与DS18B20软件兼容,是DS18B 20的简化版本。
省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。
继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。
DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。
DS18B20的内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
用DS18B20测量室温并在数码管上显示
![用DS18B20测量室温并在数码管上显示](https://img.taocdn.com/s3/m/79d6c7c8d15abe23482f4d63.png)
}
while ((IFG1 & OFIFG)); //晶振失效标志仍然存在?
BCSCTL2 |= SELM_2 + SELS; //MCLK和SMCLK选择高频晶振
}
}
if(temper & BIT9)
{
dN[4] += 2;
dN[5] += 3;
if(dN[4] >= 10)
{
dN[4] -= 10;
码管位选变量
uchar cnt = 2;
void Disp_Numb(uint temper);
/****************主函数****************/
void main(void)
{
uchar i;
WDTCTL=WDTPW+WDTHOLD;
/*************************************************
程序功能:用DS18B20测量室温并在数码管上显示。
-------------------------------------------------
测试说明:观察显示温度数值。
*************************************************/
功 能:看门狗定时器中断服务函数,进行数码
管动态扫描
参 数:无
返回值 :无
********************************************/
#pragma vector = WDT_VECTOR
(完整word版)基于单片机的DS18B20设计实验报告
![(完整word版)基于单片机的DS18B20设计实验报告](https://img.taocdn.com/s3/m/33f09548763231126edb117b.png)
第1章引言在日常生活及工农业生产中经常要涉及到温度的检测及控制,传统的测温元件有热点偶,热敏电阻还有一些输出模拟信号得温度传感器,而这些测温元件一般都需要比较多的外部硬件支持。
其硬件电路复杂,软件调试繁琐,制作成本高,阻碍了其使用性。
因此美国DALLAS半导体公司又推出了一款改进型智能温度传感器——DS18B20。
本设计就是用DS18B20数字温度传感器作为测温元件来设计数字温度计。
本设计所介绍的数字温度计与传统温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于测温比较准确得场所,或科研实验室使用。
该设计控制器使用单片机STC89C51,测温传感器使用DS18B20,显示器使用LED.第2章任务与要求2.1测量范围-50~110°C,精确到0.5°C;2.2利用数字温度传感器DS18B20测量温度信号;2.3所测得温度采用数字显示,计算后在液晶显示器上显示相应得温度值;第3章方案设计及论证3.1温度检测模块的设计及论证由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,其中还涉及到电阻与温度的对应值的计算,感温电路比较麻烦。
而且在对采集的信号进行放大时容易受温度的影响出现较大的偏差。
进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,电路简单,精度高,软硬件都以实现,而且使用单片机的接口便于系统的再扩展,满足设计要求。
3.2显示模块的设计及论证LED是发光二极管Light Emitting Diode 的英文缩写。
LED显示屏是由发光二极管排列组成的一显示器件。
18b20 温度热水器控制数码管显示操作说明
![18b20 温度热水器控制数码管显示操作说明](https://img.taocdn.com/s3/m/f7f98de6551810a6f4248601.png)
18b20 温度控制数码管显示操作说明
本设计系统是18b20温度报警系统数码管显示,水温值,设置一个温度值,当低于设定值继电器吸合,控制外接加热装置加热。
高于高温设定温度,继电器断开,停止加热。
1.功能测量温度然后控制继电器输出
2.最左边的按键按下是设定
3.显示带H的是设置一个高温
4.按设定键两下显示带L的是低温
5.右边两个键是加键减键
6.设定好后如果测得的温度小于低温继电器吸合
7.测得的温度大于低温小于高温也吸合
8.大于高温时就断开
9.温度传感器在主控板上用手握住温度传感器就会升温
第一次按下“设定”进入温度设置:
按下“加、减”键可设置高温报警,最高设置成99.0度,
最低可设置成比低温报警高0.1度。
第二次按下“确定键”进入正常温度显示:
1.正常温度显示界面
当前温度11.3度
2.温度设置界面
高混报警值17.4度。
DS18B20实时温度检测实验 DS18B20
![DS18B20实时温度检测实验 DS18B20](https://img.taocdn.com/s3/m/e5b5edeeaeaad1f346933f63.png)
;PWRTE_ENABLE;WDT_ENABLE;OSC_XT
;*****************以下是暂存器的定义*****************************
;主控制器把总线拉低至少480us,
;18B20等待15-60us后,把总线拉低做为返回给控制器的应答信号
BANKSEL TRISA
BCF TRISA,2
BCF STATUS,RP0
BCF DQ
MOVLW0A0H
MOVWF COUNT ;160US
DECFSZ COUNT,1
GOTO $-1 ;拉低480us
BSF E
NOP
BCF E
CALL BUSY ;判忙
RETURN
;**************************判总线忙子程序************************
BUSY
BSF STATUS,RP0
MOVLW 80H
MOVWF TRISC ;数据口最高位置为输入口
BCF STATUS,RP0
DATA_WRITE
WRITE_DATA
MOVWF DAT
BSF E
NOP
BCF E
CALL BUSY
RETURN
;*********************复位DS18B20子程序**************************
RESET_18B20
;根据DATASHEET介绍,写数据时应遵照如下规定:
GOTO $-1
18B20数字温度显示系统
![18B20数字温度显示系统](https://img.taocdn.com/s3/m/dc399f966bec0975f465e27a.png)
CALL T1MS
MOV P0,43H
ORL P0,#40H
MOV TH0,#LOW(65536-10000) ;定时器10MS中断
MOV TL0,#HIGH(65536-10000)
RETI
T1MS: mov r5,#00h ;延时子程序
tt: mov r6,#9
djnz r6,$
;温度转换程序:精确到:0.06 ;
TRANS12:MOV A,30H
ANL A,#0F0H
MOV 3AH,A
MOV A,31H
ANL A,#0FH
ORL A,3AH
SWAP A
MOV B,#10
DIV AB
MOV 43H,A
MOV 42H,B ;
MOV DPTR,#TABB
MOV A,30H
ANL A,#0FH
NOP
NOP
NOP
NOP
NOP
SETB DAT
MOV R6,#30
DJNZ R6,$
RET
;读一位数据程序
READ: SETB DAT ;先复位至少1US产生读起始信号
NOP
NOP
CLR DAT
NOP
NOP
SETB DAT ;置位DAT准备接收数据
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV C,DAT
4、用一条4PIN的排线,把JP22接到P0口的JP51的P0.4,P0.5,P0.6,07四个端口。(即插入P0口的下半部份)。
5、用一条8PIN的排线。把38译码部份的输出端JP25,接到数码管部份的显示位口JP8。
在本系统中,为了简化程序,采用了74LS47(数码管译码)74LS138(三八译码)。即P0口的P0.0,P0.1,P0.2,P0.3四个端口接到74LS47进行硬件数码管译码,然后输出到数码管部分的数据口JP5。P0.4,P0.5,P.0.6三个端口接到74LS138进行38译码,然后输出到数码管的位控制JP8.
扩展实验三:DS18B20温度监测实验
![扩展实验三:DS18B20温度监测实验](https://img.taocdn.com/s3/m/ef048022ccbff121dd3683ac.png)
扩展实验三:DS18B20温度监测实验一、实验目的1、学会看单片机外部接口芯片时序图,根据芯片数据手册编写对应的驱动程序2、掌握DS18B20的使用方法,重点了解单总线通信协议及其时序3、了解DS18B20的内部寄存器的功能4、复习和加强数码管动态扫描原理,并学会一种新的数码管动态扫描方式(定时器扫描数码管),以及keil编译器和proteus仿真软件的使用。
二、实验设备与仪器PC机一台(装有Keil uv4编译器和proteus 7.5仿真软件)、单片机接口实验示教板、编程器三、实验内容在keil上编写DS18B20的驱动程序,能够读取DS18B20内部的温度值,并在数码管上显示出来(由于数码管显示的限制,读取值得温度范围设定为:-9.9—99.9℃)。
四、实验原理(包括实验电路图和程序流程图)DS18B20是用美国DALLAS公司生产的单总线型数字温度传感器,其具有以下特点:·独特的一线接口(ONE-WIRE),只需要一条口线通信;·多点能力,简化了分布式温度传感应用·无需外部元件可用数据总线供电·电压范围为3.0 V至5.5 V 无需备用电源·测量温度范围为-55 ° C至+125 ℃。
·温度传感器可编程的分辨率为9~12位温度转换为12位数字格式最大值为750毫秒·用户可定义的非易失性温度报警设置·应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统引脚图如下:电路图如下:DS18B20内部构成:DS18B20 内部结构主要由四部分组成: 64 位光刻 ROM 、温度传感器、非挥发的温度报警触发器 TH 和 TL 、配置寄存器。
光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该DS18B20 的地址序列码。
64 位光刻 ROM 的排列是:开始 8 位(地址: 28H )是产品类型标号,接着的 48 位是该 DS18B20 自身的序列号,并且每个DS18B20 的序列号都不相同,因此它可以看作是该 DS18B20 的地址序列码;最后 8 位则是前面 56 位的循环冗余校验码( CRC=X8+X5+X4+1 )。
DS18B20数字温度计设计实验报告文档推荐
![DS18B20数字温度计设计实验报告文档推荐](https://img.taocdn.com/s3/m/4e1acb35e97101f69e3143323968011ca300f7c3.png)
DS18B20数字温度计设计实验报告文档推荐本实验旨在设计并实现一款数字温度计,利用DS18B20数字温度传感器测量环境温度并通过LCD1602液晶屏幕实时显示温度值。
实验设计1.材料准备:Arduino UNO控制板LCD1602液晶显示屏面包板、面包线10K电阻2.配置DS18B20数字温度传感器将DS18B20数字温度传感器与Arduino UNO控制板连接。
按下面连接方式进行连接: DS18B20传感器的红色线连接到Arduino UNO的+5V输出端口接完线后在Arduino IDE软件中,依次点击工具-示例-DS18B20-Temperature-Resolution,打开示例程序。
将程序复制到新建文本文件中进行修改,此处我将分辨率改为了12位。
然后将程序上传到Arduino UNO控制板中。
LCD1602液晶显示屏的VO引脚连接到一个10K电位器的中间引脚LCD1602液晶显示屏的D4-D7引脚依次连接到Arduino UNO的数字4-7个针脚4.最终的连接方式将连接完DS18B20数字温度传感器和LCD1602液晶显示屏后的Arduino UNO控制板,和面包板和面包线通过另一个10K电阻连接,其中用到的端口引脚如下:Arduino UNO的5V端口连接了一个10K电阻,这个电阻的另一端通过面包线连接到面包板的一个面包网络面包板的另一个面包网络再通过面包线连接到LCD1602液晶显示屏的K端口最后将设备连接完整后,将实验代码上传到Arduino UNO控制板中,然后就可以通过LCD1602液晶显示屏上实时显示环境温度值。
实验总结通过本次实验,我们成功地实现了数字温度计,并能够通过LCD1602液晶显示屏上实时显示温度值。
实验中温度传感器和LCD显示屏的连接更加直观和清晰,容易理解,实验成功率较高。
通过此次实验,我们学习到了数字温度传感器的连接方式、温度检测方法和温度的精度和分辨率等基本知识,同时也熟悉了Arduino UNO控制板和LCD1602液晶显示屏的使用方法,提高了对物联网应用的理解和掌握,为后续学习打下坚实的基础。
DS18B20温度检测仪表(数码管显示)
![DS18B20温度检测仪表(数码管显示)](https://img.taocdn.com/s3/m/4495e27810661ed9ac51f30f.png)
目录第1章绪论 (1)1.1 选题目的 (1)1.2 设计要求 (1)第2章电路结构及工作原理 (2)2.1 电路方框图 (2)2.1.1 电路图 (2)2.1.2 系统流程 (3)2.2芯片介绍 (5)2.2.1 DS18B20 (5)2.2.1.1 DS18B20的工作原理 (5)2.2.1.2 DS18B20的使用方法 (6)2.2.2 AT89C51 (8)2.2.2.1 AT89C51简介 (8)第3章整机工作原理 (10)第4章系统调试与分析 (12)4.1 系统的调试 (12)4.2系统的分析 (12)结论 (13)收获和体会 (14)致谢 (15)参考文献 (16)附录一元件清单 (17)课程设计任务书年月日第1章绪论1.1 选题目的随着人们生活水平的不断提高,单片机技术已经普及到我们生活,工作,科研等各个领域。
单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
本文利用单片机结合传感器技术开发设计,把传感器理论与单片机实际应用有机结合,详细地讲述了利用温度传感器DS18B20测量环境温度,设置上下报警温度,当温度不在设置范围内是,可以报警。
同时51单片机在现代电子产品中广泛应用以及其技术已经非常成熟,DS18B20可以直接读出被测温度值,而且采用一线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。
1.2 设计要求(1)设计题目和设计指标测量温度范围为0-100℃。
并通过数码管显示(2)设计功能利用DS18B20实现温度采集,并用数码管显示第2章 电路结构及工作原理2.1 电路方框图2.1.1 电路图2.1.2 系统流程图2-3 读DS18B20的子程序图2-4 读转换温度子程序2.2芯片介绍2.2.1 DS18B202.2.1.1 DS18B20的工作原理当DS18B20接收到温度转换命令后,开始启动转换。
DS18B20温度测量设计实验报告2
![DS18B20温度测量设计实验报告2](https://img.taocdn.com/s3/m/4cec467fb8f67c1cfad6b89a.png)
信息工程学院成绩课程设计说明书(论文)题目: 温度测量课程名称: 单片机课程设计专业: 电子信息工程班级: 电信0901学生姓名:学号: 31 16 10设计地点: 3#北603指导教师:设计起止时间:2012年5月2日至2012年5月22日目录一、设计功能要求: (3)二、系统总体设计方案: (5)1、基本设计思想: (5)2、实施方案论述: (6)三、系统分析与设计: (6)1、程序流程图及说明 (6)2、温度计的的电路设计 (9)四、源码清单: (12)五、改进意见与收获体会: (18)六、主要参考资料: (19)一、设计功能要求:本次的设计主要是利用了数字温度传感器DS18B20测量温度信号,计算后可以在LCD数码管上显示相应的温度值。
其温度测量范围为-55~125℃,精确到0.5℃。
本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。
数字温度计所测量的温度采用数字显示,控制器使用单片机89C51,测温传感器使用DS18B20,用LCD1602实现温度显示。
从温度传感器DS18B20可以很容易直接读取被测温度值,进行转换即满足设计要求。
本次使用的单片机89C51和MCS-51是完全兼容的,是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器。
其主要特点如下:•8位CPU。
•工作频率最高为24M。
•128B数据存储器。
•4KB程序存储器。
•程序存储器的寻址空间为64KB。
•片外数据存储器的寻址空间为64KB。
•128个用户位寻址空间。
•21个字节特殊功能寄存器。
•4个8位的并行I/O接口:P0、P1、P2、P3。
•两个16位定时/计数器。
•两个优先级别的5个中断源。
•1个全双工的串行I/O接口,可多机通信。
•111条指令,喊乘法指令和除法指令。
综合实验一 18B20温度采集实验.doc
![综合实验一 18B20温度采集实验.doc](https://img.taocdn.com/s3/m/9d902347af1ffc4ffe47acd1.png)
实验一18B20温度采集实验一、实验目的1. 掌握单片机与1-wire(一线器)的通信原理与编程方法;2. 掌握LED动态显示方法;3.了解温度传感器原理;二、实验原理及实验内容1. 实验原理关于18B20工作原理请读者参考DALLAS公司资料。
89S52控制DS18B20 完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。
必须先启动DS18B20开始转换,再读出温度转换值。
本实验系统挂接一个18B20芯片,可使用默认的12位转换精度,外接供电电源,单片机与18B20接口是用单片机的P2.4。
2.实验内容a.程序要求,参考给出的流程图,在Keil编译环境下变成程序,要求采集温度,如果超出报警温度范围则报警,报警通过实验箱上的蜂鸣器实现,报警温度可以通过键盘设置,最后,生成*.HEX文件。
b.通过ISP将生成的*.HEX文件下载到单片机中,允许程序。
c.观测LCD上的显示温度数据,通过键盘操作控制报警温度。
图8-1 DS18B20温度采集系统流程图三、参考程序//DS18B20温度传感器程序 #include <reg52.h> #define Alarm 10 sbit Beep=P3^4;sbit DQ=P2^4; //数据传输线接单片机的相应的引脚 unsigned char tempL=0,tempH=0; //设全局变量 unsigned char flag=0;unsigned int temperature,negtemper; //温度值保存在temperature 里 unsigned char idata addrdat[2]={0x0,0x0};unsigned char tab[]={0xc0,0xf9,0xa4,0xb0, /* 0 1 2 3 4 */ 0x99,0x92,0x82,0xf8,0x80,0x90}; /* 5 6 7 8 9 */unsigned char tab1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; unsigned char dispbuf[3]={0,0,0}; unsigned char warning=20; bit on=0,off=1;//******************************//延时子程序//**void delay(unsigned int i){ while(i--);}void beep( bit i){ Beep=i;}//*****************************//初始化程序Init_DS18B20(void){ unsigned char x=0;DQ=1; //DQ先置高delay(8); //稍延时DQ=0; //发送复位脉冲delay(85); //延时(>480us)DQ=1; //拉高数据线delay(14); //等待(15~60us)x=DQ; //用X的值来判断初始化有没有成功,18B20存在的话X=0,否则X=1delay(20);} //***********************//读一个字节ReadOneChar(void) //主机数据线先从高拉至低电平1ms以上,再//使数据线升为高电平,从而产生读信号{unsigned char i=0; //每个读周期最短的持续时间为60us,各个读周期//之间必须有1ms以上的高电平恢复期unsigned char dat=0;for (i=8;i>0;i--) //一个字节有8位{DQ=1;delay(1);DQ=0;dat>>=1;DQ=1;if(DQ)dat|=0x80;delay(4);}return(dat);}//***********************//写一个字节WriteOneChar(unsigned char dat){ unsigned char i=0; //数据线从高电平拉至低电平,产生写起始信号。
DS18B20温度测量
![DS18B20温度测量](https://img.taocdn.com/s3/m/9ac60c4cc850ad02de804168.png)
DS18B20温度测量1.实验目的与效果:学习单总线温度传感器的读写,实现对环境温度的测量。
将ds18b20里的温度信息读出,在数码管上显示;显示的样式EP=XX.X℃。
▲ds18b20初始化(复位)时序:▲ds18b20读写时序:▲ds18b20寄存器:提示:DS18B20相关详细信息请查看DS18B20.pdf文档。
2. 原理图:3. 实验板上操作:1)在DS18B20模块区域,用短路冒将P2.7与DQ连接起来。
2)将DS18B20插到三个孔型插座上,说明:之所以不把DS18B20焊牢在板子上,是因为考虑到18B20也是挺贵的温度传感器,你可以做完是实验把DS18B20用于比赛或其他,这样就省掏钱再买一个了。
(不错的选择把)3)将数码管位选拨码开关拨到ON上。
( 请看实物图1)4)把液晶那边的拨码开关全部拨到OFF,也就是不要拨到ON上(看实物图2)5)做完本次实验请将DS18B20拔下,保管好。
4.实物连接图:实物图1:实物图2:5.C语言程序://MCU: AT89S51//晶振:12M#include "AT89X51.h"#include "intrins.h"//common part#define HIGH 1#define LOW 0#define TRUE 1#define ZERO 0#define MSB 0x80//ds18b20 part#define SkipRom 0xcc#define ConvertTemperature 0x44#define ReadScratchpad 0xbe/*******************************************************************/ sbit One_Wire_Bus=P2^7;unsigned char code numcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x86,0x8c,0xb7,0X9C,0XC6};//数字0~9及"EP=OC"共阳数码管代码unsigned char code dot_numcode[]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10};//带数点的0~9共阳数码管代码unsigned char code bitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //数码管位选代码unsigned char dispbuff[8]={14,13,0,0,0,12,11,10};unsigned char timecount;unsigned char disp_bit_count;/********************************************************************/ unsigned char GetScratchpad[2];unsigned char code decimalH[16]={00,06,12,18,25,31,37,43,50,56,62,68,75,81,87,93}; unsigned char code decimalL[16]={00,25,50,75,00,25,50,75,00,25,50,75,00,25,50,75}; unsigned char ResultTemperatureH;unsigned char ResultTemperatureLH,ResultTemperatureLL;unsigned char ResultSignal;/********************************************************************/ void One_Wire_Delay(unsigned char delay_time){while(delay_time)delay_time--;//延时时间:=(8+delay_time*6)us;}//*****初始化DS18B20******/void Initize_One_Wire_Bus(void){One_Wire_Bus=0;One_Wire_Delay(80);//总线拉低488usOne_Wire_Bus=1;One_Wire_Delay(25);//总线拉高158us;}/***********************************************************************//*******************读一个字节ds18b20 *********************************/ unsigned char One_Wire_Read_Byte(void){bit temp_bit;unsigned char i,result=0;for(i=0;i<8;i++){One_Wire_Bus=0;One_Wire_Bus=1;temp_bit=One_Wire_Bus;One_Wire_Delay(9);//延时62 usif(temp_bit)result|=0x01<<i;}return(result); //返回ds18b20值}/*********向ds18b20写一个字节*********************/ void One_Wire_Write_Byte(unsigned char oww_dat){unsigned char i;for(i=0;i<8;i++){One_Wire_Bus=0;if(oww_dat&0x01)One_Wire_Bus=1;One_Wire_Delay(20);// 128 usOne_Wire_Bus=1;oww_dat>>=1;}One_Wire_Delay(10);}/******************************************/void Read_18B20(void){unsigned char tempH,tempL;Initize_One_Wire_Bus();One_Wire_Write_Byte(SkipRom);_nop_();//There is just one DS1820 on the bus;One_Wire_Write_Byte(ConvertTemperature);One_Wire_Delay(5);//Start to convert temperature;Initize_One_Wire_Bus();One_Wire_Write_Byte(SkipRom);_nop_();One_Wire_Write_Byte(ReadScratchpad);GetScratchpad[0]=One_Wire_Read_Byte();//Master samples the LSB temperature from the scratchpad; GetScratchpad[1]=One_Wire_Read_Byte();//Master samples the MSB temperature from the scratchpad;One_Wire_Delay(120);tempH=(GetScratchpad[1]<<4)|(GetScratchpad[0]>>4);tempL=(GetScratchpad[0]&0x0f);Initize_One_Wire_Bus();//Issue a reset to terminate left parts;if(tempH&0x80){tempH=~tempH;tempL=~tempL+1;ResultSignal=1;//Negative temperature;}ResultTemperatureH=tempH;ResultTemperatureLL=decimalL[tempL];ResultTemperatureLH=decimalH[tempL];//Result of temperature;}//Read the byte0 and byte1 from scratchpad;/***********************************************************************/void main(void){TMOD=0x01; //使用定时器0,选择方式1(16位定时器)TH0=(65536-3000)/256; //定时3MS初值TL0=(65536-3000)%256;ET0=1; //开定时器0溢出中断EA=1; //开总中断Initize_One_Wire_Bus();TR0=1; //开定时器0while(TRUE ){if(timecount==10) //每30ms采样一次温度,可以修改采样时间{timecount=0;Read_18B20();dispbuff[4]=((ResultTemperatureH%100)/10); //温度十位dispbuff[3]=(ResultTemperatureH%10); //温度个位dispbuff[2]=(ResultTemperatureLH/10); //温度小数位}}}/*********3MS中断服务程序*************/void t0(void) interrupt 1{TH0=(65536-3000)/256;TL0=(65536-3000)%256;timecount++;if(disp_bit_count==3)P0=dot_numcode[dispbuff[disp_bit_count]];elseP0=numcode[dispbuff[disp_bit_count]];P1=bitcode[disp_bit_count];disp_bit_count++;if(disp_bit_count==8)disp_bit_count=0;}。