使用无字库12864液晶模块制作温湿度计

合集下载

菜鸟学习51单片机之12864液晶(无字库)

菜鸟学习51单片机之12864液晶(无字库)
现在将如何在液晶上面显示字。 一.清屏
/* 选择屏幕来清屏 */
菜鸟学习 51 单片机
while(1)世界
void Lcd12864Clear(uint8 selet)
{
uint8 i,j;
Lcd12864SeletScreen(selet); //选择屏,分左屏和又屏,这个函数在程序中有
for(i = 0;i < 8 ;i++)
二.写入地址
void Lcd12864Point(uint8 page,uint8 x,uint8 y)
{
Lcd12864Write(CMD,0xb8 + page);
//确定页
Lcd12864Write(CMD,0xC0 + x);
//设定起始行
Lcd12864Write(CMD,0x40 + y);
菜鸟学习 51 单片机
while(1)世界
现在开始讲解如何使用,看这篇讲解前,请先到网盘去下载本教 程的仿真图和程序,结合起来更容易明白。
上图是仿真的结果。 在仿真软件中找出的 12864 液晶是没有字库的,对于仿真软件中 液晶的控制和平常的有点不同。一块液晶是由两块 64×64 的液晶显 示模块组合而成。下面是各管脚的介绍。
//有 8 页,循环 8 次
{
Lcd12864Point(i,0,0); //这个就是上面讲到的函数,确定位置
for(j = 0 ;j < 64;j++) //每一块液晶显示模块有 64 列
{
Lcd12864Write(DAT,0x00); //写入 0x00 来清屏
}
}
}
具体的使用如下:初始化函数中调用了清全屏 Lcd12864Clear(3); //清全屏

LCD12864液晶的使用

LCD12864液晶的使用
原创
httபைடு நூலகம்:///echoas
1
LCD12864 液晶的使用
整理:大海橡树 LCD12864 分为两种,带字库和不带字库的,个人比较喜欢不带字库的,因为显示汉字 的时候可以选择自己喜欢的字体,而带字库的液晶,只能显示 GB2312 的宋体,当然了, 也 可以显示其他的字体,不过不是液晶本身字库中带的了,而是用图片的形式显示。本讲由于 内容较多,故分两篇进行讲解,本人水平有限,难免有错误之处,还望大家批评改正!
LCD1
A M P IR E 1 2 8X 64
18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
CS1 和 CS2 的屏幕选择说明
-Vout RST DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 E R/W RS V0 VCC GND CS2 CS1
� 无字库型 LCD12864
首先介绍下不带字库的 LCD12864 ,现就以 Proteus 中的 LCD12864 为例进行讲解, Proteus 中 AMPIRE128*64 ,其液晶驱动器为 KS0108 ,我在网上搜了好就都没找到它 的 datasheet,不过我们可以找到类似的芯片的手册,它的控制逻辑和 HD61202 是类似的,我 们可以网上下载它的 datasheet 进行参考。 这块液晶的显示是左右和上下显示这一点一定要注意 与带字库液晶不同,此块液晶中含有两个液晶驱动器,一块驱动器控制 64*64 个点, 左 右显示,这就是为什么 AMPIRE128*64 引脚有 CS1 和 CS2 的原因。学习液晶主要看的它的 指令系统,再次先说明一下“页”的概念,此液晶有 8 页,一页有 8 行。68/8=8;如下图所 示。

SG12864-12 液晶显示模块 使用说明书

SG12864-12 液晶显示模块 使用说明书

深圳显能实业有限公司液晶显示模块SG12864-12使用说明书Add: 深圳市宝安33区大宝路83号东方明工业城6栋4楼目录一、功能特点----------------------------------------------3二、读写操作时序------------------------------------------3三、指令说明----------------------------------------------6四、坐标关系---------------------------------------------11五、显示RAM---------------------------------------------13六、应用举例---------------------------------------------14七、注意事项---------------------------------------------18一、功能特点:SG12864-12汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。

主要技术参数和显示特性:电源:VDD 3.3V~+5V(内置升压电路,无需负压);显示内容:128列× 64行显示颜色:黄绿屏,蓝屏显示角度:6:00钟直视LCD类型:STN与MCU接口:8位并口或串行配置LED背光多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等二、读写操作时序:模块有并行和串行两种连接方法(时序如下):8位并行连接时序图MPU写资料到模块MPU从模块读出资料2、串行连接时序图串行数据传送共分三个字节完成:第一字节:串口控制—格式 11111ABCA为数据传送方向控制:H表示数据从LCD到MCU,L表示数据从MCU到LCDB为数据类型选择:H表示数据是显示数据,L表示数据是控制指令C固定为0第二字节:(并行)8位数据的高4位—格式 DDDD0000第三字节:(并行)8位数据的低4位—格式 0000DDDD串行接口时序参数:(测试条件:T=25℃ VDD=5.0V)三、指令说明:1、指令表1:(RE=0:基本指令集)指令码指令RS RWDB7DB6DB5DB4DB3DB2DB1DB说明执行时间(540KHZ)清除显示0 0 0 0 0 0 0 0 0 1将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”1.6ms地址归位0 0 0 0 0 0 0 0 1 X设定DDRAM的地址计数器(AC)到“00H”,并且将游标移到开头原点位置;这个指令并不改变DDRAM的内容72us进入点设定0 0 0 0 0 0 0 1 I/D S指定在资料的读取与写入时,设定游标移动方向及指定显示的移位I/D=1:游标向右移,DDRAM地址计数器(AC)加1I/D=0:游标向左移,DDRAM地址计数器(AC)减1S:显示画面整体位移72us显示状态开/关0 0 0 0 0 0 1 D C BD=1:整体显示ONC=1:游标ONB=1:游标位置ON72us游标或显示移位控制0 0 0 0 0 1S/CR/LX X设定游标的移动与显示的移位控制位元;这个指令并不改变DDRAM的内容S/C=0,R/L=0: 游标向左移动S/C=0,R/L=1:游标向右移动72us功能设定0 0 0 0 1 DL XREX XDL=1 (必须设为1)RE=1:扩充指令集动作RE=0:基本指令集动作72us设定CGRA M地址0 0 0 1AC5AC4AC3AC2AC1AC设定CGRAM地址到地址计数器(AC)72us设定0 0 1 AC AC AC AC AC AC AC设定DDRAM地址到地址计数器72usDDRAM地址6 5 4 3 2 1 0 (AC)读取忙碌标志(BF)和地址0 1 BFAC6AC5AC4AC3AC2AC1AC读取忙碌标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值0us写资料到RAM 1 0 D7 D6 D5 D4 D3D2D1D0写入资料到内部的RAM(DDRAM/CGRAM/IRAM/GDRAM)72us读出RAM 的值1 1 D7 D6 D5 D4 D3D2D1D0从内部RAM读取资料(DDRAM/CGRAM/IRAM/GDRAM)72us指令表—2:(RE=1:扩充指令集)指令码指令RS RWDB7DB6DB5DB4DB3DB2DB1DB说明执行时间(540KHZ)待命模式0 0 0 0 0 0 0 0 0 1将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”72us卷动地址或IRAM地址选择0 0 0 0 0 0 0 0 1 SRSR=1:允许输入垂直卷动地址SR=0:允许输入IRAM地址72us反白选择0 0 0 0 0 0 0 1 R1 R0选择4行中的任一行作反白显示,并可决定反白与否72us睡眠模式0 0 0 0 0 0 1 SL X XSL=1:脱离睡眠模式SL=0:进入睡眠模式72us扩充功能设定0 0 0 0 1 1 X1REG 0RE=1:扩充指令集动作RE=0:基本指令集动作G=1 :绘图显示ONG=0 :绘图显示OFF72us设定IRAM地址或卷动地址0 0 0 1AC5AC4AC3AC2AC1ACSR=1:AC5—AC0为垂直卷动地址SR=0:AC3—AC0为ICONIRAM地址72us设定绘图RAM 地址0 0 1AC6AC5AC4AC3AC2AC1AC设定CGRAM地址到地址计数器(AC)72us备注:1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。

12C5A60S2水温控制程序

12C5A60S2水温控制程序
[关键词] STC12C5A60S2单片机;DS18B20;显示电路
Abstract: Along with the computer measurement and control technology of the rapid development and wide application, based on singlechip temperature gathering and control system development and application greatly improve the production of temperature in life level of control. This design STC12C5A60S2describes a kind of mainly by MCU control unit, for temperature sensor DS18B20 temperature control system. The control system can real-time storage temperature data and record related to the current time. System design related hardware circuit and related applications. STC12C5A60S2 microcontroller hardware circuit include temperature detection circuit smallest system, and real-time clock circuit, LCD display circuit, communication module circuit, etc. System programming mainly include main program, read temperature subroutine, the calculation of temperature subroutines, key processing procedures, LCD display procedures and data storage procedures, etc.

12864LCD上显示温湿度

12864LCD上显示温湿度

12864LCD显示温湿度第一种方式:/**********************DHT11与12864LCD************************/ #include <>#define uchar unsigned char#define uint unsigned intuchar lcd_x,lcd_y,data_byte=0,count;uint TH_data,TL_data,RH_data,RL_data,CK_data;uint TH_temp,TL_temp,RH_temp,RL_temp,CK_temp;uchar num;sbit RS = P2^0;;uchar wendu[6];uchar shidu[6];/********************************************************1ms延时函数********************************************************/void delay(int z){ int x,y;for(x=z;x>0;x--)for(y=125;y>0;y--); }/********************************************************50us延时函数********************************************************/void delay_50us(uint t){uint j;for(;t>0;t--)for(j=19;j>0;j--);}/********************************************************50ms延时函数********************************************************/ void delay_50ms(uint t){uint j;for(;t>0;t--)for(j=6245;j>0;j--);}/********************************************************12864液晶写指令********************************************************/ void write_12864com(uchar com){ lcdrs=0;lcdrw=0;delay_50us(1);P0=com;lcden=1;delay_50us(10);lcden=0;delay_50us(2);}/********************************************************12864液晶写数据********************************************************/ void write_dat(ucha r dat) { lcdrs=1;lcdrw=0;delay_50us(1);P0=dat;lcden=1;delay_50us(10);lcden=0;delay_50us(2); }/********************************************************12864液晶初始化********************************************************/void init12864lcd(void) {delay_50ms(2);write_12864com(0x30);delay_50us(4);write_12864com(0x30);delay_50us(4);write_12864com(0x0f);delay_50us(4);write_12864com(0x01);delay_50us(240);write_12864com(0x06);delay_50us(10);write_12864com(0x0c);delay_50us(10); }/********************************************************12864液晶显示函数********************************************************/ void display1(void){uchar i;write_12864com(0x80);for(i=0;i<18;i++){write_dat(table2[i]);delay_50us(1); } }/********************************************************12864液晶显示函数********************************************************/ void display2(void){uchar i;write_12864com(0x90);for(i=0;i<18;i++){write_dat(table3[i]);delay_50us(1); } }/********************************************************12864液晶显示函数********************************************************/ void display3(void){ uchar i;write_12864com(0x88);for(i=0;i<8;i++){ write_dat(table4[i]);delay_50us(1); }}/********************************************************12864液晶显示函数********************************************************/ void displaywendu(void){ uchar i;write_12864com(0x94);for(i=0;i<3;i++){ write_dat(wendu[i]);delay_50us(1);}for(i=0;i<1;i++){write_dat(table5[i]);delay_50us(1);}for(i=4;i<5;i++){write_dat(wendu[i]);delay_50us(1); } }/********************************************************12864液晶显示函数********************************************************/ void displayshidu(void) {uchar i;write_12864com(0x8C);for(i=0;i<3;i++) {write_dat(shidu[i]);delay_50us(1); }for(i=0;i<1;i++){ write_dat(table5[i]);delay_50us(1);}for(i=4;i<5;i++){write_dat(shidu[i]);delay_50us(1);} }/********************************************************SHT11写字节程序********************************************************/char s_write_byte(unsigned char value){unsigned char i,error=0;for (i=0x80;i>0;i>>=1) //高位为1,循环右移{ if (i&value) DATA=1; //和要发送的数相与,结果为发送的位else DATA=0;SCK=1;_nop_();_nop_();_nop_(); //延时3usSCK=0;}DATA=1; //释放数据线SCK=1;error=DATA; //检查应答信号,确认通讯正常_nop_();_nop_();_nop_();SCK=0;DATA=1;return error; //error=1 通讯错误}/********************************************************SHT11读字节程序********************************************************/char s_read_byte(unsigned char ack){unsigned char i,val=0;DATA=1; //释放数据线for(i=0x80;i>0;i>>=1) //高位为1,循环右移{SCK=1;if(DATA)val=(val|i); //读一位数据线的值SCK=0; }DATA=!ack; //如果是校验,读取完后结束通讯;SCK=1;_nop_();_nop_();_nop_(); //延时3usSCK=0;_nop_();_nop_();_nop_();DATA=1; //释放数据线return val; }/********************************************************SHT11启动传输********************************************************/void s_transstart(void){DATA=1;SCK=0; //准备_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();_nop_();_nop_();SCK=1;_nop_();DATA=1;_nop_();SCK=0; }/********************************************************SHT11连接复位********************************************************/void s_connectionreset(void){ unsigned char i;DATA=1;SCK=0; //准备for(i=0;i<9;i++) //DATA保持高,SCK时钟触发9次,发送启动传输,通迅即复位{ SCK=1;SCK=0;}s_transstart(); //启动传输}/********************************************************SHT11温湿度检测********************************************************/char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsign ed char mode){unsigned error=0;unsigned int i;s_transstart(); //启动传输switch(mode) //选择发送命令{ case TEMP : error+=s_write_byte(MEASURE_TEMP);break; //测量温度case HUMI : error+=s_write_byte(MEASURE_HUMI);break; //测量湿度default : break;}for (i=0;i<65535;i++)if(DATA==0) break; //等待测量结束if(DATA) error+=1;// 如果长时间数据线没有拉低,说明测量错误*(p_value) =s_read_byte(ACK); //读第一个字节,高字节(MSB)*(p_value+1)=s_read_byte(ACK); //读第二个字节,低字节(LSB)*p_checksum =s_read_byte(noACK); //read CRC校验码return error; // error=1 通讯错误}/********************************************************SHT11温湿度值标度变换及温度补偿********************************************************/ void calc_sth10(flo at *p_humidity ,float *p_temperature){const float C1=; // 12位湿度精度修正公式const float C2=+; // 12位湿度精度修正公式const float C3=; // 12位湿度精度修正公式const float T1=+; // 14位温度精度5V条件修正公式const float T2=+; // 14位温度精度5V条件修正公式float rh=*p_humidity; // rh: 12位湿度float t=*p_temperature; // t: 14位温度float rh_lin; // rh_lin: 湿度linear值float rh_true; // rh_true: 湿度ture 值float t_C; // t_C : 温度℃t_C=t* - 40; //补偿温度rh_lin=C3*rh*rh + C2*rh + C1; //相对湿度非线性补偿rh_true=(t_C-25)*(T1+T2*rh)+rh_lin; //相对湿度对于温度依赖性补偿if(rh_true>100)rh_true=100; //湿度最大修正if(rh_true<rh_true=; //湿度最小修正*p_temperature=t_C; //返回温度结果*p_humidity=rh_true; //返回湿度结果}/********************************************************主函数********************************************************/void main(void){unsigned int temp,humi;value humi_val,temp_val; //定义两个共同体,一个用于湿度,一个用于温度unsigned char error; //用于检验是否出现错误unsigned char checksum; //CRCinit12864lcd();display1();display2();display3();s_connectionreset(); //启动连接复位while(1){error=0; //初始化error=0,即没有错误error+=s_measure((unsigned char*)&,&checksum,TEMP); //温度测量error+=s_measure((unsigned char*)&,&checksum,HUMI); //湿度测量if(error!=0) s_connectionreset(); ////如果发生错误,系统复位else{=(float); //转换为浮点数=(float); //转换为浮点数calc_sth10(&,&; //修正相对湿度及温度temp=*10;humi=*10;wendu[0]=temp/1000+'0'; //温度百位wendu[1]=temp%1000/100+'0'; //温度十位wendu[2]=temp%100/10+'0'; //温度个位wendu[3]=0x2E; //小数点wendu[4]=temp%10+'0'; //温度小数点后第一位displaywendu();shidu[0]=humi/1000+'0'; //湿度百位shidu[1]=humi%1000/100+'0'; //湿度十位shidu[2]=humi%100/10+'0'; //湿度个位shidu[3]=0x2E; //小数点shidu[4]=humi%10+'0'; //湿度小数点后第一位displayshidu(); }Delay(800);//等待足够长的时间,以现行下一次转换}}。

无字库PG12864液晶屏技术资料

无字库PG12864液晶屏技术资料

10/20
PG12864LRS-JNN-H 技术手册(完整版)
原创技术资料
设置显示超始说明
CS1(左半屏)
CS2(右半屏)
12864 是由两片 64*64 组成,使用 CS1/CS2 使能(可同时使能)。每半屏 8 页,每页中字节数据由低到高。
驱动程序(C 语言)
/*********************************************************************************************
#include <reg52.h>
// 包含头文件

11/20
PG12864LRS-JNN-H 技术手册(完整版)
原创技术资料
#include <string.h> //用于指针
/*********************************************************************************************
出品

程序名 Dy-12864LC 驱动程序
制作人 杜洋
日期
2007-4-18
参数
MCS-51
12MHZ
PG12864LRS-JNN-H
/*********************************************************************************************
品名 型号 规格
图形液晶显示屏模块 PG12864LRS-JNN-H 128 X 64 STN LCD 点阵
文档制作 创建日期 版本信息
杜洋 () 2007-4-20 V1.0

CJ12864L液晶显示模块使用手册

CJ12864L液晶显示模块使用手册

液晶显示模块使用手册版本:1.0型号:CJ12864L系列选配件说明液晶片□常温(0~50℃)□宽温(-20~+60℃)□超宽温(-30~+70℃)□黄绿膜□蓝膜□灰膜□黑白膜背光LED背光□白光□翡绿光□黄绿光□蓝光EL背光□白光□蓝光□CCFL背光负压电路□板载负压□不带负压一.概述CJ12864L是一款带中文字库的图形点阵模块,由动态驱动方式驱动128×64点阵显示。

低功耗,供应电压范围宽。

内含多功能的指令集,操作简易。

采用COB工艺制作,结构稳固,使用寿命长。

二.特性:●提供8位,4位及串行接口可选●64×16位字符显示RAM(DDRAM最多16字符×4行,LCD显示范围16×2行)●2M位中文字型ROM(CGROM),总共提供8192个中文字型(16×16点阵)●16K位半宽字型ROM(HCGROM),总共提供126个西文字型(16×8点阵)●64×16位字符产生RAM(CGRAM)●15×16位总共240点的ICON RAM(ICONRAM)●自动复位(RESET)功能●绘图及文字画面混合显示功能●提供多功能指令:——画面清除(display clear)——游标归位(return home)——显示开/关(display on/off)——游标显示/隐藏(cursor on/off)——游标移位(cursor shift)——显示移位(display shift)——垂直画面旋转(vertical line scoll)——反白显示(By-line reverse display)——睡眠模式(sleep mode)三.外形尺寸1.外形尺寸图2.主要外形尺寸项目标准尺寸单位模块体积78*70*12.5mm 视域62.0*44.0mm 行列点阵数128×64dots 点距离0.438*0.60mm 点大小0.378*0.54mm四.硬件说明1.引脚特性管脚名称符号电平功能描述1VSS0V接地(GND)2VDD 5.0V电源电压3V0负压液晶显示器驱动电压调节端4RS H/L 并口模式寄存器选择H:数据;L:指令串口片选信号H:有效;L:失效5R/W H/L 并口模式H:读;L:写串口数据线6E H/L 并口:读/写起始脚串口连续时钟输入7 | 10DB0|DB3H/L数据总线低4位,4位并口及串口时悬空11 | 14DB4|DB7H/L数据总线高4位,串口时悬空DB7可作BUSY标志,15PSB H/L H:8/4位数据接口模式L:串行接口模式由硬件设置时,此脚悬空16NC悬空17RST H/L复位信号,选择硬件复位时,此脚悬空18VEE负压液晶显示器驱动电压19BLA5V背光正20BLK0V背光负2.原理简图3.最大工作范围1)逻辑工作电压(Vdd):5V±10%2)电源地(GND):0V 3)LCD 驱动电压(Vop):5V 4)输入电压:0~Vdd4.电气特性(测试条件Ta=25,Vdd=5.0±10%)1)输入高电平(Vih):0.7Vdd~Vdd 2)输入低电平(Vil):0.6Vmax 3)输出高电平(Voh):0.8Vdd~Vdd 4)输出低电平(Vol):0.4Vmax 5)模块工作电流: 2.2~3.0mA(不含背光)6)底黄绿光工作电流:250mA 7)侧白光工作电流:60mA五.模块主要硬件构成说明1.PSB 脚VSS VDD RS R/W E PSB DB0RES2.忙标志(BF)表示当前与MPU接口电路的运行状态。

基于128×64点阵液晶显示的智能温度控制器的设计与实现

基于128×64点阵液晶显示的智能温度控制器的设计与实现

3 0 3 ;2 深圳 市拓 普 微 科技 开发 有 限公 司 ,广 东 深 圳 0 10 .
绍 了 L 0 3液 晶显示模块的功能特性 、接 口电路及应 用程序 。实验 中应 用 D 1 B 0温度 传感 器实现 温度信 M3 3 S82 号 的采集 ,并把采集到 的信号传送给单片机 ,单片机将信号进行处理完成相应 的智能控制 ,同时将环境温 度 、
李 志广 ,张
( . 河北 工业 大学 理 学院 ,天 津 1
5 85 ) 1 0 7
摘 要 :以智 能 温 度 控 制 器 的设 计 实 验 为 依 托 ,文 章 给 出 了 一 套 液 晶 显 示 模 块 驱 动 实 验 的设 计 方 案 ,详 细 介
辉 王永 学 , ,张志 东
De in a d i l me t t n o h n e l e tt mp r t r sg n mp e n a i ft e i t l g n e e a u e o i
c n r le a e n 1 8 4 d tma r i u d c y t ld s l y o to lr b s d o 6 o ti l i r sa ip a 2 x x q
t s,t e i tra e cr ui,a d t e a p iai n p o r m ft e L 0 i e h n ef c ic t n h p lc t r g a o h M3 33 LCM r n r d c d i e al n o a e i to u e n d ti.I
a d t e r n mitd t h n h n ta s t o t e MCU.Th e e e tmpe au esg a r c s ig a d t e i tli e tc nr la e p r r t r i n lp o e sn n h n elg n o to r e —

12864液晶电子时钟+温度显示

12864液晶电子时钟+温度显示

12864液晶电子时钟+温度显示上午花了一上午时间,用12864 液晶写了一个电子时钟加温度传感器程序,先说一下程序的功能,可以实现显示年月日时间和温度,年月日和时间是可通过按键调节的,调节相应的选项时,该选项会闪烁,并停止走时,当调节完毕后时钟恢复走时。

现在将程序和思路写下来,以便日后查看和与大家探讨改进,欢迎高手提出宝贵意见。

我使用的是HJ12864M-1 带字库液晶,所以在显示上稍微方便一点。

下面先来说一下我的编程思路。

时间更新用的是单片机自带的定时器,液晶要显示数字必需将它转换成ASCii 码的形式,数字0-9 的ASCii 码与数字之间有一个定量的关系,当数字加上0x30 之后便得到该数字的ASCii 码,这样以来液晶更新数据就变得简单了。

调节时间时对应选项闪烁,是通过不断的交替写入数据和空格实现的。

温度显示用的是DS18B20,,将测得的当前温度不断更新显示在液晶上。

调节时间用的是三个独立按键。

由于这个程序我使用模块化来写的,就只能将每个模块分别给出来,大家只要组装一下便可以使用。

如果需要完整程序的可以给我留言我发给你们。

下面是12864 液晶的初始化,读写命令,及读忙操作#include “lcd12864.h”#include reg52.hsbit RS=P2 ; //控制端口位定义sbitRW=P2;s b it EN=P2;vo id init_12864(){delay(40);write_com(0x30);//8 位数据格式,基本指令显示delay(10); //延时时间write_com(0x30);//8 位数据格式,基本指令显示delay(37);write_com(0x0C);//开显示、关闭光标delay(10);write_com(0x01);//清屏指令delay(10); //延时write_com(0x06);//设置显示点:指针自加1}tips:感谢大家的阅读,本文由我司收集整编。

温湿度测量系统--基于单片机和温度传感器DS18B20、HS1101是电容式空气湿度传感器

温湿度测量系统--基于单片机和温度传感器DS18B20、HS1101是电容式空气湿度传感器

摘要此温湿度测量系统是基于单线式温度传感器DS18B20、电容式湿度传感器单片机STC89C52 对温度湿度分别测量并通过液晶显示屏1602经行显示。

温度传感器DS18B20是单线式,体积超小,硬件开消超低,抗干扰能力强,精度高,附加功能强的理想单片机温度传感器,可实时根据指令给出温度数据,可读性高。

HS1101是电容式空气湿度传感器,在不同的湿度环境下呈现出不同的电容值,0%~100%RH湿度范围内,电容从162PF变化到200PF,误差误差为2%RH。

可见其精度非常高,为了反映出其电容的变化,本系统采用555多谐震荡电路产生不同的频率,用于检测湿度。

单片机采集到两个传感器给出的数据进行处理与计算,得出当前的温度与湿度并送给液晶屏显示。

本系统具有可读性高,稳定性高,反应速度快,测量值准确的特点。

关键词:温湿度测量系统精度高速度快体积小Abstract: The temperature and humidity measurement system is based on singleline type temperature sensor DS18B20, capacitive moisture sensorSCM STC89C52 for temperature humidity measurement and respectively by LCD display. The line 1602 Temperature sensor DS18B20 is singleline type, volume super-small, hardware KaiXiao ultra-low, strong anti-jamming capability, high precision, additional features strong ideal single-chip microcomputer temperature sensor, real-time temperature data, depending on the directive given readable. HS1101 is capacitive sensor, air humidity in different humidity presents different capacitance, 0% ~ 100% RH humidity, within the scope of capacitance change to 200PF, from 162PF error for 2% RH error. e can see its precision is very high, in order to reflect the capacitance change, the system USES the 555 more harmonic concussion circuits produce different frequency, which is used to detect humidity. SCM acquisition to two sensor gives data processing and calculated, the current temperature and humidity and give the display on the LCD panel. This system has a readable, high stability, reaction speed, measured values exact characteristic.Keywords: temperature and humidity measurement system high precision speed small volume目录1.设计要求 (3)2. 方案设计及论证 (3)2.1 总体方案设计 (3)2.2系统主要单元的选择与论证 (3)2.2.1单片机控制模块的选择论证 (3)2.2.2温度湿度检测模块的选择与论证 (3)2.2.3显示模块的选择与论证 (3)2.3 系统组成 (4)3. 理论分析及计算 (4)3.1 (4)3.2..........................................................................................错误!未定义书签。

使用无字库12864液晶模块制作温湿度计

使用无字库12864液晶模块制作温湿度计

使用无字库12864液晶模块制作温湿度计作者卫小鲁来源《无线电》杂志浏览40发布时间2010-12-16图1上次的内容:无字库12864图形点阵液晶模块及其驱动方法在上次介绍的日历钟的基础上扩展一下:让它具备检测大气温度和湿度的功能,一天24小时不间断运行并定时检测,于是,日历钟就摇身一变成为一个小小温湿度计啦。

虽然气象要素很多,不过我们最常用的就是气温和湿度。

一个是冷热程度,一个是环境空气中含水蒸气的多少。

一般家用温度计很常见,湿度计就比较少,以前有一种干湿球温度计,但是用起来比较麻烦,准确度也不高。

现在应用电子技术我们就可以做一个可以同时显示温度、湿度、时间的小仪器,放在家里以便随时监测我们的小环境。

它的特点如下:1.在单片机ATMega8L-8PU(以下简称M8)和日历钟电路DS1302的基础上,使用一个在工厂经过精密校准的数字式温度、湿度传感器AM2301作为探头;2.当24小时连续工作时,纵然工作电流仅为几毫安,也不宜使用纽扣电池供电。

这次选用可充电的3.6V聚合物锂电池,使它的放置地点可以不受电源限制,可以在室内,也可以在不受阳光直射和雨水接触的室外;3.具有文字和图形界面,可以显示温度和湿度数值,以及12小时内的湿度变化记录曲线,为什么是湿度曲线呢?因为气温的变化规律一般比较稳定,湿度就不一样了,我们可以从湿度变化趋势估计一下未来的晴雨可能,这比看燕子飞高飞低要靠谱些吧?两个界面用按键切换;4.具备锂电池线性充电电路,通过USB接口从外部取得5V电源,一边供给充电,一边维持电路继续工作;全部元器件安装在一块70mm×90mm的小万用板上,正面、背面外形见图1、图2。

正面左边那个黑色小乌龟壳就是温湿度探头。

电路板背面元器件分布和连线图2电路原理电路见图3。

图形点阵液晶、单片机M8、时钟电路DS1302和上次小小日历钟基本相同,不再重复。

有两点稍稍不同:1.液晶的控制虽然还是通过M8的PD口,但具体接线有所改变,不再占用两根串口线PD0和PD1,目的是为今后可能和外部通信预留接口。

基于128_64点阵液晶显示的智能温度控制器的设计与实现

基于128_64点阵液晶显示的智能温度控制器的设计与实现

ISSN1672-4305CN12-1352/N实 验 室 科 学LABORATORY SC I ENCE 第13卷 第3期 2010年6月Vol 113 No 13 J un 12010实验技术基于128@64点阵液晶显示的智能温度控制器的设计与实现李志广1,张 辉1,王永学1,张志东2(1.河北工业大学理学院,天津 300130;2.深圳市拓普微科技开发有限公司,广东深圳518057)摘 要:以智能温度控制器的设计实验为依托,文章给出了一套液晶显示模块驱动实验的设计方案,详细介绍了L M 3033液晶显示模块的功能特性、接口电路及应用程序。

实验中应用DS18B20温度传感器实现温度信号的采集,并把采集到的信号传送给单片机,单片机将信号进行处理完成相应的智能控制,同时将环境温度、系统状态等信息显示在L M 3033液晶显示模块上。

关键词:液晶显示;温度控制;LM 3033中图分类号:TN 141 文献标识码:B do :i 10.3969/.j issn .1672-4305.2010.03.018Desi gn a nd m i ple m entati on of the i ntelli gent te mperaturecontroll er based on 128@64dotmatri x li qu i d crystal displayLI Zh i-guang 1,Z HANG H ui 1,WANG Y ong-xue 1,Z HANG Zhi-dong2(1.Schoo l of Sciences ,H ebeiU niversity of Techno l o gy ,T ian ji n 300130,Ch i n a ;2.Shenzhen Top -w ay Technology Co .,Ltd .,Shenzhen 518057,China)A bstract :B ased on t h e i n te lli g ent te m perat u re contr o ller desi g n exper i m en,t a desi g n sche m e of the liqu i d crystal d isp lay m odu le (LC M )driv i n g experi m ent is g i v en in th is paper .The functi o na l pr oper -ties ,the interface circ u i,t and the app lication pr ogra m of the L M 3033LC M are i n troduced in detai.l I n th is experi m en,t t h e te m perature si g nal is co llected through the DS18B20dig ita l te m perature sensor ,and then trans m itted to theMCU.The te m perat u re signal processing and the intelligent control are per -for m ed by M C U.A t the sa m e ti m e ,i n for m ations ,such as a m bient te m perature and syste m status are d isp l a yed on the L M 3033LC M.K ey words :li q u i d crystal d isp lay ;te m perat u re con tro;l L M 3033基金项目:国家自然科学基金(项目编号:10704022);河北工业大学教学改革项目。

LCD12864(不带字库)

LCD12864(不带字库)

LCD12864(不带字库)LCD12864(不带字库)其实看了本版的1602教程以后很容易就可以掌握12864了。

刚才看到有网友要12864教程,俺就把博客里以前练习的一个程序弄过来,算作参考吧。

不足之处请见谅。

这个程序浪费了我很多时间,因为我一直没有找到datasheet,12864的型号实在太多了。

为了这个程序,我在网上找了很多相关的例程,但大多都是C语言写的,可惜俺没学过C,用起来不顺手,遂将其转成汇编,但是转后,程序运行不正常,郁闷啊。

好不容易找个汇编的吧,又写得很乱,没有头绪,没有datasheet,看起来很费劲,最后终于找到一个相关的datasheet,这才完成这个程序。

总结一下:与其费力分析别人的程序,不如看datasheet自己写。

下面总结一下datasheet。

→↑←ONE→且看datasheet:12864点阵型LCD简介12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。

可完成图形显示,也可以显示8×4个(16×16点阵)汉字。

在使用12864LCD前先必须了解以下功能器件才能进行编程。

12864内部功能器件及相关功能如下:1. 指令寄存器(IR)IR是用于寄存指令码,与数据寄存器数据相对应。

当D/I=0时,在E信号下降沿的作用下,指令码写入IR。

2.数据寄存器(DR)DR是用于寄存数据的,与指令寄存器寄存指令相对应。

当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0数据总线。

DR和DDRAM之间的数据传输是模块内部自动执行的。

3.忙标志:BFBF标志提供内部工作情况。

BF=1表示模块在内部操作,此时模块不接受外部指令和数据。

BF=0时,模块为准备状态,随时可接受外部指令和数据。

利用STATUS READ指令,可以将BF读到DB7总线,从检验模块之工作状态。

12864的液晶显示程序(无字库)

12864的液晶显示程序(无字库)
/****************************************************
LCD12864点阵液晶屏,
通过I/O口直接控制,采用模拟时序控制
****************************************************/
#include"12864.h"
LCD_RS = 0;LCD_RW = 0;LCD_E = 1;
//_nop_(); //若晶振速度高,可在此作延时处理
LCD_E = 0;
}
/******************************************************************************
}
LCD_RW=1;LCD_RS=1;LCD_E = 1;//操作允许脉冲信号,高电平读出
//_nop_(); //若晶振速度高,可在此作延时处理
dataR = LCD_Data;
LCD_E= 0;
return dataR;
}
/***********************************************************
LCD_Data = WDLCD;
LCD_E = 1;
//_nop_(); //若晶振速度高,可在此作延时处理
LCD_E = 0; //下降沿写入数据
//_nop_(); //若晶振速度高,可在此作延时处理
}
/***********************************************************
void Clr_All_Lcd(void)
{
clear_LCD(1);

SHT11温湿度测量仪12864显示

SHT11温湿度测量仪12864显示

/********************************************************************** 头文件tou.h***********************************************************************/ #ifndef _tou_h_#define _tou_h_#define uchar unsigned char#define uint unsigned int#define LCD P2 //定义LCD数据口sbit fm=P3^4; //定义蜂鸣器/********************************************************************** SHT11定义***********************************************************************/ //接口、命令定义sbit SCK=P1^6; //定义串行时钟接口sbit DA TA=P1^7; //定义数据传输接口#define noACK 0 //继续传输数据,用于判断是否结束通讯#define ACK 1 //结束数据传输(ack=1表明结束数据传输)enum {TEMP,HUMI}; //定义枚举类型#define cwd 0x03 //测温度命令#define csd 0x05 //测湿度命令#define reset 0x1e //复位命令//函数定义void delayms(uint xms); //定义SHT11延时函数void start(); //SHT11启动函数char write_byte(uchar value); //写字节函数char read_byte(uchar ack); //读字节函数void connectionreset(); //通讯复位函数char softreset();celiang_sht11(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode); void jisuan_sht11(float *p_humidity,float *p_temperature);typedef union //定义共用同类型{unsigned int i;float f;} value;/********************************************************************** 12864定义***********************************************************************/ //引脚定义sbit rs=P1^0;sbit rw=P1^1;sbit e=P1^2;sbit psb=P1^3;//函数定义Void LCD_delayms(uint xms); //定义LCD延时函数Void check_busy(); //定义LCD查忙函数Void chushi(); //定义LCD初始函数Void xiezl(uchar zl); //定义LCD写命令函数void xiesj(uchar sj); //定义LCD写数据函数#endif/********************************************************************** 带字库LCD12864文件12864_ZK.c***********************************************************************/ #include<reg51.h>#include<tou.h> //将头文件包含uchar code table1[]=" 温湿度测量仪"; //LCD第一行uchar code table2[]="T - "; //LCD第二行uchar code table3[]="H - "; //LCD第三行uchar code table4[]="℃"; //LCD第四行uchar code table5[]="RH";/********************************************************************** LCD延时函数***********************************************************************/ void LCD_delayms(uint xms){uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}/********************************************************************** 查询忙碌函数***********************************************************************/ void check_busy(){rw=1;rs=0;LCD=0xff;e=1;while(P2&0x80); //查询忙碌标志位BF e=0;}/********************************************************************** 写入指令函数***********************************************************************/ void xiezl(uchar zl){check_busy();rs=0;rw=0;LCD=zl;LCD_delayms(1);e=1;LCD_delayms(1);e=0;}/********************************************************************** 写入数据函数***********************************************************************/ void xiesj(uchar sj) //写数据{check_busy();rs=1;rw=0;LCD=sj;LCD_delayms(1);e=1;LCD_delayms(1);e=0;}/********************************************************************** LCD初始化函数***********************************************************************/ void chushi() //初始函数{psb=1; //并行模式LCD_delayms(50);xiezl(0x30); //功能设定(基本指令)xiezl(0x0c); //显示状态(整体显示、关游标、关游标位置)xiezl(0x01); //清除屏幕xiezl(0x06); //进入模式(地址递增)}/**********************************************************************主文件swdj.c***********************************************************************/#include<reg51.h>#include <intrins.h>#include<tou.h>uint temp_h,temp_l,humi_h,humi_l; //定义上下限温度、湿度值/**********************************************************************延时函数***********************************************************************/void delayms(uint xms){uint i,j;for(i=xms;i>0;i--)for(j=0;j<110;j++);}/**********************************************************************启动函数第一个SCK时钟为高电平时,DA TA翻转为低电平;紧接着SCK变为低电平,随后又变为高电平;第二个SCK时钟为高电平时,DA TA再次翻转为高电平。

FYD12864无字库3A中文使用手册

FYD12864无字库3A中文使用手册

FYD12864-0403A 液晶显示模块服务文件实物图片一.基本特性* 电源电压5V* 显示分辨率:128×64点* 显示方式:STN、半透、正显* 驱动方式:1/64DUTY,1/9BIAS* 视角方向:6点* 背光方式:底部黄绿LED背光* 通讯方式:8线并口* 内置DC-DC转换电路,无需外加负压* 工作温度:-10℃ - +60℃ ,存储温度: -20℃ - 70℃二.外形尺寸1.外形尺寸图2.主要外形尺寸项 目 标 准 尺 寸 单 位模 块 体 积 93.0×70.0×12.8 mm定 位 尺 寸 88.0×65.0 mm视 域 71.7×39 mm点 阵 数 128×64 像素点 距 离 0.52×0.52 mm点 大 小 0.48×0.48 mm三.硬件说明1.引脚特性引脚号 引脚名称 电 平 引 脚 功 能 描 述1 VSS 0V 电源地2 VDD +5V 电源电压3 V0 0~-10V LCD驱动负电压,调节LCD对比度4 D/I H/L H:DB0-DB7为显示数据L:DB0-DB7为显示指令数据5 R/W H/L R/W=H,E=H数据被读到DB0-DB7R/W=L,E=H—L,DB0-DB7数据写到IR或DR6 E H/L 使能信号:R/W=L.E信号下降沿锁存DB0-DB7;R/W=H,E=H,DDRAM数据读到DB0-DB77 DB08 DB19 DB210 DB3H/L 8位三态并行数据总线11 DB412 DB513 DB614 DB715 CS1 H/L 片选信号,当CS1=H时,液晶右半屏显示16 CS2 H/L 片选信号,当CS2=H时,液晶左半屏显示17 /RET H/L 复位信号,RET=0有效18 VEE -10V 输出-10V的负电压(单电源供电)19 A +5V背光电源,背光功耗≤300mA20 K 0V2.原理简图背光接线图 3.硬件功能描述1)显示数据RAM(DDRAM)DDRAM(64×8×8 bits)是存储图形显示数据的。

(完整word版)数字温湿度计的设计(12864)

(完整word版)数字温湿度计的设计(12864)

目录摘要前言第一章总体结构及设计方案1.1 设计任务要求和温湿度计的用途1.2 设计数字温湿度计的依据和意义第二章电路设计2.1 主控制模块电路2.1.1 STC89C52主要功能及引脚介绍2.1.2 STC89C52最小系统的基本电路2.1.3 STC89C52与各部分功能模块电路的连接2.2 显示电路模块2.2.1 12864的功能和引脚介绍2.2.2 12864与单片机的连接电路2.3 DS18B20温度传感器2.3.1 DS18B20的功能和引脚介绍2.3.2 DS18B20的测温原理2.3.3 DS18B20与单片机的接口电路2.4 HS1100湿度传感器2.4.1湿度传感器的主要特性2.4.2湿度测试电路2.5 按键以及报警2.6 总硬件设计图总结参考文献数字温湿度计的设计摘要随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于STC89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感器DS18B20的数据采集过程。

对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。

DS18B20与STC89C52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。

关键词:单片机;DS18B20;温度传感器;数字温度计;STC89C52ABSTRACTWith the progress of The Times and development, microcontroller technology has spread to our life, work, scientific research, each domain, has become a more mature technology, this paper mainly introduces a STC89C52 based on single chip microcomputer temperature measurement system, a detailed description of the use of digital temperature sensor DS18B20 temperature measurement system development process, focusing on sensors in the single chip microcomputer hardware connection, software programming and the module system flow for a detailed analysis, especially digital temperature sensor DS18B20 data acquisition process. On the part of the circuit are introduced one by one, the system can realize realize temperature acquisition and display, and can according to need any set upper limit alarm temperature, it USES upquite convenient, has high precision, wide range, high sensitivity, small volume, low power consumption, suitable for our daily life and work, the agricultural production of temperature measurement, also can be used as temperature processing module embedded other system, as the other main system auxiliary extension. DS18B20 and STC89C52 combined to realize the most Jane temperature detection system, the system structure is simple, strong anti-jamming ability, suitable for bad environment field temperature measurement, a broad prospect of application.Keywords: SCM;DS18B20;temperature sensor;digital thermometer;STC89C52前言温度与湿度与人们的生活息息相关。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用无字库12864液晶模块制作温湿度计
日历钟就摇身一变成为一个小小温湿度计啦。

虽然气象要素很多,不过我们最常用的就是气温和湿度。

一个是冷热程度,一个是环境空气中含水蒸气的多少。

一般家用温度计很常见,湿度计就比较少,以前有一种干湿球温度计,但是用起来比较麻烦,准确度也不高。

现在应用电子技术我们就可以做一个可以同时显示温度、湿度、时间的小仪器,放在家里以便随时监测我们的小环境。

它的特点如下:
1.在单片机ATMega8L-8PU(以下简称M8)和日历钟电路DS1302的基础上,使用一个在工厂经过精密校准的数字式温度、湿度传感器AM2301作为探头;
2.当24小时连续工作时,纵然工作电流仅为几毫安,也不宜使用纽扣电池供电。

这次选用可充电的
3.6V聚合物锂电池,使它的放置地点可以不受电源限制,可以在室内,也可以在不受阳光直射和雨水接触的室外;
3.具有文字和图形界面,可以显示温度和湿度数值,以及12小时内的湿度变化记录曲线,为什么是湿度曲线呢?因为气温的变化规律一般比较稳定,湿度就不一样了,我们可以从湿度变化趋势估计一下未来的晴雨可能,这比看燕子飞高飞低要靠谱些吧?两个界面用按键切换;
4.具备锂电池线性充电电路,通过USB接口从外部取得5V电源,一边供给充电,一边维持电路继续工作;全部元器件安装在一块70mm×90mm的小万用板上,正面、背面外形见图1、图2。

正面左边那个黑色小乌龟壳就是温湿度探头。

图2 电路板背面元器件分布和连线
电路原理
电路见图3。

图形点阵液晶、单片机M8、时钟电路DS1302和上次小小日历钟基本相同,不再重复。

有两点稍稍不同:1.液晶的控制虽然还是通过M8的PD口,但具体接线有所改变,不再占用两根串口线PD0和PD1,目的是为今后可能和外部通信预留接口。

这好办,编程时重新定义即可;。

相关文档
最新文档