欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
超聲波測距 帶1602液晶屏顯示 顯示亂碼 是怎么回事呢 求幫助
[打印本頁]
作者:
VERTEX95855
時間:
2020-1-2 13:12
標題:
超聲波測距 帶1602液晶屏顯示 顯示亂碼 是怎么回事呢 求幫助
/*
TRIG-->P21
ECHO-->P20
*/
#include<reg51.h>
#include<intrins.h>
#include"lcd.h"
sbit Trig = P2^1;
sbit Echo = P2^0;
unsigned char FirstLine[]="0123456789ABCDEF";
unsigned char code dofly_code[]={'0','1','2','3','4','5','6','7','8','9','.','-','M'};
static unsigned char DisNum = 0; //顯示用指針
unsigned int time=0;
unsigned long S=0;
bit flag =0;
unsigned char houdred=0;
unsigned char decade=0;
unsigned char unit=0;
/*******************************************************************************
* 函 數 名 : main
* 函數功能 : 主函數
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void Count(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.7)/100; //算出來是CM
if((S>=450)||flag==1) //超出測量范圍顯示“-”
{
flag=0;
DisplayOneChar(0, 1, dofly_code[11]);
DisplayOneChar(1, 1, dofly_code[10]); //顯示點
DisplayOneChar(2, 1, dofly_code[11]);
DisplayOneChar(3, 1, dofly_code[11]);
DisplayOneChar(4, 1, dofly_code[12]); //顯示M
}
else
{
houdred=S%1000/100;
decade=S%1000%100/10;
unit=S%1000%10 %10;
DisplayOneChar(0, 1, dofly_code[houdred]);
DisplayOneChar(1, 1, dofly_code[10]); //顯示點
DisplayOneChar(2, 1, dofly_code[decade]);
DisplayOneChar(3, 1, dofly_code[unit]);
DisplayOneChar(4, 1, dofly_code[12]); //顯示M
}
}
void zd0() interrupt 1 //T0中斷用來計數器溢出,超過測距范圍
{
flag=1; //中斷溢出標志
}
void StartModule() //啟動模塊
{
Trig=1; //啟動一次模塊
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
Trig=0;
}
void delayms(unsigned int ms)
{
unsigned char i=100,j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}
void main(void)
{
TMOD=0x01; //設T0為方式1,GATE=1;
TH0=0;
TL0=0;
ET0=1; //允許T0中斷
EA=1; //開啟總中斷
LcdInit();
LcdShowStr(0,0,FirstLine);
while(1)
{
StartModule();
while(!Echo); //當RX為零時等待
TR0=1; //開啟計數
while(Echo); //當RX為1計數并等待
TR0=0; //關閉計數
Count(); //計算
delayms(80);
}
}
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1