用LCD1602来显示AD转换的值
最近在做一个AD转换和显示,AD转换能采集到数据,液晶显示也能显示出来,现在的问题是液晶显示无法显示出AD的值.具体程序如下:<br />#include <reg51.h> <br />#include <intrins.h> <br />sbit rs=P1^4; //指令和数据寄存器//<br />sbit rw=P1^5; //读写控制//<br />sbit e=P1^6; //片选// <br />sbit SCLK = P1^0; // 输入输出时钟I/O CLK<br />sbit SDOUT = P1^1; // 数据输出DATA OUT<br />sbit CS = P1^2; // 片选信号<br />sbit flag=P0^7;<br />unsigned char str[]="the AD result is:";<br />//...........液晶现实开始..........<br />void wait(unsigned int w)<br />{ <br />int time;<br />for (time=0;time <w;time++);<br />return;<br />}<br /><br />void busy()<br />{ <br /> while(1)<br /> {<br /> P0=0xff;<br /> rs=0;<br /> rw=1;<br /> e=1;<br /> if(!flag) break;<br /> }<br />}<br /><br />void w_dat(unsigned char dat) //写数据//<br />{<br />busy( );<br />rs=1;<br />rw=0;<br />e=1;<br />P0=dat;<br />e=0;<br />return;<br />}<br /><br />void w_com(unsigned char com) //写指令//<br />{<br />busy( );<br /><br />rs=0;<br />rw=0;<br />e=1;<br />P0=com;<br />e=0;<br />}<br /><br />void LCD_set_xy(unsigned char x,unsigned char y)<br />{<br /> unsigned char address;<br /> if(x == 1)<br /> address =0X80 + y;<br /> else <br /> address = 0XC0 + y;<br /> w_com(address); <br />}<br /><br />void LCD_write_string(unsigned char x,unsigned char y,unsigned char *s)<br />{<br /> LCD_set_xy(x,y); <br /> while(*s) <br /> {<br /> P0 = *s;<br /> w_dat(*s); <br /> s++;<br /> }<br />}<br /><br />void init(void) <br />{<br />unsigned char i;<br />for (i=0;i<2;i++) <br />{<br /> w_com(0x38);<br /> wait(10);<br />}<br />w_com(0x38);<br />w_com(0x0f);<br />w_com(0x18);<br />w_com(0x06);<br />w_com(0x01);<br />w_com(0x80);<br />}<br />//..........液晶现实模块结束........<br /><br />//.........AD转换模块开始.........<br />unsigned int Conversion(void)// AD转换程序,返回AD值<br />{<br /> char i,n;<br /> unsigned int Bit16_data;<br /> CS=0; //低电平有效,开始转换<br />for(i=0;i<6;i++) //延时<br />{ <br /> _nop_();<br /> SCLK=0;<br /> _nop_();<br /> SCLK=1;<br />}<br /><br />if(SDOUT==0)<br />{ <br />n=17;<br />while(n--)<br /> { <br /> _nop_();<br /> SCLK = 1; <br /> { Bit16_data = Bit16_data<<1; // 左移一位,或_crol_(temp,1)<br /> if(SDOUT == 1)<br /> Bit16_data = Bit16_data|0x0001; // 若接收到的位为1,则数据的最后一位置1<br /> else <br /> Bit16_data = Bit16_data&0xFFFE; // 否则数据的最后一位置0<br /> }<br /> SCLK=0; <br /> }<br />CS=1;<br />return(Bit16_data);<br />}<br />}<br />//.........AD转换模块结束..........<br />//........主函数开始...........<br />void main(void)<br />{<br /> unsigned ADresult;<br />init(); <br />LCD_write_string(1,0,str);<br />ADresult=Conversion();<br />wait(5); <br />while(1) <br /> {<br /> <br /> //LCD_write_string(2,0, ADresult);<br /> }<br />}<br />在编译的时候最后一行出错,无法编译,哪位高手帮忙解决一下?AD芯片用的是ADS8320,转换结束后数据放在变量ADresult中,液晶显示第一行能够显示,要求第二行显示ADresult!小弟刚从学校出来,很多东西都搞不定!谢谢!<br /><br /><br /><br /><br /><br />
页:
[1]