搜档网
当前位置:搜档网 › 基于DS18B20STC89C52单片机LCD1602液晶显示测温系统C程序完整版-精品

基于DS18B20STC89C52单片机LCD1602液晶显示测温系统C程序完整版-精品

基于DS18B20STC89C52单片机LCD1602液晶显示测温系统C程序完整版-精品
基于DS18B20STC89C52单片机LCD1602液晶显示测温系统C程序完整版-精品

基于ds18b20 STC89c52单片机测温系统LCD1602液晶显示

(C程序完整版)

温度传感器的种类众多,在应用与高精度、高可靠性的场合时 DALLAS(达拉斯)公司生产的 DS18B20 温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得 DS18B20 更受欢迎。对于我们普通的电子爱好者来说,DS18B20 的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。了解其工作原理和应用可以拓宽您对单片机开发的思路。如果要更全的资料请搜索“完整的ds18b20中文资料.pdf “。

DS18B20 的主要特征:

…全数字温度转换及输出。

…先进的单总线数据通信。

…最高 12 位分辨率,精度可达土 0.5摄氏度。

… 12 位分辨率时的最大工作周期为 750 毫秒。

…可选择寄生工作方式。

…检测温度范围为–55°C ~+125°C (–67°F ~+257°F)

…内置 EEPROM,限温报警功能。

… 64 位光刻 ROM,内置产品序列号,方便多机挂接。

…多样封装形式,适应不同硬件系统。

DS18B20 引脚功能:

·GND 电压地·DQ单数据总线·VDD电源电压·NC空引脚

DS18B20 工作原理及应用:

DS18B20 的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测

和数据处理。在讲解其工作流程之前我们有必要了解 18B20的内部存储器资源。18B20 共有2种形态的存储器资源,它们分别是:

1> ROM 只读存储器,用于存放 DS18B20ID 编码,其前 8 位是单线系列编码(DS18B20 的编码是19H),后面48 位是芯片唯一的序列号,最后 8位是以上 56的位的 CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20 共 64 位 ROM。

2> RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20 共9 个字节 RAM,每个字节为 8 位。第1、2 个字节是温度转换后的数据值信息,第 3、4 个字节是用户 EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第 5 个字节则是用户第 3 个 EEPROM的镜像。第 6、7、8 个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第 9 个字节为前 8个字节的 CRC码。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据, DS18B20共3位EEPROM,并在 RAM 都存在镜像,以方便用户操作。

下面是基于ds18b20 STC89c52单片机测温系统LCD1602液晶显示C程序(完整版)

#include

#define uchar unsigned char

#define uint unsigned int

sbit DQ=P3^7;//ds18b20与单片机连接口

sbit RS=P3^0;

sbit RW=P3^1;

sbit EN=P3^2;

unsigned char code str1[]={"temperature: "};

unsigned char code str2[]={" "};

uchar data disdata[5];

uint tvalue;//温度值

uchar tflag;//温度正负标志

/*************************lcd1602程序**************************/

void delay1ms(unsigned int ms)//延时1毫秒(不够精确的){unsigned int i,j;

for(i=0;i

for(j=0;j<100;j++);

}

void wr_com(unsigned char com)//写指令//

{ delay1ms(1);

RS=0;

RW=0;

EN=0;

P2=com;

delay1ms(1);

EN=1;

delay1ms(1);

EN=0;

}

void wr_dat(unsigned char dat)//写数据//

{ delay1ms(1);;

RS=1;

RW=0;

EN=0;

P2=dat;

delay1ms(1);

EN=1;

delay1ms(1);

EN=0;

}

void lcd_init()//初始化设置// {delay1ms(15);

wr_com(0x38);delay1ms(5);

wr_com(0x08);delay1ms(5);

wr_com(0x01);delay1ms(5);

wr_com(0x06);delay1ms(5);

wr_com(0x0c);delay1ms(5);

}

void display(unsigned char *p)//显示// {

while(*p!='\0')

{

wr_dat(*p);

p++;

delay1ms(1);

}

}

init_play()//初始化显示

{ lcd_init();

wr_com(0x80);

display(str1);

wr_com(0xc0);

display(str2);

}

/******************************ds1820程序***************************************/

void delay_18B20(unsigned int i)//延时1微秒

{

while(i--);

}

void ds1820rst()/*ds1820复位*/

{ unsigned char x=0;

DQ = 1; //DQ复位

delay_18B20(4); //延时

DQ = 0; //DQ拉低

delay_18B20(100); //精确延时大于480us DQ = 1; //拉高

delay_18B20(40);

}

uchar ds1820rd()/*读数据*/

{ unsigned char i=0;

unsigned char dat = 0;

for (i=8;i>0;i--)

{ DQ = 0; //给脉冲信号

dat>>=1;

DQ = 1; //给脉冲信号

if(DQ)

dat|=0x80;

delay_18B20(10);

}

return(dat);

}

void ds1820wr(uchar wdata)/*写数据*/ {unsigned char i=0;

for (i=8; i>0; i--)

{ DQ = 0;

DQ = wdata&0x01;

delay_18B20(10);

DQ = 1;

wdata>>=1;

}

}

read_temp()/*读取温度值并转换*/ {uchar a,b;

ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/

ds1820wr(0x44);//*启动温度转换*/ ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/

ds1820wr(0xbe);//*读取温度*/

a=ds1820rd();

b=ds1820rd();

tvalue=b;

tvalue<<=8;

tvalue=tvalue|a;

if(tvalue<0x0fff)

tflag=0;

else

{tvalue=~tvalue+1;

tflag=1;

}

tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数return(tvalue);

}

/****************************************************** *************/

void ds1820disp()//温度值显示

{ uchar flagdat;

disdata[0]=tvalue/1000+0x30;//百位数

disdata[1]=tvalue%1000/100+0x30;//十位数

disdata[2]=tvalue%100/10+0x30;//个位数

disdata[3]=tvalue%10+0x30;//小数位

if(tflag==0)

flagdat=0x20;//正温度不显示符号

else

flagdat=0x2d;//负温度显示负号:-

if(disdata[0]==0x30)

{disdata[0]=0x20;//如果百位为0,不显示

if(disdata[1]==0x30)

{disdata[1]=0x20;//如果百位为0,十位为0也不显示}

}

wr_com(0xc0);

wr_dat(flagdat);//显示符号位

wr_com(0xc1);

wr_dat(disdata[0]);//显示百位

wr_com(0xc2);

wr_dat(disdata[1]);//显示十位

wr_com(0xc3);

wr_dat(disdata[2]);//显示个位

wr_com(0xc4);

wr_dat(0x2e);//显示小数点

wr_com(0xc5);

wr_dat(disdata[3]);//显示小数位

}

/********************主程序***********************************/

void main()

{ init_play();//初始化显示

while(1)

{read_temp();//读取温度

ds1820disp();//显示

}

}

If tvalue>定值,冷水==1,p3^3

If tvalue<定值,热水==1.p3^4

三极管放大原理,电磁阀接12v电压

Proteus仿真原理图

LCD1602汇编显示程序

;1602显示ABC LCD_RS EQU P2.5 LCD_RW EQU P2.6 LCD_EN EQU P2.7 LCD_DATA EQU P3 ;----------------- ORG0000H JMP START ORG0030H ;----------------- LCD: CALL LCD_INIT MOV A, #80H CALL LCD_WCMD MOV A, #'A' CALL LCD_WDATA MOV A, #'B' CALL LCD_WDATA MOV A, #'C' CALL LCD_WDATA AJMP$ ;---------------- DELAY5MS: MOV R6, #10 DL1:DJNZ R7, $ DJNZ R6, DL1 RET ;---------------- LCD_INIT: CALL DELAY5MS MOV A, #38H CALL LCD_WCMD CALL DELAY5MS

CALL DELAY5MS MOV A, #06H CALL LCD_WCMD MOV A, #01H CALL LCD_WCMD MOV A, #0CH CALL LCD_WCMD RET ;===================================== LCD_WCMD: CALL CHECKBUSY CLR LCD_RS JMP W_LCD ;---------------- LCD_WDATA: CALL CHECKBUSY SETB LCD_RS W_LCD: CLR LCD_RW MOV LCD_DATA, A SETB LCD_EN NOP CLR LCD_EN RET ;---------------- CHECKBUSY: PUSH ACC MOV LCD_DATA, #255 CLR LCD_RS SETB LCD_RW BUSYLOOP: SETB LCD_EN NOP MOV A, LCD_DATA CLR LCD_EN JB ACC.7, BUSYLOOP POP ACC RET

基于单片机的液晶显示

滨江学院 学年论文 题目基于单片机的液晶显示 院系自动控制系 专业电气工程与自动化学生姓名 学号 指导教师 二零一三年十二月二十五号

目录 1.引言 (1) 2.现状 (1) 3.主要目的 (2) 4.实现方案和步骤 (2) 4.1 KS0108 (2) 4.1.1 KS0108特点 (2) 4.1.2 KS0108的引脚功能 (3) 4.1.3 KS0108的指令系统 (4) 4.2 图形点阵式液晶显示控制 (5) 4.3汉字编码原则 (8) 4.4程序实现流程 (9) 5.实验结果及结果讨论 (10) 6.结论 (11) 7.参考文献 (11) 8.附件 (12)

南京信息工程大学滨江学院学年论文 基于单片机的液晶显示 南京信息工程大学滨江学院自动控制系,南京 210044 摘要:本文围绕设计以单片机作为LCD液晶显示系统控制器为主线,基于单片机8051,采用的液晶显示控制器的芯片是SED1520,主要实现中文显示、滚屏以及左右移动功能。同时也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明,着重介绍了本系统应用的各硬件接口技术和各个接口模块的功能及工作过程,并详细阐述了程序的各个模块。 关键字:单片机、液晶显示、8051、SED1520 1、引言 单片机液晶显示系统主要是指单片机以及由单片机驱动的点阵式液晶显示屏所组成的一个显示系统[1]。我们在许多地方可以看到LCD显示屏的应用,例如空调,车内广告,冰箱和显示仪表盘等等,它们都是一个小型的单片机控制液晶显示系统。在日常生活中,我们也可以看到一些类似的由单片机控制的显示系统,如火车站售票大厅的候车信息显示屏,在这些屏幕上,可以显示各种不同的图形、汉字等,并且可以实现上下滚屏与左右移动等。这就是在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示汉字,需要能够显示更丰富信息和通用性较强的显示器,便于开发和应用,并要求其体积小、重量轻、功耗小。图形点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕画面滚动等功能,是信息处理、信息输出的重要手段之一,具有广泛的应用前景[2]。我选择的单片机液晶显示系统的开发,是基于KS0108液晶显示控制器,在C8051F020单片机实验系统上实现KS0108是点阵型液晶显示控制器,利用单片机控制液晶显示系统的原理,完成单片机液晶显示系统的设计。 2、现状 液晶显示器具有功耗低、体积小、重量轻、超薄等许多其它显示器无法相比的优点。近年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品当中。液晶显示器分为字符型LCD显示模块和点阵型LCD显示模块。字符型LCD是一种用5×7点阵图形来显示字符的

单片机之LCD显示原理

5.自制单片机之五LCD1602的驱动 LCD1602已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,定义如下表所示: 字符型LCD的引脚定义 HD44780内置了DDRAM、CGROM和CGRAM。 DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表: 也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码就行了。但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下: DDRAM地址与显示位置的对应关系 我们知道文本文件中每一个字符都是用一个字节的代码记录的。一个汉字是用两个字节的代码记录。在PC上我们只要打开文本文件就能在屏幕上看到对应的字符是因为在操作系统里和BIOS里都固化有字符字模。什么是字模?就代表了是在点阵屏幕上点亮和熄灭的信息数据。例如“A” 字的字模: 01110 ○■■■○ 10001 ■○○○■ 10001 ■○○○■ 10001 ■○○○■ 11111 ■■■■■ 10001 ■○○○■

10001 ■○○○■ 上图左边的数据就是字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。看出是个“A”字了吗?在文本文件中“A”字的代码是41H,PC收到41H的代码后就去字模文件中将代表A字的这一组数据送到显卡去点亮屏幕上相应的点,你就看到“A”这个字了。 刚才我说了想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码41H就行了,可41H这一个字节的代码如何才能让LCD模块在屏幕的阵点上显示“A”字呢?同样,在LCD模块上也固化了字模存储器,这就是CGROM和CGRAM。 HD44780内置了192个常用字符的字模,存于字符产生器CGROM(Character Generator ROM)中,另外还有8个允许用户自定义的字符产生RAM,称为CGRAM(Character Generator RAM)。下图说明了CGROM和CGRAM与字符的对应关系。 从上图可以看出,“A”字的对应上面高位代码为0100,对应左边低位代码为0001,合起来就是01000001,也就是41H。可见它的代码与我们PC中的字符代码是基本一致的。因此我们在向DDRAM写C51字符代码程序时甚至可以直接用P1='A'这样的方法。PC在编译时就把“A”先转为41H代码了。 字符代码0x00~0x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。后面我会详细说的。 0x20~0x7F为标准的ASCII码,0xA0~0xFF为日文字符和希腊文字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义。 那么如何对DDRAM的内容和地址进行具体操作呢,下面先说说HD44780的指令集及其设置说明,请浏览该指令集,并找出对DDRAM的内容和地址进行操作的指令。 共11条指令: 1.清屏指令 功能:<1> 清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H; <2> 光标归位,即将光标撤回液晶显示屏的左上方; <3> 将地址计数器(AC)的值设为0。 2.光标归位指令 功能:<1> 把光标撤回到显示器的左上方; <2> 把地址计数器(AC)的值设置为0; <3> 保持DDRAM的内容不变。

基于单片机的温度测量系统设计

基于STC单片机的温度测量系统的研究 摘要:本文针对现有温度测量方法线性度、灵敏度、抗振动性能较差的不足,提出了一种基于STC单片机,采用Pt1000温度传感器,通过间接测量铂热电阻阻值来实现温度测量的方案。重点介绍了,铂热电阻测量温度的原理,基于STC实现铂热电阻阻值测量,牛顿迭代法计算温度,给出了部分硬件、软件的设计方法。实验验证,该系统测量精度高,线性好,具有较强的实时性和可靠性,具有一定的工程价值。 关键词:STC单片机、Pt1000温度传感器、温度测量、铂热电阻阻值、牛顿迭代法。 Study of Temperature Measurement System based on STC single chip computer Zhang Yapeng,Wang Xiangting,Xu Enchun,Wei Maolin Abstract:A method to achieve temperature Measurement by the Indirect Measurement the resistance of platinum thermistor is proposed. It is realized by the single chip computer STC with Pt1000temperature sensor.The shortcomings of available methods whose Linearity, Sensitivity, and vibration resistance are worse are overcame by the proposed method. This paper emphasizes on the following aspects:the principle of temperature measurement by using platinum thermistor , the measurement of platinum thermistor’s resistance based on STC single chip computer, the calculating temperature by Newton Iteration Method. Parts of hardware and software are given. The experimental results demonstrate that the precision and linearity of the method is superior. It is also superior in real-time character and reliability and has a certain value in engineering application. Keywords: STC single chip computer,Pt1000temperature sensor,platinum thermistor’s resistance,Newton Iteration Method 0 引言 精密化学、生物医药、精细化工、精密仪器等领域对温度控制精度的要求极高,而温度控制的核心正是温度测量。 目前在国内,应用最广泛的测温方法有热电偶测温、集成式温度传感器、热敏电阻测温、铂热电阻测温四种方法。 (1) 热电偶的温度测量范围较广,结构简单,但是它的电动势小,灵敏度较差,误差较大,实际使用时必须加冷端补偿,使用不方便。 (2) 集成式温度传感器是新一代的温度传感器,具有体积小、重量轻、线性度好、性能稳定等优点,适于远距离测量和传输。但由于价格相对较为昂贵,在国内测温领域的应用还不是很广泛。 (3) 热敏电阻具有灵敏度高、功耗低、价格低廉等优点,但其阻值与温度变化成非线性关系,在测量精度较高的场合必须进行非线性处理,给计算带来不便,此外元件的稳定性以及互换性较差,从而使它的应用范围较小。 (4)铂热电阻具有输出电势大、线性度好、灵敏度高、抗振性能好等优点。虽然它 的价格相对于热敏电阻要高一些,但它的综合性能指标确是最好的。而且它在0~200°C范

单片机实验lcd显示实验

实验19 LCD显示实验 一、实验目的: 学习液晶显示的编程方法,了解液晶显示模块的工作原理。 掌握液晶显示模块与单片机的接口方法。 二、所需设备 CPU挂箱、8031CPU模块 三、实验内容 编程实现在液晶显示屏上显示中文汉字“北京理工达盛科技有限公司”。四、实验原理说明 五、实验步骤 1、实验连线 8255的PA0~PA7接DB0~DB7,PC7接BUSY,PC0接REQ,CS8255接CS0。 2、运行实验程序,观察液晶的显示状态。 六、程序框图 七、程序清单

八、附:点阵式LCD模块 点阵式LCD模块由一大一小两块液晶模块组成。两模块均由并行的数据接口和应答信号接口两部分组成,电源由接口总线提供。 (1)OCMJ2×8液晶模块介绍及使用说明 OCMJ中文模块系列液晶显示器内含 GB 2312 16*16点阵国标一级简体汉字和ASCII8*8(半高)及8*16(全高)点阵英文字库,用户输入区位码或 ASCII 码即可实现文本显示。 OCMJ中文模块系列液晶显示器也可用作一般的点阵图形显示器之用。提供有位点阵和字节点阵两种图形显示功能,用户可在指定的屏幕位置上以点为单位或以字节为单位进行图形显示。完全兼容一般的点阵模块。 OCMJ中文模块系列液晶显示器可以实现汉字、ASCII 码、点阵图形和变化曲线的同屏显示,并可通过字节点阵图形方式造字。 本系列模块具有上/下/左/右移动当前显示屏幕及清除屏幕的命令。一改传统的使用大量的设置命令进行初始化的方法,OCMJ 中文模块所有的设置初始化工作都是在上电时自动完成的,实现了“即插即用”。同时保留了一条专用的复位线供用户选择使用,可对工作中的模块进行软件或硬件强制复位。规划整齐的10个用户接口命令代码,非常容易记忆。标准用户硬件接口采用REQ/BUSY 握手协议,简单可靠。 1)表—1:OCMJ2X8(128X32)引脚说明 硬件接口 接口协议为请求/应答(REQ/BUSY)握手方式。应答BUSY 高电平(BUSY =1)表示 OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。发送命令到 OCMJ可在BUSY =0 后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平REQ 信号(REQ =1)通知OCMJ请求处理当前数据线上的命令或数据。OCMJ模块在收到外部的REQ高电平信号后立即读取数据线上的命令或数据,同时将应答线BUSY变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线BUSY是否为低(BUSY =0?),如果BUSY =0,表明模块对用户的写操作已经执行完毕。可以再送下一个数据。如向模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需5个字节,模块在接收到最后一个字节后才开始执行整个命令的内

根据C51单片机的键盘及LCD显示

基于C51单片机的键盘及LCD显示 一、实验目的 1.掌握矩阵式键盘的数字键和功能键的编程方法。 2.掌握LCD的接口技术和编程方法。 3.掌握仪器监控程序设计和调试方法。 二、预习与参考 1. 结合ST7920 控制器系列中文图形液晶模块有关资料手册,详细了解ST7920接口设计技术。 2. 参考资料 1)实验板说明书 2)ST7920 控制器系列中文图形液晶模块资料手册 三、设计指标 利用实验板上提供的键盘电路,LCD显示电路,设计一人机界面,能实现以下功能: 1.LCD上显示“重庆科技学院” 2.按键至少包括0-9的数字键 3.LCD显示按键值 4.电子钟显示:时,分,秒(选作) 四、实验要求 1.以单片机为核心,设计4*4非编码键盘及LCD的硬件电路,画出电路原理图。 2.设计4*4非编码键盘及LCD的控制软件,画出流程图,编写控制程序。

五、实验仪器设备和材料清单 单片机实验板、连接导线、ST7920图形液晶模块、PC机; Keil c51软件 六、实验设计及实施的指导 1.实验课前布置实验任务,提出实验要求,预习相关资料,完成硬件草图设计和软件流程图备查。 2.经指导教师检查,预习达到要求者进入实验室实验。 3.按照设计的电路连线,构建键盘及显示系统,经检查无误方可进入下一步。 4.在指导教师指导下调试LCD显示程序。 5.在指导教师指导下调试按键程序。 6.综合调试直到满足设计要求。 七、实验成绩评定方法 实验成绩包括预习、实验完成质量、实验报告质量4部分组成,各部分所占比例分别为30%、30%、40%。 八、实验报告要求 1.实验报告格式: 一.实验名称 二.实验目的 三.实验内容 四.设计思想 五.硬件设计 六.程序代码

基于单片机的温度测量系统

基于51单片机的温度测量系统 来源:微计算机信息作者:赵娜赵刚于珍珠郭守清 摘要: 单片机在检测和控制系统中得到广泛的应用, 温度则是系统常需要测量、控制和保持的一个量。本文从硬件和软件两方面介绍了AT89C2051单片机温度控制系统的设计,对硬件原理图和程序框图作了简洁的描述。 关键词: 单片机AT89C2051;温度传感器DS18B20;温度;测量 引言 单片机在电子产品中的应用已经越来越广泛,并且在很多电子产品中也将其用到温度检测和温度控制。为此在本文中作者设计了基于atmel公司的AT89C2051的温度测量系统。这是一种低成本的利用单片机多余I/O口实现的温度检测电路, 该电路非常简单, 易于实现, 并且适用于几乎所有类型的单片机。 一.系统硬件设计 系统的硬件结构如图1所示。 数据采集 数据采集电路如图2所示, 由温度传感器DS18B20采集被控对象的实时温度, 提供给AT89C2051的口作为数据输入。在本次设计中我们所控的对象为所处室温。当然作为改进我们可以把传感器与电路板分离,由数据线相连进行通讯,便于测量多种对象。 DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达℃,被测温度用符号扩展的16位数字量方式串行输出,支持3V~的电压范围,使系统设计更灵活、方便;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20使电压、特性有更多的选择,让我们可以构建适合自己的经济的测温系统。如图2所示DS18B20的2脚DQ为数字信号输入/输出端;1脚GND为电源地;3脚VDD为外接供电电源输入端。 AT89C2051(以下简称2051)是一枚8051兼容的单片机微控器,与Intel的MCS-51完全兼容,内藏2K的可程序化Flash存储体,内部有128B字节的数据存储器空间,可直接推动LED,与8051完全相同,有15个可程序化的I/O点,分别是P1端口与P3端口(少了)。 接口电路 图2 单片机2051与温度传感器DS18B20的连接图 接口电路由ATMEL公司的2051单片机、ULN2003达林顿芯片、4511BCD译码器、串行EEPROM24C16(保存系统参数)、MAX232、数码管及外围电路构成, 单片机以并行通信方式从~口输出控制信号,通过4511BCD译码器译码,用2个共阴极LED静态显示温度的十位、

基于51单片机的LCD1602显示程序模块

这个是我自己编写的基于51单片机控制lcd602显示的库函数,请下载我的头文件,在网上本人还分享了很多热门模块的库函数,都是现成的,欢迎下载!!!! /************************************************************************ 1,先初始化1602:lcd_init(); 2,调整显示位置:lcd_pos(hang,lie); 3,送显示:lcd_wdat(uchar dat);显示字符 lcd_show(uchar dis[]);显示字符串 4,清屏为:lcd_wcmd(0x01); //清除lcd内容 delay12_ms(2); 注: 显示的时候必须传送对应的ASK码 显示字符串的时候如果超过本行显示范围不会自动跳到第二行占用了P0和P25,P26,P27 同时包含delay.c文件必须 ************************************************************************/ #include "myconfig.h" #include "delay.h" #define LCD_RS P26 //1602的命令和数据选择端 #define LCD_RW P25 //1602的读写控制端 #define LCD_EP P27 //1602是能信号 #define LCD_DATE P0 //1602的数据传输或命令端口 /****************(外部不操作)测忙程序************************/ uchar lcd_bz() { uchar result; LCD_RS =0; LCD_RW =1; LCD_EP =1; _nop_(); _nop_(); _nop_(); _nop_(); result =(P0 &0x80); LCD_EP =0; return result;//返回结果,1为忙,0位空闲 } /****************(外部不操作)写命令函数************************/ void lcd_wcmd(int cmd) { while(lcd_bz()); LCD_RS =0; LCD_RW =0;

lcd1602按键显示程序

#include<> #include<> //包含_nop_()函数定义的头文件 typedef unsigned int uint ; typedef unsigned char uchar ; sbit RS=P2^0; //寄存器选择位,将RS位定义为引脚 sbit RW=P2^1; //读写选择位,将RW位定义为引脚 sbit E=P2^2; //使能信号位,将E位定义为引脚 sbit BF=P0^7; //忙碌标志位,,将BF位定义为引脚 " uchar keyscan(); void delay1ms(); void delay(unsigned char n); unsigned char BusyTest(void); void WriteInstruction (unsigned char dictate); void WriteAddress(unsigned char x); … void WriteData(unsigned char y); void LcdInitiate(void); void delay1ms() { unsigned char i,j; for(i=0;i<10;i++) for(j=0;j<33;j++); } ! void delay(unsigned char n) { unsigned char i; for(i=0;i

基于AT89C51单片机的测温系统

引言 本文主要介绍了一个基于AT89C51单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器DS18B20的数据采集过程,并介绍了利用C语言编程对DS18B20的访问,该系统可以方便的实现实现温度采集和显示,使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点。DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量。 数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温精确、功能多样话等优点。其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用STC89C52单片机作控制器,数字温度传感器DS18B20测量温度,单片机接受传感器输出,经处理用LED数码管实现温度值显示。

一、设计要求 通过基于MCS-51系列单片机AT89C51和DS18B20温度传感器检测温度,熟悉芯片的使用,温度传感器的功能,数码显示管的使用,C语言的设计;并且把我们这一年所学的数字和模拟电子技术、检测技术、单片机应用等知识,通过理论联系实际,从题目分析、电路设计调试、程序编制调试到传感器的选定等这一完整的实验过程,培养了学生正确的设计思想,使学生充分发挥主观能动性,去独立解决实际问题,以达到提升学生的综合能力、动手能力、文献资料查阅能力的作用,为毕业设计和以后工作打下一个良好的基础。 以MCS-51系列单片机为核心器件,组成一个数字温度计,采用数字温度传感器DS18B20为检测器件,进行单点温度检测,检测精度为?摄氏度。温度显示采用3位LED数码管显示,两位整数,一位小数。具有键盘输入上下限功能,超过上下限温度时,进行声音报警。 二、基本原理 原理简述:数字温度传感器DS1820把温度信息转换为数字格式;通过“1-线协议”,单片机获取指定传感器的数字温度信息,并显示到显示设备上。通过键盘,单片机可根据程序指令实现更灵活的功能,如单点检测、轮转检测、越限检测等。基于DS1820数字温度传感器的温度检测及显示的系统原理图如图 图基于DS1820的温度检测系统框图 三:主要器件介绍(时序图及各命令序列,温度如何计算等) 系统总体设计框图 由于DS18B20数字温度传感器具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠,所以在该设计中采用DS18B20数字温度传感器测量温度。 测温电路设计总体设计框图如图所示,控制器采用单片机AT89S52,温度 传感器采用DS18B20,显示采用4位LED数码管,报警采用蜂鸣器、LED灯实 现,键盘用来设定报警上下限温度。

实验八单片机液晶显示实验

实验八单片机液晶显示实验 一、实验目的 1、了解液晶显示屏的控制原理及方法。 2、了解点阵汉字的显示原理。 二、实验说明 1、利用实验上的液晶显示屏电路,编写程序控制显示,输出汉字。 2、本实验仪采用的液晶显示屏内置控制器为SED1520,点阵为122x32,需要两片SED1520组成,由E1、E2分别选通,以控制显示屏的左右两半屏。图形液晶显示模块有两 种连接方式。一种为直接访问方式,一种为间接控制方式。本实验仪采用直接控制方式。 三、实验仪器 计算机 伟福实验箱(lab2000P ) 四、实验内容 1、利用实验上的液晶显示屏电路,编写程序控制显示,输出汉字。 2、本实验仪采用的液晶显示屏内置控制器为SED1520,点阵为122x32,需要两片SED1520组成,由E1、E2分别选通,以控制显示屏的左右两半屏。图形液晶显示模块有两 种连接方式。一种为直接访问方式,一种为间接控制方式。本实验仪采用直接控制方式。 3、直接控制方式就是将液晶显示模块的接口作为存储器或I/O设备直接挂在计算机总线上。计算机通过地址译码控制E1和E2的选通;读/写操作信号R/W由地址线A1控制;命令/数据寄存器选择信号AO由地址线A0控制。实际电路如上图所示。地址映射 如下(地址中的X由LCD CS决定,可参见地址译码部分说明) 五、思考题 1、显示自己的班级和姓名; 2、可以动态显示,上下或者左右移动; 六、源程序修改原理及其仿真结果 CWADD1 EQU 08000H ;写指令代码地址(E1) DWADD1 EQU 08001H ;写显示数据地址(E1) CRADD1 EQU 08002H ;读状态字地址(E1) DRADD1 EQU 08003H ;读显示数据地址(E1) CWADD2 EQU 08004H ;写指令代码地址(E2) DWADD2 EQU 08005H ;写显示数进地址(E2) CRADD2 EQU 08006H ;读状态字地址(E2) DRADD2 EQU 08007H ;读显示数据地址(E2) PD1 EQU 3DH ;122/2 分成左右两半屏122x32 COLUMN EQU 30H PAGE_ EQU 31H ;页地址寄存器D1,DO:页地址 CODE_ EQU 32H ;字符代码寄存器 COUNT EQU 33H ;计数器 DIR equ 34h dtp1 equ 35h

基于单片机测温系统意义

摘要 目前,在自动控制领域用温度作为一种控制量对系统进行自动控制已经越来越普遍。针对这种实际情况本文设计了一种简单实用的温度报警系统。本设计采用了单片机AT89S52和温度传感器DS18B20组成了温度自动测控系统,可根据实际需要任意设定温度值,并进行自动控制。在此设计中利用了AT89S52单片机作为主控制器件,DS18B20作为测温传感器通过LCD数码管串口传送数据,实现温度显示。通过DS18B20直接读取被测温度值,进行数据转换,能够设置温度上下限来设置报警温度。并且在到达报警温度后,系统会自动报警。 关键词:自动控制温度单片机报警

Abstract Now it is very common to use temperature as a control volume to achieve automatic control. This paper designed a simple and practical auto temperature alarm system to meet the actual condition. This design uses a microcontroller AT89S52 and temperature sensor DS18B20 automatic temperature control system formed can be arbitrarily set the temperature according to the actual value and for automatic control. In this design using the AT89S52 microcontroller as the main control device, DS18B20 as an LCD digital temperature sensor tube through the serial transmission of data, to achieve temperature display. DS18B20 measured by direct reading temperature values, data conversion, to set the temperature to set the alarm on the lower temperature. And the temperature reaching the alarm, the system will automatically alarm. Keywords: achieve automatic control temperature AT89S52 alarm

单片机实验--LCD显示实验

实验19L C D显示实验 一、实验目的: 学习液晶显示的编程方法,了解液晶显示模块的工作原理。 掌握液晶显示模块与单片机的接口方法。 二、所需设备 CPU挂箱、8031CPU模块 三、实验内容 编程实现在液晶显示屏上显示中文汉字“北京理工达盛科技 有限公司”。 四、实验原理说明 五、实验步骤 1、实验连线 8255的PA0~PA7接DB0~DB7,PC7接BUSY,PC0接REQ,CS8255 接CS0。 2、运行实验程序,观察液晶的显示状态。 六、程序框图 八、附:点阵式LCD 模块 点阵式LCD模块 由一大一小两块液晶 模块组成。两模块均 由并行的数据接口和 应答信号接口两部分 组成,电源由接口总 线提供。 (1)OCMJ2×8液晶 模块介绍及使 用说明 OCMJ中文模块系列液晶显示器内含 GB 2312 16*16点阵国标一级简体汉字和 ASCII8*8(半高)及8*16(全高)点阵英文字库,用户输入区位码或 ASCII 码即可实现文本显示。 OCMJ中文模块系列液晶显示器也可用作一般的点阵图形显示器

之用。提供有位点阵和字节点阵两种图形显示功能,用户可在指定的屏幕位置上以点为单位或以字节为单位进行图形显示。完全兼容一般的点阵模块。 OCMJ中文模块系列液晶显示器可以实现汉字、ASCII 码、点阵图形和变化曲线的同屏显示,并可通过字节点阵图形方式造字。 本系列模块具有上/下/左/右移动当前显示屏幕及清除屏幕的命令。一改传统的使用大量的设置命令进行初始化的方法,OCMJ 中文模块所有的设置初始化工作都是在上电时自动完成的,实现了“即插即用”。同时保留了一条专用的复位线供用户选择使用,可对工作中的模块进行软件或硬件强制复位。规划整齐的10个用户接口命令代码,非常容易记忆。标准用户硬件接口采用REQ/BUSY 握手协议,简单可靠。 硬件接口 接口协议为请求/应答(REQ/BUSY)握手方式。应答BUSY 高电平(BUSY =1)表示 OCMJ 忙于内部处理,不能接收用户命令;BUSY 低电平(BUSY =0)表示 OCMJ 空闲,等待接收用户命令。发送命令到 OCMJ可在BUSY =0 后的任意时刻开始,先把用户命令的当前字节放到数据线上,接着发高电平REQ 信号(REQ =1)通知OCMJ请求处理当前数据线上的命令或数据。OCMJ模块在收到外部的REQ高电平信号后立即读取数据线上的命令或数据,同时将应答线BUSY变为高电平,表明模块已收到数据并正在忙于对此数据的内部处理,此时,用户对模块的写操作已经完成,用户可以撤消数据线上的信号并可作模块显示以外的其他工作,也可不断地查询应答线BUSY是否为低(BUSY =0?),如果BUSY =0,表明模块对用户的写操作已经执行完毕。可以再送下一个数据。如向模块发出一个完整的显示汉字的命令,包括坐标及汉字代码在内共需5个字节,模块在接收到最后一个字节

单片机LED点阵显示方法与程序代码

单片机LED点阵显示方法与程序代码 点阵的接法有共阴和共阳两种(共阳指的是对每一行LED来讲是共阳)。 由于51单片机驱动能力有限,亮度不够,所以一般需要三极管驱动,下图为一个8X8点阵原理图,仅仅是仿真,如果需要接实物的话,加上三极管才足够亮。 显示的方法有两种: 1、逐列扫描方式。如下图所示,P1口输出列码决定哪一列能亮(相当于位码),P2口输出行码(列数据)决定列上哪些LED亮(相当于段码),能亮的列从左向右扫描完8列(相当于位码循环移位8次)即显示出一帧完整的图像。 2、逐行扫描方式,与逐列扫描调换,即P2口输出位码,P1口输出段码,扫描完8行显示出一帧图像。 以逐行扫描为例,从上图可以很明了的知道点阵的显示原理了(红色表示高电平,绿色表示低电平),当把扫描速度加快,人的视觉停留,看见的就是一幅图或一个字了,如下图所示。

一、行扫描静态显示, 用51单片机实现上图静态显示的程序如下: #include #define uchar unsigned char #define uint unsigned int uchar code TAB[]={0x81,0xFD,0xFD,0xC1,0xBF,0xBF,0xBD,0xC3}; uchar i,t; delay(uchar t) { while (t--) {;} } void main(void) { while(1) { P2=0x01; for(i=0;i<8;i++) { P1=TAB; delay(100); P2=P2<<1|P2>>7; } } } 二、行扫描翻页显示 字码取模方式为逐行 第一次从字码数组中取出第1~8个数据置于列上,行扫描顺序为1~8行,显示一帧,第二次取第9~16个数据,行扫描顺序仍为1~8行,显示第二帧,第三次取第17~24个数据,…… 实现图显示效果的程序如下:

单片机电子时钟LCD显示

单片机电子时钟L C D 显示 Pleasure Group Office【T985AB-B866SYT-B182C-BS682T-STT18】

单片机综合实验报告 题目:电子时钟(LCD)显示 班级: 0310405班 学号: 学生姓名:张金龙 指导老师:高林 2013年 6 月 17 日 一、实验内容: 以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间: ●使用字符型LCD显示器显示当前时间。 ●显示格式为“时时:分分:秒秒”。 ●用4个功能键操作来设置当前时间,4个功能键接在~引脚上。 功能键K1~K4功能如下。 ●K1—进入设置现在的时间。 ●K2—设置小时。 ●K3—设置分钟。 ●K4—确认完成设置。 程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然后开始计时。

二、实验电路及功能说明 1)单片机主控制模块 以AT89C51单片机为核心进行一系列控制。 2)时钟显示模块 用1602为LCD显示模块,把对应的引脚和最小系统上的引脚相连,连接后用 初始化程序对其进行简单的功能测试。测试成功后即可为实验所用,如图: 3)时间调整电路 用4个功能键操作来设置当前时间,4个功能键接在~引脚上。功能键K1~ K4功能如下。K1—进入设置现在的时间。K2—设置小时。K3—设置分钟。 K4—确认完成设置。如图: 三、实验程序流程图: 主程序: 时钟主程序流程 子程序:

四、实验结果分析

实验结果及分析:单片机的晶振可以根据要求设定。6MHZ为和现实时间显示相同。实验采用12MHZ晶振采用方式1定时,选取50ms采用20次中断达到一秒,采用查表方式控制LCD显示。当烧入程序后开始运行,根据初始值设定可以观察到显示的时间,这里为了更明显观察显示数据变化把起始值设为 23:59:50 运行后显示 ,K1为进入现在设置时间,当按下K1后显示 ,和实验要求相比较,实现了按下K1进入现在时间设置,按下K4确认完成时间设置的功能;不同之处: 当进入时间设置时在按下K1设置小时,再次按下K1是设置分钟。增加功能:进入时间设置并选择设置位置后K2键位数字增加功能,K3键为数字减小功能。根据仿真结果能够确定编程正确,基本实现了所有功能,而且有所改进。 五、心得体会 每次做单片机实验都会有不同的等收获,而这次的实验让我感觉收获更大。这次的实验让我巩固了以往所学,而且锻炼了自己发现问题解决问题的能力。在编程过程,发现自己对C语言很生疏,很多 技巧和函数运用都不会,通过参考资料和询问同学终于让我完成了程序,并实现了程序的功能。这不仅提高了自己动手能力,也培养了自己的思考能力。 这次在编程过程中学到了很多新东西,特别是LCD的显示,在设定的显示字符后,正确编译后显示各种设定值,LCD显示16位字 符,在最初编程时编译正确但是LCD上的显示字符有缺失,显示不 完整,经过不断调试发现空格同样占据字符,只有所有字符不超过 16位且位置正确时才能完整正确显示。时间的显示需要每一个显示 的位子有定义,而且要给“:”留下特定位子。同时编程时发现还可以显示其他如日期。但本实验不需要且很难完成最终没实现。

基于单片机的温度检测与控制系统的设计(论文)开题报告

河南中医学院 本科生毕业设计(论文)开题报告 题目:基于单片机温度检测与控制系统设计 院系:信息技术学院 专业:计算机科学与技术 班级:2010级计科班 学号:2010180042 学生姓名:郭文珠 指导教师:谢志豪 2013年11月13日 一、立题依据(包括研究的目的与意义及国内外现状): 研究的目的与意义 这次毕业设计选题的目的主要是让我们将所学的知识应用与生活当中,掌握系统总体设计的流程,方案的论证,选择,实施与完善。通过对温度控制系统的设计、制作、控制、测试的全过程,提高对单片机的认识和实际操作的能力,初步培养在完成工程项目中所应具备的基本素质和要求,培养自己的研发能力,提高自己的查阅资料,语言表达和理论联系实际的能力。 温度控制无论在日常生活还是工业生产中都有分厂重要的作用,随着社会经济的高速发展,更多方面对温度控制的可靠性和稳定性有了更高的要求,而单片机进行温度的调节就具备很高的可靠性[1]。 国内外现状 国外对温度控制技术研究较早,始于20世纪70年代。先是采用模拟式的组合仪表,采集现场信息并行指进示、记录和控制。80年代末出现了分布式控制系统[2]。目前正开发和研制计算机数据采集控制系统的多因子综合控制系统。现在世界各国的温度测控技术发展很快,一些国家在实现自动化的基础上正向着完全自动化、无人化的方向发展[3]。我国对于温度测控技术的研究较晚,始于20世纪80年代。我国工程技术人员在吸收发达国家温度测控技术的基础上,才掌握了温度室内微机控制技术,该技术仅限于对温度的单项环境因子的控制。我国温度测控设施计算机应用,在总体上正从消化吸收、简单应用阶段向实用化、综合性应用阶段过渡和发展[4]。在技术上,以单片机控制的单参数单回路系统居多,尚无真正意义上的多参数综合控制系统,与发达国家相比,存在较大差距。我国温度测量控制现状还远远没有达到工厂化的程度,生产实际中仍然有许多问题困扰着我们,存在着装备配套能力差,产业化程度低,环境控制水平落后,软硬件资源不能共享可靠性差等缺点[5]。在今后的温控系统的研究中会趋于智能化,集成化,系统的各项性能指标更准确,更加稳定可靠。 二、研究主要内容(包括计划解决的具体问题或实现的基本功能,研究中的重难点分析、实用性及创新性分析,预期达到的成果等。不得低于800字): 计划实现的基本功能 温度控制系统主要是完成温度信号采集、处理、显示等功能[6]。设 计叙述了基于单片机的温度检测与控制系统的设计,包括硬件的设计以 及软件的设计,该系统在硬件设计上主要是通过温度传感器对温度进行 采集,把温度转成变化的电压,然后由放大器将信号放大,通过转化器

相关主题