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

標題: [求助]求教51單片機問題,高人指點! [打印本頁]

作者: VincentGu    時間: 2009-10-7 01:01
標題: [求助]求教51單片機問題,高人指點!
 電路的設想很簡單,就是用51控制ADC0809采集數據,再將數據通過串口傳到電腦里。

附件是設計的電路圖,從網上載的,沒有串口那一塊電路(因為串口那一路比較簡單):



然后是根據電路圖寫的程序:
#include"regx52.h"
 
#define uchar unsigned char

sbit ST=P1^1;
sbit EOC=P1^0;
sbit OE=P1^2;
sbit CLK=P1^3;
sbit ADDCS=P1^4;
 
uchar AD_DATA/*,CHECKSEND,CHECKBACK*/;                  //保存IN0和IN1經AD轉換后的數據
//uchar sendflag;                 //發送許可

xdata uchar sendstr;
 
/**********延時函數************/
void delay(uchar i)
{
 uchar j;
 while(i--)
 {
  for(j=125;j>0;j--)
  ;
 }
}
 
/*********系統初始化***********/
                       
void init()
{
  EA=1;                     //開總中斷
 
  TMOD=0x22;                //設定T0、T1定時器工作方式    
 
  TH0=0xff;                 //利用T0中斷產生CLK信號
  TL0=0xff;
  TR0=1;  
  ET0=1;                    //開啟T0中斷
 
  ST=0;
  OE=0;
 
  TH1=0xfa;                    //利用T1產生串口中斷  
  TL1=0xfa;
  TR1=1;                    
  ET1=1;                    //開啟T1中斷

  SCON=0x50;                //串行口工作在方式1
  PCON=0x40;                //bps增倍

  ES=0;                     //禁止串行中斷
  TI=0;                        //串行中斷發送禁用
  RI=0;                     //串行中斷接收禁用
//  sendflag=1;                //初始允許發送
}

/*****************通信函數************/
void send(uchar databuff)
{
  ES=1;  
  SBUF=databuff;            //發送數據
  while(!TI)
   ;                        //等待發送結束
  TI=0;
  ES=0;
}

/*void recieve(void)
{
  ES=1;
  CHECKBACK=SBUF;
  while(!RI)
   ;
  RI=0;
  ES=0;
} */

/***********AD轉換函數**********/
void AD()
{
 ST=0;
 ADDCS=0;                  //選擇通道IN0
 delay(5);
 ST=1;                    //啟動AD轉換
 delay(5);
 ST=0;
 while(EOC==0)
   ;
 OE=1;
 AD_DATA=P2;
 OE=0;
}

/***********T0、T1中斷服務程序************/
void timer0(void) interrupt 1
{
  CLK=~CLK;
  AD();
}

void timer1(void) interrupt 2
{
//  recieve();
//  if(CHECKBACK^CHECKSEND==0)
//  {
//   sendflag=1;
//  }
    sendstr=AD_DATA;
    send(sendstr);                                                                                                                           
}


/*****************主函數**************/

void main()
{
 init();
 while(1)
 {
//   AD();
//   sendstr=AD_DATA;
//   if(sendflag){
//    sendflag=0;
//   send(sendstr);
//   }
/*   else
   {
    sendflag=0;
    send(CHECKSEND);
   }     */
 }
}
================================================
問題在于,上電后,ADC0809壓根不工作,所以c51傳給串口的都是一堆亂碼

不知道是什么原因,有人說是因為多出來的串口通信改變了單片機某些端口的電平,但是還是一直很疑惑,不知道該怎么改電路...

請各位高人指點!

謝謝!
作者: linxquan    時間: 2009-10-18 16:11

幫你頂一下

 

 


作者: zjjhtony    時間: 2009-10-20 11:04
建議先仿真再搭電路
作者: wxf7651598    時間: 2009-10-23 09:49
你采用的操作方式是靜態方式,很麻煩,還要注意時序的問題,而且速度慢,建議采用總線方式,就是獻給AD芯片用XBYTE[]定義一個地址XBYTE[。。。] = 。。。啟動轉換,書上這種例子很多的




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品国产三级国产aⅴ中文 | 中文字幕日韩在线 | 免费精品久久久久久中文字幕 | 亚洲 欧美 日韩 在线 | 日韩av在线中文字幕 | 亚州一区二区三区 | 国产精品视频区 | 青青草av| 国产精品久久久久久久久久不蜜臀 | 亚洲一区二区三区免费视频 | 成人av在线播放 | 有码在线| 91精品国产综合久久国产大片 | 久久精品国产一区二区三区不卡 | 四虎影院在线免费观看 | 中文字幕精品一区 | 成人午夜电影在线观看 | 农村真人裸体丰满少妇毛片 | 国产精品中文字幕在线播放 | 欧美三级电影在线播放 | 欧洲免费视频 | 天天干夜夜操 | 网站国产 | 成人激情视频免费观看 | 黑人巨大精品欧美一区二区免费 | 天天操天天拍 | 国产精品国产a级 | 日本免费一区二区三区视频 | 精品亚洲91| www.日韩av.com| 亚洲黄色视屏 | 亚洲精品影院 | 成人国产精品 | 国产伦精品一区二区三区视频金莲 | 日韩一区二区三区视频 | 做a视频在线观看 | 久久综合狠狠综合久久 | 亚州精品成人 | 成人免费在线视频 | 欧美日韩不卡在线 | 欧美日韩一区精品 |