资源简介
实现的功能包括:
(1)两个按键用于设置距离阈值,以10cm为一档,对于阈值进行;
(2)超声测距模块SFR04用于测量距离,并将数据发送至单片机。
(3)距离阈值和距离信息用LCD1602显示。
(3)当距离低于阈值时,报警模块以5kHz频率发出警报;当距离低于阈值+10cm时,报警模块以1kHz频率发出警报;当距离大于等于阈值+10cm时,报警模块不发出声音。

代码片段和文件信息
#include
#include
sbit LED0=P2^0;
sbit LED1=P2^1;
sbit speak=P1^7;
sbit key_up=P1^0;
sbit key_dn=P1^1;
sbit TRIG=P3^7;
sbit ECHO=P3^2;
sbit LCD_E=P2^5;
sbit LCD_RW=P2^6;
sbit LCD_RS=P2^7;
unsigned int Set=40;//距离值单位cm
unsigned int Now;
unsigned int count_T0=0count_1msmiao=0;
unsigned int High_Time;
unsigned char flag;
unsigned char code word1[]=“Set= cm“;//0--15
unsigned char code word2[]=“Now= cm“;//0--15
unsigned char code word3[]=“0123456789“;
void lcd_write_com(unsigned char com);
void lcd_write_data(unsigned char dat);
void lcdInit();
void display_LCD(unsigned char hangunsigned char lieunsigned dat);
void Timer0_Init();
void delayms(unsigned char t);
void scan_key();
unsigned int WAVE();
void display_string();
void Timer_delay(unsigned int BS);
void Speak();
void main()
{
unsigned char baishige;
lcdInit();
display_string();//显示开始的字母
while(1)
{
scan_key();
if((Set/100%10)!=0)
{
display_LCD(06word3[Set/100%10]);
delayms(1);
}
display_LCD(07word3[Set/10%10]);
delayms(1);
display_LCD(08word3[Set%10]);
delayms(1);
High_Time=WAVE();//超声波
//Now=(int)(High_Time*1.72)/100;
Now=(int)(High_Time*0.0175);
Speak();
bai=Now/100%10;
shi=Now/10%10;
ge=Now%10;
if(bai!=0)
{
display_LCD(16word3[bai]);
delayms(1);
}
display_LCD(17word3[shi]);
delayms(1);
display_LCD(18word3[ge]);
delayms(1);
}
}
/*——————————蜂鸣器发声————————*/
void Speak()
{
if(Now {
speak=0;
Timer_delay(1);
}
else if(Now<(Set+10))
{
speak=0;
Timer_delay(5);
}
else
{
speak=1;
}
}
//*————————————定时器T1延时————————————*/
void Timer_delay(unsigned int BS)//T1延时0.5ms
{
unsigned int k;
for(k=0;k {
TH1=(65536-100)/256;
TL1=(65536-100)%256;
while(TF1==0);
TF1=0;
}
}
//*——————显示开始的字母————————————*/
void display_string()
{
unsigned mn;
for(m=0;m<16;m++)
{
display_LCD(0mword1[m]);
delayms(1);
}
for(n=0;n<16;n++)
{
display_LCD(1nword2[n]);
delayms(1);
}
}
/*——————————————超声波计算时间————————————*/
unsigned int WAVE()
{
unsigned int result;
unsigned char p;
TRIG=0;
_nop_();//1微秒
TRIG=1;
for(p=0;p<10;p++);//大于10us
TRIG=0;
while(ECHO==0);//等高电平来
Timer0_Init();//开始计时记高电平时间即超声波发射--返回时间
while(ECHO)
{
if((TH0>0x8c)|| (TH0==0x8c&&TL0>0xa0))break;
}
TR0=0;
//18us=18000ms=4650H ;100us--18ms有效 超过36ms无效 36ms=8cA0
if((TH0<0x46)|| (TH0==0x46&&TL0<=0x50))
{
result=(TH0<<8)+TL0;
return result;
}
else return 0;
}
/*——————————————LCD初始化————————————*/
void lcdInit()
{
lcd_write_com(0x38);//字符为5*7点阵
lcd_write_com(0x0c); //显示开 光标关 闪烁关
lcd_write_com(0x06);//写入数据后光标右移一位 显示屏不动
lcd_write_com(0x01);//清屏
lcd_write_com(0x80);//设置数据指针起点
}
/**———————————LCD写命令———————
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-07-11 16:56 项目二-倒车雷达控制系统设计(CSDN)\
目录 0 2020-06-30 22:35 项目二-倒车雷达控制系统设计(CSDN)\写程序\
文件 14614 2020-06-13 14:40 项目二-倒车雷达控制系统设计(CSDN)\写程序\6.13-14点39-bilibili.docx
文件 162 2020-06-14 16:19 项目二-倒车雷达控制系统设计(CSDN)\写程序\~$13-14点39-bilibili.docx
目录 0 2020-06-30 22:39 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\
文件 6324 2020-06-14 16:18 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\6.14-16点18-只有数字有问题.txt
目录 0 2020-06-30 22:36 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\Listings\
文件 9763 2020-06-30 22:36 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\Listings\红外-定时器.lst
文件 16145 2020-06-30 22:36 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\Listings\红外-定时器中断.m51
文件 114 2020-06-13 14:15 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\main.h
目录 0 2020-06-30 22:36 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\ob
文件 13494 2020-06-30 22:36 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\ob
文件 12164 2020-06-30 22:36 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\ob
文件 1095 2020-06-30 22:36 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\ob
文件 4500 2020-06-30 22:36 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\ob
文件 102 2020-06-30 22:36 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\ob
文件 4458 2020-06-23 08:58 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\修改了定时器初值-蜂鸣器频率改正-6月23-7点32.txt
文件 7202 2020-06-15 11:42 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\最终.txt
文件 5371 2020-06-22 20:44 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\最终程序美化版.txt
文件 4711 2020-06-23 08:51 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\红外-定时器.c
文件 88999 2020-06-30 22:35 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\红外-定时器中断.uvgui.Dell
文件 9342 2020-06-22 12:27 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\红外-定时器中断.uvopt
文件 88996 2020-06-30 22:39 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\超声波测距.uvgui.Dell
文件 5064 2020-06-30 22:36 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\超声波测距.uvopt
文件 13923 2020-06-30 22:35 项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\超声波测距.uvproj
目录 0 2020-06-30 22:35 项目二-倒车雷达控制系统设计(CSDN)\写程序\红外通信部分\
目录 0 2020-06-30 22:35 项目二-倒车雷达控制系统设计(CSDN)\写程序\红外通信部分\Listings\
文件 3758 2020-06-11 14:42 项目二-倒车雷达控制系统设计(CSDN)\写程序\红外通信部分\Listings\红外通信-1.lst
文件 6026 2020-06-11 14:42 项目二-倒车雷达控制系统设计(CSDN)\写程序\红外通信部分\Listings\红外通信-1.m51
目录 0 2020-06-30 22:35 项目二-倒车雷达控制系统设计(CSDN)\写程序\红外通信部分\ob
文件 3171 2020-06-11 14:42 项目二-倒车雷达控制系统设计(CSDN)\写程序\红外通信部分\ob
............此处省略21个文件信息
相关资源
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
- 8051单片机教程第二十六课:矩阵式键
- 适用于STC单片机和51单片机的SX1262驱动
- 基于51单片机的计算器(C51编写,有
- 51单片机大量源码
- 基于51单片机的交通信号灯程序
- GSM监控系统51单片机设计
- 51单片机定时器/计数器的结构和原理
- MCS-51单片机定时器和计数器区别的理
评论
共有 条评论