附錄 其余各模塊的程序 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++;
} |