当前位置: 代码迷 >> 单片机 >> ,51单片机电压表如何同时显示两路电压
  详细解决方案

,51单片机电压表如何同时显示两路电压

热度:103   发布时间:2016-04-28 14:56:34.0
求助,51单片机电压表怎么同时显示两路电压
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上显示字符串
   }
  }
  相关解决方案