永发信息网

谁有汽车防撞报警系统的源程序啊 ,急用,,,,,,

答案:1  悬赏:0  手机版
解决时间 2021-10-12 17:04
谁有汽车防撞报警系统的源程序啊 ,急用,,,,,,
最佳答案
//超声波模块显示程序 #include <reg52.h> //包括一个52标准内核的头文件 #include<intrins.h> //包含_nop_()函数定义的头文件 #include <lcd.h> #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long sbit Tx = P3^6; //产生脉冲引脚 sbit Rx = P3^2; //回波引脚 sbit RS=P2^2; //寄存器选择位,将RS位定义为P2.0引脚 sbit RW=P2^3; //读写选择位,将RW位定义为P2.1引脚 sbit E=P2^4; //使能信号位,将E位定义为P2.2引脚 sbit BF=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚 sbit key1=P3^3; sbit key2=P3^4; sbit key3=P3^5; sbit beep=P3^7; uchar JULI=10,julii; uint distance[4]; //测距接收缓冲区 unsigned char code digit[ ]={"0123456789"}; //定义字符数组显示数字 uchar ge,shi,bai,temp,flag,outcomeH,outcomeL,i; //自定义寄存器 bit succeed_flag,set_flag; //测量成功标志 / void delay1ms() { unsigned char i,j; for(i=0;i<10;i++) for(j=0;j<33;j++); } void delay(unsigned char n) { unsigned char i; for(i=0;i<n;i++) delay1ms(); } void didi(uchar v ) { for(v;v>0;v--) { beep=0; delay(13); beep=1; delay(12); } } void delay_time(uchar date ) { uchar vv; for (vv=date;vv>0;vv--); } void sound (uchar f_max,uchar f_min, uchar call_value) { uchar i,j; for(i=f_max-f_min;i>0;i--) { for(j=call_value;j>0;j--) { beep=0; delay_time(f_min+i); beep=1; delay_time(f_min+i); } } } void key_cpp() { static unsigned int dat; if(key1==0||key2==0||key3==0)dat++; if(dat==200) { dat=0; if(key3==0){set_flag^=1; didi(2);} if(set_flag) { if(key1==0){JULI++;if(JULI>100)JULI=100;didi(1);} if(key2==0){JULI--;if(JULI<=0)JULI=0;didi(1);} } } } //*************************************************************** //外部中断0,用做判断回波电平 INTO_() interrupt 0 // 外部中断是0号 { outcomeH =TH1; //取出定时器的值 outcomeL =TL1; //取出定时器的值 succeed_flag=1; //至成功测量的标志 EX0=0; //关闭外部中断 } //**************************************************************** //定时器0中断,用做显示 void timer0() interrupt 1 // 定时器0中断是1号 { TH0=0xfC; //写入定时器0初始值 TL0=0x18; key_cpp(); //didi(1); } //显示数据转换程序 void conversion(uint temp_data) { uchar ge_data,shi_data,bai_data ; bai_data=temp_data/100 ; temp_data=temp_data%100; //取余运算 shi_data=temp_data/10 ; temp_data=temp_data%10; //取余运算 ge_data=temp_data; EA=0; bai = bai_data; shi = shi_data; ge = ge_data ; EA=1; } //****************************************************************** void delay_20us() { uchar bt ; for(bt=0;bt<60;bt++); } void pai_xu() { uint t; if (distance[0]>distance[1]) {t=distance[0];distance[0]=distance[1];distance[1]=t;} if(distance[0]>distance[2]) {t=distance[2];distance[2]=distance[0];distance[0]=t;} if(distance[1]>distance[2]) {t=distance[1];distance[1]=distance[2];distance[2]=t;} } //***************************************************** void main(void) // 主程序 { uint distance_data,a,b; uchar CONT_1; uchar k; //定义变量i指向字符串数组元素 LCD_init(); //调用LCD初始化函数 delay(10); //延时10ms,给硬件一点反应时间 LCD_send_command(0x01); // 从第1行第3列开始显示 k = 0; //指向字符数组的第1个元素 i=0; flag=0; Tx=0; //首先拉低脉冲输入引脚 TMOD=0x11; //定时器0,定时器1,16位工作方式 IT0=0; //由高电平变低电平,触发外部中断 ET0=1; //打开定时器0中断 EX0=0; //关闭外部中断 EA=1; //打开总中断0 TH0=0xFC; TL0=0x18; TR0=1; //启动定时器0 didi(2); LCD_disp_string(0 ,0,"Actual /:"); LCD_disp_string(0 ,1,"SetGap /:"); while(1) //程序循环 { conversion(JULI); LCD_send_command(0xC9); LCD_send_data(digit[shi]); //将万位数字的字符常量写入LCD LCD_send_data(digit[ge]); //将千位数字的字符常量写入LCD LCD_send_data('.'); //将万位数字的字符常量写入LCD LCD_send_data(digit[0]); //将百位数字的字符常量写入LCD LCD_send_data(' '); //将百位数字的字符常量写入LCD LCD_send_data('C'); //将万位数字的字符常量写入LCD LCD_send_data('M'); //将万位数字的字符常量写入LCD EA=0; Tx=1; delay_20us(); Tx=0; //产生一个20us的脉冲,在Tx引脚 while(Rx==0); //等待Rx回波引脚变高电平 succeed_flag=0; //清测量成功标志 EX0=1; //打开外部中断 TH1=0; //定时器1清零 TL1=0; //定时器1清零 TF1=0; // TR1=1; //启动定时器1 EA=1; while(TH1 < 30);//等待测量的结果,周期65.535毫秒(可用中断实现) TR1=0; //关闭定时器1 EX0=0; //关闭外部中断 if(succeed_flag==1) { distance_data=outcomeH; //测量结果的高8位 distance_data<<=8; //放入16位的高8位 distance_data=distance_data|outcomeL;//与低8位合并成为16位结果数据 distance_data*=12; //因为定时器默认为12分频 distance_data/=58; //微秒的单位除以58等于厘米 } //为什么除以58等于厘米, Y米=(X秒*344)/2 // X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58 if(succeed_flag==0) { distance_data=0; //没有回波则清零 } distance[i]=distance_data; //将测量结果的数据放入缓冲区 i++; if(i==3) { distance_data=(distance[0]+distance[1]+distance[2]+distance[3])/4; pai_xu(); distance_data=distance[1]; a=distance_data; if(b==a) CONT_1=0; if(b!=a) CONT_1++; if(CONT_1>=3) { CONT_1=0; b=a; conversion(b); julii=b/10; if(!set_flag) if(julii<JULI){sound(80,20,10);} } i=0; } conversion(b); LCD_send_command(0x89); LCD_send_data(digit[bai]); //将万位数字的字符常量写入LCD LCD_send_data(digit[shi]); //将千位数字的字符常量写入LCD LCD_send_data('.'); //将万位数字的字符常量写入LCD LCD_send_data(digit[ge]); //将百位数字的字符常量写入LCD LCD_send_data(' '); //将百位数字的字符常量写入LCD LCD_send_data('C'); //将万位数字的字符常量写入LCD LCD_send_data('M'); //将万位数字的字符常量写入LCD 希望可以帮到你!!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
东风标致508如何?高淳哪里有4s店?
仓鼠的垫料除了木屑还有什么东西 餐巾纸可以
老听说喝普洱茶减肥,有喝这个减肥成功的吗?
中年后单身就是“爱无能”?
日本咖啡馆设计风格的特点是啥?需要注意哪些
我想问一下深圳怎样申请保障房?注意事项是什
建昌县机动车检测有限责任公司地址有知道的么
我想问广州大理石价格?哪位了解?
市路缘机动车检测有限公司办公地址在什么地方
多肉植物拼盘如何养殖?
秦皇岛哪里有回收金条的,哪里有高价回收黄金
小学五年级奥数 数的整除特征
从木兰围场到赤峰有多远?大概几月份去比较合
烟再好也没用啊, 芙蓉王也是有毒的啊。
新浪微漫画与美而蓝合作最新上线的韩国漫画多
推荐资讯
太原装饰木门哪家的比较好?太原金刚网纱窗哪
锦州中学生运动会1500米纪录是多少
想吃红油抄手 仙桃哪里有卖的啊?
花青素遇到蜂蜜产生的化学反应
印度沉香木手串什么价格啊
机动车物损交通事故保险理赔服务中心尚德分中
营养学属于什么专业
谁解答下睡觉不枕枕头行吗
加油站防静电应采取哪些具体措施?
谁知道莱西哪有快递公司… 求回复…
苏州晨通机动车检测有限公司地址有知道的么?
怀孕6个月能泡温泉吗?我家亲戚新开的一个温
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?