版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、自动避障红外电动小车 C51 程序#includereg51.h #include #define uchar unsigned char #define uint unsigned int #define left_infrare 0 #define right_infrare 1 #define dj_state1 #define dj_state2 #define dj_state3 #define dj_state4 #define dj_state5 #define light_off #define left_light #define right_light #define ba
2、ck_light #define front_light #define light_on #define true 1 #define false 0 #define LCD_Data #define Busy 0x80 sbitc=P 1人2;uchar code talk1=backward; uchar code talk2=forward; uchar code talk3=Turnleft; uchar code talk4=Turn right; uchar flage =0x00;sbit /sbit /sbit0X5F0X4F0X1F0X0F0XfF0x0f0X5F0XaF0
3、XcF0x3f0xff/前进/右转/左转/后退/停车/关转向灯/ 左转向灯两个是 5f/右转向灯 0xaf ,两个是 0xbf/刹车灯即后灯/前灯/开所有灯P0/用于检测 LCD 状态字中的 Busy 标识/转向灯使能端sbit sbit sbitledcs=P 1人2; lef_led=pg; right_led=卩0人3;/74H573 的片选信号/左红外发射管/右红外发射管LCD_RS = P 1人5;LCD_RW = P 1人6; LCD_E = P 7 ;void Delay5Ms(void)/LCD 定义引脚/uint TempCyc = 5552; while(TempCyc-)
4、;/400ms 延时void Delay400Ms(void)uchar TempCycA = 5;uint TempCycB; while(TempCycA-) TempCycB=7269; while(TempCycB-);/LCD 读状态 unsigned char ReadStatusLCD(void) LCD_Data = 0xFF;LCD_RS = 0; LCD_RW = 1;LCD_E = 0;LCD_E = 0;LCD_E = 1;while (LCD_Data & Busy);/检测忙信号return(LCD_Data);/LCD 写数据void WriteDataLCD(u
5、nsigned char WDLCD ) ReadStatusLCD(); /检测忙 LCD_Data = WDLCD;LCD_RS=1;LCD_RW =0;LCD_E = 0; / 若晶振速度太高可以在这后加小的延时LCD_E = 0; / 延时 ,为了安全LCD_E = 0; / 延时LCD_E = 1;/LCD 写指令void WriteCommandLCD(unsigned char WCLCD,BuysC)if (BuysC) ReadStatusLCD();/根据需要检测忙 ,BuysC 为0时忽略忙检测LCD_Data = WCLCD;LCD_RS= 0;LCD_RW= 0;LC
6、D_E = 0; /延时 ,为了安全 LCD_E = 0;LCD_E = 0; / 延时LCD_E = 1;/LCD 初始化void LCDInit(void)Delay400Ms();/三次显示模式设置,不检测忙信号LCD_Data = 0;WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();显示模式设置 ,开始要求每次检测忙信号 关闭显示 显示清屏显示光标移动设置 显示开及光标设置WriteCommandLCD(0x38,1); /W
7、riteCommandLCD(0x08,1); /WriteCommandLCD(0x01,1); /WriteCommandLCD(0x06,1); /WriteCommandLCD(0x0C,1); /按指定位置显示一个字符void DisplayOneChar(uchar X, uchar Y , uchar DData)Y &= 0x1;X &= 0xF; if (Y) X |= 0x40;X |= 0x80;WriteCommandLCD(X, 0);WriteDataLCD(DData);/按指定位置显示一串字符/限制 X 不能大于 15, Y 不能大于 1/ 当要显示第二行时地址
8、码 +0x40; / 算出 LCD 的指令码 /这里不检测忙信号,发送地址码(只能写一行 );void DisplayListChar(uchar X, uchar Y ,uchar ListLength, uchar *DData,uchar n) uchar i;Y &= 0x01;/限制 X 不能大于 15, Y 不能大于 1X &= 0x0F; for(i=0;iListLength;i+) if (X 左右发射管的选择 uchar i;/ledcs=1 为 74ls573 为 11 脚为高电平时数据直接输出,为低时把数据P1 |= 0X04; 锁存住,即保持IE |= 0X01;P0
9、 |=0x0c; /04 for(i=timer;i0;i-)/ 右发射管通过载波发射信号 /00/ 左发射管通过载波发射信号 /0c/这里控制着灵敏度(控制 38khz 的方波的多 if(n)P 0A=0x08;else P0A=0x04; delay(100);/timer*delay(x) 即为发射管得到的平均电少)和距离 流P1 &= 0Xfb;IE &= 0Xfe;/led 转向灯指示子程序void light_control(uchar deng)ledcs=1;P0 =deng;ledcs=0; /11111011/电机和灯光的控制部分void control(uchar n,u
10、char dj_state,uchar light) uchar i;/ P1|=0x04;/led 转向指示灯/电机的方向控制light_control(light); delay(100); P2 =dj_state;WriteCommandLCD(0x01,1); /LCD 显示清屏switch(dj_state) case dj_state2 : DisplayListChar(3,1,10,talk4,false);break; case dj_state3: DisplayListChar(3,1,8,talk3,false);break; case dj_state4: Disp
11、layListChar(3,1,7,talk1,false); break; default :break;for(i=n;i0;i-)/停车/led 关闭delay(2000);P2=dj_state5;light_control(light_off);WriteCommandLCD(0x01,1); /LCD 显示清屏P2=dj_state1;/前进if(dj_state1)/ledcs=1; P1|=0X04;P0=0x0f;P1&=0XFB; delay(100);DisplayListChar(0,0,7,talk2,false);/* 避障主要控制部分 */ void move_c
12、ar(void)uchar temp =0x00;/左边红外管发射seng_wave(1,left_infrare);/向下为中断开启有关闭后,要执行的语句if(flage=0x01)temp|=0x01;flage=0x00;/右边红外管发射delay(30);seng_wave(1,right_infrare); / 向下为中断开启有关闭后,要执行的语句if(flage=0x01)temp|=0x02;flage=0x00;/左边有障碍物,右转 if(temp=0x01)control(2,dj_state2,left_light); temp =0x00;/右边有障碍物,左转else if(temp=0x02) control(2,dj_state3,right_light ); temp =0x00; void main(void) Init0();P1 |= 0X04; P0 = 0xFf; P1&=0XFB; LCDInit();move_car(); /主要控制部分 delay(200000);/ 延时/两个方向都有障碍物,后退,右转else if(temp=0x03) control(10,dj_state
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (正式版)DB22∕T 3530-2023 《食药用菌种质资源描述规范》
- AI赋能京剧脸谱色彩解码:传统符号与现代技术的融合探索
- 第2课《腊八粥》教学设计-2025-2026学年统编版语文(五四学制)六年级下册
- 2026年BIM技术在建筑工程中的应用与前景
- 粪污处理产业链构建
- 老年人鼻中隔偏曲与心理健康的影响
- 河北衡水中学2026届高三下学期综合素质评价三化学试卷+答案
- 腺苷酸代谢通路在气管扩张生物标志物调控中的作用
- 研发项目管理实施指南
- 邀请客户参与年度产品用户体验调研的联系函6篇范本
- 12《古诗三首》课件-2025-2026学年统编版语文三年级下册
- 团队精神与忠诚度培训讲义
- 2026河南新乡南太行旅游有限公司招聘16岗49人考试参考试题及答案解析
- 2026年辽宁点石联考高三年级3月学情调研语文试卷及答案
- 短剧网络播出要求与规范手册
- 2026年春季西师大版(2024)小学数学三年级下册教学计划含进度表
- 江苏苏锡常镇四市2026届高三下学期教学情况调研(一)数学试题(含答案)
- 2026年3月15日九江市五类人员面试真题及答案解析
- 高顿教育内部考核制度
- 2026年山西工程职业学院单招职业技能考试题库及答案解析
- (2025年)上海专升本普通心理学模拟试题真题试卷及答案
评论
0/150
提交评论