89c51+adc0832做的电压表,用1602来显示电压值的,怎么才能同时显示两路不同的电压数值呢,就是ch0 和 ch1两个通道测量的数值同时在1602屏上显示
大概就是这样的:
-------------------------------------
V1 = xx.xxV
V2 = xx.xxV
-------------------------------------
不知道代码该怎么写,网上找了一下,都是单路的,求帮助,最好有示例代码来学习,刚开始学习单片机,不懂的太多,来此求助,高手勿笑
------解决方案--------------------
uchar Get_Value_ADC0832(uchar ch )//加个参数,一边知道是读那个
{
uchar i,dat1=0,dat2=0;
// 起始控制位
CS=0; _nop_(); _nop_();
CLK=0; _nop_(); _nop_();
DI=1; _nop_(); _nop_();
CLK=1; _nop_(); _nop_();
// 第一个下降沿之前,设置DI=1/0;
// 选择单端/差分(SGL/DIF)模式中的单端输入模式
CLK=0; DI=1; _nop_(); _nop_();
CLK=1; _nop_(); _nop_();
// 第二个下降沿之前,设置DI=0/1;选择CH0/CH1
//看程序是在这里该
if(ch==1)
{
CLK=0; DI=1; _nop_(); _nop_();
}
else
{
CLK=0;DI=0;nop_();_nop_();
}
CLK=1; DI=0; _nop_(); _nop_();
//第三个下降沿之前,设置DI=1;
CLK=0;DI=1;_nop_(); _nop_();
//第4-11个脉冲期间读数据(MSB->LSB)
for(i=0;i<8;i++)
{
CLK=1; _nop_(); _nop_();
CLK=0; _nop_(); _nop_();
dat1=dat1<<1
------解决方案--------------------
DO;
}
//第12-19个脉冲期间读数据(LSB->MSB)
for(i=0;i<8;i++)
{
dat2=dat2
------解决方案--------------------
((uchar)(DO)<<i);
CLK=1; _nop_(); _nop_();
CLK=0; _nop_(); _nop_();
}
CS=1;
DI=1;
//CLK=1;
return Result_ADC0832=(dat1==dat2)?dat1:0;
}
void main()
{
uchar ch0,ch1
Initialize_LCD1602();//液晶初始化函数
while(1)
{
ch0=Get_Value_ADC0832(0);//通道0.1,A/D转换
ch1=Get_Value_ADC0832(0);//
Refesh_Disp_Buffer(ch0); //刷新显示缓冲,这个是把数字转换成字符串的函数?,这个也要该下
LCD_Write_Command(0x80);//写LCD命令,设置从第0行位置开始显示
LCD_Display(Display_Buffer[]);//在LCD上显示字符串 ,一个缓冲区就够了
Refesh_Disp_Buffer(ch1); //刷新显示缓冲
LCD_Write_Command(0xC0);//写LCD命令,设置从第1行位置开始显示
LCD_Display(Display_Buffer[]);//在LCD上显示字符串
}
}