资源简介
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
评论
共有 条评论