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)
2019-6-8 17:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|