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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助,基于51單片機的超聲波測距數碼管不能顯示距離

[復制鏈接]
跳轉到指定樓層
樓主
ID:205456 發表于 2017-5-27 17:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本人小白,正在做避障小車,其中需要超聲波測距并用數碼管顯示距離,可是數碼管顯示一堆亂碼,求指教



程序如下


#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();//計算
}
}

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久合久久 | 亚洲一区二区三区免费在线观看 | 亚洲精品久久视频 | 成人免费观看男女羞羞视频 | 亚洲国产精品久久久久秋霞不卡 | 欧美一级二级视频 | 91精品国产91久久综合桃花 | 99视频在线看 | 日干夜干 | 国产免费黄网 | 狠狠操狠狠干 | 69视频在线播放 | 青娱乐自拍 | 成人免费在线视频 | 久久久久久久久久久国产 | 欧美aⅴ在线观看 | 欧美激情视频一区二区三区在线播放 | 久久久久国产一区二区三区 | 99久久婷婷国产综合精品电影 | 日韩欧美在线观看 | 一区二区视频在线 | 一级一级毛片免费看 | 亚洲欧美日韩国产综合 | 日韩精品一区二区三区在线观看 | 国产综合久久 | 亚洲免费三区 | 中文字幕亚洲区一区二 | 亚洲精品黄色 | 久一精品 | 一区二区免费在线 | 超碰在线97国产 | 亚洲精品一 | 一区二区三区在线观看视频 | 亚洲综合在线视频 | 亚洲精品一二三 | 欧美日韩一二三区 | 久久首页 | 日日射夜夜骑 | 亚洲国产精品福利 | 国产情侣在线看 | 在线播放一区二区三区 |