辜渝傧

13037102709

027-87870986

新闻动态

您当前的位置:首页 > 新闻动态 > 行业动态 >

物联网技术区||STC15单片机应用开发之LED灯闪烁效果实现

发布者:    布时间:2020-09-16 16:06:29    点击量:

       在STC15W4K56S4单片机GPIO口配置的基础上学会单片机的可编程定时/计数器的使用,实现LED灯的闪烁控制,LED灯闪烁间隔为0.2秒。
       知识引入
       1.单片机定时方法
     (1)软件定时
       让CPU循环执行一段程序,通过选择指令和安排循环次数以实现软件定时。软件定时完全占用CPU,增加了CPU开销,降低了CPU工作效率,因此软件的定时时间不宜过长。仅适用于CPU较空闲的程序中使用。
      (2)硬件定时
       硬件定时的特点是定时功能全部由硬件电路(例如,采用555时基电路)完成,不占用CPU时间,但需要改变电路的参数调节定时时间,在使用上不够方便,同时会增加硬件成本。
      (3)可编程定时器定时
       可编程定时器的定时值及定时范围很容易通过软件来确定和修改。下文任务实现中所应用到的STC15W4k56S4单片机内部有5个16位的定时/计数器(T0、T1、T2、T3、T4),通过对系统时钟或外部输入信号进行计数控制,可以方便地用于定时控制,或用于分频器和用于事件记录。
      2.相关寄存器设置
       对定时器/计时器T0和T1,用他们在特殊功能寄存器TMOD中对应的控制位 C/T(——) 来选择T0或者T1为定时器还是计数器,对于定时器/计时器T2,用特殊功能寄存器AUXR中的控制位T2_C/T(——)来选择T2为定时器还是计数器,对于定时器/计时器T3,用特殊功能寄存器T4T3M中控制位T3_C/T(——)来选择T3为定时器还是计数器,对于定时器/计时器T4,用特殊功能寄存器T4T3M中控制位T4_C/T(——)来选择T3为定时器还是计数器。
定时器/计数器的核心部件是一个加法计数器,其本质是对脉冲进行计数,只是计数脉冲来源不同。如果计数脉冲来自系统时钟,则为定时方式,此时定时器/计数器每12个时钟或者每1个时钟得到一个计数脉冲,计数值加1定时器/计数器的核心部件是一个加法计数器,其本质是对脉冲进行计数。只是计数脉冲来源不同:如果计数脉冲来自系统时钟,则为定时方式,此时定时器/计数器每12个时钟或者每1个时钟得到一个计数脉冲,计数值加1;如果计数脉冲来自单片机外部引脚(T0为P3.4,T1为P3.5,T2为P3.1,T3为P0.7,T4为P0.5),则为计数方式,每来一个脉冲加1。

表3-3 定时器/计数器相关寄存器
符号 描述 地址 位地址及其符号
MSB                                   LSB
复位值
TCON 定时器控制寄存器 88H EA | ELVD | EADC | ES | ET1 | EX1 | ET0 | EX0 0000 0000B
TMOD 工作方式寄存器 89H GATE | C/T(——)| M1 | M0 | GATE | C/T(——) | M1 | M0 0000 0000B
TL0 定时器0低位 8AH   0000 0000B
TL1 定时器1低位 8BH   0000 0000B
TH0 定时器0高位 8CH   0000 0000B
TH1 定时器1高位 8DH   0000 0000B
IE 中断允许控制 A8H EA | ELVD | EADC | ES | ET1 | EX1 | ET0 | EX0 0000 0000B
IP 中断优先级控制 B8H PPCA | PLVD | PADC | PS | PT1 | PX1 | PT0 | PX0 0000 0000B
T2H 定时器2高8位寄存器 D6H   0000 0000B
T2L 定时器2低8位寄存器 D7H   0000 0000B
AUXR 辅助寄存器 8EH T0x12|T1x12|UART_M0x6|T2R|T2_C/T(——)|T2x12
|EXTRAM|S1ST2
0000 0001B
INT_CLKO
AUXR2
外部中断允许和时钟输出寄存器 8FH -|EX4|EX3|EX2|MCKO_S2|T2CLKO|T1CLKO|T0CLKO x000 0000B
T4T3M T3和T4的控制寄存器 D1H T4R|T4_C/T(___)|T4x12|T4CKLO|T3R|T3_C/T(___)|T3x12|T3CLKO 0000 0000B
T4H 定时器4高8位寄存器 D2H   0000 0000B
T4L 定时器4低8位寄存器 D3H   0000 0000B
T3H 定时器3高8位寄存器 D4H   0000 0000B
T3L 定时器3低8位寄存器 D5H   0000 0000B
IE2 中断只能寄存器 AFH - | ET4 | ET3 | ES4 | ES3 | ET2 | ESPI | ES2 x000 0000B
 
       本任务采用定时器T0实现LED灯的控制,T0的工作方式和控制由TMOD、TCON和AUXR三个特殊功能寄存器进行管理,寄存器的定义如表3-4所示。
表3-4 定时器T0寄存器的配置
符号 描述 地址 位地址及其符号
MSB                                   LSB
复位值
TMOD 工作方式寄存器 89H GATE | C/T(——)| M1 | M0 | GATE | C/T(——) | M1 | M0 0000 0000B
TCON 定时器控制寄存器 88H EA | ELVD | EADC | ES | ET1 | EX1 | ET0 | EX0 0000 0000B
AUXR 辅助寄存器 8EH T0x12|T1x12|UART_M0x6|T2R|T2_C/T(——)|T2x12
|EXTRAM|S1ST2
0000 0001B
 
     TMOD寄存器中低4位为T0的方式字段,高4位为T1的方式字段,含义完全相同,M1和M0为T0、T1工作方式选择位,C/T(——)为定时/计数的功能选择位,一般情况下GATE为0,这样定时/计数器0运行控制仅由TR0状态确定。M1和M0选择定义为表3-5所示。
表3-5 定时器T0和T1工作方式
M1  M0 工作方式 功能说明
0  0 方式0 自动重装初始值的16位定时器/计数器(推荐)
0  1 方式1 16位定时器/计数器
1  0 方式2 自动重装初始值的8位定时/计数器
1  1 方式3 定时器0:分成两个8位定时器/计数器;定时器1:停止计数
 
    TCON寄存器中TR0为定时/计数器0运行控制位,置1时启动定时/计数器0,TF0为定时/计数器0溢出标志位,在中断允许时,向CPU发出中断请求,中断响应后,由硬件自动清除清楚TF0标志,也可通过查询TF0标志,来判断溢出时刻,查询结束后,软件清除TF0的标志。
AUXR寄存器中T0x12用于设置定时/计数器0定时计数脉冲的分频系数,当T0x12为0时,与传统8051单片机计数脉冲一样,计数脉冲为系统时钟周期的12倍,即12分频,T0x12为1时,计数脉冲等于时钟周期,即无分频。
本任务中定时/计数器0工作于工作方式0,即自动重装初始值的16位定时器/计数器。定时/计数器0有两个隐含的寄存器RL_TH0、RL_TL0,用于保存16位定时/计数的重装初始值,当TH0和TL0构成的16位计数器溢出时,RL_TH0、RL_TL0的值自动装入TH0、TL0中,RL_TH0和TH0公用同一个地址,RL_TL0和TL0公用同一个地址。
当定时/计数器T0工作于定时方式0时,定时时间的计算公式如下
定时时间=(216-T0定时器的初值)*系统的时钟周期*12(1-T0x12)
  1. 关键代码分析
//功能:实现LED灯时间间隔0.2秒闪烁,每1ms进一次中断
#include  
#include
#define uchar unsigned char
#define uint  unsigned int
 
#define FOSC  11059200            //时钟11.0592MHz
#define T1MS  (65536-FOSC/12/1000)  //12T模式,1ms进一次中断
//进一次中断的初值
sbit  LED= P2^2;                     //定义LED的引脚位置
uint count=0;                   //定义全局变量,不用赋值,默认为0
 
void Delay500ms()       //晶振11.0592MHz  延迟0.5S
{
    unsigned char i, j, k;
 
    _nop_();
    _nop_();
    i = 22;
    j = 3;
    k = 227;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}
 
void init()
{
    AUXR &= 0x7F;       //定时器时钟12T模式
    TMOD &= 0xF0;       //设置定时器模式
    TL0 = T1MS;         //设置定时初值
    TH0 = T1MS>>8;      //设置定时初值
    TF0 = 0;                //清除TF0标志
    TR0 = 1;                //使定时器0工作
    ET0 = 1;                //开启定时器0中断开关
    EA = 1;             //开启中断总开关
 
}
void main ()
{  
    init();
    P2M1 &= ~(3<<2);
    P2M0 |= (3<<2);
    while (1);
}
Void LED0( ) interrupt 1            //定时器0中断服务程序
{
   count++;
    if(count==200) 
    {
    LED=!LED;              //每进入一次中断程序,count加1
    count=0;
    }
 
}
 
任务实现
  1. 将无线模块插到节点底板上,注意天线朝左。
  2. 为节点底板通电
  3. 使用Keil软件打开随书资源中”源代码\项目三\任务2\WZ01_CZ_A_V1.0.uvproj”,工程目录如图所示。
  4. 在主程序main.c中编辑前面关键代码分析中的源码,完成后保存。
  5. 根据项目二任务二中的操作,进行编译选项的设置。
  6. 点击编译按钮,成功编译后,在工程目录下output文件夹中生成了”LED灯闪烁效果.hex”可执行文件。
  7. 打开STC-ISP软件,将USB-TTL下载器插上电脑(需要安装驱动),依据本教材项目二中任务三中的操作,选择下载器端口号和刚刚生成的HEX文件。
  8. 查看运行结果
程序下载完毕时,无线模块上的LED灯交替闪烁,闪烁周期为0.2秒。

注意主要是利用可编程定时器来控制节点板上LED灯的闪烁,主要讲述了单片机定时器的基本知识及其相关寄存器的功能描述,在学习过程中重点掌握定时器寄存器的设置及程序中的书写方式,理解关键代码分析中void init()中断初始化中的代码功能。注意程序示例代码中的晶振频率要根据产品说明参数来设置,本任务中采用的是11.0592MHz。

唯众物联网工程应用实训装置带你快速掌握物联网关键技术

唯众物联网实训室工程应用装置
一、产品名称:物联网工程应用实训装置
二、产品型号和技术规格
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单片机应用开发之用计算机控制LED灯