资源简介
实现的功能包括:
(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个文件信息
相关资源
- HC-SR04超声波测距模块STM32源码
- 简易电子琴设计
- 基于51单片机ACS712数字电流表,c、仿
- 51单片机涉及到的各种芯片手册
- 汇编51单片机密码锁含论文、程序、
- 51单片机超声波测距模块全套程序
- 51单片机便携式输液点滴控制报警器
- 单片机原理及应用.pdf
- 51单片机开发板PCB 原理图
- 51单片机和modbus中文资料软件源代码全
- 蓝牙模块详细资料 51单片机控制蓝牙
- 51单片机驱动TFT真彩屏
- 51单片机波形发生器设计,正弦波、三
- 51单片机Modbus_RTU
- 12864液晶带字库+不带字库+51单片机贪
- 51单片机音乐播放器的设计,在LCD12
- 基于51单片机串口温湿度采集和传输仿
- 汇编语言指令大全(详解版).pdf
- 51单片机门禁上位机,下位机全部工程
- 基于51单片机接入阿里云物联网.pdf
- 51单片机自学笔记
- 基于51单片机的智能窗户设计
- 普中科技51单片机开发板的实验程序资
- 基于51单片机的水箱、水塔水位检测系
- 基于51单片机的数字电压表.rar
- 汇编程序测控51单片机超声波测距16
- 多波形发生器设计
- 51单片机课程设计及报告
- LED点阵广告牌课程设计C51单片机含报
- COMP51编译器
评论
共有 条评论