温度进度曲线
自己弄了好久没弄出来,求大神赐教~感激不尽···
波形图弄出来了 就是不知道为啥-20度显示的是0度,然后进度条不知道咋弄呀
进度怎么搞呀,有木有专家哦
曲线显示方式的设置
进度条首先确定总的进度比如总的显示时间,根据所用的时间可确定进度
没法显示负的温度值可能是由于你的波形图表相关的属性设置的不对
帮忙改一下这程序吧,怎么错误越改越多
#include
#define uint unsigned int
#define uchar unsigned char
#define x1 0x80
#define x2 0x88
#define y1 0x80
#define comm 0
#define dat 1
bit flag=0;
sbit rs=P2^0;//H=data;L="command"
sbit rw=P2^1;//H=read;L=write
sbit e=P2^2;//input enable
sbit PSB=P2^3; //H=关口;L=串口
sbit rst=P2^5; //reset signal 低电平有效
sbit busy=P2^4; //lcd busy bit
sbit DQ=P3^3; //18b20数据线引脚
uchar temper[2];//存放温度的数组
void wr_lcd(uchar dat_comm,uchar content);
void delay(uint us);
//void chk_busy(void);
//void set_dot(uchar x,uchar y);
void init_lcd(void)
{
rst=1;
PSB=1;
wr_lcd(comm,0x30);/**** ***30基本指令动作********/
wr_lcd(comm,0x31);/**** ***清屏,地址指针指向00H********/
wr_lcd(comm,0x06);/**** ***光标的移动方向********/
wr_lcd(comm,0x0c);/**** ***开显示,关游标********/
}
void wr_lcd(uchar dat_comm,uchar content)
{
chk_busy();
if(dat_comm)
{
rs=1;//data
rw=0;//write
}
else
{
rs=0;//command
rw=0;//write
}
P0=content;//output dator comm
e=1;
e=0;
}
/**** ***************************读数据*******************/
read_lcd()
{
uchar content;
chk_busy();
delay(3);
P0=0xff;
delay(3);
rs=1;//data
rw=1;//read
e=1;
content=P0;//位置可能不对头影响结果
delay(3);
return(content);
}
void chk_busy(void)
{
P0=0xff;
rs=0;
rw=1;
e=1;
while(busy==1);
e=0;
}
void delay(uint us)//delay time
{
while(us--);
}
delay1(uint ms)
{
uint i,j;
wr_lcd(comm,0x30);
//wr_lcd(comm,www);
for(j=0;j 0;i--)
{
DQ=0;
date>>=1;
DQ=1;
if(DQ)
{
date|=0x80;
delay2(4);
}
}
return(date);
}
/**** ***************************从ds18b20读一字节*******************/
uchar readbyte(void)//读一字节
{
uchar i=0;
uchar date=0;
for(i=8;i>0;i--)
{
DQ=0;
date>>=1;
DQ=1;
if(DQ)
{
date|=0x80;
delay2(4);
}
}
}
/**** ***************************向ds18b20写一字节*******************/
uchar writebyte(uchar date)//写一字节
{
uchar i=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay2(5);
DQ=1;
date>>=1;
}
delay2(4);
}
/**** ***************************cpu获取温度值*******************/
void readtenp(void)//读取温度
{
uchar a=0;
uchar b=0;
reset();
writebyte(0xcc);//跳过序列号
writebyte(0x44);//启动温度转换
reset();
writebyte(0xcc);//
writebyte(0xbe);//读9个寄存器,前2个为温度
a=readbyte();//低温
b=readbyte();//高位
temper[0]=a&0x0f;
a=a>>4;
temper[1]=b =6;i--)
{
if((i%2)==0)
{
set_dot2(i,57-huanzuobiao[i/2-3]);
}
}
for(i=1;i =6;i--)
{
if((i%2)==0)
{
set_dot1(i,57-huanzuobiao[i/2-3]);
}
}
wr_lcd(comm,0x30);
wr_lcd(comm,0x86);
wr_lcd(dat,dispbuf[tm4]);
wr_lcd(dat,dispbuf[tm3]);
wr_lcd(dat,0x2e);
wr_lcd(dat,dispbuf[tm2]);
delay1(2500);
wr_lcd(comm,0x01);
}
else
{
wr_lcd(dat,dispbuf[tm4]);
wr_lcd(dat,dispbuf[tm3]);
wr_lcd(dat,0x2e);
wr_lcd(dat,dispbuf[tm2]);
wr_lcd(dat,dispbuf[tm1]);
}
}
}