久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1887|回復: 0
打印 上一主題 下一主題
收起左側

求教各路大佬,單片機串行通信+AD轉換 接收到的數據有誤咋辦

[復制鏈接]
跳轉到指定樓層
樓主
10黑幣
要求是做到  
當收到上位機發送來的1后,向上位機發送字符串Turn on ad同時間隔1s讀取一次AD的值,換算成實際電壓浮點數,并且從串口發送到上位機。
當收到上位機發送來的2后,向上位機發送字符串Turn off ad,然后停止發送電壓
當收到上位機發送來的任何數后,向上位機發送字符串error
現在是按下面的單片機代碼無論發送什么都為error

//////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
曾對串行口函數 if  處進行過修改,
if(date==1)
  {
   flag_on=0;
  }
  if(date==2)
  {
   flag_on=1;
  }
if(date==3)
  {
   flag_on=2;
  }
現象是無論上位機收到任何數,都會輸出Turn on ad,并且讀取AD值,



#include "reg52.h"                        
#include"XPT2046.h"        
#include"stdio.h"
typedef unsigned int u16;         
typedef unsigned char u8;

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 date,flag,flag_on;
u16 time_num,flag_time,ad_val;
u8 disp[4];
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
float ad_vo;


void delay(u16 i)     //延時函數
{
        while(i--);        
}


void init()          //串行口定時器0初始化
{
TMOD=0X21;
TH1=0XF3;
TL1=0XF3;
TH0=0XFC;        
TL0=0X18;
PCON=0X80;
TR1=1;

SCON=0X50;
EA=1;
ES=1;
ET0=1;                        
  
}


void datapros()  //數據處理函數
{

        disp[0]=smgduan[ad_val/1000];//?λ
        disp[1]=smgduan[ad_val%1000/100];//??λ
        disp[2]=smgduan[ad_val%1000%100/10];//??λ
        disp[3]=smgduan[ad_val%1000%100%10];               
}



void DigDisplay()       //數碼管顯示函數
{
        u8 i;
        for(i=0;i<4;i++)
        {
                switch(i)         
                {
                        case(0):
                                LSA=0;LSB=0;LSC=0; break;
                        case(1):
                                LSA=1;LSB=0;LSC=0; break;
                        case(2):
                                LSA=0;LSB=1;LSC=0; break;
                        case(3):
                                LSA=1;LSB=1;LSC=0; break;
                }
                P0=disp[3-i];
                delay(100);
                P0=0x00;
        }               
}





void main()
{
init();
while(1)
{
   if(flag==1)
   {
        ES=0;
        TI=1;
        switch(flag_on)
        {
          case(0):puts("Turn on ad\n");TR0=1;break;
          case(1):printf("Turn off ad\n");TR0=0;break;
          case(2):puts("Error\n");break;
        }
        while(!TI);
        TI=0;
        ES=1;
        flag=0;
   }
if(flag_time==1)
{
flag_time=0;
   ad_val= Read_AD_Data(0x94);  //Read_AD_Data(0x94)讀取函數 無問題
   ad_vo=(float)ad_val*5.0/4095.0;
   ES=0;
   TI=1;
   printf("The voltage is %fV\n",ad_vo);
   while(!TI);
   TI=0;
   ES=1;
}
  datapros();
  DigDisplay();
}
}




  void  Timer0()interrupt  1  
{

  TH0=0XFC;        
  TL0=0X18;
  time_num++;
  if(time_num==1000)//1s
  {
   time_num=0;
   flag_time=1;
  }
}

void ser()interrupt  4    //串行口中斷
{
  RI=0;
  date=SBUF;
                 
  flag=1;
  if(date==1)
  {
   flag_on=0;
  }
  else if(date==2)
  {
   flag_on=1;
  }
  else
  {
   flag_on=2;
  }
}

51hei圖片222222222.png (227.57 KB, 下載次數: 76)

51hei圖片222222222.png

AD轉換串口通信.rar

28.7 KB, 下載次數: 7

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黑人成人网 | 一级黄色毛片免费 | 亚洲福利免费 | aaaaaa大片免费看最大的 | 国产精品欧美一区二区三区不卡 | 亚洲精品一区二区在线观看 | 日韩高清国产一区在线 | 97中文视频| 美国一级片在线观看 | 精品国产一区二区三区久久久蜜月 | 日本黄色短片 | 久在线视频 | 日韩欧美在 | 天堂中文资源在线 | 午夜av电影院 | 综合激情网 | 国产成人99久久亚洲综合精品 | 日韩精品一区二区三区中文字幕 | 日日噜噜噜夜夜爽爽狠狠视频, | 久久国产香蕉 | 日韩欧美三级电影 | 欧美日韩一区二区电影 | 韩日一区二区三区 | 欧美久久电影 | 久久久久久免费毛片精品 | 麻豆av电影网 | 一级毛片在线播放 | 亚洲成人999 | 一区二区三区成人 | 欧美一级淫片007 | 九九热精品在线 | 亚洲视频一区二区三区 | 国产a区| 一级做a| 国产精品有限公司 | 精品成人 | 午夜精品一区二区三区在线视 | 成人av影院 | 国产激情一区二区三区 | 自拍偷拍亚洲视频 | 亚洲午夜视频在线观看 |