物联网技术区||STC15单片机应用开发之 LED灯亮度控制
发布者:
布时间:2020-09-16 16:26:58
点击量:
利用单片机定时器实现PWM功能,从而控制驱动LED灯,LED1亮度从最大时到暗,变暗后再逐渐变亮,达到最亮时再逐渐变。
知识引入
1.PWM原理
脉宽调制(PWM,Pulse Width Modulation)是一种模拟控制方脉冲宽度调制,利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。PWM就是脉冲宽度调制,也就是占空比可变的脉冲波形。
PWM有几个重要的概念:占空比(Pulse Width)、周期(Period)、脉宽时间,如下图3-2所示:
图3-2 PWM功能的占空比、周期、脉宽时间
PWM的的常见应用包括LED调光、电机调速等。
STC15W4k56S4单片机内部共有6路PWM模块,每路结构都一样,都包含两个设置I/O引脚输出翻转时刻的15位寄存器PWMnT1和PWMnT2。当内部计数器的值与某个翻转寄存器的值相等时,就对对应的输出I/O引脚取反,从而对PWM波形占空比进行控制。
单片机内部6通道PWM波形发生器为每路PWM设计了两个用于控制波形翻转的计数器T1和T2,可以非常灵活控制PWM输出波形的占空比及频率。
2.相关寄存器设置
本任务中STC15单片机PWM模块寄存器的配置如表3-8所示:
表3-8 PWM模块寄存器配置
符号 |
描述 |
地址 |
位地址及其符号
MSB LSB |
复位值 |
P_SW2 |
端口配置寄存器 |
BAH |
EAXSFR| 0 | 0| 0|- |S4_S|S3_S|S2_S |
0000 0000H |
PWMCFG |
PWM配置寄存器 |
F1H |
-|CBTADC|C7INI|C6INI|C5INI|C4INI|C3INI|C2INI| |
0000 0000H |
PWMCR |
PWM控制寄存器 |
F5H |
ENPWM|ECBI|ENC7O|ENC6O|ENC5O|ENC4O|ENC3O|ENC2O| |
0000 0000H |
PWMIF |
中断标志寄存器 |
F6H |
-|CBIF|C7IF|C6IF|C5IF|C4IF|C3IF|C2IF| |
0000 0000H |
PWMFDCR |
外部异常控制寄存器 |
F7H |
-|-|ENFD|FLTFLIO|EFDI|FDCMP|FDIO|FDIF |
0000 0000H |
PWMCH |
PWM计数器高字节 |
FFF0H |
-|PWMCH(14:8) |
0000 0000H |
PWMCL |
PWM计数器低字节 |
FFF1H |
PWMCL(7:0) |
0000 0000H |
PWMCKS |
时钟选择寄存器 |
FFF2H |
- | - | - | SELT2 | PS[3:0] |
0000 0000H |
PWM配置寄存器PWMCFG中,CBTADC为PWM计数器归零时(CBIF=1时)触发ADC转换,CBTADC=0时, PWM计数器归零时不触发ADC转换,CBTADC=1时,PWM计数器归零时触发ADC转换。
PWM控制寄存器PWMCR中,ECBI位为PWM计数器归零中断使能位,ENCnO为PWM输出使能位。
PWM中断标志寄存器PWMIF中,CBIF为PWM计数器归零中断标志位,CnIF为第n通道的PWM中断标志位。
PWM外部异常控制寄存器PWMFDCR中,ENFD位为PWM外部检测功能控制位,LTFLIO为发生PWM外部异常 时对PWM输出口控制位,EFDI为PWM异常检测中断使能位。
3.关键代码分析
#include <STC15.h> // 引用头文件
#define uchar unsigned char //定义unsigned int为uint
#define uint unsigned int //定义unsigned uchar为uchar
sbit LED= P2^2; //定义LED的引脚位置
uchar PWM_COUNT; //计数
uint HUXI_COUNT; //占空比更新时间
uchar PWM_VLAUE; //占空比比对值
bit direc_flag; //占空比更新方向
void timer0_init()
{
TMOD=0x02; //模式设置,00010000,定时器0,工作于模式2(M1=1,M0=0)
//自动重装初始值的8位定时/计数器
TH0=0x47; //定时器溢出值设置,每隔200us发起一次中断。
TL0=0X47;
TR0=1; //定时器0开始计时
ET0=1; //开定时器0中断
EA=1; //开总中断
PWM_COUNT =0;
}
void time0() interrupt 1
{
PWM_COUNT++; //计数
HUXI_COUNT++; //占空比更新时间
if(PWM_COUNT == PWM_VLAUE) //判断是否到了点亮LED的时候
LED = 0; //点亮LED
if(PWM_COUNT == 10) //当前周期结束
{
LED =1; //熄灭LED
PWM_COUNT = 0; //重新计时
}
if((HUXI_COUNT == 600) && (direc_flag == 0)) //占空比增加10%
{
HUXI_COUNT = 0;
PWM_VLAUE++;
if(PWM_VLAUE == 9) //占空比更改方向
direc_flag = 1;
}
if((HUXI_COUNT == 600) && (direc_flag == 1)) //占空比减少10%
{ // HUXI_COUNT = 0;
PWM_VLAUE--;
if(PWM_VLAUE == 1) //占空比更改方向
direc_flag = 0;
}
}
void main()
{
HUXI_COUNT = 0;
PWM_COUNT = 0;
PWM_VLAUE = 5;
direc_flag = 0;
LED = 1; //默认LED熄灭
timer0_init(); //定时器0初始化
while(1);
} |
任务实现
- 1. 将无线模块插到节点底板上,注意天线朝左。
- 2. 为节点底板通电
- 3. 使用Keil软件打开随书资源中”源代码\项目三\任4\WZ01_CZ_A_V1.0.uvproj”。
- 4. 在主程序main.c中编辑前面关键代码分析中的源码,完成后保存。
- 5. 依据本教材项目二中任务二的操作,进行编译选项的设置。
- 6. 点击编译按钮,成功编译后,在工程目录下output文件夹中生成了”LED灯亮度控制实验.hex”可执行文件。
- 7. 打开STC-ISP软件,将USB-TTL下载器插上电脑(需要安装驱动),依据本教材项目二中任务三中的操作,选择下载器端口号和刚刚生成的HEX文件。
- 8. 查看运行结果
- 实验板通电后,LED1亮度从亮到暗,亮度变暗后再逐渐变亮,达到最亮时再逐渐变暗,依此循环。
任务小结
本任务主要是利用STC15W4K56S4单片机PWN功能控制节点板上LED灯的明暗状态,主要讲述了PWN的基本知识及其相关寄存器的功能描述,在学习过程中重点掌握PWN寄存器的设置及程序中的书写方式。理解关键代码分析中void timer0_init()定时器初始化及void time0() interrupt 1中断中的代码功能,可以与前面任务中相关寄存器初始化代码对比,加深理解。注意通过设置定时器0的工作方式改变控制LED灯信号的占空比比值及方向,从而实现LED灯的亮灭控制。
唯众物联网工程应用实训装置带你快速掌握物联网关键技术
一、产品名称:物联网工程应用实训装置
二、产品型号和技术规格
1. 产品型号:WZ-IOT-ATP
2. 外型尺寸:
桌面式操作台1个操作台底座1个
3. 电压/功率:220V
4. 配套设备
实训台:
温湿度传感器1个
人体红外监测器1个
高频RFID阅读器1个
光照强度检测器1个
可燃气体监测器1个
RGB三色灯执行器1个
LED显示屏2个
智能语音播放设备1个
继电器1个
物联网教学实训主要用于对物联网核心课程的知识点学习,能够服务于相关课程的实验和实训需求。
核心课程主要针对学科基础技术的培养,掌握物联网概论,传感器和RFID 等感知设备认知和开发,ZigBee/Wi-Fi/蓝牙等无线网络的配置、维护和开发,物联网互联接入及存储,物联网应用层软件开发,物联网产品整合等基本知识。
核心课程采用全模块化的实验箱教学产品进行实验,具备优良的教学实验特性:全模块化的设计、开放式的硬件接口、开源的实验代码、完整的教学资源、贴心的售后服务。
基于ARM Cortex-M4核心的通信网关,支持无线节点模块的双向连接及组网,与配套“可视化编辑器”和“可视化控制器”进行配置和控制。物联网关可以管理不同协议的无线节点模块,并能将多个无线节点模块视作不同设备,将无线节点模块的数据转换为TCP网络通信进行传输,网关同无线节点模块可以互通互联,轻松构建物联网络,共同构成物联应用开发平台。通过本物联网平台,可以迅速降低物联网应用的开发成本和开发时间,开发者即便不会编程,也可以在一两天之内,就迅速使用本平台开发搭建出自己的物联网应用。
通过电脑PC端可直接以“可见即可得”的方式在此工具上生成不同的设备操作界面,支持指示灯、按键、图片集合、变量视窗、图文链接等五种可视化控件。所有控件的动作都可以直接反应到实际的物联设备(即无线节点模块)上。界面生成后,可以直接导入App使用,而不需要重新编译或安装App。
通过物联网关、可视化控制器、可视化界面生成器编辑器、万纳模组、物联网传感器/执行器以及配套物联网连件连接件,师生不仅可以完成出基于物联网、远程访问、设备联动等功能的物联网实训项目,还可以迅速开发物联网商业产品\项目,如空气监测仪、电气设备在线监测器等等,并随时实现不同设备间的联动,而这些开发过程,基于本系统的可视化开发工具,可以做到零编程实现物联网应用系统。
支持家庭常用的各种无线协议(红外、射频),兼容市面绝大多数品牌的空调、电视机、灯光、安防、窗帘等等家电设备,因此可以直接当做一套完备的智能家居系统进行使用,并集成了摄像头功能,可以直接在App中使用摄像头。
平台所有设备采用模块化、集散化、工业化的设计模式,每个模块都为独立工作单元;模块均接近实际应用系统,能够容纳2-3个学生同时实训,可完成工程项目应用开发系统中硬件设备的安装、布线与调试,完成设备间的无线组网,既具有展示型又具有实操性。能够组建具有行业特色的物联网智能家居实训项目,确保学生可利用设备搭建真实工程项目。
上一篇:物联网技术区|| STC15单片机应用开发之用计算机控制LED灯
下一篇:物联网技术区|| STC15单片机应用开发之外部信号采集