单片机学习-HC-05蓝牙模块-LCD12864显示

Jelena ·
更新时间:2024-11-13
· 752 次阅读

单片机学习-HC-05蓝牙模块-LCD12864显示 简介

1.硬件部分
HC-05蓝牙模块 STC12C5A60S2(51系列单片机) LCD12864
2.软件部分
Keil软件 串口调试软件

硬件部分 蓝牙模块

蓝牙HC05是主从一体的蓝牙串口模块,简单的说,当蓝牙设备与蓝牙设备配对连接成功后,我们可以忽视蓝牙内部的通信协议,直接将将蓝牙当做串口用。当建立连接,两设备共同使用一通道也就是同一个串口,一个设备发送数据到通道中,另外一个设备便可以接收通道中的数据。
在这里插入图片描述

调试部分(百度搜索)

AT指令集调试配置

软件部分 /*----------------------------------------------------------------------------- * 实 验 名 : HC05蓝牙模块LCD12864显示 * 实验说明 : 普中单片机蓝牙串口接收数据控制灯亮灭和LCD12864显示 * 连接方式 : * 注 意 : 该试验使用的晶振是12MHZ *******************************************************************************/ #include #include #define uchar unsigned char #define uint unsigned int #define jingzhen 12000000UL /*使用12.0M晶体*/ #define botelv 4800UL /*波特率定义为4800*/ uchar PuZh[] = "www.1234567890.com"; //--定义使用的IO--// /********************************************************************************************************** 端口定义 ************************************************************************************************************/ sbit RS=P2^6; //命令/数据选择 sbit RW=P2^5; //读写口 sbit E=P2^7; //锁存控制 sbit RES = P2^0; sbit PSB = P2^2; sbit LED1=P2^3; sbit LED2=P2^4; //--声明全局函数--// void UsartConfiguration(); void Delay_1ms(uint i); void delay(unsigned int time); void DELAY_nUS(unsigned int Time); void DELAY_nMS(unsigned int time); /******************************************************************** * 名称 : Delay_1ms() * 功能 : 延时子程序,延时时间为 1ms * x * 输入 : x (延时一毫秒的个数) * 输出 : 无 ***********************************************************************/ void Delay_1ms(uint i)//1ms延时 { uchar x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } void DELAY_nMS(unsigned int time) { unsigned int i,j; for(i=0;i<time;i++) for(j=0;j<939;j++); } void DELAY_nUS(unsigned int Time) { while(--Time); } void delay(unsigned int time) //int型数据为16位,所以最大值为65535 { //0.1ms unsigned int i,j; //定义变量i,j,用于循环语句 for(i=0;i<time;i++) //for循环,循环50*time次 for(j=0;j0) { wdata(*s); delay(10); s++; } } void LCD12864_Display_UnsignedInt(unsigned char x,unsigned char y,unsigned int Number,unsigned char Count) { unsigned char NumbArray[6]={0}; NumbArray[0]=(Number/10000)%10+0x30; NumbArray[1]=(Number/1000) %10+0x30; NumbArray[2]=(Number/100) %10+0x30; NumbArray[3]=(Number/10) %10+0x30; NumbArray[4]=(Number/1) %10+0x30; NumbArray[5]= 0; LCD12864_Display_String(x,y,&NumbArray[5-Count]); } void Display_SignedInt(unsigned char x, unsigned char y, signed int Number, unsigned char Count) { unsigned char NumberArray[7]={0}; signed int Number_Temp; Number_Temp = Number; if(Number_Temp0) { NumberArray[5-Count] = '+'; } else { NumberArray[5-Count] = '-'; } LCD12864_Display_String(x, y, &NumberArray[5-Count]); } /******************************************************************** * 名称 : Com_Int() * 功能 : 串口中断子函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Com_Int(void) interrupt 4 { uchar i; uchar receive_data; EA = 0; if(RI == 1) //当硬件接收到一个数据时,RI会置位 { RI = 0; receive_data = SBUF;//接收到的数据 if(receive_data == '1') { LED1=0; DELAY_nMS(200); LED1=1; DELAY_nMS(200); LCD12864_Display_String(0,1,"led1"); DELAY_nMS(500); wcode(0x01); LED2=1; DELAY_nMS(200); LED2=0; DELAY_nMS(200); LCD12864_Display_String(0,2,"led2"); DELAY_nMS(500); wcode(0x01); } else if(receive_data == '2') { LED2=1; DELAY_nMS(200); LED2=0; DELAY_nMS(200); LCD12864_Display_String(8,2,"led2"); DELAY_nMS(500); wcode(0x01); LED1=0; DELAY_nMS(200); LED1=1; DELAY_nMS(200); LCD12864_Display_String(8,1,"led1"); DELAY_nMS(500); wcode(0x01); } else { LCD12864_Display_String(0,3,"error"); DELAY_nMS(500); wcode(0x01); } } for(i=0; i<36; i++) { SBUF = PuZh[i]; //将要发送的数据放入到发送寄存器 while(!TI); //等待发送数据完成 TI=0; //清除发送完成标志位 Delay_1ms(1); } EA = 1; } /******************************************************************************* * 函 数 名 : UsartConfiguration() * 函数功能 : 设置串口 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void UsartConfiguration(void) //串口初始化 { EA=0; //暂时关闭中断 TMOD&=0x0F; //定时器1模式控制在高4位 TMOD|=0x20; //定时器1工作在模式2,自动重装模式 SCON=0x50; //串口工作在模式1 TH1=256-jingzhen/(botelv*12*16); //计算定时器重装值 TL1=256-jingzhen/(botelv*12*16); PCON|=0x80; //串口波特率加倍 ES=1; //串行中断允许 TR1=1; //启动定时器1 REN=1; //允许接收 EA=1; //允许中断 } /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { UsartConfiguration();//初始化串口 LCD12864_InitLCD(); //LCD12864_Display_String(0,1,"test"); while(1) { //LCD12864_Display_String(0,0,"test"); } }
作者:みずじ



hc 模块 蓝牙模块 学习 蓝牙 单片机

需要 登录 后方可回复, 如果你还没有账号请 注册新账号