没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
基于蓝牙控制的的灯光控制系统
第一章 功能描述
1、本设计采用蓝牙作为上位机和下位机之间的通信方式,本设计使用手机 APP
作为上位机控制下位机(单片机)。
2、采用 DS1302 时钟芯片,通过开发板上的数码管显示时分秒,即使断开电源,
DS1302 芯片中的时间也会正常走,不需要重复写入时间。
3、手机连接蓝牙后,手机 APP 可以控制 LED 灯显示红绿蓝三种颜色,还可以
向单片机发送 LED 灯亮的时间以及灯灭的时间。
4、当灯亮的时候,可以通过按键调节占空比调节灯光亮度也就是 PWM 调光。
在灯光开启之前以及灯灭之后 PWM 调光按键无效。
第二章 下位机软件设计思路以及原理
本设计使用了 STC12C5A60S2 单片机、数码管、HC-05 蓝牙模块、LED 彩
灯、DS1302 时钟模块。
2.1 单片机程序设计
单片机部分程序设计主要包括定时器 0 和定时器 1 以及串口部分程序设计
2。1.1 定时器以及 PWM 调光部分程序设计
定时器主要用到了定时器 0 以及定时器 1,在本设计中有一项功能是 PWM 调
光功能,由于单片机没有 PWM 模块,所以在本设计中我们采用定时器 0 来模拟
实现 PWM 的功能,其中定时器 0 的初始化程序如下所示。
void Timer0Init()
{
TMOD = 0x02; //定时器 0,工作模式 2,8 位定时模式
TH0=210;
TL0=210;
TR0=1;
//写入预置初值(取值 1-255,数越大 PWM 频率越高)
//写入预置值 (取值 1—255,数越大 PWM 频率越高)
//启动定时器 0
PWM_T=0;
}
void timer0() interrupt 1
{
t++;
//每次定时器溢出加 1
if(t==250) //PWM 周期 100 个单位
{ t=0; //使 t=0,开始新的 PWM 周期
P1=0x07&P1; //输出端口 }
if(PWM_T==t) //按照当前占空比切换输出为高电平
{ P1=0xf8|P1; }
}
这一部分程序主要是让单片机每个 45 微秒进入一次定时器 0 中断,其中 t
每隔 45 微秒加一次,计数到 250 的时候重新置零,并让 P1 的高五位置零,也就
是亮度达到最大。PWM_T 是调节占空比的,初始值是 0,是通过按键控制 PWM_T
数值的增加与减少的.当 PWM_T 的数值与 t 相等的时候将 P1 的高五位置为高电
平。
定时器 1 部分程序设计如下所示
void Timer1Init(void)
{
//timer1 初始化程序
TMOD &= 0x0F;
TMOD |= 0x10;
TL1 = 0x00;
TH1 = 0xEE;
//设置定时器模式
//设置定时器模式
//设置定时初值
//设置定时初值
TF1 = 0;
TR1 = 1;
//清除 TF1 标志
//定时器 1 开始计时
}
void timer1() interrupt 3
{
TL1 = 0x00;
TH1 = 0xEE;
keyscan();
t1++;
//设置定时初值
//设置定时初值
if(t1 == 100)
{
write_1302(0x8e,0x00);
hour=read_1302(0x85);
minute=read_1302(0x83);
second=read_1302(0x81);
write_1302(0x8e,0x80);
t1 = 0;
}
// if(t1 == 20) t = 0;
}
定时器 1 设置每 5ms 进入一次中断,进入中断之后先重装初值,然后进行按键
扫描,本设计中只用到了独立按键,所以只需要扫描两个按键就行了.没进入一次
t1 就加 1,当 t1 等于 100 的时候也就是 500ms 的时候读取一次 DS1302 的时,分,
秒。因为 DS1302 的时,分,秒三个变量每隔一秒种才变化一次,所以每个 500ms
读取一次是比较节省资源的做法,而且可以保证数据读取无误。
2.1。2 串口部分程序设计
void send_data(uchar byte) //串口发送函数
{
SBUF = byte;
while(!TI);
TI = 0;
剩余10页未读,继续阅读
资源评论
G11176593
- 粉丝: 6690
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Python的高德地图+58租房(源码+使用文档)
- C语言文件读写代码.docx
- python的概要介绍与分析
- module-0982.SyncTensorsGraph.9515.sm-8.0-gpu-after-optimizations
- ChromeSetup20220804.exe
- 讲解记录 基于Java的小区物业管理系统
- module-0004.SyncTensorsGraph.7578.sm-8.0-gpu-after-optimizations
- python39.dll
- 【Matlab 六自由度机器人】Fixed Angles(固定角度) 和 Euler Angles(欧拉角) 之间的区别
- STLINK下载器调试过程中常见问题排查
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功