51单片机与蓝牙串口通信程序

更新时间:2023-07-30 02:51:31 阅读: 评论:0

#include <reg51.h>
#include <intrins.h>
#include<stdio.h>
#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 nd_buff[15];
uchar reci_buff[15]={"              "};
uchar z;  //接收缓冲区指针
uchar time;//定时器中断次数
uchar code mun_to_char[]={"0123456789ABCDEF"};
/*1MS为单位的延时程序*/
void init();
void nd(uchar cc);
void nd_f(uchar ccc);
void interrupt_pro();
void key_pro();
void call_out();
void main()
{
    uchar i,j;
    delay_1ms(5);
    init();        //定时器初始化
    lcd_system_ret();    /*LCD1602 初始化*/
    for(i=0;i<16;i++)
      lcd_char_write(i,1,lcd_table[i]); /*显示标题*/
  string_write(0,0,clr);string_write(0,0,"  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=0,j=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(0,1,clr);
        string_write(0,1,CallIn_Num);
         
       
        }
      if(call_flag==1)//拨号状态
      {
        TR0=1;
        if(time>100&&CallOut_Num[0]>='0')
          {  call_out();
            for(i=16;i>1;i--) {
              string_write(2,0,CallOut_Num);
              delay_1ms(222);
              delay_1ms(222);
含有身体部位的成语              string_write(2,0,"          ");
              delay_1ms(222);
              delay_1ms(222); }
            for(i=0;i<15;i++) CallOut_Num[i]=' '; //清空
              time=0;TR0=0;call_flag=0;string_write(0,0,clr);string_write(3,0,"Welcome!");                 
          }
        // el  if(time>222){time=0;goto start;}//el m=0;
      }   
    }
}
void init() /* 串口定时器外部中断初始化 */
{
    TMOD =0X21;//|= 0x20; //定时器1为模式2,8位自动重装
    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 nd(uchar cc)
{
    SBUF=cc;
    while(TI==0);
    TI=0;
}
void nd_f(uchar ccc)
{
  nd(' ');
节水ppt
  nd('<');
  nd('F');
  nd(ccc);
珍惜打针6  nd('>');
}
void call_out()
{
  uchar i;
  nd('(');
  for(i=0;i<m;i++)
  {
    nd(CallOut_Num[i]);
  }
  nd(')'); 
    m=0;
}
void interrupt_pro()
{
        string_write(0,1,reci_buff);
        lcd_char_write(14,1,mun_to_char[temp/10]); //for test             
        lcd_char_write(15,1,mun_to_char[temp%10]); //for test         
        if(temp==')') CallIn_flag=1;//|temp=='$' |temp=='%'
        el if(temp=='$'){ lcd_delay(5);//if(temp=='$')
                            string_write(0,0,clr);
                            string_write(0,0,reci_buff);}
         
      el switch(temp)
            {
              ca 'X':string_write(0,0,clr);string_write(0,0,"Disconnet");break; 
              ca 'P':string_write(0,0,clr);string_write(0,0,"Pairing");  break; 
称快              ca 'S':string_write(0,0,clr);string_write(0,0,"Linking"); break;
              ca 'O':string_write(0,0,clr);string_write(0,0,"Connect"); break;   
              ca 'R':string_write(0,0,clr);string_write(0,0,"Ring");
                      //string_write(5,0,CallIn_Num);
                     
                      break;   
              ca 'D':string_write(0,0,clr);string_write(0,0,"Ding");
尹艳荣                      // string_write(5,0,CallIn_Num);
                      break;
              ca 'I':string_write(0,0,clr);string_write(0,0,"Talking");  break;
              ca 'L':string_write(0,0,clr);string_write(0,0,"Call failed"); break;
              ca 'A':string_write(0,0,clr);string_write(0,0,"MP3 playing");  break;
              ca 'E':string_write(0,0,clr);string_write(0,0,"Call relea    "); break;
              ca 'H':string_write(0,0,clr);string_write(0,0,"A2DP connected  ");break;
              ca 'V':string_write(0,0,clr);string_write(0,0,"A2DP disconnected");break;
            // ca ')':x=0;    break;    //for(i=0;i<16;i++) lcd_char_write(i,1,lcd_table[i]); /*显示标题*/

本文发布于:2023-07-30 02:51:31,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1101497.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   定义   键盘   端口   拨号   独立   按键
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图