久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STC89C51最小系統+HC-SR04+LCD12864(超聲波測距儀)源碼
[打印本頁]
作者:
初學者孟憲
時間:
2018-7-13 16:12
標題:
STC89C51最小系統+HC-SR04+LCD12864(超聲波測距儀)源碼
QQ圖片20180713160516.jpg
(1.83 MB, 下載次數: 52)
下載附件
2018-7-13 16:06 上傳
單片機源程序如下:
/////////////////////////////////////////////////////////////////
/***********************超聲波模塊程序**************************/
/////////////////////////////////////////////////////////////////
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//全局變量定義
unsigned int time;
unsigned int S,s_false;
unsigned long num1;
bit flag;
//12864液晶顯示定義
uchar code sj1[]={"<<超聲波測距儀>>"};
uchar code sj2[]={" 榆林學院 "};
uchar code sj3[]={"測量范圍5cm-2m "};
uchar code sj4[]={"當前距離:"};
uchar code sj5[]={"錯誤 "};
//超聲波引腳定義
sbit Trig =P1^1; //定義引腳
sbit Echo =P3^2;
//12864液晶引腳定義
sbit lcdrs=P3^5; //命令數據
sbit lcdrw=P3^6; //讀寫
sbit lcde =P3^4;
sbit LCD_PSB=P3^7;
//時鐘調整按鍵引腳定義
sbit rad=P2^4;
sbit rsu=P2^5;
sbit mad=P2^6;
sbit msu=P2^7;
sbit rst=P3^1; //DS1302復位端,低電平關閉
//延時函數
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay_20us()
{
uchar a;
for(a=0;a<100;a++);
}
//2864液晶寫命令函數
void xmn(unsigned char com)
{
lcdrs=0;
P0=com;
delay(5);
lcde=1;
delay(5);
lcde=0;
}
//2864液晶寫數據函數
void xsj(unsigned char zifu)
{
lcdrs=1;
P0=zifu;
delay(5);
lcde=1;
delay(5);
lcde=0;
}
//2864液晶顯示函數1
void xs1()
{
uchar i;
xmn(0x80);
for(i=0;i<16;i++)
{
xsj(sj1[i]);
}
xmn(0x90);
for(i=0;i<16;i++)
{
xsj(sj2[i]);
}
xmn(0x88);
for(i=0;i<16;i++)
{
xsj(sj3[i]);
}
xmn(0x98);
for(i=0;i<16;i++)
{
xsj(sj4[i]);
}
}
//2864液晶顯示函數2
void xs2(uint t_emp)
{
uchar qian,bai,shi,ge;
qian=t_emp/1000;
bai=(t_emp%1000)/100;
shi=(t_emp%100)/10;
ge=t_emp%10;
xmn(0x9d);
xsj(0x30+qian);
delay(1);
xsj(0x30+bai);
delay(1);
xsj(0x30+shi);
delay(1);
xsj(0x30+ge);
delay(1);
xsj('c');
delay(1);
xsj('m');
delay(100);
}
//超聲波計數函數
void T0_time() interrupt 1 //T0中斷用來計數器溢出,超過測距范圍
{
flag=0; //中斷溢出標志,失敗
TH0=0;
TL0=0;
TR0=0; //關閉計數
}
//中斷定時函數
void T1_timer() interrupt 3 //中斷
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
num1++;
}
//超聲波模塊啟動函數
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 Count(void)
{
uchar i;
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.8)/100+2; //算出來是CM
if(((S<5)||(S>=600))||flag==0) //超出測量范圍顯示“-”失敗
{
//flag=1;
s_false=1000;
xmn(0x9d);
for(i=0;i<6;i++)
{
xsj(sj5[i]);
}
//(s_false);
}
else
{
xs2(S);
}
}
//12864液晶初始化函數
void init()
{LCD_PSB=1;
delay(100);
xmn(0x30);
delay_20us();
xmn(0x30);
delay_20us();
xmn(0x0c);
delay_20us();
xmn(0x01);
delay_20us();
xmn(0x06);
delay_20us();
}
//主函數
void main()
{
//unsigned char TempCyc;
rst=0; //關閉板上DS1302
P0=0XFF;
P0=0XFF;
P0=0X00;
P0=0X00;
delay(500); //啟動等待,等LCM講入工作狀態
lcdrw=0;
init(); //LCM初始化
delay(500); //延時片刻(可不要)
while(1)
{
TMOD=0x11; //設T0為方式1,GATE=1;
TH0=0;
TL0=0;
ET0=1; //允許T0中斷
ET1=1;
TR1=1;
EA=1; //開啟總中斷
xs1();
Trig=0;
Echo=0;
while(1)
{
StartModule();
flag=1;
//while(!Echo); //當echo為零時等待
while((!Echo)&&flag);//當echo為零時等待,中斷flag跳出等待
TR0=1; //開啟計數
while(Echo&&flag); //當echo為1計數并等待
TR0=0; //關閉計數
Count(); //計算
delay(120); //80MS
}
}
}
復制代碼
所有資料51hei提供下載:
51單片機控制超聲波測距.zip
(62.84 KB, 下載次數: 112)
2018-7-13 16:12 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
精品国产99
|
h视频免费在线观看
|
国产精品视频一
|
99久久久久久99国产精品免
|
国产精品免费一区二区三区
|
午夜一级大片
|
国产欧美一区二区三区日本久久久
|
日韩三片
|
久久噜噜噜精品国产亚洲综合
|
91久久国产综合久久
|
一级全黄少妇性色生活免费看
|
精品国产亚洲一区二区三区大结局
|
国产在视频一区二区三区吞精
|
久久国产一区二区
|
1区2区3区视频
|
99久久久99久久国产片鸭王
|
一区二区视频在线
|
中文一区
|
高清人人天天夜夜曰狠狠狠狠
|
欧美美女二区
|
www.黄色网
|
久久精品欧美一区二区三区不卡
|
羞羞的视频免费观看
|
久久天天躁狠狠躁夜夜躁2014
|
日韩精品在线播放
|
欧美理论片在线观看
|
久久高潮
|
亚洲狠狠丁香婷婷综合久久久
|
国产美女精品视频
|
视频在线h
|
国产在线一区二区
|
午夜寂寞影院在线观看
|
美女天天干天天操
|
国产激情网站
|
亚洲一区二区三区视频
|
粉嫩av在线
|
欧美三级久久久
|
黄色片在线免费看
|
欧美在线a
|
欧美一区二
|
久久亚洲国产精品
|