本系统的目的是设计一个基于单片机的车辆防碰撞及自动刹车系统,系统通过对汽车行进过程中前后车距离的实时检测与过近声光报警功能有效的解决当前汽车行驶过程中由于驾驶员反应不及时导致跟车距离过近引发汽车追尾的问题;系统的基本任务如下:
(1)通过系统的设计与实现,能够解决汽车行进过程中由于驾驶员分心导致汽车碰撞的问题;
(2)构建型号为STC89C52RC的单片机最小工作电路,作为系统的中心处理单元,负责对超声传感器测得的距离值的接收,对液晶屏显示内容的控制,对声光报警电路及继电器电路的控制等;
(3)设置超声波传感器HC-SR04实现对在汽车行进过程中前后车之间的距离的实时采集;
(4)当采集的距离值小于设定的最小报警距离值时,声光报警电路工作,进行报警和提示;
(5)应用液晶屏1602实现对实时距离和设定的最小报警距离值的显示,对当前汽车继续行进的状态即安全与危险进行指示;
(6)系统设置独立按键电路,实现对系统设定的最小报警距离值进行设置,对系统的模式正常工作模式及休眠模式进行切换;
(7)构建1路继电器电路,通过继电器的吸合来实现对刹车装置自动开启动作的模拟;
(8)构建电源供电电路,满足系统的供电需求。
#include #include #include"lcd.h" sbit Trig = P2^1; sbit Echo = P2^0; sbit led_0 = P1^0; sbit led_1 = P1^1; sbit beep = P1^3; sbit jdq = P1^4; ///按键模块// sbit k1=P3^2; //加法按键 sbit k2=P3^3; //减法按键 sbit k3=P3^1; //休眠按键 sbit k4=P3^0; //复位按键 / unsigned char PuZh[]="CM shi juli"; unsigned char code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','M'}; static unsigned char DisNum = 0; //显示用指针 unsigned int time=0; unsigned long S=0; bit flag =0; unsigned char disbuff[4] ={ 0,0,0,0,}; /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Conut(unsigned char q) { unsigned int anquanjuli = q; time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.7)/100; //算出来是CM if((S>=700)||flag==1) //超出测量范围显示“-” { flag=0; DisplayOneChar(0, 1, ASCII[11]); DisplayOneChar(1, 1, ASCII[10]); //显示点 DisplayOneChar(2, 1, ASCII[11]); DisplayOneChar(3, 1, ASCII[11]); DisplayOneChar(4, 1, ASCII[12]); //显示M } else { disbuff[0]=S%1000/100; disbuff[1]=S%1000%100/10; disbuff[2]=S%1000%10 %10; DisplayOneChar(0, 1, ASCII[disbuff[0]]); DisplayOneChar(1, 1, ASCII[10]); //显示点 DisplayOneChar(2, 1, ASCII[disbuff[1]]); DisplayOneChar(3, 1, ASCII[disbuff[2]]); DisplayOneChar(4, 1, ASCII[12]); //显示M } if(S<=anquanjuli) //小于安全距离就亮红灯且蜂鸣器响继电器工作 { led_0=0; led_1=1; beep=0; jdq=0; } else if(S>anquanjuli&&S<=700) //处于安全范围内就亮绿灯蜂鸣器不响 { led_0=1; led_1=0; beep=1; jdq=1; } } void Conut2(unsigned char q) { unsigned int anquanjuli = q; time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.7)/100; //算出来是CM if((S>=700)||flag==1) //超出测量范围显示“-” { flag=0; DisplayOneChar(0, 1, ASCII[11]); DisplayOneChar(1, 1, ASCII[10]); //显示点 DisplayOneChar(2, 1, ASCII[11]); DisplayOneChar(3, 1, ASCII[11]); DisplayOneChar(4, 1, ASCII[12]); //显示M } else { disbuff[0]=S%1000/100; disbuff[1]=S%1000%100/10; disbuff[2]=S%1000%10 %10; DisplayOneChar(0, 1, ASCII[disbuff[0]]); DisplayOneChar(1, 1, ASCII[10]); //显示点 DisplayOneChar(2, 1, ASCII[disbuff[1]]); DisplayOneChar(3, 1, ASCII[disbuff[2]]); DisplayOneChar(4, 1, ASCII[12]); //显示M } } void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围 { flag=1; //中断溢出标志 } 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 delayms(unsigned int ms) { unsigned char i=100,j; for(;ms;ms--) { while(--i) { j=10; while(--j); } } } /// /* 字符串转十进制整形 */ int atoi(char s[]) { int i; int n = 0; for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i) { n = 10 * n + (s[i] - '0'); } return n; } /// void main(void) { unsigned char safe[]={"10"}; // unsigned char safe3[1]=0; // unsigned char safe4[1]=0; // unsigned char safe5[2] = 0; unsigned char safe6[3] = 0; // // unsigned char safe2[]={'C','M'}; unsigned int getdata= atoi(safe); unsigned int a=0; ///个位 unsigned int b=0; 十位 unsigned int c=0; ///百位 // unsigned char *p=PuZh; // unsigned char *q=&safe[0]; // unsigned char *t=safe2; TMOD=0x01; //设T0为方式1,GATE=1; TH0=0; TL0=0; ET0=1; //允许T0中断 EA=1; //开启总中断 InitLcd1602(); /第一次显示// a=getdata; c=a/100; b=a/10%10; a=a%10; safe6[0]=c+0x30; safe6[1]= b+0x30; safe6[2]=a+0x30; DisplayOneChar(0,0,safe6[0]); DisplayOneChar(1,0,safe6[1]);
上一篇:基于单片机的智能照明控制系统设计
下一篇:基于单片机的LCD1602电子时钟设计
推荐阅读最新更新时间:2024-11-16 20:58
设计资源 培训 开发板 精华推荐
- 超声波悬浮
- LTC1778、2.5V/10A 转换器开关频率为 250kHz
- AM6TW-2415SZ 15V 6 瓦单路输出 DC/DC 转换器的典型应用
- 物联网时钟
- C8051F850-BLDC-RD,基于 C8051F850 8051 MCU 的电机控制参考设计
- 使用 ROHM Semiconductor 的 BD48E49G 的参考设计
- 具有 BFU730F 的低噪声快速开启/关闭 5-5.9 GHz Wi-Fi LNA
- NCP1729 线路和负载调节负输出电压的典型应用
- AD8602ARZ 高端运算放大器电流监控器的典型应用
- LTC6990CDCB#TRMPBF 全范围 VCO 振荡器的典型应用,具有任何 NDIV 设置(fMAX 至 fMIN,VIN = 0V 至 VSET)
- 兆易创新GD25/55全系列车规级SPI NOR Flash荣获ISO 26262 ASIL D功能安全认证证书
- 新型IsoVu™ 隔离电流探头:为电流测量带来全新维度
- 英飞凌推出简化电机控制开发的ModusToolbox™电机套件
- 意法半导体IO-Link执行器电路板为工业监控和设备厂商带来一站式参考设计
- Melexis采用无磁芯技术缩小电流感测装置尺寸
- 千丘智能侍淳博:用数字疗法,点亮“孤独症”儿童的光
- 数药智能冯尚:ADHD数字疗法正为儿童“多动症”提供更有效便捷服务
- Vicor高性能电源模块助力低空航空电子设备和 EVTOL的发展
- 创实技术electronica 2024首秀:加速国内分销商海外拓展之路
- “跨芯片”量子纠缠实现 有助建构更强大的量子计算能力