• 大小: 9.66MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-12
  • 语言: 其他
  • 标签: 51单片机  

资源简介

实现的功能包括: (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)\写程序\定时器中断\objects\
     文件       13494  2020-06-30 22:36  项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\objects\红外-定时器.obj
     文件       12164  2020-06-30 22:36  项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\objects\红外-定时器中断
     文件        1095  2020-06-30 22:36  项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\objects\红外-定时器中断.build_log.htm
     文件        4500  2020-06-30 22:36  项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\objects\红外-定时器中断.hex
     文件         102  2020-06-30 22:36  项目二-倒车雷达控制系统设计(CSDN)\写程序\定时器中断\objects\红外-定时器中断.lnp
     文件        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)\写程序\红外通信部分\objects\
     文件        3171  2020-06-11 14:42  项目二-倒车雷达控制系统设计(CSDN)\写程序\红外通信部分\objects\红外通信-1
............此处省略21个文件信息

评论

共有 条评论