欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: AD8090 問(wèn)題 [打印本頁(yè)]

作者: xiaojin    時(shí)間: 2017-5-22 13:54
標(biāo)題: AD8090 問(wèn)題
為何程序//功能:ADC0809模塊測(cè)試,讀取IN3口的模擬電
//編譯環(huán)境: KEIL UVISION2
//單片機(jī)晶振:12M  單片機(jī)型號(hào)AT89S52
//單片機(jī)晶振: 無(wú)特殊要求
//作者:興向榮電子元件店
//日期:2013.06.20
//功能:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int

// adc0809模塊接線
#define uchar unsigned char
sbit STR=P1^0; //單片機(jī)P1.0接模塊STR引腳, 啟動(dòng)轉(zhuǎn)換信號(hào)
sbit EOC=P1^1; //單片機(jī)P1.1接模塊EOC, 轉(zhuǎn)換結(jié)束信號(hào),高電平有效
sbit OE=P1^2; //單片機(jī)P1.2接模塊OE,輸出允許信號(hào),高電平有效
sbit CLK=P1^3; //單片機(jī)P1.3接CLK ,ADC0809時(shí)鐘,輸入50-800KHZ的頻率
               //一般選用500K
#define adc0809_data  P3// ADC0809模塊的D0-D7分別接P3.0-P3.7
/*地址選擇 A 接H  
           B 接H
           C 接L
選擇通到IN3,當(dāng)然也可以通過(guò)軟件設(shè)置地址
     REF+ 接VCC
     REF- 接GND
這樣 AD=256*(VIN-(VREF-))/(VREF+)-(VREF-)
     (VREF+)=5V;
     (VREF-)=0V;
     AD=256*VIN/5
所以IN3口的電壓VIN=AD*5/256;
*/
uchar AD_DATA[1]; //保存IN0通道轉(zhuǎn)換后的數(shù)據(jù)
uint  addata2;
//==============LCD1602接口連接方法=====================
/*-----------------------------------------------------
       |DB0-----P0.0 | DB4-----P0.4 | RW-------P2.3    |
       |DB1-----P0.1 | DB5-----P0.5 | RS-------P2.4    |
       |DB2-----P0.2 | DB6-----P0.6 | E--------P2.2    |
       |DB3-----P0.3 | DB7-----P0.7 |
    ---------------------------------------------------*/
//================================================*/              
#define LCM_Data     P0    //LCD1602數(shù)據(jù)接口
#define Busy         0x80   //用于檢測(cè)LCM狀態(tài)字中的Busy標(biāo)識(shí)
sbit    LCM_RW     = P2^3;  //讀寫控制輸入端,LCD1602的第五腳
sbit    LCM_RS     = P2^4;  //寄存器選擇輸入端,LCD1602的第四腳
sbit    LCM_E      = P2^2;  //使能信號(hào)輸入端,LCD1602的第6腳


//**************函數(shù)聲明***************************************
void    WriteDataLCM                (uchar WDLCM);//LCD模塊寫數(shù)據(jù)
void    WriteCommandLCM        (uchar WCLCM,BuysC); //LCD模塊寫指令
uchar   ReadStatusLCM(void);//讀LCD模塊的忙標(biāo)
void    DisplayOneChar(uchar X,uchar Y,uchar ASCII);//在第X+1行的第Y+1位置顯示一個(gè)字符
void    LCMInit(void);//LCD初始
void    delayms(uint ms);//1MS基準(zhǔn)延時(shí)程序
void    delay(uchar i); //延時(shí)函數(shù)2
void    DisplayListChar(uchar X,uchar Y,uchar delayms, uchar code *DData);
void   judge_xianshi(void);//顯示處理程序
void init();//系統(tǒng)初始化設(shè)置
void AD();//讀取AD數(shù)據(jù)
uchar flag1;
//***********************主程序******************************
main()   
{   
   init();//系統(tǒng)初始化設(shè)置
   LCMInit();
   while(1)
   {
       AD();
       judge_xianshi();
       delayms(100);
      
   }
}
/*********
系統(tǒng)初始化
***********/
void init()
{  
  EA=1; //開(kāi)總中斷
  TMOD=0x02; //設(shè)定定時(shí)器 T0工作方式
  TH0=216; //利用T0中斷產(chǎn)生CLK信號(hào)
  TL0=216;  
  TR0=1; //啟動(dòng)定時(shí)器T0
  ET0=1;
  STR=0;
  OE=0;

}  
void   judge_xianshi()
{
  addata2=AD_DATA[0]*100;//把數(shù)據(jù)擴(kuò)大100,為下面求取小數(shù)位后2位做準(zhǔn)備
  DisplayListChar(0,1,0, "xingxiangrong");//在液晶的第一行顯示字符"XINGXIANGR"
  DisplayListChar(1,0,0, "AD="); //在液晶的第二行第0位開(kāi)始顯示"AD="
  DisplayOneChar( 1, 3, AD_DATA[0]/100+0x30); //顯示AD數(shù)據(jù)的百位
  DisplayOneChar( 1, 4, AD_DATA[0]/10%10+0x30);//顯示AD數(shù)據(jù)的十位
  DisplayOneChar( 1, 5, AD_DATA[0]%10+0x30);//顯示AD數(shù)據(jù)的各位
  DisplayListChar(1,7,0, "Vin="); //在液晶的第二行第8位開(kāi)始顯示"Vin="
//根據(jù)VIN=AD*5/256,求取IN3通到輸入的電壓
  DisplayOneChar( 1, 11, AD_DATA[0]/51+0x30);//顯示輸入電壓的整數(shù)位
  DisplayListChar(1,12,0, ".");//顯示小數(shù)點(diǎn)
  DisplayOneChar( 1, 13, addata2/51/10%10+0x30);//顯示輸入電壓小數(shù)后1位
  DisplayOneChar( 1, 14, addata2/51%10+0x30);//顯示輸入電壓小樹(shù)后2位
  DisplayListChar(1,15,0, "V");
}
/***********AD
轉(zhuǎn)換函數(shù)
**********/
void AD()
{
   STR=0;
   //ADDR這樣如果不是通道0,可以在這邊加一條其他地址的程序
   delay(10);  
   STR=1; //啟動(dòng)AD轉(zhuǎn)換
   delay(10);
   STR=0;  
   while(0==EOC);//等待轉(zhuǎn)換結(jié)束
   OE=1;  
   AD_DATA[0]=adc0809_data; //讀取AD數(shù)據(jù),數(shù)據(jù)范圍為0-255
   OE=0;  
程序沒(méi)有下載完成






歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1