久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
有關(guān)用2Y0A21紅外傳感器測量距離的程序,求幫助
[打印本頁]
作者:
林懂
時間:
2017-3-2 20:51
標(biāo)題:
有關(guān)用2Y0A21紅外傳感器測量距離的程序,求幫助
最近在做紅外測距實(shí)驗(yàn),用的是2Y0A21紅外傳感器,外加外置的ADC0809轉(zhuǎn)換模塊連接到單片機(jī)中,用數(shù)碼管顯示出測到的距離,程序在下面,紅外模塊和ADC的連線應(yīng)該沒有錯誤,但是不能測到距離,數(shù)碼管總是顯示000,求大神幫助為什么不能測出距離;PS:我的單片機(jī)數(shù)碼管顯示程序是正確的,程序編譯后沒有錯誤沒有警告
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit ST = P3^0;
sbit OE = P3^1;
sbit EOC = P3^2;
sbit CLK = P3^3;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit adress_A=P1^0; //這是定義ADIN0輸入
sbit adress_B=P1^1;
sbit adress_C=P1^2;
uchar DisplayData[8]; //數(shù)碼管顯示數(shù)組
uchar code table[]={ 0x3f , 0x06 , 0x5b , 0x4f ,0x66 , 0x6d,
0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c,
0x39 , 0x5e , 0x79 , 0x71} ;
void delayms(uint a) //延時函數(shù)
{
uint c,d;
for(c=a;c>0;c--)
for(d=110;d>0;d--);
}
/*******************************************************************************
* 函 數(shù) 名 : datapros()
* 函數(shù)功能 :AD讀取處理轉(zhuǎn)換函數(shù)
* 輸 入 : temp
* 輸 出 : 無
*******************************************************************************/
void datapros(int temp) //數(shù)據(jù)轉(zhuǎn)換函數(shù),用來轉(zhuǎn)換由AD轉(zhuǎn)換而來的電壓值,以便讓數(shù)碼管顯示
{
DisplayData[0] = 0x00;//因?yàn)閿?shù)據(jù)處理有小數(shù)點(diǎn)所以將溫度賦給一個浮點(diǎn)型變量
DisplayData[1]=table[temp/100];
DisplayData[2]=table[temp%100/10];
DisplayData[3]=table[temp%100%10];
}
/*******************************************************************************
* 函數(shù)名 :DigDisplay()
* 函數(shù)功能 :數(shù)碼管顯示函數(shù)
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void DigDisplay()
{
uchar i;
for(i=0;i<3;i++)
{
switch(i) //位選,選擇點(diǎn)亮的數(shù)碼管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//顯示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//顯示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//顯示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//顯示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//顯示第4位
case(5):
LSA=1;LSB=0;LSC=1; break;//顯示第5位
}
P0=DisplayData[3-i];//發(fā)送數(shù)據(jù)
delayms(5); //間隔一段時間掃描
P0=0x00;//消隱
}
}
void ADC0809 () //ADC0809啟動程序
{
long int temp;
long int temp1;
adress_A=0;adress_B=0;adress_C=0; //選擇IN0作為模擬信號輸入
ST=0; //START下降沿時啟動芯片,開始進(jìn)行A/D轉(zhuǎn)換,轉(zhuǎn)換期間保持低電平
OE=0;
delayms(10);
while(1)
{
ST=1;ST=0;
CLK=1; //用作AD的時鐘
CLK=0;
CLK=1;
CLK=0; //給一個脈沖,上升沿寄存器復(fù)位,下降沿AD轉(zhuǎn)換開始
while(!EOC)
{
CLK=1;
CLK=0;
} //當(dāng)EOC為1時,轉(zhuǎn)換結(jié)束
OE=1; //寄存器數(shù)據(jù)輸出到D0-D7
temp=P0;
OE=0; //DO-D7復(fù)位
temp1=(temp*500)/256; //AD值轉(zhuǎn)換成電壓值(V=AD*VREF/256)
//顯示AD值
datapros(temp1); //先轉(zhuǎn)換數(shù)據(jù)
DigDisplay();
}
}
void main()
{
ADC0809 ();
}
復(fù)制代碼
作者:
admin
時間:
2017-3-3 17:03
你先把a(bǔ)d的輸入端分別接地和vcc看看 看看這時候數(shù)碼管的顯示有沒有變化
作者:
林懂
時間:
2017-3-4 18:31
admin 發(fā)表于 2017-3-3 17:03
你先把a(bǔ)d的輸入端分別接地和vcc看看 看看這時候數(shù)碼管的顯示有沒有變化
都只是顯示000
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
韩日一区二区
|
在线中文字幕视频
|
日韩久久中文字幕
|
久久久久久综合
|
亚洲欧美一区二区三区国产精品
|
91视频91
|
亚洲激情网站
|
在线视频一区二区三区
|
日日操夜夜干
|
毛片一级黄色
|
在线一区视频
|
一区二区三区视频在线
|
天堂久久网
|
亚洲小说图片
|
成人看片在线观看
|
国产福利精品一区
|
久久91av
|
免费视频一区二区
|
玖草资源
|
国产精品日韩欧美
|
日韩精品中文字幕一区二区三区
|
亚洲欧美激情精品一区二区
|
久久久久久综合
|
五月婷婷导航
|
国产亚洲高清视频
|
欧美色性
|
精品国产一区二区三区免费
|
日本一区二区视频
|
日韩视频国产
|
成人影
|
久久久久久久久中文字幕
|
精品久久久久久久久久
|
久久综合狠狠综合久久
|
婷婷综合五月天
|
久久精品福利
|
91夜色在线观看
|
久久久不卡网国产精品一区
|
亚洲国产精品人人爽夜夜爽
|
国产无人区一区二区三区
|
国产精品久久久久久久久免费桃花
|
天天弄天天操
|