• 51单片机蓝牙模块的使用方法


    讲解51单片机蓝牙模块(ATK-SPP-HC06从机串口)的使用方法。
    #include <AT89X51.H>
    #include <intrins.h>
    
    // 函数原形定义
    #define uchar unsigned char
    #define uint unsigned int 
    
    void main (void);					// 主函数
    void LED_OUT(uchar X);				// LED单字节串行移位函数
    void LED_print (uchar p, uchar x) ;
    
    unsigned char code LED_0F[];		// LED字模表
    
    sbit DIO    = P1^0;				//串行数据输入
    sbit RCLK   = P1^1;				//时钟脉冲信号——上升沿有效
    sbit SCLK   = P1^2;				//打入信号————上升沿有效
    
    uchar Buffer[4] = {0};          //从串口接收的数据
    
    // 全局变量
    uchar LED[8];	//用于LED的8位显示缓存
    
    void Delay_1ms(uint i)//1ms延时
    {
        uchar x,j;
        for(j=0;j<i;j++)
            for(x=0;x<=148;x++); 
    }
    
    void Init(void)
    {
        TMOD    = 0x20; //8 位自动重装计数
        PCON   &= 0x7f;
        SCON    = 0x50;//串行口控制寄存器 SM1=1,SM0=0方式一波特率可变
        TH1     = 0xFD; //设置波特率 9600
        TL1     = 0xFD;
        TR1     = 1;    //启动定时器1
        TI      = 0;
        RI      = 0;
        ES      = 1;    //开串口中断
        EA      = 1;    //开总中断
    }
    
    // 主程序
    void main (void) 
    {
        Init();//初始化
    
        LED_print (0x80, 0x0F); //显示启动信息
    
        while(1)
    	{
            switch(Buffer[0])
            {
                case 0x30: LED_print (0x01, 0);    break;
                case 0x31: LED_print (0x01, 1);    break;
                case 0x32: LED_print (0x01, 2);    break;
                case 0x33: LED_print (0x01, 3);    break;
                case 0x34: LED_print (0x01, 4);    break;
                default  : LED_print (0x80, 0x0E); break; 
            }
        }
    } 
    
    void Com_Int(void) interrupt 4
    {
        EA = 0;
        if (RI == 1) //当硬件接收到一个数据时,RI会置位
        {
            Buffer[0] = SBUF ; //这里减去48是因为从电脑中发送过来的数据是ASCII码。// 	Buffer[0] = SBUF-48 ;
            RI = 0; 
        }
        EA = 1;
    }
    
    void LED_print (uchar p, uchar x) 
    {
       	unsigned char code *led_table;          // 查表指针
    	uchar i;
    	unsigned long loop;
    
    	led_table = LED_0F + x;
    	i = *led_table;
    
    	LED_OUT(i);			
    	LED_OUT(p);		
    
    	RCLK = 0;
    	RCLK = 1;
    
    	for(loop = 0; loop < 230; loop++);
    }
    
    void LED_OUT(uchar X)
    {
    	uchar i;
    	for(i=8;i>=1;i--)
    	{
    		if (X&0x80) DIO=1; else DIO=0;
    		X<<=1;
    		SCLK = 0;
    		SCLK = 1;
    	}
    }
    
    unsigned char code LED_0F[] = 
    {
        //0   1     2     3     4     5     6     7     8     9     A     b     C     d	    E     F     -
        0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E, 0xbf
    };
    
  • 相关阅读:
    FW : Unit of Measure related settings in SAP
    SAP PCA: 转移价格的确定
    SAP 关于贸易伙伴(Trading Partner)区分关联方/非关联方/子公司/第三方
    FSV tables in S/4 HANA OB58 , S_E38_98000088
    SAP Profit Center Table Data
    服务器搭建网站完整教程(宝塔面板+wordpress)
    运营
    undefined reference to `std::cout'等错误
    [c++][chromium]C++做与不做 C++ Dos and Don'ts
    [git]快速迁移git仓库
  • 原文地址:https://www.cnblogs.com/motadou/p/4324624.html
Copyright © 2020-2023  润新知