資源簡介
51單片機與藍牙模塊的串口通信C程序 ,詳細講解了 51單片機驅動藍牙模塊程序。
代碼片段和文件信息
#include?
#include?
#include
#include?“LCD1602.h“
#include?“matrix_key.h“
#define?uint?unsigned?int
#define?uchar?unsigned?char
#define?Nop()?_nop_()
sbit?P10?=?P1^0;??/*定義獨立對地按鍵端口*/
sbit?P11?=?P1^1;??/*定義獨立對地按鍵端口*/
sbit?P12?=?P1^2;??/*定義獨立對地按鍵端口*/
sbit?P13?=?P1^3;??/*定義獨立對地按鍵端口*/? ?//shift鍵
bit?shift_flag;
bit?call_flag?;
bit?CallIn_flag=0;
bit?reci_flag;
bit?reci_flag1;
sbit?sled_en_port?=?P3^6;?/*定義數碼管數據鎖存器控制端口*/
sbit?led_en_port?=?P2^5;?/*定義發光二極管數據鎖存器控制端口*/
sbit?ds1302_en_port?=?P2^2;?/*定義時鐘的選片腳*/
uchar?CallIn_Num[15];//={“00000000000“};
uchar?CallOut_Num[15]={“???????????????“};
uchar?m=0; //撥號指針
uchar?temp=‘?‘;
uchar?code?clr[16]={“????????????????“};
uchar?code?lcd_table[16]??=?{“Ky:??Cm:???Re:??“};
//uchar?send_buff[15];
uchar?reci_buff[15]={“???????????????“};
uchar?z;??//接收緩沖區指針
uchar?time;//定時器中斷次數
uchar?code?mun_to_char[]={“0123456789ABCDEF“};
/*1MS為單位的延時程序*/
void?init();
void?send(uchar?cc);
void?send_f(uchar?ccc);
void?interrupt_pro();
void?key_pro();
void?call_out();
void?main()
{
uchar?ij;
????delay_1ms(5);
init(); ?????//定時器初始化
lcd_system_reset(); /*LCD1602?初始化*/
for(i=0;i<16;i++)?
???lcd_char_write(i1lcd_table[i]);?/*顯示標題*/
???string_write(00clr);string_write(00“???Welcome!???“);
sled_en_port?=?0;?/*關閉數碼管顯示*/
led_en_port?=?0;?/*關閉發光二極管顯示*/
ds1302_en_port?=?0;/*關閉時鐘通訊*/
while(1)
{
?key_pro();?//掃描鍵盤,按鍵盤處理
???if(reci_flag)??//串口有數據過來
???{
?????interrupt_pro();//分析處理?
?????reci_flag=0;
?reci_flag1=1;
???}???
if(CallIn_flag==1) //有電話打進來。
{??CallIn_flag=0;
?for(i=0j=0;i<15;i++) ??//&&reci_buff[i]>=0x30?&&reci_buff[i]<=0x39
????{?if(reci_buff[i]>=‘0‘&&reci_buff[i]<=‘9‘||reci_buff[i]==‘?‘)?
??{CallIn_Num[j]=reci_buff[i];j++;} reci_buff[i]=‘?‘;
}
string_write(01clr);
?string_write(01CallIn_Num);
??
?
?}
???if(call_flag==1)//撥號狀態
???{
????TR0=1;
if(time>100&&CallOut_Num[0]>=‘0‘)?
??{???call_out();
?????for(i=16;i>1;i--)?{
??string_write(20CallOut_Num);
??delay_1ms(222);
??delay_1ms(222);
??string_write(20“???????????“);
??delay_1ms(222);
??delay_1ms(222);?}
for(i=0;i<15;i++)?CallOut_Num[i]=‘?‘;?//清空
??time=0;TR0=0;call_flag=0;string_write(00clr);string_write(30“Welcome!“); ??
???}
//?else??if(time>222){time=0;goto?start;}//else?m=0;
???}
}
}
void?init()?/*?串口定時器外部中斷初始化?*/
{
????TMOD?=0X21;//|=?0x20;?//定時器1為模式28位自動重裝
????TH1??=?0xfd;?//Baud:19200?fosc=“11“.0592MHz
TL1=0XFD?;
TH0=0;
TL0=0;
TR1??=?1; //?timer?1?run? ???
????SCON?=?0x50;?//UART為模式1,8位數據,允許接收
????PCON?|=?0x80?;?//SMOD=1;?Baud加倍
????IE?|=?0x90?;?????//Enable?Serial?Interrupt?
????TR1?=?1?;???????//?timer?1?run?
EA=1;
ET0=1;
}
void?send(uchar?cc)
{
????SBUF=cc;
????while(TI==0);
????TI=0;
}
void?send_f(uchar?ccc)
{
??send(‘?‘);
??send(‘<‘);
??send(‘F‘);
??send(ccc);
??send(‘>‘);
}
void?call_out(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1938??2010-01-04?09:26??beta5\串口.plg
?????文件???????2118??2009-10-30?15:44??beta5\串口_Uv2.Bak
?????文件?????????39??2009-10-30?15:37??beta5\新建?文本文檔.txt
?????文件??????15251??2010-01-04?08:55??beta5\beta1.c
?????文件???????1224??2009-10-30?13:26??beta5\key_scan.h
?????文件???????2585??2010-01-04?08:42??beta5\LCD1602.h
?????文件???????4557??2009-10-17?17:18??beta5\lcd_12864.h
?????文件???????8149??2010-01-04?08:55??beta5\串口.hex
?????文件?????????26??2010-01-04?08:55??beta5\串口.lnp
?????文件??????30639??2010-01-04?08:55??beta5\串口.M51
?????文件???????1301??2009-11-06?21:30??beta5\matrix_key.h
?????文件????????821??2010-01-04?08:59??beta5\TEST.PWI
?????文件??????97364??2010-01-03?12:56??beta5\TEST.DSN
????.......??????1957??2010-01-03?18:15??beta5\串口_Opt.Bak
?????文件??????97364??2010-01-02?22:23??beta5\Last?Loaded?TEST.DBK
?????文件???????2119??2010-01-02?23:24??beta5\串口.Uv2
?????文件??????34142??2010-01-04?08:55??beta5\beta1.LST
?????文件??????34036??2010-01-04?08:55??beta5\beta1.OBJ
?????文件??????28740??2010-01-04?08:55??beta5\串口
?????文件???????1953??2010-01-04?09:26??beta5\串口.Opt
?????目錄??????????0??2010-01-04?08:04??beta5
-----------?---------??----------?-----??----
???????????????366323????????????????????21
評論
共有 條評論