欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機超聲波測距數(shù)碼管顯示
[打印本頁]
作者:
lkx526
時間:
2016-11-2 00:37
標題:
51單片機超聲波測距數(shù)碼管顯示
/***********************************************************************************************************/
//hc-sr04 超聲波測距模塊 DEMO 程序 QX-MCS51開發(fā)板數(shù)碼管顯示
//晶振:11。0592
//接線:模塊TRIG(控制端)接 P1.2 ECH0(返回值) 接P1.1 VCC接開發(fā)板左上角5V0排針,GND接GND
//數(shù)碼管:共陰極
/***********************************************************************************************************/
#include <AT89x51.H> //器件配置文件
#include <intrins.h>
#define RX P1_1
#define TX P1_2
sbit DU = P2^6; //數(shù)碼管段選
sbit WE = P2^7; //數(shù)碼管位選
unsigned int time=0;
unsigned int timer=0;
unsigned char posit=0;
unsigned long S=0;
bit flag =0;
unsigned char const discode[] ={ 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F,0x6F,0x40,0x00/*-*/};
unsigned char const positon[3]={ 0xfe,0xfd,0xfb};
unsigned char disbuff[4] ={ 0,0,0,0,};
/********************************************************/
void Display(void) //掃描數(shù)碼管
{
DU = 0;
if(posit==0)
{P0=(discode[disbuff[posit]])|0x80;}
else
{P0=discode[disbuff[posit]];}
DU = 1;
DU = 0;
WE = 0;
P0=positon[posit];
WE=1;
WE=0;
if(++posit>=3)
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;
disbuff[0]=10; //“-”
disbuff[1]=10; //“-”
disbuff[2]=10; //“-”
}
else
{
disbuff[0]=S%1000/100;
disbuff[1]=S%1000%100/10;
disbuff[2]=S%1000%10 %10;
}
}
/********************************************************/
void zd0() interrupt 1 //T0中斷用來計數(shù)器溢出,超過測距范圍
{
flag=1; //中斷溢出標志
}
/********************************************************/
void zd3() interrupt 3 //T1中斷用來掃描數(shù)碼管和計800MS啟動模塊
{
TH1=0xf8;
TL1=0xcd;
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為方式1,GATE=1;
TH0=0;
TL0=0;
TH1=0xf8; //2MS定時
TL1=0xcd;
ET0=1; //允許T0中斷
ET1=1; //允許T1中斷
TR1=1; //開啟定時器
EA=1; //開啟總中斷
while(1)
{
while(!RX); //當RX為零時等待
TR0=1; //開啟計數(shù)
while(RX); //當RX為1計數(shù)并等待
TR0=0; //關(guān)閉計數(shù)
Conut(); //計算
}
}
作者:
我說這是信仰
時間:
2016-11-25 19:39
厲害 謝謝樓主
作者:
大大
時間:
2017-1-4 22:30
咋個讓數(shù)碼管動態(tài)顯示
作者:
一句話111
時間:
2017-5-27 17:43
樓主你好,請問為什么我的不能正常顯示,一堆亂碼
作者:
孫先生
時間:
2018-6-5 14:48
很想知道為啥我的不行啊
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1