




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Zigbee无线传感网技术与应用厨房监控系统0401了解串口通信原理03掌握温湿度传感器数据的获取05掌握单片机输出PWM信号的方法04了解AD采样方法02掌握串口使能方法学习目标Learningobjectives任务三:厨房照明灯调节系统任务要求要求读者编写程序实现实验板获取芯片外部光敏传感器的电压,通过串口发送电压值。实验板安装上光线传感器,光线的强弱转换成电压的高低,经ADC转换以后通过串口将电压值发送给PC,可以通过串口调试软件读取电压值。同时控制Zigbee开发板上的LED根据外界光照强度的不同自动调节LED亮度。任务目标Missionobjectives01模拟信号和数字信号有哪些区别?03CC2530的模数转换精度及如何处理数据?02CC2530的ADC需要设置那些寄存器?如何设置?储备知识信息是指客观事物属性和相互联系特性的表征,它反映了客观事物的存在形式和运动状态。表示信息的形式可以是数值、文字、图形、声音、图像以及动画等。信号是信息的载体,是运载信息的工具,信号可以是光信号、声音信号、电信号。电话网络中的电流就是一种电信号,人们可以将电信号经过发送、接收以及各种变换,传递着双方要表达的信息。数据是把事件的属性规范化以后的表现形式,它能被识别,可以被描述,是各种事物的定量或定性的记录。信号数据可以表示任何信息,如文字、符号、语音、图像、视频等等。从电信号的表现形式上,可以分为模拟信号和数字信号。1.电信号的形式与转换模拟信号是指用连续变化的物理量所表达的信息,如温度、湿度、压力、长度、电流、电压等等,我们通常又把模拟信号称为连续信号,它在一定的时间范围内可以有无限多个不同的取值。模拟信号储备知识1.电信号的形式与转换数字信号数字信号指自变量是离散的、因变量也是离散的信号,这种信号的自变量用整数表示,因变量用有限数字中的一个数字来表示,在计算机中,数字信号的大小常用有限位的二进制数表示。由于数字信号是用两种物理状态来表示0和1的,故其抵抗材料本身干扰和环境干扰的能力都比模拟信号强很多;在现代技术的信号处理中,数字信号发挥的作用越来越大,几乎复杂的信号处理都离不开数字信号,只要能把解决问题的方法用数学公式表示,就能用计算机来处理代表物理量的数字信号。模拟/数字转换通常简写为ADC,是将输入的模拟信号转换为数字信号。各种被测控的物理量(如:速度、压力、温度、光照强度、磁场等)是一些连续变化的物理量,传感器将这些物理量转换成与之相对应的电压和电流就是模拟信号。单片机系统只能接收数字信号,要处理这些信号就必须把他们转换成数字信号。模拟/数字转换是数字测控系统中必须的信号转换。模拟/数字转换储备知识2.CC2530的模数转换(ADC)模块CC2530的ADC模块支持最高14位二进制的模拟数字转换,具有12位的有效数据位。它包括一个模拟多路转换器,具有8个各自可配置的通道;以及一个参考电压发生器。转换结果通过DMA写入存储器,还具有多种运行模式。ADC模块结构如图所示。图:LED与CC2530连接电路图储备知识2.CC2530的模数转换(ADC)模块可选的抽取率,设置分辨率(7到12位)8个独立的输入通道,可接收单端或差分信号参考电压可选为内部单端、外部单端、外部差分或AVDD5转换结束产生中断请求转换结束时可发出DMA触发CC2530的ADC模块有如下主要特征:可以将片内温度传感器作为输入电池电压测量功能储备知识对于CC2530的ADC模块,端口P0引脚可以配置为ADC输入端,依次为AIN0~AIN7。可以把输入配置为单端或差分输入。在选择差分输入的情况下,差分输入包括输入对AIN0-AIN1、AIN2-AIN3、AIN4-AIN5和AIN6-AIN7。除了输入引脚AIN0-AIN7,片上温度传感器的输出也可以选择作为ADC的输入用于温度测量;还可以输入一个对应AVDD5/3的电压作为一个ADC输入,在应用中这个输入可以实现一个电池电压监测器的功能。特别提醒,负电压和大于VDD(未调节电压)的电压都不能用于这些引脚。它们之间的转换结果是在差分模式下每对输入端之间的电压差值。3.使能CC2530模数转换(ADC)ADC模块的输入储备知识8位模拟量输入来自I/O引脚,不必通过编程将这些引脚变为模拟输入,但是,当相应的模拟输入端在APCFG寄存器中被禁用时,此通道将被跳过。当使用差分输入时,相应的两个引脚都必须在APCFG寄存器中设置为模拟输入引脚。APCFG寄存器如表所示。3.使能CC2530模数转换(ADC)位名称复位R/W描述7:0APCFG[7:0]0x00R/W模拟外设I/O配置。APCFG[7:0]选择P0.7~P0.0作为模拟I/O0:模拟I/O禁用1:模拟I/O使用表:APCFG–模拟I/O配置寄存器单端电压输入AIN0到AIN7以通道号码0到7表示。通道号码8到11表示差分输入,它们分别是AIN0–AIN1、AIN2–AIN3、AIN4–AIN5和AIN6–AIN7组成。通道号码12到15分别用于GND(12)、预留通道(13)、温度传感器(14)和AVDD5/3(15)。储备知识CC2530的ADC模块可以按序列进行多通道的ADC转换,并把结果通过DMA传送到存储器,而不需要CPU任何参与。转换序列可以由APCFG寄存器设置,八位模拟输入来自I/O引脚,不必经过编程变为模拟输入。如果一个通道是模拟I/O输入,它就是序列的一个通道,如果相应的模拟输入在APCFG中禁用,那么此I/O通道将被跳过。当使用差分输入,处于差分对的两个引脚都必须在APCFG寄存器中设置为模拟输入引脚。寄存器位ADCCON2.SCH用于定义一个ADC转换序列。如果ADCCON2.SCH设置为一个小于8的值,ADC转换序列包括从0通道开始,直到并包括ADCCON2.SCH所设置的通道号码。当ADCCON2.SCH设置为一个在8和12之间的值,转换序列包括从通道8开始差分输入,到ADCCON2.SCH所设置的通道号码结束。3.使能CC2530模数转换(ADC)序列ADC转换与单通道ADC转换储备知识除可以设置为按序列进行ADC转换之外,CC2530的ADC模块可以编程实现任何单个通道执行一个转换,包括温度传感器(14)和AVDD5/3(15)两个通道。单通道ADC转换通过写ADCCON3寄存器触发,转换立即开始。除非一个转换序列已经正在进行,在这种情况下序列一完成,单个通道的ADC转换就会被执行。3.使能CC2530模数转换(ADC)ADC的相关寄存器IO口的配置,其实仔细用大脑想想不用看数据手册就应该想到,IO口要配置成为输入模式,以下摘自数据手册:当使用ADC时,端口0引脚必须配置为ADC输入。可以使用多达八个ADC输入引脚。要配置一个端口0脚为一个ADC输入,APCFG寄存器中相应的位必须设置为1。这个寄存器的默认值选择端口0引脚为非ADC,即数字输入输出。APCFG寄存器的设置将覆盖P0SEL的设置。储备知识ADC有两个数据寄存器:ADCL(0xBA)–ADC数据低位寄存器、ADCH(0xBB)–ADC数据高位寄存。ADC有三个控制寄存器:ADCCON1、ADCCON2和ADCCON3。这些寄存器用来配置ADC并返回转换结果。关于和ADC有关的几个寄存器,使用ADCL和ADCH,主要放的是ADC转换完毕的值,控制ADC启用转换的是三个控制器,分类是ADCCON1,ADCCON2,ADCCON3。其中ADCCON1,ADCCON2可以启用连续转换,而ADCCON3可以控制某一个通道执行一次转换。以上这些一般人都是可以通过看手册配置的,但是配置不是什么大问题,但是从ADCL和ADCH取值有疑问的。3.使能CC2530模数转换(ADC)ADC的配置和应用ADC有三种控制寄存器:ADCCON1,ADCCON2和ADCCON3。这些寄存器用于配置ADC,以及读取ADC转换的状态。储备知识ADCCON1.EOC位是一个状态位,当一个转换结束时,设置为高电平;当读取ADCH时,它就被清除。ADCCON1.ST用于启动一个转换序列。当没有转换正在运行时这个位设置为高电平,ADCCON1.STSEL是11,就启动一个序列。当这个序列转换完成,ADCCON1.ST就被自动清0。ADCCON1.STSEL位选择哪个事件将启动一个新的转换序列。该选项可以选择为外部引脚P2.0上升沿或外部引脚事件,之前序列的结束事件,定时器1的通道0比较事件或ADCCON1.ST是1。ADCCON2寄存器设置转换序列的执行方式。ADCCON2.SREF用于选择参考电压。ADCCON2.SDIV位用来选择抽取率,抽取率的设置决定分辨率和完成一个转换所需的时间。ADCCON2.SCH设置转换序列的最后一个通道数。ADCCON3寄存器控制单个转换的通道号码、参考电压和抽取率。该寄存器位的设置选项和ADCCON2是完全一样的。单通道转换在寄存器ADCCON3写入后将立即发生,如果一个转换序列正在进行,该序列结束之后立即启动ADC转换。3.使能CC2530模数转换(ADC)储备知识3.使能CC2530模数转换(ADC)ADC转换使能流程图观看流程图,方便读者理解并记忆各个寄存器功能。储备知识4.光照模块电路图:光照模块电路图5.获取数字量光照值本任务所需软件已安装至电脑可直接使用。本任务所需硬件:下载器、Zigbee开发板、5V电源适配器、USB下载线、光照传感器。环境准备任务实施任务实施
获取厨房光照强度;
发送数据至PC的串口。任务要求模块连接将光照传感器模块连接至zigbee模块,连接串口线至电脑,如右图所示。5.获取数字量光照值任务实施编写代码步骤1:新建工程->工程名称为“厨房光照系统”->保存->新建源程序.c文件名称为“main.c”->设置Opion->编写最简单的代码,代码如下所示。(新建工程具体步骤,不再重复介绍)#include"iocc2530.h"voidmain(){
while(1){
}}5.获取数字量光照值任务实施步骤2:初始化P0_0I/O状态,设置外设、设置I/O为ADC使用,代码如下所示:5.获取数字量光照值#include"iocc2530.h"voidmain(){
APCFG|=0x01;//设置P0_0为ADC使用P0SEL|=0x01;//设置P0_0为外设口
while(1){
}}任务实施步骤3:编写启动转换代码包含设置参考电压为引脚AVDD5输入、10位ADC、P0_0通道,代码如下所示。5.获取数字量光照值#include"iocc2530.h"voidmain(){
APCFG|=0x01;//设置P0_0为ADC使用
P0SEL|=0x01;//设置P0_0为外设口
//参考电压AVDD5引脚、12位精度ADC、P0_0通道
//启动转换
ADCCON3=(0x80|0x30|0x00);
while(1){
}}任务实施步骤4:编写清除标志,等待转换成功代码,代码如下所示。5.获取数字量光照值#include"iocc2530.h"voidmain(){
APCFG|=0x01;//设置P0_0为ADC使用
P0SEL|=0x01;//设置P0_0为外设口
//参考电压AVDD5引脚、10位精度ADC、P0_0通道
//启动转换
ADCCON3=(0x80|0x30|0x00);
ADCIF=0;//清除标志
while(!ADCIF);//等待完成
while(1){
}}任务实施步骤5:在转换成功后,声明一个全局变量无符号整型变量data,提取高8位与低8位数据,同时转换成int类型数据,代码如下所示。5.获取数字量光照值#include"iocc2530.h"
unsigned
intdata=0;
voidmain(){
APCFG|=0x01;//设置P0_0为ADC使用
P0SEL|=0x01;//设置P0_0为外设口
//参考电压AVDD5引脚、12位精度ADC、P0_0通道
//启动转换
ADCCON3=(0x80|0x30|0x00);ADCIF=0;//清除标志
while(!ADCIF);//等待完成
data=ADCL;//提取低位
data|=(unsignedint)(ADCH<<8);//提取高位
data=data>>3;//转换为12位
while(1){
}}任务实施步骤6:在转换成功代码处data=data>>3,设置断点查看数据情况。5.获取数字量光照值图:转换结果任务实施步骤7:用手遮住光照传感器查看数据是否发送变化,如数值变小则表示转换成功。5.获取数字量光照值图:转换结果2任务实施步骤8:封装对应代码,方便后续调用,封装后的代码如下所示。5.获取数字量光照值#include"iocc2530.h"voidAdcInit(){APCFG|=0x01;//设置P0_0为ADC使用P0SEL|=0x01;//设置P0_0为外设口}unsigned
intAdcGet(){
unsigned
inttmp=0;
//参考电压AVDD5引脚、12位精度ADC、P0_0通道
//启动转换ADCCON3=(0x80|0x30|0x00);ADCIF=0;//清除标志
while(!ADCIF);//等待完成
tmp=ADCL;//提取低位tmp|=(unsigned
int)(ADCH<<8);//提取高位tmp=tmp>>3;//转换为12位
returntmp;}unsigned
intdata=0;voidmain(){AdcInit();data=AdcGet();
while(1){
}}任务实施步骤9:使用任务一编写的串口发送代码,将数据结果发送至电脑,关键代码如下所示。5.获取数字量光照值voidmain(){
unsigned
chardisp[4];AdcInit();UartInit();
while(1)
{
data=AdcGet();disp[0]=data/1000+'0';//提取千位disp[1]=data/100%10+'0';//提取百位disp[2]=data/10%10+'0';//提取十位
disp[3]=data%10+'0';//提取个位
sendstr("光照值:",8);//发送中文sendstr(disp,4);//发送数据send('\n');//发送换行符
delay_ms(2000);
//延迟一段时间发送}}任务实施步骤10:全速执行代码,过程中可用手去遮住光照传感器查看数值的变化,打开串口调试助手,查看效果。5.获取数字量光照值图:获取光照值任务实施一、如使用10位ADC精度进行转换数据,代码将如何更改。5.获取数字量光照值技能拓展储备知识PWM是PulseWidthModulation的英文单词缩写,中文意思就是脉冲宽度调制,简称脉宽调制。PWM是利用微处理器输出数字信号来对模拟电路进行控制的一种非常有效的技术方法,广泛应用于测量、通信、功率控制与变换等众多领域。6.什么是PWM储备知识占空比是指脉冲信号的通电时间与通电周期之比。在一串理想的脉冲周期序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。例如:脉冲宽度2μs,信号周期4μs的脉冲序列占空比为0.5。7.什么是占空比图:占空比储备知识PWM是一种对模拟信号电平进行数字编码的方法,也可以理解为在一定的时间内用高低电平所占的比例不同来控制一个对象。通过改变方波信号的占空比改变加到控制设备的平均电压,从而达到改变流过设备的平均电流、功率的目的。例如在1ms周期内,高电平占0.3ms,低电平占0.7ms。如果用高电平去控制一个开关闭合,此开关再去控制一个LED灯,低电平时这个开关断开,那么在1ms内,这个灯就只能通电0.3ms,而0.7ms内是不通电的。这个灯的通电时间只有30%。如果把高电平的时间延长到0.7ms,而低电平就只有0.3ms了,此时灯的通电时间就变成70%了,灯获得的能量变大,亮度自然就提高了。8.PWM调光原理储备知识CC2530定时器1是一个独立的16位定时器,支持典型的定时/计数功能,例如:输入捕获,输出比较和PWM功能。定时器1有五个独立的捕获/比较通道。每个通道使用一个I/0引脚。CC2530的每个输出通道都有相关的寄存器控制,通道捕获/比较控制寄存器用于设置输出PWM信号的波形,通道捕获/比较值寄存器和T1CC0用于设置PWM信号的周期和占空比。定时器1的功能如下:9.CC2530定时器的PWM功能五个捕获/比较通道可选择上升沿、下降沿或任何边沿进行输入捕获设置、清除或切换输出比较自由运行、模或正计数/倒计数操作在每个捕获/比较和最终计数上生成中断请求DMA触发功能储备知识可以通过两个8位的SFR读取16位的计数器值:T1CNTH和T1CNTL,分别包含高位和低位字节。当读取T1CNTL时,计数器的高位字节在那时被缓冲到T1CNTH,以便高位字节可以从T1CNTH中读出。因此T1CNTL必须总是在读取T1CNTH之前首先读取。对T1CNTL寄存器的所有写入访问将复位16位计数器。当达到最终计数值(溢出)时,计数器产生一个中断请求。可以通过设置T1CTL来控制定时器开始或挂起。如果是非00值写入T1CTL.MODE时,计数器开始运行;如果是00写入T1CTL.MODE,计数器停止在它现在的值上。9.CC2530定时器的PWM功能储备知识与定时器1相关的寄存器有:9.CC2530定时器的PWM功能T1CNTH、T1CNTL:定时器1计数器高低字节T1CTL:定时器1控制器T1STAT:定时器1状态标志位T1CCTLn:定时器1捕获/比较控制T1CCnH、T1CCnL:定时器1捕获寄存器高低字节TIMIF:定时器1/3/4中断屏蔽/标志储备知识如下表所述,PWM使能需要占用一个定时器,把定时器工作在对应的模式下,建议直接使用定时器->1分频、自由运行模式即可。使用定时器1、1分频工作在自由运行模式下,代码如下所示。10.使能PWM功能定时器工作模式–TxCTLT1CTL|=0x01;//1分频,自由口运行模式表:定时器1--T1CTL寄存器位名称复位功能介绍7:4--0000保留3:2DIV[1:0]001时钟分频设置00:1分频01:8分频10:32分频11:128分频1:0MODE[1:0]00定时器1工作模式设置00:暂停运行01:自由运行模式,0x0000到0xffff反复计数11:正计数/倒计数模式储备知识10.使能PWM功能表:定时器3--T3CTL寄存器名称复位功能介绍7:5DIV[1:0]000定时器3时钟分频设置000:1分频100:16分频001:2分频101:32分频010:4分频110:64分频011:8分频111:128分频1:0MODE[1:0]0定时器3工作模式设置00:暂停运行01:自由运行模式,0x0000到0xffff反复计数11:正计数/倒计数模式储备知识10.使能PWM功能表:定时器4--T4CTL位名称复位功能介绍7:5DIV[2:0]000定时器4时钟分频设置000:1分频100:16分频001:2分频101:32分频010:4分频110:64分频011:8分频111:128分频1:0MODE[1:0]0定时器4工作模式设置00:暂停运行01:自由运行模式,0x0000到0xffff反复计数11:正计数/倒计数模式储备知识10.使能PWM功能一、请在下方编写代码,使定时器2工作在自由运行模式,编写对应代码。二、请在下方编写代码,使定时器3工作在正计数/倒计数模式,编写对应代码。思考练习:定时器对应通道设置–PERCFG如上表所述对应教材开发板LED灯,如需设置P1_0、P1_1、P1_3、P1_4所在通道与定时器为“定时器1备用位置2通道2、通道1”、“定时器3备用位置1通道0、通道1”,代码为:PERFCG|=0x40(01000000)。储备知识10.使能PWM功能表:PERCFG寄存器名称复位功能介绍6T1CFG0定时器10:备用位置1
1:备用位置253FG0定时器30:备用位置1
1:备用位置24T4FG0定时器40:备用位置1
1:备用位置2储备知识10.使能PWM功能表:通道对应I/O位置定时器备用位置1与通道备用位置2与通道定时器1P0.2->通道0P0.3->通道1P0.4->通道2P0.5->通道3P0.6->通道4P1.0->通道2P1.1->通道1P1.2->通道0定时器3P1.3->通道0P1.4->通道1P1.6->通道0P1.7->通道1定时器4P1.0->通道0P1.1->通道1P2.0->通道0P2.3->通道1储备知识10.使能PWM功能一、请在下方编写代码,选择P0.2、P1.0作为PWM输出,编写对应PERFCG代码,并说明用到的定时器。二、请在下方编写代码,选择P2.0、P1.6作为PWM输出,编写对应PERFCG代码,并说明用到的定时器。思考练习:设置对应通道PWM模式–TxCCTLx如上表所述TxCCTLx,Tx的x表示定时器1、2、4其中的一个,Lx的x表示通道,任务工作模式主要工作在“比较模式”,向下比较低电平模式。故如需控制开启P1.0PWM则需要根据下表,代码为:T1CCTL|=0x24(00100100)。储备知识10.使能PWM功能表:TxCCTLx寄存器位名称复位功能介绍5:3CMP[2:0]000通道比较模式选择000:比较设置输出001:比较清楚输出010:比较切换输出011:向上比较高电平,在定时器值为0时低电平。100:向下比较低电平,在定时器值为0时高电平。2MODE0模式:选择定时器x通道x模式0:捕获模式1:比较模式储备知识10.使能PWM功能一、请在下方编写代码,选择P0.2、P1.0作为PWM输出,编写对应TxCCTLx代码。二、请在下方编写代码,选择P2.0、P1.6作为PWM输出,编写对应TxCCTLx代码。思考练习:设置比较值–TxCCx如上表所述TxCCxH,Tx的x表示定时器1、2、4其中的一个,CCx表示通道,该寄存器控制着PWM周期时间。以教材开发板LED为例对应“定时器1->备用位置2->通道2、通道1->P1.0、P1.1->D3、D4”寄存器为T1CC2、T1CC1,设置比较值一般情况下只需让TxCCxH作出改变占空比将根据其数值大小作出对应的变化,如定时器工作在自由运行模式,其最大值为255,设置成最大值则表示占空比为99%接近100%(工作在向下比较低电平模式即高电平占100%)。TxCCxL则需要一直保持在0xff数值下。储备知识10.使能PWM功能如使P1.0控制其占空比为50%代码如下所示:T1CC2L=0xff;//默认保持0xffT1CC2H=255;//一半占空比即除上2表:TxCCxH寄存器位名称复位功能介绍7:0TxCCxH0x00定时器x通道x捕获比较值,高字节表:TxCCxL寄存器位名称复位功能介绍7:0TxCCxL0x00定时器x通道x捕获比较值,低字节储备知识10.使能PWM功能一、请在下方编写代码,选择P0.2、P1.0作为PWM输出占空比为30%,编写对应TxCCxL、TxCCxH代码。二、请在下方编写代码,选择P2.0、P1.6作为PWM输出占空比为20%,编写对应TxCCxL、TxCCxH代码。思考练习:储备知识10.使能PWM功能PWM使能流程图观看流程图,重新整理记忆使能PWM输出流程,PWM流程图如右图所示。11.照明灯调节系统本任务所需软件已安装至电脑可直接使用。本任务所需硬件:下载器、ZigBee开发板、光照传感器模块、5V电源适配器、USB下载线。环境准备任务实施任务实施在上一个任务中根据获取到的光照强度数值,来控制LED的亮度。当光照数值越低,LED亮度越低。利用定时器控制输出信号的高电平时间和低电平时间,调整占空比来控制LED灯的亮度。任务要求编写代码步骤1:新建工程->工程名称为“照明灯调节系统”->保存->新建源程序.c文件名称为“main.c”->设置Opion->编写最简单的代码,代码如右所示。(新建工程具体步骤,不再重复介绍)11.照明灯调节系统任务实施步骤2:编写设置I/OP1.0、P1.1为外设使用,设置I/O为输出,代码如下所示。11.照明灯调节系统#include"iocc2530.h"voidmain(){P1SEL|=0x03;//设置P1.0、P1.1为外设使用P1DIR|=0x03;//设置P1.0、P1.1为输出P1=0x00;//设置LED全灭
while(1){
}}任务实施步骤3:编写定时器1模式,分频1、自由运行模式,代码如下所示。11.照明灯调节系统#include"iocc2530.h"
voidmain(){P1SEL|=0x03;//设置P1.0、P1.1为外设使用P1DIR|=0x1b;//设置P1.0、P1.1为输出P1=0;//设置LED全灭
T1CTL|=0x01;//分频1、自由运行模式
while(1){
}}任务实施步骤4:设置定时器1使用通道2,代码如下所示。11.照明灯调节系统#include"iocc2530.h"
voidmain(){P1SEL|=0x03;//设置P1.0、P1.1为外设使用P1DIR|=0x1b;//设置P1.0、P1.1为输出P1=0;//设置LED全灭
T1CTL|=0x01;//分频1、自由运行模式
PERCFG|=0x40;//使用通道2
while(1){
}}任务实施步骤5:编写设置定时器1通道代码,设置通道输出模式为,代码如下所示。11.照明灯调节系统#include"iocc2530.h"voidmain(){P1SEL|=0x03;//设置P1.0、P1.1为外设使用P1DIR|=0x1b;//设置P1.0、P1.1为输出P1=0;//设置LED全灭T1CTL|=0x01;//分频1、自由运行模式PERCFG|=0x40;//使用通道2
//设置通道1(P1.0)为PWM模式为向下比较低电平模式
T1CCTL1|=0x24;
//设置通道2(P1.1)为PWM模式为向下比较低电平模式
T1CCTL2|=0x24;
while(1){}}任务实施步骤6:编写设置比较值,分别将P1.0、P1.1比较值设置为50%,20%,代码如下所示。11.照明灯调节系统#include"iocc2530.h"voidmain(){P1SEL|=0x03;//设置P1.0、P1.1为外设使用P1DIR|=0x1b;//设置P1.0、P1.1为输出P1=0;//设置LED全灭
T1CTL|=0x01;//分频1、自由运行模式
PERCFG|=0x40;//使用通道2
T1CCTL2|=0x24;
T1CCTL1|=0x24;
T1CC2H=127;//50%占空比
T1CC2L=0xff;//固定输入
T1CC1H=51;//20%占空比
T1CC1L=0xff;//固定输入
while(1){
}}任务实施步骤7:编写一段按钮代码,按键按下后使LED占空比打开100%,代码如右所示。11.照明灯调节系统#include"iocc2530.h"voidmain(){P1SEL|=0x03;//设置P1.0、P1.1为外设使用P1DIR|=0x1b;//设置P1.0、P1.1为输出P1=0;//设置LED全灭
T1CTL|=0x01;//分频1、自由运行模式
PERCFG|=0x40;//使用通道2
T1CCTL2|=0x24;
T1CCTL1|=0x24;
T1CC2H=127;//50%占空比
T1CC2L=0xff;//固定输入
T1CC1H=51;//20%占空比
T1CC1L=0xff;//固定输入
while(1){if(P1_2==0)//如果按钮被按下{
T1CC2H=255;//100%占空比
T1CC2L=0xff;//固定输入
T1CC1H=255;//100%占空比
T1CC1L=0xff;//固定输入}}}任务实施步骤8:全速执行,按下按钮查看LED亮度效果。11.照明灯调节系统图:灯亮度变化对比图任务实施步骤9:在确保代码没有问题的情况下,将代码封装成函数方便后续调用,将I/O初始化单独分装一个函数,PWM初始化单独封装一个函数,具体代码如下所示。11.照明灯调节系统#include"iocc2530.h"voidIOinit(){P1SEL|=0x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年常州信息职业技术学院高职单招语文2019-2024历年真题考点试卷含答案解析
- 2025年宿迁泽达职业技术学院高职单招(数学)历年真题考点含答案解析
- 2025年安徽扬子职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 简约职场自我介绍
- 企业概述与发展战略
- 人教版数学小学六年级下册《第四课圆锥的认识》习题
- 三门峡社会管理职业学院《普通物理实验》2023-2024学年第二学期期末试卷
- 广西物流职业技术学院《人体解剖生理学实验》2023-2024学年第一学期期末试卷
- 莘县2025年数学四下期末达标测试试题含解析
- 石家庄铁道大学《钢琴与即兴伴奏一》2023-2024学年第一学期期末试卷
- 强化学习 课件 第1章 强化学习概述
- 零部件试装报告
- 2024年宁波职业技术学院单招职业技能测试题库及答案解析
- 房建工程监理大纲范本(内容全面)
- (完整文本版)新概念英语第一册单词表默写版1-144
- 《气胸护理查房》课件
- 肝脓肿的pbl查房
- 筼筜湖生态环境整治提升一期项目环境影响报告
- 建设用地报批服务投标方案(技术方案)
- 护理身份识别制度课件
- 志愿者申请登记表
评论
0/150
提交评论