标题:
请大家帮我看看程序 AD转换的液晶显示 求帮助
[打印本页]
作者:
HUANGJIEYO
时间:
2018-4-1 16:40
标题:
请大家帮我看看程序 AD转换的液晶显示 求帮助
单片机源程序如下:
#include<reg52.h>
#include<intrinS.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
sbit ALE=P3^3;
sbit START=P3^3;
sbit OE=P3^5;
sbit EOC=P3^7;
sbit CLK=P3^6;
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;
uchar disp_buf[2][16]=
{
{
"CH0 Volt=0.00V"},
{"CH1 Voit=0.00V"}
};
void delayms(uint t)
{
uint i,j;
for(i=0;j<t;i++);
for(j=0;j<120;j++);
}
void init_t0()
{
TMOD=0x02;
TH0=0x14;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
}
uchar ad_cov(uchar ch)
{
uchar ad_data;
P3=ch;//kljlll
ALE=1;_nop_();_nop_();ALE=0;
START=1;_nop_();_nop_();START=0;
while(!EOC);
OE=1;
//_nop_();_nop_();_nop_;_nop_();_nop_();_nop_();
ad_data=P1;
OE=0;
return(ad_data);
uchar Busy_Check() //提示这儿有错误,这是为啥?
{
uchar lcd_status;
RS=0;
RW=1;
EN=1;
delayms(1);
lcd_status=P0;
EN=0;
return(lcd_status);
}
void write_lcd_command(uchar cmd)
{
while (busy_check()&0x80);
RS=0;
RW=0;
EN=0;
P0=cmd;EN=1;delayms(1);EN=0;
}
void write_lcd_data(uchar dat)
{
while ((busy_check()&0x80)==0x80);
RS=1;
RW=0;
EN=0;
P0=dat;EN=1;delayms(1);EN=0;
void init_1602
{
write_lcd_command(0x38);
delayms(1);
write_lcd_command(0x01);
delayms(1);
write_lcd_command(0x06);
delayms(1);
write_lcd_command(0x0c);
delayms(1);
}
void refresh_disp(uchar ch,uchar ad_data)
{
uint t;
t=ad_data*500.0/255;
disp_buf[ch][10]=t/100+0x30;
disp_buf[ch][12]=t/10%10+0x30;
disp_buf[ch][13]=t%10+0x30;
}
main()
{
uchar i,j,k;
init_t0();
init_1602();
while(1)
{
for(i=0;i<2;i++)
{
for(j=0;j<20;j++)
{
refresh_disp(i,ad_cov(i));
write_lcd_command(i==0?0x80:0xc0);
delayms(1);
for(k=0;k<strlen(disp_buf[i]);k++)
{
write_lcd_data(disp_buf[i][k]);
delayms(1);
}
}
}
}
}
}
}
void intt0() interrupt 1
{
CLK=~CLK;
}
复制代码
作者:
admin
时间:
2018-4-1 20:34
什么问题 还电路图 还有芯片型号都不知道 无法帮助 先转走了
作者:
zhangxiaozi
时间:
2018-4-1 22:21
你的问题是你不认真!
53行84行没有函数的花括号配对,mian()函数后边又多加花括号
定义的是BusyCheck(),后边调用的却是busycheck()
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1