标题:
程序有问题,液晶显示用的是5110的,感觉显示部分有问题,有软件大神帮看吗
[打印本页]
作者:
3054796495
时间:
2017-11-17 23:08
标题:
程序有问题,液晶显示用的是5110的,感觉显示部分有问题,有软件大神帮看吗
#include "reg52.H"
#include "LCD5510.H"
#include "intrins.h"
#include "absacc.h"
#define uint unsigned int
#define uchar unsigned char
uchar tem0,tem1; //用于存放50ms中所记脉冲个数的高低字节
uchar temp0,temp1; //用于存放最终换算出的湿度的高低字节
uint f=0; //频率初值
void delay1s(void)
{
unsigned char i,j,k;
for(i=167; i>0; i--)
for(j=171; j>0; j--)
for(k=16; k>0; k--)
{
;
}
}
void Init_timer()
{
TMOD=0x51; //0101 0001 定时器1在方式1下工作16位计数器 定时器0在方式1下工作16位定时器
TL0=0x00; //定时器0初值 定时50000us
TH0=0x4C;
TL1=0x00; //定时器1清零
TH1=0x00;
ET0=1; //使能定时器0中断
ET1=1; //使能定时器1中断
EA=1; //使能总中断
TR0=1; //开始计时
TR1=1;
}
void tran()
{
f=tem1;
f=(f<<8)|tem0; //计算出50ms中所记脉冲个数
f=f*20; //50ms*20=1000ms=1s 1秒钟所记脉冲个数等于频率
if((5623<=f)&&(f<=6852)) //不同频率对于不同相对湿度 相对湿度的有效范围为(0%--100%)
{
if((6734<f)&&(f<=6852))
{temp0=0;temp1=(6852-f)*10/118;}
if((6618<f)&&(f<=6734))
{temp0=1;temp1=(6734-f)*10/116;}
if((6503<f)&&(f<=6618))
{temp0=2;temp1=(6618-f)*10/115;}
if((6388<f)&&(f<=6503))
{temp0=3;temp1=(6503-f)*10/115;}
if((6271<f)&&(f<=6388))
{temp0=4;temp1=(6388-f)*10/117;}
if((6152<f)&&(f<=6271))
{temp0=5;temp1=(6271-f)*10/119;}
if((6029<f)&&(f<=6152))
{temp0=6;temp1=(6152-f)*10/123;}
if((5901<f)&&(f<=6029))
{temp0=7;temp1=(6029-f)*10/128;}
if((5766<f)&&(f<=5901))
{temp0=8;temp1=(5901-f)*10/135;}
if((5623<f)&&(f<=5766))
{temp0=9;temp1=(5766-f)*10/143;}
}
else
{
temp0=0;temp1=0;
}
}
void main(void)
{
uchar i, humi=0;
uchar LCD_contrast = 0xc8; //此值对比度合适
Init_timer();
LCD5510_Init();
LCD_write_cmd(0x21);//工作模式, 水平寻址, 扩展指令
LCD_write_cmd(0xbe);//对比度调节
LCD_write_cmd(0x20);//工作模式, 水平寻址, 常规指令
while(1)
{
tran();
temp0&=0x0F;
temp1&=0x0F;
temp0=temp0<<4;
humi=temp0|temp1;
LCD_clr_scr(); //清屏
// LCD_printn(2, 2, humi, 3);
delay1s();
delay1s();
}
}
void timer0() interrupt 1
{
EA =0;
TR0=0;
TR1=0;
TL0=0xFF; //重装初值 定时50000us OX4BFFH
TH0=0x4B;
tem0=TL1; //读取50ms中所记脉冲个数
tem1=TH1;
TL1=0x00; //定时器1清零
TH1=0x00;
//f=1; //作标注位
TR0=1;
TR1=1;
EA=1;
}
void timer1() interrupt 3 //T1中断,表示计数的脉冲溢出,超出了可测量的频率范围(在50ms内计数达65535)
{ //显然在这里不可能。所以重新启动。
EA =0;
TR0=0;
TR1=0;
TL0=0x00; //重装初值 定时50000us
TH0=0x4C;
TL1=0x00; //定时器1清零
TH1=0x00;
TR0=1;
TR1=1;
EA=1;
}
作者:
cjjcjj1
时间:
2017-11-18 14:38
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1