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

標題: 求助,基于51單片機的超聲波測距數碼管不能顯示距離 [打印本頁]

作者: 一句話111    時間: 2017-5-27 17:41
標題: 求助,基于51單片機的超聲波測距數碼管不能顯示距離
本人小白,正在做避障小車,其中需要超聲波測距并用數碼管顯示距離,可是數碼管顯示一堆亂碼,求指教



程序如下


#include<reg52.h>
#include <intrins.h> //常變量定義:?
code unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf}; //表:共陽數碼管?0-9?-??
unsigned int time=0;
unsigned int timer=0;
unsigned long S=0;
bit flag =0;
unsigned char l_disbuff[4]={0xff,0,0,0,};//顯示緩沖
unsigned char l_posit=1;//位選擇
//引腳定義
sbit SMG_q=P1^0;//定義數碼管陽級控制腳(千位)本例程只用到三位數 碼管
sbit SMG_b=P1^1;//定義數碼管陽級控制腳(百位)
sbit SMG_s=P1^2;//定義數碼管陽級控制腳(十位)
sbit SMG_g=P1^3;//定義數碼管陽級控制腳(個位)  
sbit RX=P2^1;//模塊引腳
sbit TX=P2^0;//顯示函數,參數為顯示內容
void display()
{
P0=0XFF; //
switch(l_posit)
{
case 0: //選擇千位數碼管,關閉其它位
SMG_q=0;
SMG_b=1;
SMG_s=1;
SMG_g=1;
P0=0xff;//table[l_disbuff[0]];
//此位不顯示
break;
case 1: //選擇百位數碼管,關閉其它位
SMG_q=1;
SMG_b=0;
SMG_s=1;
SMG_g=1;
P0=table[l_disbuff[1]]&0x7f;//加入小數點
break;
case 2://選擇十位數碼管,關閉其它位
SMG_q=1;
SMG_b=1;
SMG_s=0;
SMG_g=1;
P0=table[l_disbuff[2]];
break;
case 3: //選擇個位數碼管,關閉其它位
SMG_q=1;
SMG_b=1;
SMG_s=1;
SMG_g=0;
P0=table[l_disbuff[3]];
break;
}
l_posit++;
if(l_posit>3)
l_posit=0;
}
/********************************************************/
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.7)/100;//算出來是CM
if((S>=700)||flag==1)//超出測量范圍顯示“-”
{
flag=0;
l_disbuff[1]=10;//“-”
l_disbuff[2]=10;//“-”
l_disbuff[3]=10;//“-”
}
else
{
l_disbuff[1]=S%1000/100;
l_disbuff[2]=S%1000%100/10;
l_disbuff[3]=S%1000%100%10;
}
}  
/********************************************************/
void zd0() interrupt 1//T0中斷用來計數器溢出,超過測距范圍
{
flag=1; //中斷溢出標志
}
/********************************************************/
void zd3() interrupt 3//T1中斷用來掃描數碼管和計800MS啟動模塊
{
TH1=0xf8;
TL1=0x30;
display();
timer++;
if(timer>=400)
{
timer=0;
TX=1;//800MS啟動一次模塊
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TX=0;
}
}
/*********************************************************/
void main(void)
{
TMOD=0x11;//設T0,T1為方式1
TH0=0;
TL0=0;
TH1=0xf8;//2MS定時
TL1=0x30;
ET0=1;//允許T0中斷
ET1=1;//允許T1中斷
TR1=1;//開啟定時器
EA=1; //開啟總中斷
while(1)
{
while(!RX);//當RX為零時等待
TR0=1;
//開啟計數
while(RX);//當RX為1計數并等待
TR0=0; //關閉計數
Conut();//計算
}
}






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩一区二区三区在线 | 国产精品99一区二区 | 日本精品一区二区三区视频 | 色婷婷综合久久久久中文一区二区 | 国产综合久久 | 国产在线观看一区 | 99久久婷婷国产精品综合 | 国产黄色精品在线观看 | 久久99深爱久久99精品 | 国产精品一区二区视频 | 日韩在线视频一区 | 精品中文字幕视频 | 欧美成人一区二区三区 | 天天天操 | 久夜精品| 精品中文字幕视频 | 青青草av | 国产一区二区三区网站 | 在线观看免费观看在线91 | 国产精品一区三区 | 亚洲午夜精品 | 日韩色视频 | 日韩欧美高清dvd碟片 | 欧美激情五月 | 国产精品完整版 | 国产欧美一区二区精品久导航 | 西西裸体做爰视频 | 久久精品国产一区 | 久久av网 | 日韩成人一区 | 日韩久久久久久久 | 成人av看片| 日本a视频 | 国产日韩欧美精品 | 日韩欧美在线播放 | 日本不卡免费新一二三区 | 欧美日韩高清在线一区 | 国产精品无码久久久久 | 国产亚洲欧美另类一区二区三区 | 国产欧美精品在线观看 | 狠狠的操|