LCD温度曲线显示
LCDLCD 温度曲线显示温度曲线显示 #includereg51.h #includeLCD12864.h void hua_zuobiao(void);//画坐标 void delay1ms(uint k);//延时间 void TLC2543(void);//2543 读数据子函数 void count_ad(void);//1602 的显示 uchar code shuzi[]={0 x00,0 x80,0 x40,0 x20,0 x10,0 x08,0 x04,0 x02,0 x01};//0--8 uchar code number[]={0123456789}; uchartab1[]={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; i16;i++) write_LCD_data(tab1[i]); gotoxy(2,0); for(i=0;i16;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(j50){j=0; wendu=ad/100;//取温度的前 2 位 x=(wendu-1)/8; x=6-x; dp=(wendu-1)%8+1; if(y64) { 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=0 xb8+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) { 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; i16;i++)write_LCD_data(tab1[i]); } ////////////////////////////////// void TLC2543(void)//2543 读数据子函数 {uchar i;//输入数据为 0 x00//0 x10 为第一通道 ad=0; clk=0; cs=0; for(i=0; i12;i++) { if(adtaout==1)ad=ad|0 x01;//读出数据 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;j8;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); } //////////// 调用子程序 #includereg51.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; sbitRS=P2^2;//或 DI sbit RW=P2^3; sbitE=P2^4; //P0 口为数据口 ////////////////////////////// void initi_LCD(void)//初始化 LCD { wcode(0 x3f,1,1);//显示开//0 x3e 关 set_startline(0);//起始行第 0 行 clear();//清屏 } /////////////////////// void delay (uint k)//延时 { while(k--); } ////