附录 其余各模块的程序 1 蓝牙模块参数设置程序 void InitUART(void)
{
TMOD=0x20; //定时器1
TH1=0xfd; //装入初值
TL1=0xfd;
TR1=1; //启动定时器1
SM0=0; //设置串口方式1
SM1=1;
REN=1; //接收使能
EA=1; //打开总中断开关
ES=1; //打开串口中断开关 } 2蓝牙发送程序接收程序和中断程序 void Print_Char(uchar dat)
{
SBUF = dat; //写数据到UART数据寄存器 while(TI!=1); //等待发送完毕
TI=0; //软件清零
} void Print_Str(uchar *s)//发送字符串(uchar *s)
{ ES=0;
while (*s) //检测字符串结束标志
{
Print_Char(*s++);
delay(2); //发送当前字符
}
ES=1;
} void Uart() interrupt 4 using 1
{
if (RI)
{
RI = 0; //清除RI位
aa= SBUF; //P0显示串口数据
}
} 3自动避障及灯光声音控制程序设计 void avoid_thing()
{
if(d0==0||d1==0)
{
P1=right;
rightled=1;
leftled=0;
beep=0;
}
beep=1;
if(d3==0||d2==0)
{
P1=left;
rightled=0;
leftled=1;
beep=0;
}
beep=1;
if(d0==0&&d1==0&&d2==0&&d3==0)
{
P1= stop;
rightled=1;
leftled=1;
}
if(d0==1&&d1==1&&d2==1&&d3==1)
{
P1= up;
rightled=0;
leftled=0;
}
if(moshi==0)
{
flag=0;
}
} 4 液晶显示程序设计 #include "reg52.h"
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned int uint;
#define nop(); {_nop_();_nop_();_nop_();_nop_();};
#define DataPort P0 //定义P0口为LCD通讯端口
sbit RS=P2^7; //数据/命令端
sbit RW=P2^6; //读/写选择端
sbit E=P2^5;
sbit RST=P2^4;
sbit PSB=P2^2;
sbit Busy=DataPort^7;
void lcd_busy(void)
{
DataPort=0xff;
RS=0;
RW=1;
E=1;
while(Busy==1);
E=0;
}
void lcd_com(uchar com)
{
lcd_busy();
E=0;
RS=0;
RW=0;
E=1;
DataPort=com;
nop();
E=0;
}
void lcd_dat(uchar dat)
{
lcd_busy();
E=0;
RS=1;
RW=0;
E=1;
DataPort=dat;
nop();
E=0;
}
void lcd_init(void)
{
RST=1;
PSB=1;
lcd_com(0x30); /*30---基本指令动作*/
lcd_com(0x01); /*清屏,地址指针指向00H*/
lcd_com(0x06); /*光标的移动方向*/
lcd_com(0x0c); /*开显示,关游标*/
}
void lcd_disp(uchar y,uchar *str,uchar len) //向第y行 写入字符串
{
uchar i;
lcd_com(0x30);
lcd_com(y);
for(i=0;i<len;i++)
{
lcd_dat(*str);
str++;
} |