文档库 最新最全的文档下载
当前位置:文档库 › LCD12864温度曲线显示

LCD12864温度曲线显示

#include<reg51.h>
#include"LCD12864.h"
void hua_zuobiao(void);//画坐标
void delay1ms(uint k);//延时间
void TLC2543(void);//2543读数据子函数
void count_ad(void);//1602的显示
uchar code shuzi[]={0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//0--8
uchar code number[]={"0123456789"};
uchar tab1[]={" wendu=+49.99c "};// 9 10. 12 13
uchar code tab2[]={" made of suwei "};
unsigned long int ad;
///////////////////
TLC2543 sbit clk=P1^3;//时钟
sbit cs=P1^2;//1变0时TLC2543复位
sbit adtain=P1^1;//数据输入
sbit adtaout=P1^0;//数据输出
////////////////
void main(void)
{
uchar x,y;//x页 y列
uchar i;
uint j;
uchar wendu=30,dp;//温度//曲线的点
///////////1602
init_1602();
gotoxy(1,0);
for(i=0;
i<16;i++)
write_LCD_data(tab1[i]);
gotoxy(2,0);
for(i=0;i<16;i++)
write_LCD_data(tab2[i]);
///////////////12864LCD
initi_LCD();//
hua_zuobiao();//画坐标图
y=12;//从12列开始
while(1)
{
TLC2543();//2543读数据子函数
count_ad();//lcd1602的更新显示
delay1ms(1);
j++;
if(j>50){j=0;
wendu=ad/100;//取温度的前2位
x=(wendu-1)/8; https://www.wendangku.net/doc/6318229315.html,
x=6-x;
dp=(wendu-1)%8+1;
if(y<64)
{
set_adr(x,y);
wdata(shuzi[dp],1,0);
}
else
{
set_adr(x,y-64);
wdata(shuzi[dp],0,1);
}
y++;//列
if(y==128){y=12;//
clear();//清屏
hua_zuobiao();//画坐标图
}
////////////
/*i=0;
initi_LCD();
hua_zuobiao();//画坐标
set_adr(3,12);
y=3;c=13;
while(1)
{
i++;
c++;
if(i==8)
{
i=0;
y=y-1;
if(y==0)y=7;
temp=0xb8+y;
wcode(temp,1,1);
}
if(c==64)
set_adr(temp,0);
if(c>=127)
while(1);
if(c>=64)
wdata(shuzhi[i],0,1);
else
wdata(shuzhi[i],1,0);
delay1ms(100);
}
}
*/ ///////////// //
}
//
}
////1602的显示
void count_ad(void) https://www.wendangku.net/doc/6318229315.html,
{
uchar i;
uint temp;
temp=ad;
tab1[13]=number[temp%10];
temp=temp/10;
tab1[12]=number[temp%10];
temp=temp/10;
tab1[10]=number[temp%10];
temp=temp/10;
tab1[9]= number[temp%10];
gotoxy(1,0);
for(i=0;
i<16;i++)write_LCD_data(tab1[i]);
}
//////////////////////////////////
void TLC2543(void)//2543读数据子函数
{uchar i;//输入数据为0x00//0x10为第一通道
ad=0;
clk=0;
cs=0;
for(i=0;
i<12;i++)
{
if(adtaout==1)ad=ad|0x01;//读出数据
adtain=0;//写入数据
clk=1;
clk=
0;
ad<<=1;//左移一位
}
cs=1;
ad>>=1;//数据存在ad里
ad=(ad*1000)/819;
//temp=(ad*5000)/4095;
}
///////////////////////////
void hua_zuobiao(void)//画坐标
{
uchar j;
int i;
for(j=0;

j<8;j++)//页码
{
set_adr(j,0);
for(i=1;i<=64;i++)
{
wdata(zuobiao[i+j*128],1,0);
wdata(zuobiao[63+i+j*128],0,1);
}
}
}
////////////////////////
void delay1ms(uint k)//延时间
{
k=k*125;
while(--k);
}
////////////
https://www.wendangku.net/doc/6318229315.html, 调用子程序
#include<reg51.h>
#define _LCD12864_h
#define uchar unsigned char
#define uint unsigned
int void delay(uint k);//延时
void wcode(uchar com,uchar cs1,uchar cs2);//写指令
void wdata(uchar da,uchar cs1,uchar cs2);//写数据
void set_startline(uchar i);//起始行
void set_adr(uchar x,uchar y);//页值设置起始列值函数
void clear(void);///clear清屏
void initi_LCD(void);//初始化LCD //////////单片机与液晶显示的引脚连接/////////
// sbit RST=P2^2;
sbit CS2=P2^0;
sbit CS1=P2^1;
sbit RS=P2^2;//或DI sbit
RW=P2^3;
sbit E=P2^4; //P0口为数据口
//////////////////////////////
void initi_LCD(void)//初始化LCD
{
wcode(0x3f,1,1);//显示开//0x3e关
set_startline(0);//起始行第0行
clear();//清屏
}
///////////////////////
void delay (uint k)//延时
{
while(k--);
}
////////复位///////////
/*void reset()
{
RST=0;
delay(200);
RST=1;
delay(200);
}
*/ ////////write code写指令/////// https://www.wendangku.net/doc/6318229315.html,void
wcode(uchar com,uchar cs1,uchar cs2)//写指令
{
CS1=cs1;
CS2=cs2;
RW=0;
RS=0;
P0=com;
E=0;
delay(10);
E=1;
delay(10);
E=0;
}
/////////write data写数据///////////////
void wdata(uchar da,uchar cs1,uchar cs2)//写数据
{
CS1=cs1;
CS2=cs2;
RW=0;
RS=1;
P0=da;
E=0;
delay(10);
E=1;
delay(10);
E=0;
}
////////////set start设置起始行/////////////
void set_startline(uchar i)//起始行。11A5A4A3A2A1A0 共有64行
{
//液晶显示器的最底层为第0行 i=0xc0+i;//此算法为把最顶层做为第一层
wcode(i,1,1);
}
///////////////////////////////
void set_adr(uchar x,uchar y)//页值设置起始列值函数
{
x=x+0xb8;//行//页地址设置。10111A2A1A0 DDRAM的8行为一页A0~A2为页码LCD为64行8页
y=y+0x40;//列地址设置。01A5A4A3A2A1A0 两半屏分别有64列A0~A5送入列地址计数器 //作为列Y地址指针。每读写一次其自动加一指 向下一列DDRAM单元
wcode(x,1,1);
wcode(y,1,1);
}
///////////cl
ear清屏/////////////// https://www.wendangku.net/doc/6318229315.html,void
clear(void)///clear清屏
{
uchar i,loop;
for(i=0;i<8;i++)///循环页写0/////////
{
set_adr(i,0);//页码//行
for(loop=0;loop<64;loop++)
wdata(0x00,1,1);//列//左右屏幕同时写//
}
}
调用子程序
#include<reg51.h>
#define _zimo_h
#define uchar unsigned char
#define uint unsigned int
///////////////////////////////////////////////////////////////////////// // 汉字字模表

// // 汉字库: 宋体16.dot 纵向取模下高位,数据排列:从左到右从上到下 // //字节倒置
uchar code zuobiao[]={ /*-- 调入了一幅图像C:\Documents and Settings\Administrator\桌面\温度坐标.bmp --*/ /*-- 宽度x高度=128x64 --*/ 0x00,0x00,0x00,0x70,0x50,0xD0,0x00,0xF0,0x10,0xF0,0x00,0xFF,0x40,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xC1,0x01,0xC1,0x00,0xC1,0x41,0xC1,0x00,0xFF,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x01,0x07,0x00,0x07,0x04,0x07,0x00,0xFF,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, https://www.wendangku.net/doc/6318229315.html,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x15,0x15,0x1F,0x00,0x1F,0x11,0x1F,0x00,0xFF,0x04,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00
,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x0

0,0x74,0x54,0x5C,0x00,0x7C,0x44,0x7C,0x00,0xFF,0x10,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0xF0,0x10,0xF0,0x00,0xFF,0x40,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x01,0x01,0x00,0x
FF,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x44,0x7C,0x00,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x7D,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x75,0x55, 0x5D,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x55,0x55,0x7D,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x1D,0x11,0x7D,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x5D,0x55,0x75,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x7D,0x55,0x75,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x05,0x05,0x7D,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x7D,0x55,0x7D,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x1D,0x15,0x7D,0x01,0x01,0x01,0x01,0x01,0x01,0x7D,0x01,0x7D, https://www.wendangku.net/doc/6318229315.html,0x45
,0x7D,0x01,0x01,0x01,0x01,0x01,0x01,0x7D,0x01,0x01,0x7D,0x01,0x01,0x01,0x01, };
调用子程序
#include <reg51.h>
#define _lcd1602_h
#define uint unsigned int
#define uchar unsigned char
void delayus(uint k);//延时
void write_LCD_command(uchar command);//命令写入LCD
void write_LCD_data(uchar LCDdata);//数据写入LCD
void init_1602(void);//初始化LCD
void clear_LCD();//LCD清屏


void gotoxy(uchar x,uchar y);//光标在x行y列
sbit rs=P2^5;//指令寄存器的选择
sbit rw=P2^6;//数据写入
lcd sbit en=P2^7;//始能端
//////////////////////////////////////////////////.......1
void write_LCD_command(uchar command)//命令写入LCD
{
rw=0;//写入LCM
rs=0;//指令寄存器
en=1;//始能端
P3=command;//写命令
delayus(20);//延时40*20us
en=0;//关闭始能端
rw=1;//读取LCM }
void write_LCD_data(uchar LCDdata)//数据写入LCD//.......2
{
rw=0;
rs=1;
en=1;
P3=LCDdata;
delayus(1);//40us
en=0;
rw=1;
}
void init_1602(void)//初始化LCD/////...................3
{
write_LCD_command(0x38);// 0x38 单行显示//8位传输 https://www.wendangku.net/doc/6318229315.html,
write_LCD_command(0x0c);// 0x0C 屏幕开启//光标不出现//不闪烁
//write_LCD_command(0x0e);// 0x0C 屏幕开启//光标出现//不闪烁
//write_LCD_command(0x0f);// 0x0C 屏幕开启//光标出现 //闪烁
//write_LCD_command(0x0d);// 0x0C 屏幕开启//光标不出现 //闪烁
}
void clear_LCD()//LCD清屏...........................4
{
write_LCD_command(0x01);//0x01 LCD清屏
write_LCD_command(0x02);//0x02 光标回到左上角
}
void gotoxy(uchar x,uchar y)//光标在x行y列...............7
{
if(x==1)
write_LCD_command(128+y);//128=0b1000,0000
else
write_LCD_command(192+y);//192=0b1100,0000
}
void delayus(uint k)//延时..................................8
{
k=10*k;//40us
while(k--);
}

相关文档
相关文档 最新文档