/*****************************************************
程序来源于 科创工作室
如需设计或者定制 闲鱼搜索 “科创工作室”
******************************************************/
#include "reg52.h"
#include "intrins.h"
#include "stdio.h"
#define uchar unsigned char
#define uint unsigned int
#define LCD1602_DATAPINS P0 //P0口数据显示
sbit LCD1602_RS=P3^5; //1602引脚定义
sbit LCD1602_RW=P3^6;
sbit LCD1602_E=P3^4;
sbit k1=P3^2; //开
sbit k2=P3^3; //关
sbit led=P1^0;
uchar led_flag=0;
uchar reseve_flag=0;//接收标志位
void UART_Init();//串口初始化
void uartSendByte(unsigned char dat);//发送数据
void uartSendStr(unsigned char *s,unsigned char length);//发送字符串
void Lcd1602_Delay1ms(uint c) //延时函数,延时1ms
{
uchar a,b;
for (; c>0; c--)
{
for (b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
void DelayUs2x(unsigned char t)
{
while(--t);
}
void delay_ms(unsigned int t) //毫秒延时
{
unsigned int a,b;
for(a=0;a<t;a++)
for(b=0;b<120;b++);
}
void LcdWriteCom(uchar com) //写入命令
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 0; //选择写入命令
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = com; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
LCD1602_DATAPINS = com << 4; //发送低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
void LcdWriteData(uchar dat) //写入数据
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 1; //选择写入数据
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = dat; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
LCD1602_DATAPINS = dat << 4; //写入低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
void LcdClean(void)// 清屏
{
LcdWriteCom(0x01);
}
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x32); //将8位总线转为4位总线
LcdWriteCom(0x28); //在四位线下的初始化
LcdWriteCom(0x0c); //开显示不显示光标
LcdWriteCom(0x06); //写一个指针加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80); //设置数据指针起点
LcdClean();
}
void LcdWritestr(uchar *dat) //向LCD写入多个字节的数据
{
while(*dat != '\0')
{
LcdWriteData(*dat);
dat++;
}
}
void Delay1ms() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
void key()//按键操作函数
{
if(k1==0) //判断
{
Delay1ms(); //消抖处理
if(k1==0) //在判断
{ //设置
led_flag=1;
P1=0X00;
}while(k1==0);
}
if(k2==0)
{
Delay1ms();
if(k2==0) //加
{
led_flag=0;
P1=0XFF;
}while(k2==0);
}
}
void display_data(void)///显示
{
if(led_flag==1)
{
LcdWriteCom(0x80); //第一行
LcdWritestr("LED:ON ");
uartSendStr("LED:ON ",7);
}
else if(led_flag==0)
{
LcdWriteCom(0x80); //第一行
LcdWritestr("LED:OFF");
uartSendStr("LED:OFF",7);
}
}
void UART_Init(void)
{
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装
TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz
TL1 = TH1;
TR1 = 1; // TR1: timer 1 打开
EA = 1; //打开总中断
ES = 1; //打开串口中断
}
void uartSendByte(unsigned char dat)
{
unsigned char time_out;
time_out=0x00;
SBUF = dat; //将数据放入SBUF中
while((!TI)&&(time_out<100)) //检测是否发送出去
{time_out++;DelayUs2x(10);} //未发送出去 进行短暂延时
TI = 0; //清除ti标志
}
void uartSendStr(unsigned char *s,unsigned char length)
{
unsigned char NUM;
NUM=0x00;
while(NUM<length) //发送长度对比
{
uartSendByte(*s); //放松单字节数据
s++; //指针++
NUM++; //下一个++
}
}
void UART_SER (void) interrupt 4 //串行中断服务程序
{
if(RI) //判断是接收中断产生
{
RI=0; //标志位清零
reseve_flag = SBUF;
}
if(TI) //如果是发送标志位,清零
TI=0;
switch(reseve_flag)
{
case (0+0x30): led_flag=1;
P1=0X00; break;
case (1+0x30): led_flag=0;
P1=0XFF;break;
default: break;
}
}
void main()
{
LcdInit();//1602初始化
UART_Init();//串口初始化
while(1)
{
display_data();
delay_ms(1000);
key(); //调用按键
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于51单片机蓝牙点灯代码
共13个文件
uvproj:1个
uvopt:1个
plg:1个
6 下载量 28 浏览量
2023-05-27
16:22:57
上传
评论 1
收藏 31KB ZIP 举报
温馨提示
基于51单片机蓝牙点灯是一种基于嵌入式系统的智能灯光控制方案,可以通过蓝牙信号控制单片机开关灯光,实现灯光的智能控制。该方案可以广泛应用于居家、商场、办公室等场所,提高生活和工作的便利性和舒适性。 具体的实现过程如下: 1. 确定硬件电路:将51单片机、HC-06蓝牙模块、LED灯、电源等元件连接在一起,如下图所示: ![51单片机蓝牙点灯电路图](https://cdn.jsdelivr.net/gh/WangRongsheng/picbed/img/20210927010042.png) 2. 设计程序:通过单片机的IO口控制LED灯,实现开关灯光的控制。在此基础上,可以设计出通过蓝牙信号控制灯光的功能。通过蓝牙模块接收手机端发送的指令,实现灯光的智能控制。 3. 编写程序:根据电路图和设计的功能,编写单片机的程序。程序主要包括蓝牙通信模块、LED控制模块、定时器模块等。蓝牙通信模块是程序的核心,通过接收蓝牙模块发送的指令,实现开关灯光的控制。 4. 调试程序:将单片机程序下载到目标板上,将LED灯连接到电路上,连接蓝牙模块,调试程序,检查功能是否能正常工作,如能够正常
资源推荐
资源详情
资源评论
收起资源包目录
18.基于51单片机蓝牙点灯代码.zip (13个子文件)
18.基于51单片机蓝牙点灯代码
Bluetooth.hex 2KB
Bluetooth.OBJ 12KB
Bluetooth.uvopt 5KB
Bluetooth.uvproj 14KB
Bluetooth.build_log.htm 1005B
Bluetooth.LST 9KB
Bluetooth.c 5KB
Bluetooth.uvgui.liwei 89KB
Bluetooth_uvproj.bak 0B
Bluetooth.plg 7KB
Bluetooth.lnp 50B
Bluetooth 10KB
Bluetooth.M51 15KB
共 13 条
- 1
资源评论
科创工作室li
- 粉丝: 2931
- 资源: 51
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功