STC89C51+HC05
我做的设计
手机装个蓝牙助手,实现指定串口内容控制LED开关。
单片机源程序如下:
- #include "main.h"
- void main(void)
- {
- EA = 1;
- LED1 = 0;
- LED2 = 0;
- Delay = 0;
- ConfigTimer0();
- ConfigUART(9600);
- LCD_INIT();
- // Write_String(0,0,"Hello");
- // Write_String(0,1,"1602113");
- string(0x83,"Welcome",7);//写入welcome
- string(0xc3,"1602113",7);//写入Harbin China
- while(1);
- }
- //main
- void delay(int ms)
- {
- int i,j;
- for(i=0;i<ms;i++)
- for(j=0;j<125;j++);
- }
- /* 串口配置函数,baud-通信波特率 */
- void ConfigUART(unsigned int baud)
- {
- SCON = 0x50; //配置串口为模式1
- TMOD &= 0x0F; //清零T1的控制位
- TMOD |= 0x20; //配置T1为模式2
- TH1 = 256 - (11059200/12/32)/baud; //计算T1重载值
- TL1 = TH1; //初值等于重载值
- ET1 = 0; //禁止T1中断
- ES = 1; //使能串口中断
- TR1 = 1; //启动T1
- }
- /* 配置并启动T0,ms-T0定时时间 */
- void ConfigTimer0()
- {
- TMOD &= 0xF0; //清零T0的控制位
- TMOD |= 0x01; //配置T0为模式1
- TH0 = T0RH; //加载T0重载值
- TL0 = T0RL;
- ET0 = 1; //使能T0中断
- TR0 = 1; //启动T0
- }
- //1602
- void LCD_INIT(void)
- {
- LCD_RW=0;
- write_com(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口
- delay(20);
- write_com(0x0f); //显示模式设置
- delay(20);
- write_com(0x06); //显示模式设置:光标右移,字符不移
- delay(20);
- write_com(0x01); //清屏幕指令,将以前的显示内容清除
- delay(20);
- }
- void write_com(uchar com)
- {
- P0=com;
- LCD_RS=0;
- LCD_EN=0;
- delay(10);
- LCD_EN=1;
- delay(10);
- LCD_EN=0;
- }
- void write_date(uchar date)
- {
- P0=date;
- LCD_RS=1;
- LCD_EN=0;
- delay(10);
- LCD_EN=1;
- delay(10);
- LCD_EN=0;
- }
- void string(uchar ad,uchar *p,uchar n)//显示字符函数
- {
- uchar i;
- write_com(ad);
- for(i=0;i<n;i++)
- {
- write_date(*p++);
- delay(50);
- }
- }
- void UART_INT(void) interrupt 4
- {
- EA = 0;
- while(RI)
- {
- RxdByte = SBUF;
- SBUF = SBUF;
- switch(RxdByte)
- {
- case 0x31:LED1 = 1;//LED1开
- //Write_String(0,0,"LED1 ON ");
- write_com(0x01);
- string(0x80,"Controling",10);
- string(0xc0,"LED1 ON ",9);
- break;
- case 0x32:LED1 = 0;//LED1关
- //Write_String(0,0,"LED1 OFF ");
- write_com(0x01);
- string(0x80,"Controling",10);
- string(0xc0,"LED1 OFF",9);
- break;
- case 0x33:LED2 = 1;//LED2开
- //Write_String(0,0,"LED2 ON ");
- write_com(0x01);
- string(0x80,"Controling",10);
- string(0xc0,"LED2 ON ",9);
- break;
- case 0x34:LED2 = 0;//LED2关
- //Write_String(0,0,"LED2 OFF ");
- write_com(0x01);
- string(0x80,"Controling",10);
- string(0xc0,"LED2 OFF",9);
- break;
- case 0x35:Delay = 1;//继电器开
- //Write_String(0,0,"Delay ON ");
- write_com(0x01);
- string(0x80,"Controling",10);
- string(0xc0,"Delay ON ",10);
- break;
- case 0x36:Delay = 0;//继电器关
- //Write_String(0,0,"Delay OFF ");
- write_com(0x01);
- string(0x80,"Controling",10);//写入welcome
- string(0xc0,"Delay OFF",10);//写入Harbin China
- break;
- default://Write_String(0,0,"Error ");
- write_com(0x01);
- string(0x85,"Error",5);//写入welcome
- string(0xc1,"Please Retry",12);//写入Harbin China
- break;
- }
- RI = 0;
- }
- while(TI)
- {
- TI=0;
- }
- EA=1;//开启串口中断
- }
复制代码
所有程序51hei提供下载:
蓝牙家电控制.zip
(320.7 KB, 下载次数: 20)
|