单片机/MCUwilliam hill官网
直播中

金锦江

7年用户 140经验值
擅长:88551
私信 关注
[问答]

请教单片机按键跟ad问题

本人在做个设计,单片机通过ad采集电压值,液晶显示,3个按键调节电压上下限,其中2个按键控制加跟减,第三个键是开始采集键,想请教下,ad采集程序,放在第三个键功能下面吗?还是放main下,放在第三个键下面的while(1)的话,就跳不出这个循环了,我后面放在main下
void main()
{

    delay(10); //延时
    lcd_init(); //液晶初始化
    begindisplay();//开机显示界面
    while(1)
    {       
          keyscan();          //按键扫描
          ad_start();       //开启ad采集
    }
}

我在keyscan()里是有设置界面显示的,跟上面一样写的话,开机显示界面的文字就被后面界面文字覆盖了,不明白问题在哪里了

回帖(13)

人中狼

2017-7-23 09:36:58

最佳答案

第三按键判断改成这样,增加一个全局变量,unsigned char key_3_on = 0,
if(key_ok==0) //确认调节
{     delay(5);
      if(key_ok==0)
      {
        while(key_ok!=0); //释放按键
        flag=0; //设置键按键次数清零
       key_3_on = 1;
       }
}

主程序改成这样,
void main()
{

    delay(10); //延时
    lcd_init(); //液晶初始化
    begindisplay();//开机显示界面
    while(1)
    {        
          keyscan();          //按键扫描
          if(key_3_on == 1)ad_start();       //开启ad采集
    }
}

这样试试吧
举报

人中狼

2017-7-23 10:28:37
根据你的操作流程,ad采集程序应该放在按键扫描函数的后面,但是应该增加一个是否是第三个键按下的判断,是则启动ad采集程序
举报

金锦江

2017-7-23 11:38:38
引用: 人中狼 发表于 2017-7-23 10:28
根据你的操作流程,ad采集程序应该放在按键扫描函数的后面,但是应该增加一个是否是第三个键按下的判断,是则启动ad采集程序

第三个键按下的判断有的哦
if(key_ok==0) //确认调节
{     delay(5);
      if(key_ok==0)
      {
        while(key_ok!=0); //释放按键
        flag=0; //设置键按键次数清零
       // lcd_wcmd(0x0c); //取消光标闪烁
        

                 
            while(1)
            {
                          start_ad();
                               
              }

       }
}
这样一个while里,按了这个键,其他键就没反应了。比如已经才采集了,再想改上下限,按其他键没用了,这要怎么办?请指教
举报

人中狼

2017-7-23 12:16:28
程序不完整,不知道你的第三个键按下的判断在哪个程序里,另外这个
while(1)
            {
                          start_ad();
                                
              }
执行后就是死循环了,只会不停的执行start_ad(); ,你的思路和程序结构有问题,while不能随便用,特别是while(1)
举报

金锦江

2017-7-23 13:48:09
引用: 人中狼 发表于 2017-7-23 12:16
程序不完整,不知道你的第三个键按下的判断在哪个程序里,另外这个
while(1)
            {

第三个键按下的判断程序应该跟加减键的keyscan()程序分开吗?可不可以私聊你,给我个联系方式哈!
举报

金锦江

2017-7-23 13:58:51
引用: 人中狼 发表于 2017-7-23 12:16
程序不完整,不知道你的第三个键按下的判断在哪个程序里,另外这个
while(1)
            {

我知道有问题,就是这里想不出问题在哪里,麻烦指导我一下
举报

金锦江

2017-7-23 13:58:53
引用: 人中狼 发表于 2017-7-23 12:16
程序不完整,不知道你的第三个键按下的判断在哪个程序里,另外这个
while(1)
            {

我知道有问题,就是这里想不出问题在哪里,麻烦指导我一下
举报

金锦江

2017-7-23 13:58:54
引用: 人中狼 发表于 2017-7-23 12:16
程序不完整,不知道你的第三个键按下的判断在哪个程序里,另外这个
while(1)
            {

我知道有问题,就是这里想不出问题在哪里,麻烦指导我一下
举报

人中狼

2017-7-23 14:45:49
    while(1)
            {
                          start_ad();
                                
              }
把while(1)去掉,只保留start_ad(); 试试
举报

金锦江

2017-7-23 14:55:44
引用: 人中狼 发表于 2017-7-23 14:45
while(1)
            {
                          start_ad();

这样可以的,但是采集不能连续了
举报

金锦江

2017-7-23 17:57:48
引用: 人中狼 发表于 2017-7-23 14:45
while(1)
            {
                          start_ad();

感谢啊,好像可以了,厉害了~~我再试试其他功能~
举报

金锦江

2017-7-23 21:19:27
引用: 人中狼 发表于 2017-7-23 10:28
根据你的操作流程,ad采集程序应该放在按键扫描函数的后面,但是应该增加一个是否是第三个键按下的判断,是则启动ad采集程序

怎么写判断采集到的压力值与压力设置的上下限阈值比较的程序,我的如下,就是运行不出来,急救~

#include
#include
#include

#define uint unsigned int
#define uchar unsigned char
uint bai,shi,ge,fen,pbai,pshi,pge,pfen;
uint flag;
uchar i;
uchar break1=1;//全局变量,开始键按下后,置-1
uint p;
uint p1,p2; //用于判断压力高低用,p1上限,p2下限
***it lcdrs=P3^5;
***it lcdrw=P3^6;
***it lcden=P3^4;
uchar code dis1[] = {"欢迎使用"};
uchar code dis2[] = {"压力系统"};
uchar code dis3[] = {"设置"};
uchar code dis4[] = {"开始"};
uchar code dis5[] ={"设置压力范围"};

uchar code dis6[]={"当前压力"};
uchar code dis7[]={"压力高,放气中.."};
uchar code dis8[]={"压力低,充气中.."};
//uchar code dis9[]={"v"};
//uchar code dis10[]={"cmH2O"};
uchar code dis9[]={"压力正常"};
uchar code dis10[]={"设置完成"};
uchar code dis11[]={"设置中.."};

uchar code pressure[]={"0123456789"};      
uchar  tab1[] ={"H:35cmH2O"};        //上域
uchar  tab2[] ={"L:25cmH2O"};        //下域
uchar  tab3[11] ={"电压:0.000v"};        //当前电压值
uchar  tab4[14] ={"压力:0000cmH2O"};        //当前压力值
uint yuzhi[3]={35,25,00};//存放阈值数组                     



void main()
{


    delay(10);                 //延时
    wela=0; //屏蔽数码管位选
    dula=0; //屏蔽数码管段选
    lcd_init();
    begin();

    while(1)
    {        
        
                 keyscan();          //按键扫描

         if (break1==-1)
         {

             display();
                         p1=10*tab1[2]+tab1[3];                 
                     p2=10*tab2[2]+tab2[3];
                 if(p2                          {

                  lcd_pos(3,0);            
                              i = 0;
                                  while(dis9 != '')
                                  {
                                             lcd_wdat(dis9);      //压力高,放气中提示
                                            i++;
                                  }

                         }
                 if (p>p1)
                         {
        
                      lcd_pos(3,0);            
                              i = 0;
                                  while(dis7 != '')
                                  {
                                             lcd_wdat(dis7);      //压力高,放气中提示
                                            i++;
                                  }
                        
                         }
        
        
                         if (p                          {
        
                      lcd_pos(3,0);            
                              i = 0;
                                  while(dis8 != '')
                                  {
                                             lcd_wdat(dis8);      //压力低,充气中提示
                                            i++;
                                  }
                        
                         }
         }//if后括号

    }
}

void keyscan()  //按键扫描
{

   uchar i;
   uint volt,p;


/* 以下是设置键按下功能*/
if(key_set==0) //设置键按下
{
   delay(10); //消抖
   if(key_set==0) //设置键确认按下
   {


            flag++; //记录设置键按下次0

            if(break1!=-1)
            {
                    if(flag==1)//第一次按下功能键进入设置界面
                    {
                        
               
                        lcd_wcmd(0x01);      //清除LCD的显示内容
                                delay(10);
        
                                    lcd_pos(0,1);            
                                    i = 0;
                                    while(dis5 != '')
                                    {
                                          lcd_wdat(dis5);      //显示设置压力范围
                                          i++;
                                    }
        
                        lcd_pos(1,2);            
                                    i = 0;
                                    while(tab1 != '')
                                    {
                                          lcd_wdat(tab1);      //显示高阈值初始值
                                          i++;
                                    }
                       
                        lcd_pos(2,2);            
                                    i = 0;
                                    while(tab2 != '')
                                    {
                                          lcd_wdat(tab2);      //显示低阈值初始值
                                          i++;
                                    }
                                       
                                
                     }
        
                     if(flag==2) //第二次按下设置键,低阈值位闪烁
                     {
        
                     
        
                                 lcd_pos(3,2);            
                                      i = 0;
                                      while(dis11 != '')
                                      {
                                       lcd_wdat(dis11);      //显示设置完成
                                       i++;
                                      }
                     lcd_wcmd (0x93); //光标定位低阈值35位置
                     lcd_wcmd (0x0f); //光标开始闪烁
        
                                 }
        
        
                     if(flag==3) //第三次按下设置键,高阈值位闪烁
                     {
                     
                                 lcd_pos(3,2);            
                                      i = 0;
                                      while(dis11 != '')
                                      {
                                       lcd_wdat(dis11);      //显示设置完成
                                       i++;
                                      }
                                       
                                 lcd_wcmd (0x8b); //光标定位高阈值25位置
                     lcd_wcmd (0x0f); //光标开始闪烁
                                          
                        
                     }
                     if(flag==4) //第四次按下设置键,不闪烁,标记位置1
                     {
                          lcd_wcmd(0x0c); //取消光标闪烁
                          flag=1;//记录变成1
                                          lcd_pos(3,2);            
                                      i = 0;
                                      while(dis10 != '')
                                      {
                                       lcd_wdat(dis10);      //显示设置完成
                                       i++;
                                      }
                     }
             }//与if break1!=-1对应
                          //while(key_set!=0); //释放按键
                          while(!key_set); //释放按键
                          delay(10);
              while(!key_set); //释放按键
   }
}

/* 以下是增加键按下功能*/

if(flag!=0)
{        
    if(key_up==0) //只有设置键按下后,增大和减少键才有效
    {
        delay(10);
        if(key_up==0) //确认增加按键按下
        {
                //while(key_up!=0); //释放按键

                if(flag==2) //设置键第2次按下调节
                {

                     
                       yuzhi[0]++;
                       if (yuzhi[0]==100)
                       {
                                      yuzhi[0]=01;
                                   }
                       
                          tab1[2]=yuzhi[0]/10+0x30;
                   tab1[3]=yuzhi[0]%10+0x30;
                                 
                          
                  
                           lcd_pos(1,2);             //显示阈值高位
                           i = 0;
                               while(tab1 != '')
                               {
                                       lcd_wdat(tab1);      //显示字符
                                       i++;
                                   }


                    lcd_wcmd (0x93); //光标定位高阈值35位置
                    lcd_wcmd (0x0f); //光标开始闪烁

                 }


               if(flag==3) //设置键第3次按下调节
                {

                       
                        yuzhi[1]++;
                        if (yuzhi[1]==100)
                        {
                                       yuzhi[1]=01;
                        }

                                        tab2[2]=yuzhi[1]/10+0x30;
                    tab2[3]=yuzhi[1]%10+0x30;
        
                          
                           

                                lcd_pos(2,2);             //显示阈值高位
                                i = 0;
                                while(tab2 != '')
                                {
                                          lcd_wdat(tab2);      //显示字符
                                  i++;
                                }
                      lcd_wcmd (0x8b); //光标定位高阈值35位置
                      lcd_wcmd (0x0f); //光标开始闪烁

                  }

//以上设置键第3次按下调节
                     while(!key_up); //释放按键
                 delay(10);
                        while(!key_up); //释放按键


         }
    }
}


/* 以下是减小键按下功能*/
if(flag!=0)
{   
if(key_down==0)
{
     delay(10);
     if(key_down==0) //确认减少键被按下
     {
         //while(key_down!=0); //按键释放



                if(flag==2) //设置键第2次按下调节
                {


                           yuzhi[0]--;
                    if (yuzhi[0]==00)
                    {
                                          yuzhi[0]=99;
                    }           
                        tab1[2]=yuzhi[0]/10+0x30;
                    tab1[3]=yuzhi[0]%10+0x30;

                                
                  
                                
                                lcd_pos(1,2);             //显示阈值高位
                                        i = 0;
                                        while(tab1 != '')
                                        {
                                           lcd_wdat(tab1);      //显示字符
                                           i++;
                                        }
                        lcd_wcmd (0x93); //光标定位低阈值25位置
                        lcd_wcmd (0x0f); //光标开始闪烁

                  }
                 if(flag==3) //设置键第3次按下调节
                 {
                    yuzhi[1]--;
                    if (yuzhi[1]==00)
                    {
                                       yuzhi[1]=99;
                    }               
                    tab2[2]=yuzhi[1]/10+0x30;
                    tab2[3]=yuzhi[1]%10+0x30;        
                                       

                                        lcd_pos(2,2);             //显示阈值高位
                                        i = 0;
                                        while(tab2 != '')
                                        {
                                            lcd_wdat(tab2);      //显示字符
                                            i++;
                                        }
                                    lcd_wcmd (0x8b); //光标定位高阈值35位置
                    lcd_wcmd (0x0f); //光标开始闪烁
                  }
                                                  

                    while(!key_down); //释放按键
                                     delay(10);
                                while(!key_down); //释放按键


      }            
    }

}

/* 以下是确定键按下功能*/

if(key_start==0) //确认调节
{   
          delay(5);
              if(key_start==0)
              {
                while(key_start!=0); //释放按键
                flag=0; //设置键按键次数清零
               // lcd_wcmd(0x0c); //取消光标闪烁
               
        
                           lcd_wcmd(0x01);      //清除LCD的显示内容
                   break1=-1;
                  
                                
                  
               }


}
        


}//按键扫描函数的括号


/*********************************************************/
/*                                                       */
/* 采集数据显示程序                                          */
/*                                                       */
/*********************************************************/
void display()  
{  

        uint volt;
        start_ad();
        volt=read_ad();//ad采集存入volt
        volt=(uint)((volt*5.0*1000)/256);  
                        
        bai = volt/1000;//电压百位
        shi = volt/100%10;//电压十位
        ge  = volt/10%10;//电压个位
        fen = volt%10;//电压分位

        p = 1000*bai+100*shi+10*ge+fen-273;
                                
        p=p/9;
        p=p/0.98;
        //p=(volt-0.2)/0.09; //读取的电压值转化为气压值,单位kpa
        //p=p/0.098; //气压值单位转换为cmH20
                        
        pbai=p/1000;//压力百位
        pshi=p/100%10;//压力十位
        pge=p/10%10;//压力个位
        pfen=p%10;//压力分位
                        

        tab3[5]=bai+0x30;
        tab3[7]=shi+0x30;
        tab3[8]=ge+0x30;
        tab3[9]=fen+0x30;


    lcd_wcmd(0x82);           
        i = 0;
        while(dis6 != '')
        {
                lcd_wdat(dis6);      //显示当前压力
                i++;
        }
    lcd_wcmd(0x90);
        for(i=0;i<11;i++)
    {
          lcd_wdat(tab3);      //显示电压值
    }


        tab4[5]=pbai+0x30;
        tab4[6]=pshi+0x30;
        tab4[7]=pge+0x30;
        tab4[8]=pfen+0x30;
        
    //p=10*pge+pfen;//把当前压力值赋给p
    //p=10*pressure[pge]+pressure[pfen];//把当前压力值赋给p
        lcd_wcmd(0x88);
        for(i=0;i<14;i++)
    {

          lcd_wdat(tab4);      //显示压力值
    }            



}
举报

金锦江

2017-7-23 21:21:24
引用: 人中狼 发表于 2017-7-23 09:36
第三按键判断改成这样,增加一个全局变量,unsigned char key_3_on = 0,
if(key_ok==0) //确认调节
{     delay(5);

怎么写判断采集到的压力值与压力设置的上下限阈值比较的程序,我的如下,就是运行不出来,急救~

#include
#include
#include

#define uint unsigned int
#define uchar unsigned char
uint bai,shi,ge,fen,pbai,pshi,pge,pfen;
uint flag;
uchar i;
uchar break1=1;//全局变量,开始键按下后,置-1
uint p;
uint p1,p2; //用于判断压力高低用,p1上限,p2下限
***it lcdrs=P3^5;
***it lcdrw=P3^6;
***it lcden=P3^4;
uchar code dis1[] = {"欢迎使用"};
uchar code dis2[] = {"压力系统"};
uchar code dis3[] = {"设置"};
uchar code dis4[] = {"开始"};
uchar code dis5[] ={"设置压力范围"};

uchar code dis6[]={"当前压力"};
uchar code dis7[]={"压力高,放气中.."};
uchar code dis8[]={"压力低,充气中.."};
//uchar code dis9[]={"v"};
//uchar code dis10[]={"cmH2O"};
uchar code dis9[]={"压力正常"};
uchar code dis10[]={"设置完成"};
uchar code dis11[]={"设置中.."};

uchar code pressure[]={"0123456789"};      
uchar  tab1[] ={"H:35cmH2O"};        //上域
uchar  tab2[] ={"L:25cmH2O"};        //下域
uchar  tab3[11] ={"电压:0.000v"};        //当前电压值
uchar  tab4[14] ={"压力:0000cmH2O"};        //当前压力值
uint yuzhi[3]={35,25,00};//存放阈值数组                     



void main()
{


    delay(10);                 //延时
    wela=0; //屏蔽数码管位选
    dula=0; //屏蔽数码管段选
    lcd_init();
    begin();

    while(1)
    {        
        
                 keyscan();          //按键扫描

         if (break1==-1)
         {

             display();
                         p1=10*tab1[2]+tab1[3];                 
                     p2=10*tab2[2]+tab2[3];
                 if(p2                          {

                  lcd_pos(3,0);            
                              i = 0;
                                  while(dis9 != '')
                                  {
                                             lcd_wdat(dis9);      //压力高,放气中提示
                                            i++;
                                  }

                         }
                 if (p>p1)
                         {
        
                      lcd_pos(3,0);            
                              i = 0;
                                  while(dis7 != '')
                                  {
                                             lcd_wdat(dis7);      //压力高,放气中提示
                                            i++;
                                  }
                        
                         }
        
        
                         if (p                          {
        
                      lcd_pos(3,0);            
                              i = 0;
                                  while(dis8 != '')
                                  {
                                             lcd_wdat(dis8);      //压力低,充气中提示
                                            i++;
                                  }
                        
                         }
         }//if后括号

    }
}

void keyscan()  //按键扫描
{

   uchar i;
   uint volt,p;


/* 以下是设置键按下功能*/
if(key_set==0) //设置键按下
{
   delay(10); //消抖
   if(key_set==0) //设置键确认按下
   {


            flag++; //记录设置键按下次0

            if(break1!=-1)
            {
                    if(flag==1)//第一次按下功能键进入设置界面
                    {
                        
               
                        lcd_wcmd(0x01);      //清除LCD的显示内容
                                delay(10);
        
                                    lcd_pos(0,1);            
                                    i = 0;
                                    while(dis5 != '')
                                    {
                                          lcd_wdat(dis5);      //显示设置压力范围
                                          i++;
                                    }
        
                        lcd_pos(1,2);            
                                    i = 0;
                                    while(tab1 != '')
                                    {
                                          lcd_wdat(tab1);      //显示高阈值初始值
                                          i++;
                                    }
                       
                        lcd_pos(2,2);            
                                    i = 0;
                                    while(tab2 != '')
                                    {
                                          lcd_wdat(tab2);      //显示低阈值初始值
                                          i++;
                                    }
                                       
                                
                     }
        
                     if(flag==2) //第二次按下设置键,低阈值位闪烁
                     {
        
                     
        
                                 lcd_pos(3,2);            
                                      i = 0;
                                      while(dis11 != '')
                                      {
                                       lcd_wdat(dis11);      //显示设置完成
                                       i++;
                                      }
                     lcd_wcmd (0x93); //光标定位低阈值35位置
                     lcd_wcmd (0x0f); //光标开始闪烁
        
                                 }
        
        
                     if(flag==3) //第三次按下设置键,高阈值位闪烁
                     {
                     
                                 lcd_pos(3,2);            
                                      i = 0;
                                      while(dis11 != '')
                                      {
                                       lcd_wdat(dis11);      //显示设置完成
                                       i++;
                                      }
                                       
                                 lcd_wcmd (0x8b); //光标定位高阈值25位置
                     lcd_wcmd (0x0f); //光标开始闪烁
                                          
                        
                     }
                     if(flag==4) //第四次按下设置键,不闪烁,标记位置1
                     {
                          lcd_wcmd(0x0c); //取消光标闪烁
                          flag=1;//记录变成1
                                          lcd_pos(3,2);            
                                      i = 0;
                                      while(dis10 != '')
                                      {
                                       lcd_wdat(dis10);      //显示设置完成
                                       i++;
                                      }
                     }
             }//与if break1!=-1对应
                          //while(key_set!=0); //释放按键
                          while(!key_set); //释放按键
                          delay(10);
              while(!key_set); //释放按键
   }
}

/* 以下是增加键按下功能*/

if(flag!=0)
{        
    if(key_up==0) //只有设置键按下后,增大和减少键才有效
    {
        delay(10);
        if(key_up==0) //确认增加按键按下
        {
                //while(key_up!=0); //释放按键

                if(flag==2) //设置键第2次按下调节
                {

                     
                       yuzhi[0]++;
                       if (yuzhi[0]==100)
                       {
                                      yuzhi[0]=01;
                                   }
                       
                          tab1[2]=yuzhi[0]/10+0x30;
                   tab1[3]=yuzhi[0]%10+0x30;
                                 
                          
                  
                           lcd_pos(1,2);             //显示阈值高位
                           i = 0;
                               while(tab1 != '')
                               {
                                       lcd_wdat(tab1);      //显示字符
                                       i++;
                                   }


                    lcd_wcmd (0x93); //光标定位高阈值35位置
                    lcd_wcmd (0x0f); //光标开始闪烁

                 }


               if(flag==3) //设置键第3次按下调节
                {

                       
                        yuzhi[1]++;
                        if (yuzhi[1]==100)
                        {
                                       yuzhi[1]=01;
                        }

                                        tab2[2]=yuzhi[1]/10+0x30;
                    tab2[3]=yuzhi[1]%10+0x30;
        
                          
                           

                                lcd_pos(2,2);             //显示阈值高位
                                i = 0;
                                while(tab2 != '')
                                {
                                          lcd_wdat(tab2);      //显示字符
                                  i++;
                                }
                      lcd_wcmd (0x8b); //光标定位高阈值35位置
                      lcd_wcmd (0x0f); //光标开始闪烁

                  }

//以上设置键第3次按下调节
                     while(!key_up); //释放按键
                 delay(10);
                        while(!key_up); //释放按键


         }
    }
}


/* 以下是减小键按下功能*/
if(flag!=0)
{   
if(key_down==0)
{
     delay(10);
     if(key_down==0) //确认减少键被按下
     {
         //while(key_down!=0); //按键释放



                if(flag==2) //设置键第2次按下调节
                {


                           yuzhi[0]--;
                    if (yuzhi[0]==00)
                    {
                                          yuzhi[0]=99;
                    }           
                        tab1[2]=yuzhi[0]/10+0x30;
                    tab1[3]=yuzhi[0]%10+0x30;

                                
                  
                                
                                lcd_pos(1,2);             //显示阈值高位
                                        i = 0;
                                        while(tab1 != '')
                                        {
                                           lcd_wdat(tab1);      //显示字符
                                           i++;
                                        }
                        lcd_wcmd (0x93); //光标定位低阈值25位置
                        lcd_wcmd (0x0f); //光标开始闪烁

                  }
                 if(flag==3) //设置键第3次按下调节
                 {
                    yuzhi[1]--;
                    if (yuzhi[1]==00)
                    {
                                       yuzhi[1]=99;
                    }               
                    tab2[2]=yuzhi[1]/10+0x30;
                    tab2[3]=yuzhi[1]%10+0x30;        
                                       

                                        lcd_pos(2,2);             //显示阈值高位
                                        i = 0;
                                        while(tab2 != '')
                                        {
                                            lcd_wdat(tab2);      //显示字符
                                            i++;
                                        }
                                    lcd_wcmd (0x8b); //光标定位高阈值35位置
                    lcd_wcmd (0x0f); //光标开始闪烁
                  }
                                                  

                    while(!key_down); //释放按键
                                     delay(10);
                                while(!key_down); //释放按键


      }            
    }

}

/* 以下是确定键按下功能*/

if(key_start==0) //确认调节
{   
          delay(5);
              if(key_start==0)
              {
                while(key_start!=0); //释放按键
                flag=0; //设置键按键次数清零
               // lcd_wcmd(0x0c); //取消光标闪烁
               
        
                           lcd_wcmd(0x01);      //清除LCD的显示内容
                   break1=-1;
                  
                                
                  
               }


}
        


}//按键扫描函数的括号


/*********************************************************/
/*                                                       */
/* 采集数据显示程序                                          */
/*                                                       */
/*********************************************************/
void display()  
{  

        uint volt;
        start_ad();
        volt=read_ad();//ad采集存入volt
        volt=(uint)((volt*5.0*1000)/256);  
                        
        bai = volt/1000;//电压百位
        shi = volt/100%10;//电压十位
        ge  = volt/10%10;//电压个位
        fen = volt%10;//电压分位

        p = 1000*bai+100*shi+10*ge+fen-273;
                                
        p=p/9;
        p=p/0.98;
        //p=(volt-0.2)/0.09; //读取的电压值转化为气压值,单位kpa
        //p=p/0.098; //气压值单位转换为cmH20
                        
        pbai=p/1000;//压力百位
        pshi=p/100%10;//压力十位
        pge=p/10%10;//压力个位
        pfen=p%10;//压力分位
                        

        tab3[5]=bai+0x30;
        tab3[7]=shi+0x30;
        tab3[8]=ge+0x30;
        tab3[9]=fen+0x30;


    lcd_wcmd(0x82);           
        i = 0;
        while(dis6 != '')
        {
                lcd_wdat(dis6);      //显示当前压力
                i++;
        }
    lcd_wcmd(0x90);
        for(i=0;i<11;i++)
    {
          lcd_wdat(tab3);      //显示电压值
    }


        tab4[5]=pbai+0x30;
        tab4[6]=pshi+0x30;
        tab4[7]=pge+0x30;
        tab4[8]=pfen+0x30;
        
    //p=10*pge+pfen;//把当前压力值赋给p
    //p=10*pressure[pge]+pressure[pfen];//把当前压力值赋给p
        lcd_wcmd(0x88);
        for(i=0;i<14;i++)
    {

          lcd_wdat(tab4);      //显示压力值
    }            



}
举报

更多回帖

×
20
完善资料,
赚取积分