久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
超聲波測距+LCD1602/LCD12864顯示
[打印本頁]
作者:
lzhong
時間:
2017-5-18 20:40
標題:
超聲波測距+LCD1602/LCD12864顯示
很久以前測試過的超聲波測距,并用51單片機+超聲波測距+LCD1602/LCD12864顯示
0.png
(83.39 KB, 下載次數: 111)
下載附件
2017-5-18 22:56 上傳
12864液晶顯示的程序版本:
/////////////////////////////////////////////////////////////////
/***********************超聲波模塊程序**************************/
/////////////////////////////////////////////////////////////////
#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[]={"“TI”杯電子大賽"};
uchar code sj3[]={"當前狀態:前進 "};
uchar code sj4[]={"當前距離:"};
uchar code sj5[]={"錯誤 "};
//超聲波引腳定義
sbit Trig =P3^1; //定義引腳
sbit Echo =P3^2;
//12864液晶引腳定義
sbit lcdrs=P1^5; //命令數據
sbit lcdrw=P1^6; //讀寫
sbit lcde =P1^7;
//時鐘調整按鍵引腳定義
sbit rad=P2^4;
sbit rsu=P2^5;
sbit mad=P2^6;
sbit msu=P2^7;
//需關閉的板上資源
sbit duan=P1^0; //數碼管段控制
sbit wei=P1^1; //數碼管位控制
sbit LeDen=P1^2; //LED燈控制端
sbit Line=P1^3; //點陣行控制端
sbit rst=P3^4; //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.7)/100; //算出來是CM
if(((S<5)||(S>=600))||flag==0) //超出測量范圍顯示“-”失敗
{
//flag=1;
s_false=1000;
xmn(0x9d);
for(i=0;i<6;i++)
{
xsj(sj5[i]);
}
//xs(s_false);
}
else
{
xs2(S);
}
}
//12864液晶初始化函數
void init()
{
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
LeDen=1;
P0=0XFF;
LeDen=0; //關閉板上LED燈
P0=0XFF;
wei=0;
P0=0X00;
duan=0; //關閉板上數碼管
P0=0X00;
Line=0; //關閉板上點陣
delay(500); //啟動等待,等LCM講入工作狀態
lcdrw=0;
init(); //LCM初始化
delay(500); //延時片刻(可不要)
while(1)
{
TMOD=0x11; //設T0為方式1,GATE=1;
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
1602液晶版本:
單片機源程序如下:
//超聲波模塊程序
#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;
uchar code xs[]={"ERROR "};
uchar code disp[]={"Measuring Range:"};
bit flag;
sbit Trig =P3^1; //定義引腳
sbit Echo =P3^2;
sbit lcdrs=P1^5;//命令數據
sbit lcdrw=P1^6;//讀寫
sbit lcde =P1^7;
sbit duan=P1^0; // 數碼管段控制
sbit wei=P1^1; // 數碼管位控制
sbit LeDen=P1^2; // LED燈控制端
sbit Line=P1^3; // 點陣行控制端
sbit rst=P3^4;//DS1302復位端,低電平關閉
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(unsigned char com)
{
lcdrs=0;
P0=com;
delay(5);
lcde=1;
delay(5);
lcde=0;
}
void write_data(unsigned char zifu)
{
lcdrs=1;
P0=zifu;
delay(5);
lcde=1;
delay(5);
lcde=0;
}
void write_temp(uint t_emp)
{
uchar qian,bai,shi,ge,i;
qian=t_emp/1000;
bai=(t_emp%1000)/100;
shi=(t_emp%100)/10;
ge=t_emp%10;
write_com(0x80);
for(i=0;i<16;i++)
{
write_data(disp[i]);
}
delay(1);
write_com(0x80+0x40);
delay(1);
write_data(0x30+qian);
delay(1);
write_data(0x30+bai);
delay(1);
write_data(0x30+shi);
delay(1);
write_data(0x30+ge);
delay(1);
write_data('c');
delay(1);
write_data('m');
delay(1);
write_data('-');
delay(1);
write_data('-');
delay(1);
write_data('L');
delay(1);
write_data('u');
delay(1);
write_data('Z');
delay(1);
write_data('e');
delay(1);
write_data('H');
delay(1);
write_data('o');
delay(1);
write_data('n');
delay(1);
write_data('g');
delay(1);
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.7)/100;//算出來是CM
if(((S<5)||(S>=450))||flag==0) //超出測量范圍顯示“-”失敗
{
//flag=1;
s_false=1000;
write_com(0x80+0x40);
for(i=0;i<6;i++)
{
write_data(xs[i]);
}
}
else
{
write_temp(S);
}
}
void init()
{
lcde=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
lcdrw=0;
}
void main()
{
//unsigned char TempCyc;
rst=0;//關閉DS1302
LeDen=1;
P0=0XFF;
LeDen=0; //關閉LED燈
P0=0XFF;
wei=0;
P0=0X00;
duan=0; //關閉數碼管
P0=0X00;
Line=0; //關閉點陣
delay(500); //啟動等待,等LCM講入工作狀態
lcdrw=0;
init(); //LCM初始化
delay(500); //延時片刻(可不要)
while(1)
{
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
51 超聲波.rar
(72.98 KB, 下載次數: 274)
2017-5-18 20:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
yjs
時間:
2017-6-5 15:58
解析得挺好的,下載來學習了再來評論
作者:
請說出暗號
時間:
2018-4-19 10:20
這里12864引腳不用定義?
作者:
啊哦啊
時間:
2018-10-8 20:09
看看~
作者:
ceil_08
時間:
2019-4-27 20:25
引腳定義能說明下嗎
作者:
yyhlsf
時間:
2019-4-28 11:54
謝謝分享
作者:
lllzzzqqq
時間:
2022-3-14 22:07
不錯啊,挺好的東西
作者:
lz1985cq2022
時間:
2022-3-14 22:13
yjs 發表于 2017-6-5 15:58
解析得挺好的,下載來學習了再來評論
厲害啊,我都看不懂
作者:
lz1985cq2022
時間:
2022-3-16 23:25
已優化好,效果滿意
作者:
王平凡
時間:
2023-2-22 09:05
對于一個初學者來說,簡直是學習模板
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久99深爱久久99精品
|
久热久热
|
国产精品99久久久久久www
|
亚洲色欧美另类
|
天天操网
|
中文字幕成人在线
|
手机三级电影
|
91精品久久久久久久久
|
日韩另类
|
色综合区
|
日本亚洲欧美
|
四虎影院欧美
|
久在线视频播放免费视频
|
成人免费视频观看
|
九九久久精品
|
我爱操
|
久久最新精品
|
久草免费在线视频
|
亚洲欧美一区二区三区视频
|
成人精品国产
|
成人一级片在线观看
|
久久国产福利
|
欧美日韩在线成人
|
在线亚洲人成电影网站色www
|
日韩在线小视频
|
婷婷色网
|
综合中文字幕
|
亚洲精品久久久9婷婷中文字幕
|
精品国产欧美
|
中文字幕av一区二区三区
|
在线播放日韩
|
黄瓜av
|
国产一区二区欧美
|
在线91
|
亚洲精品一区二区三区免
|
日韩欧美在线播放
|
免费看淫片
|
亚洲精品国产成人
|
99精品一区二区
|
狠狠ri
|
黄色在线观看网站
|