本人新学PIC单片机,想实现一个模拟量(电压)输入,用1602把电压大小显示出来。
编译后错误是
Warning [361] C:\Users\john\Desktop\programe\try.c; 43.1 function declared implicit int
Error [192] C:\Users\john\Desktop\programe\try.c; 62.1 undefined identifier "ADGO"
Warning [356] C:\Users\john\Desktop\programe\try.c; 67.20 implicit conversion of float to integer
这个错误实在搞不懂啊
ADGO不是ADCON0的一个寄存器吗,我借鉴了别人的程序也是这样写的,搞不懂啊。
#include<pic.h>
#define rs RA1 //端口定义
#define rw RA2
#define e RA3
#define uchar unsigned char
#define uint unsigned int
const char hall[]={'h','a','l','l','.','v','o','l','t','a','g','e'}; //显示霍尔电压
uint get_adan0(); //RA0的AD转换输出
uchar output[];
void init(); //初始化定义
void lcd_init(); //lcd初始化定义
void write_hall(); //显示霍尔电压函数
void write_output(); //显示AD转换输出
void write(char x); //显示一字节数据
void lcd_enable(); //lcd显示设置函数
void delay(); //延时函数定义
void main() //主函数程序
{
uint temp;
float lednum;
int a1,a2,a3,a4;
init(); //调用IO口初始化定义
lcd_init(); //调用lcd初始化定义
write_hall(); //调用显示霍尔电压字符
while(1)
{
temp=get_adan0();
lednum=temp/1000;
a1=(int)lednum;
a2=((int)(lednum*10)-a1*10);
a3=((int)(lednum*100)-a1*100-a2*10);
a4=((int)(lednum*1000)-a1*1000-a2*100-a3*10);
output[0]=a1;
output[1]='.';
output[2]=a2;
output[3]=a3;
output[4]=a4;
PORTC=0xC0; //定义第二行显示地址
lcd_enable(); //调用lcd显示设置函数
wirte_output(); //调用AD转换输出
}
}
void init()
{
TRISA=0x01;
TRISC=0x00;
PORTA=0;
PORTC=0;
ADCON0=0x41;
ADCON1=0x8e;
delay(10);
}
uint get_adan0()
{
uint adval16;
float advalf;
ADGO=1; //GODONE变一启动AD
while(ADGO);
adval16=ADRESH;
adval16=adval16<<8|ADRESL;
advalf=adval16/1023.0*5.0;
adval16=advalf*1000;
return(adval16);
}
void lcd_init()
{
PORTC=0x01; //清除显示
lcd_enable();
PORTC=0x38; //8位两行5乘7点阵
lcd_enable();
PORTC=0x0c; //显示开,光标关
lcd_enable();
PORTC=0x06;
lcd_enable();
PORTC=0x80;
lcd_enable();
}
void write_hall() //显示霍尔电压函数
{
int i;
for(i=0;i<0x0b;i++)
{
write(hall[i]);
}
}
void write_output() //显示输出电压函数
{
int i;
for(i=0;i<0x04;i++)
{
write(output[i]);
}
}
void write(char x) //写一个字节
{
PORTC=x;
rs=1;
rw=0;
e=0;
delay;
e=1;
}
void lcd_enable() //LCD显示设置函数
{
rs=0;
rw=0;
e-0;
delay();
e=1;
}
void delay() //延迟函数
{
int i;
for(i=0;i<50;i++);
}
|