版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目11STC高性能51单片机的应用设计
了解STC高性能51单片机的分类。了解行业标准中电子元器件的规范。掌握STC15F2K60S2系列单片机的特性和工作原理。能应用STC15F2K60S2系列单片机设计各种控制电路。掌握单片机作为主控电路系统的硬件电路和软件程序的设计方法。能独立分析和解决硬件设计和软件设计中的问题。掌握完成工作项目的完整步骤和具体实施方法。能利用团队的力量完成任务,培养团队合作精神。学习目标
叙述STC15F2K60S2系列单片机的分类。叙述STC15F2K60S2系列单片机的特性和工作原理。设计用STC15F2K60S2单片机控制流水灯的硬件电路和软件程序。设计用STC15F2K60S2单片机的定时/计数器模拟PWM的硬件电路和软件程序。设计用STC15F2K60S2单片机的A/D转换器测量MCU工作电源电压的硬件电路和软件程序。工作任务任务11.1STC15F2K60S2系列单片机控制流水灯的设计任务11.2用STC15F2K60S2系列单片机的定时/计数器模拟PWM的设计任务11.3单片机的电源电压测量系统的设计
项目小结项目11STC高性能51单片机的应用设计任务11.1STC15F2K60S2系列单片机控制流水灯的设计STC51单片机系列:STC89XX系列、STC12XX系列、STC15XX系列等。11.1.1STC系列51单片机的分类
1.STC89XX系列单片机(1)显著性能特点:工作频率为0~40MHz(普通8051单片机的工作频率为0~80MHz),Flash程序存储空间为4KB~64KB,RAM数据存储空间为512B~1280B,内部集成了EEPROM(2KB~16KB)及WDT和专用复位电路。(2)STC89XX系列单片机的命名规则:2.STC12XX系列单片机(1)显著性能特点:单时钟/机器周期,超小封装,有2~4路PWM,可进行8~10位高速A/D转换,Flash程序储存空间为512B~60KB,RAM数据储存空间为256B~1280B,内部集成了EEPROM及WDT,功耗低,有ISP和IAP功能及强抗干扰和降低EMI性能。(2)STC12XX系列单片机的命名规则:3.STC15XX系列单片机(1)显著性能特点:工作频率范围为5MHz~35MHz,相当于普通8051单片机的60MHz~420MHz,片上集成了2048B的SRAM,大容量片内EEPROM可擦写10万次以上,有8通道10位高速A/D转换功能和3路PWM或D/A转换功能,支持ISP在线下载。(2)STC15XX系列单片机的命名规则:分类包含的型号STC15F1K60S2系列STC15F1K24S2、STC15F1K32S2、STC15F1K48S2、STC15L1K24S2、STC15L1K32S2、STC15L1K48S2、STC15F1K24AS、STC15F1K32AS、STC15F1K48AS、STC15L1K24AS、STC15L1K32AS、STC15L1K48ASSTC15F2K60S2系列STC15F2K08S2、STC15F2K16S2、STC15F2K24S2、STC15F2K32S2、STC15F2K40S2、STC15F2K48S2、STC15F2K56S2、STC15F2K60S2、IAP15F2K61S2、IRC15F2K63S2、STC15L2K08S2、STC15L2K16S2、STC15L2K24S2、STC15L2K32S2、STC15L2K40S2、STC15L2K48S2、STC15L2K56S2、STC15L2K60S2、IAP15F2K61S2、IRC15L2K63S2、STC15F2K24AS、STC15F2K32AS、STC15F2K48AS、STC15L2K24AS、STC15L2K32AS、STC15L2K48AS、STC15F2K32S、STC15F2K60S、IAP15F2K61S、STC15L2K32S、STC15L2K60S、IAP15L2K61S
STC15XX系列单片机常用型号列表1.STC15F2K60S2系列单片机的特性(1)采用增强型8051CPU,单时钟/机器周期(1T),指令代码完全兼容传统8051单片机。(2)STC15F2K6S2系列单片机的工作电压范围为4.2~5.5V(5V单片机);STC15L2K6S2系列单片机的工作电压范围为2.4~3.6V(3V单片机)。(3)内部高可靠复位,8级可选复位门槛电压,彻底省掉外部复位电路。(4)内部集成高精度R/C时钟,±1%温飘(-40℃~+85℃),常温下温飘为5‰,内部时钟为5MHz~35MHz可选(5.5296MHz/11.0592MHz/22.1184MHz/33.1776MHz),可彻底省掉昂贵的外部晶振。(5)工作频率范围为5MHz~35MHz,相当于普通8051单片机的60MHz~420MHz。(6)低功耗设计,具有低速模式、空闲模式、掉电/停机模式。11.1.2STC15F2K60S2系列单片机的基本知识(7)可将掉电/停机模式唤醒的资源:/P3.2,/P3.3(/上升沿、下降沿中断均可),/P3.6,/P3.7,/P3.0(//仅可下降沿中断),CCP0/CCP1/CCP2,RxD/RxD2,内部低功耗掉电唤醒专用定时器。(8)增加了内部低功耗掉电唤醒专用定时器,其也可将MCU从掉电/停机模式唤醒。(9)用户应用程序空间:8KB/16KB/20KB/32KB/40KB/48KB/52KB/56KB/60KB/61KB/63.5KB。(10)片上集成了2048B的SRAM。(11)大容量片内EEPROM,可擦写10万次以上。(12)有8通道10位高速A/D转换器,转换速度可达30万次/s,3路定时器还可当3路PWM或D/A转换器使用。(13)有ISP、IAP(在应用可编程)功能,无需专用编程器,无需专用仿真器,可通过串行口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成下载。(14)有3通道捕获/比较单元(CCP/PWM/PCA),可用来再实现3个定时器或3个外部中断(支持上升沿/下降沿中断)。(15)有6个定时器:2个16位可重装计数初值定时器兼容普通8051单片机的定时器T0/T1,并可实现时钟输出;3路CCP还可实现3个定时器;定时器T2既可实现1个16位重装计数初值定时器,也可产生时钟输出T2CLKO。(16)可编程时钟输出功能:T0在P3.5口输出时钟,T1在P3.4口输出时钟(可1~65536级分频输出),在P5.4口输内部高精度R/C时钟IRC_CLKO(可分频IRC_CLK/1,IRC_CLK/2,IRC_CLK/4),T2在P3.0口输出时钟。(17)内置WDT。(18)有高速SPI串行口,如果I/O口不够用,可外接74HC595来扩展I/O口。(19)有两个完全独立的串行口/双串行口,分时切换可当4个串行口使用:串行口1(RxD/P3.0,TxD/P3.1)可以切换到(RxD_2/P1.6,TxD_2/P1.7),还可以切换到(RxD_3/P3.6,TxD_3/P3.7);串行口2(RxD2/P1.0,TxD2/P1.1)可以切换到(RxD2_2/P4.6,TxD2_2/P4.7)。(20)先进的指令集结构,兼容普通8051指令集,有硬件乘法/除法指令。(21)通用I/O口(42个或38个或30个或26个),复位后为准双向口/弱上拉(普通8051输出)模式。可设置成4种工作模式:准双向口/弱上拉模式,推挽输出/强上拉模式,仅为输入/高阻模式,开漏模式。每个I/O口驱动能力均可达20mA,但I/O口个数40及40以上的单片机的驱动能力不超过120mA,I/O口个数为20以上及32以下(包括32)的单片机的驱动能力不超过90mA。(22)工作温度范围:-40~+85℃(工业级),0~75℃(商业级)。(23)封装:LQFP44,LQFP32,SOP32,SOP28,SKDIP28,PDIP40,PLCC44(请尽量不要选择此封装)。(24)开发环境:在KeilC51开发环境中,选择Intel8052编译即可。2.STC15F2K60S2系列单片机的型号选择
STC15F2K60S2系列单片机包含多种型号,各种型号的内部特性不同,表11.4列出了STC15F2K60S2系列单片机各型号的配置,大家可以根据需要选择合适的型号。3.STC15F2K60S2系列单片机的内部结构4.STC15F2K60S2系列单片机的引脚
STC15F2K60S2系列单片机常用的封装形式:PDIP40、LQFP44、PLCC44PDIP40封装的引脚图LQFP44封装的引脚图引脚的定义的说明:
(1)P0口可作为地址/数据分时复用口使用,不可作为A/D转换通道使用,A/D转换通道在P1口。因此,引脚图中P0.x/ADx是指P0.x口可作为地址/数据分时复用口使用,而P1.x/ADCx才是指P1.x口可作为A/D转换通道使用。(2)CCP是Capture(捕获)、Compare(比较)、PWM(脉宽调制)的缩写。(3)T0CLKO是指T0的时钟输出(与CLKOUT0相同,有时也写作CLKOUT0);T1CLKO是指T1的时钟输出(与CLKOUT1相同,有时也写作CLKOUT1);T2CLKO是指T2的时钟输出(与CLKOUT2相同,有时也写作CLKOUT2)。T0CLKO/T1CLKO/T2CLKO除了可以进行可编程时钟输出,还可以用作分频器。
STC15F2K60S2系列单片机内部有2048B的数据存储器,其在物理和逻辑上都分为两个地址空间:内部RAM(256B)和内部扩展RAM(1792B)。STC15XX系列单片机还可以访问在片外扩展的64KB外部数据存储器。5.STC15F2K60S2系列单片机片内存储器和特殊功能寄存器(1)程序存储器STC15F2K60S2系列单片机内部集成了8KB~62KB的Flash程序存储器,可在线反复编程擦写10万次以上。单片机型号程序存储器的地址STC15F/L2K08S20000H〜1FFFH(8KB)STC15F/L2K16S20000H〜3FFFH(16KB)STC15F/L2K20S20000H~4FFFH(20KB)STC15F/L2K32S20000H~7FFFH(32KB)STC15F/L2K40S20000H〜9FFFH(40KB)STC15F/L2K48S20000H~0BFFFH(48KB)STC15F/L2K52S20000H~0CFFFH(52KB)STC15F/L2K56S20000H~0DFFFH(56KB)STC15F/L2K60S20000H~0EFFFH(60KB)IAP15F/L2K62S20000H~0F7FFH(62KB)(2)数据存储器
单片机内部集成的2048B数据存储器在物理和逻辑上都分为两个地址空间:内部RAM(256B)和内部扩展RAM(1792B)。此外,STC15XX系列单片机还可以访问在片外扩展的64KB外部数据存储器。(3)特殊功能寄存器
特殊功能寄存器是用来对片内各功能模块进行管理、控制、监视的控制寄存器和状态寄存器,是一个具有特殊功能的RAM。STC15F2K60S2系列单片机内的特殊功能寄存器与高128字节RAM共用相同的地址(80H~0FFH),特殊功能寄存器必须用直接寻址指令访问。STC15F2K60S2系列单片机内的特殊功能寄存器较多,其名称及地址见书中表11.6。注意:地址能够被8整除的特殊功能寄存器才可以进行位操作,不能够被8整除的不可以进行位操作。6.STC15F2K60S2系列单片机的I/O口(1)I/O口的工作模式及配置
STC15F2K60S2系列单片机最多有46个I/O口:P0.0~P0.7,P1.0~P1.7,P2.0~P2.7,P3.0~P3.7,P4.0~P4.7,P5.0~P5.5。所有I/O口(每个I/O口都有2个模式配置寄存器)均可由软件配置成4种工作模式之一。
4种工作模式:准双向口/弱上拉模式推挽输出/强上拉模式仅为输入/高阻模式开漏模式除P1口在开漏时不用加上拉电阻以外,其他端口都需要加上拉电阻。表11.7P0口的工作模式配置P0M1[1:0]寄存器P0M1地址为93HP0M0[1:0]寄存器P0M0地址为94HP0口的工作模式00准双向口/弱上拉模式(灌电流可达20mA,拉电流为270μA,由于制造误差,拉电流实际为150μA~270μA)01推挽输出/强上拉模式(灌电流可达20mA,要加限流电阻)10仅为输入/高阻模式11开漏模式(内部上拉电阻断开,要加上拉电阻)(2)引脚P1.7/XTAL1与P1.6/XTAL2的说明
由于P1.7引脚和P1.6引脚还可以分别作为外部晶振或时钟电路的引脚XTAL1和XTAL2,所以P1.7/XTAL1和P1.6/XTAL2在单片机上电复位后不一定是准双向口/弱上拉模式。当P1.7引脚和P1.6引脚分别作为外部晶振或时钟电路的引脚XTAL1和XTAL2时,在单片机上电复位后是仅为输入/高阻模式。
(3)引脚P5.4/RST的说明
P5.4/RST既可用作普通I/O引脚,又可用作复位引脚。若用户ISP编程时将P5.4/RST设置成普通I/O引脚,则其在单片机上电复位后为准双向口/弱上拉模式。
(4)用I/O口控制三极管的电路
用I/O口控制三极管的电路如下图。如果用准双向口/弱上拉模式控制,则建议加上拉电阻R1(3.3kΩ~10kΩ);如果不加上拉电阻R1,则建议R2的阻值在15kΩ以上,或用推挽输出/强上拉模式控制。
(5)用I/O口控制LED的电路
用I/O口控制LED的电路,限流电阻的阻值尽量大于1kΩ,最小为470Ω。7.STC15F2K60S2系列单片机的时钟、复位和最小系统(1)STC15F2K60S2系列单片机的时钟
STC15F2K60S2系列单片机有两个时钟源:内部高精度R/C时钟和外部晶振时钟。内部高精度R/C时钟的温飘为±1%(-400~+850℃),常温下温飘为5‰。当采用内部高精度R/C时钟时可以设置好IRC_CLKO寄存器,也可以在STC在线下载软件中对时钟进行设置。
时钟分频控制寄存器CLK_DIV(PCON2)可进行时钟分频,使单片机在较低频率下工作。CLK_DIV(PCON2)中的低3位定义了分频:内部时钟分频设置CLKS2CLKS1CLKS0分频后CPU的实际工作时钟000内部高精度R/C时钟不分频001内部高精度R/C时钟2分频010内部高精度R/C时钟4分频011内部高精度R/C时钟8分频100内部高精度R/C时钟16分频101内部高精度R/C时钟32分频110内部高精度R/C时钟64分频111内部高精度R/C时钟128分频(2)STC15F2K60S2系列单片机的复位STC15F2K60S2系列单片机在高电平下复位,有6种复位方式:外部RST引脚复位软件复位掉电/上电复位(可选择增加额外的复位延时180ms,也叫作MAX810专用复位电路,其实就是在单片机上电复位后增加一个180ms的复位延时)内部低压检测复位MAX810专用复位电路复位WDT复位(3)STC15F2K60S2系列单片机的最小系统最小系统应该具备电源电路、时钟电路和复位电路3个基本部分。1.任务要求
设计一个用STC15F2K60S2控制流水灯的电路,用单片机的P1.6口、P1.7口、P4.6口和P4.7口各连接一个LED,使4个LED轮流点亮实现流水灯效果。11.1.3用STC15F2K60S2系列单片机控制流水灯的设计方法2.任务分析
根据任务要求,设计单片机控制电路,加上+5V电源,P1.6口、P1.7口、P4.6口和P4.7口各连接一个LED,并用3.3kΩ的电阻限流,端口为低电平时点亮LED。3.任务设计(1)元器件的选择
根据任务的要求和分析,采用STC15F2K60S2单片机,再加上电源就可构成单片机的最小系统,因此加上C1(47μF)和C2(0.1μF)这两个电源滤波电容,再加入4个LED和4个3.3kΩ的限流电阻便可完成设计,设计所用器件清单如表所列。元器件名称数量/个STC15F2K60S2(LQFP44)10.1μF瓷片电容147μF电解电容1LED43.3kΩ电阻4(2)硬件原理图设计(3)软件程序设计
源程序如下://***************************************************************************#include"STC15Fxxxx.H"#defineMAIN_Fosc22118400L //定义主时钟//***************************************************************************typedefunsignedcharu8;typedefunsignedintu16;//***************************************************************************//延时1ms子程序(这里只支持1~255ms)voiddelay_ms(u8ms){u16i;do{i=MAIN_Fosc/13000;while(--i); //14T1个循环}while(--ms);}//***************************************************************************//主程序voidmain(void){P0M1=0;P0M0=0; //将P0口设置为准双向口P1M1=0;P1M0=0; //将P1口设置为准双向口P2M1=0;P2M0=0; //将P2口设置为准双向口P3M1=0;P3M0=0; //将P3口设置为准双向口P4M1=0;P4M0=0; //将P4口设置为准双向口P5M1=0;P5M0=0; //将P5口设置为准双向口P6M1=0;P6M0=0; //将P6口设置为准双向口P7M1=0;P7M0=0; //将P7口设置为准双向口while(1){P17=0; //点亮LED7delay_ms(250);delay_ms(250);P17=1; //熄灭LED7P16=0; //点亮LED8delay_ms(250);delay_ms(250);P16=1; //熄灭LED8P47=0; //点亮LED9delay_ms(250);delay_ms(250);P47=1; //熄灭LED9P46=0; //点亮LED10delay_ms(250);delay_ms(250);P46=1; //熄灭LED10}}//***************************************************************************(4)软硬件联合调试
Proteus软件不支持STC高性能51单片机,所以本任务只能在STC15F2K60S2实验板上完成。将编写好的源程序利用KeilC51软件编译成*.hex文件,在STC-ISP-15xx-V6.85H编程软件中将*.hex文件下载到STC15F2K60S2实验板(见附录C和附录D)中运行即可实现4个LED轮流点亮的流水灯效果。任务11.2用STC15F2K60S2系列单片机的定时/计数器
模拟PWM的设计
1.STC15F2K60S2系列单片机的中断系统14个中断源:外部中断0()、定时器/计数器0(T0)中断、外部中断1()、定时器/计数1(T1)中断、串行口1中断、A/D转换器中断、低压检测(LVD)中断、PCA中断、串行口2中断、SPI中断、外部中断2()、外部中断3()、定时器/计数器2(T2)中断、
外部中断4()。11.2.1STC15F2K60S2系列单片机的中断系统、定时/计数器和串行口(1)STC15F2K60S2系列单片机中断系统的内部结构图(2)各中断源的中断情况表中断源中断向量相同中断优先级内的查询次序优先级0(最低)优先级1(最高)中断请求标志位中断允许控制位0003H(最高)01IE0EX0/EAT0中断000BH101TF0ET0/EA0013H201IE1EX1/EATl中断001BH301TF1ET1/EA串行口1中断0023B401RI+TIES/EAA/D转换器中断002BH501ADC_FLAGEADC/EALVD中断0033H601LVDFELVD/EAPCA中断003BH701CF+CCF0+CCF1+CCF2(ECF+ECCF0+ECCF1+ECCF2+ELVD)/EA串行口2中断0043H801S2RI+S2TIES2/EASPI中断004BH901SPIFESPI/EA0053H100
EX2/EA005BH110
EX3/EAT2中断0063H120
ET2/EA0083H16(最低)0
EX4/EA(3)STC15F2K60S2系列单片机各中断源的中断号voidInt0_Routine(void) interrupt0;voidTimer0_Rountine(void) interrupt1;voidInt1_Routine(void) interrupt2;voidTimer1_Rountine(void)interrupt3;voidUART1_Routine(void) interrupt4;voidADC_Routine(void) interrupt5;voidLVD_Routine(void) interrupt6;voidPCA_Routine(void) interrupt7;voidUART2_Routine(void) interrupt8;voidSPI_Routine(void) interrupt9;voidInt2_Routine(void) interrupt10;voidInt3_Routine(void) interrupt11;voidTimer2_Routine(void) interrupt12;voidInt4_Routine(void) interrupt16;(4)STC15F2K60S2系列单片机的中断寄存器①IE:中断允许控制寄存器(可位寻址)。B7B6B5B4B3B2B1B0EAELVDEADCESET1EX1ET0EX0②
IE2:中断允许控制寄存器(不可位寻址)。B7B6B5B4B3B2B1B0—————ET2ESPIES2③
INT_CLKO(AUXR2):外部中断允许和时钟输出寄存器。B7B6B5B4B3B2B1B0—EX4EX3EX2LVD_WAKET2CLKOT1CLKOT0CLKO④
IP:中断优先级控制寄存器(可位寻址)。B7B6B5B4B3B2B1B0PPCAPLVDPADCPSPT1PX1PT0PX0⑤
IP2:第二中断优先级控制寄存器(不可位寻址)。B7B6B5B4B3B2B1B0——————PSPIPS2⑥
TCON:定时/计数器控制寄存器(可位寻址)。B7B6B5B4B3B2B1B0TF1TR1TF0TR0IE1IT1IE0IT0⑦SCON:串行口1控制寄存器(可位寻址)。B7B6B5B4B3B2B1B0SM0/FESM1SM2RENTB8RB8TIRI⑧
S2CON:串行口2控制寄存器(不可位寻址)。B7B6B5B4B3B2B1B0S2SM0—S2SM2S2RENS2TB8S2RB8S2TIS2RI⑨
PCON:电源控制寄存器。B7B6B5B4B3B2B1B0SMODSMOD0LVDFPOFGF1GF0PDIDL⑩
ADC_CONTR:A/D转换控制寄存器。B7B6B5B4B3B2B1B0ADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS02.STC15F2K60S2系列单片机的定时/计数器
单片机内部设置了3个16位定时/计数器:T0、T1和T2。T0、T1和T2都具有计数和定时两种工作方式。4种工作方式:工作方式0(16位自动重装计数初值模式)工作方式1(16位不可重装计数初值模式)工作方式2(8位自动重装计数初值模式)工作方式3(两个8位定时/计数器)与定时/计数器相关的寄存器①
AUXR:辅助寄存器。B7B6B5B4B3B2B1B0T0x12T1x12UART_M0x6T2RT2_C/
T2x12EXTRAMS1BRS②
INT_CLKO(AUXR2):外部中断允许和时钟输出寄存器。B7B6B5B4B3B2B1B0—EX4EX3EX2LVD_WAKET2CLKOT1CLKOT0CLKOT0工作方式0原理框图3.STC15F2K60S2系列单片机的串行口
STC15F2K60S2系列单片机还提供另一种高速串行口——SPI接口。SPI是一种全双工、高速、同步的通信总线,有两种操作模式:主模式和从模式。单片机具有2个采用UART工作方式的全双工串行口:串行口1和串行口2。串行口组成:2个数据缓冲器、1个移位寄存器、1个串行控制寄存器、1个波特率发生器11.2.2用单片机的定时/计数器模拟PWM的设计方法1.任务要求
用STC15F2K60S2单片机的定时/计数器模拟高速PWM,单片机工作频率为24MHz,要求从单片机的P3.5(T0CLKO)引脚高速输出占空比不断变化的PWM信号。PWM可以是任意量程的,PWM信号占空比最小为32T/周期,最大为(周期-32T)/周期,其中T为时钟周期。2.任务分析
根据任务要求,用STC15F2K60S2单片机的定时/计数器模拟高速PWM,硬件电路只需要有单片机最小系统即可。用户可以通过修改宏来选择时钟频率,这里单片机的工作频率设置为24MHz。假设定义PWM的周期是6000个时钟周期,即6000T,由于T是单片机工作频率的倒数,所以PWM的频率=1/6000T=24MHz/6000=4000Hz。选用单片机的T0来模拟PWM,设置TMOD为0x00,T0工作于方式0,AUXR设置为0x80,T0速度是1T,不分频,设置INT_CLKO为0x01,将P3.5/T1引脚配置为T0的时钟输出T0CLKO/CLKOUT0引脚。不断调整PWM的高电平时间,采用T0中断载入不同高电平或者低电平时间的方法在P3.5引脚输出不断变化的PWM信号波形。3.任务设计(1)元器件的选择
根据任务要求和任务分析,采用STC15F2K60S2单片机作为CPU,再加上单片机工作的简单外围电路即可完成设计,设计所用器件清单如表所列。器件名称数量(只)STC15F2K60S2(LQFP44)10.1μF瓷片电容147μF电解电容1(2)硬件原理图设计本设计的软件程序包含4个功能模块。①主程序。②延时子程序。③计算PWM重装值子程序。④T0中断子程序。(2)软件程序设计软件源程序如下:#defineMAIN_Fosc24000000UL //定义单片机的工作频率为24MHz//定义PWM的周期为6000T(T为时钟周期)//因为单片机的工作频率为24MHz,故PWM的频率为4000Hz#definePWM_DUTY6000#definePWM_HIGH_MIN32 //限制PWM的最小占空比#definePWM_HIGH_MAX(PWM_DUTY-PWM_HIGH_MIN)//限制PWM的最大占空比typedefunsignedcharu8;typedefunsignedintu16;typedefunsignedlongu32;sbitP_PWM=P3^5; //定义PWM信号的输出引脚u16pwm;//定义PWM输出高电平的时间的变量,用户操作PWM的变量u16PWM_high,PWM_low; //PWM中间变量//延时子程序,这里只支持1~255ms延时,自动适应主时钟voiddelay_ms(u8ms){u16i;do{i=MAIN_Fosc/13000;while(--i);}while(--ms);}//计算PWM重装值子程序voidLoadPWM(u16i){u16j;if(i>PWM_HIGH_MAX)i=PWM_HIGH_MAX; //如果写入大于最大占空比的数据,则强制为最大占空比。if(i<PWM_HIGH_MIN)i=PWM_HIGH_MIN; //如果写入小于最小占空比的数据,则强制为最小占空比。j=65536UL-PWM_DUTY+i;//计算PWM低电平时间i=65536UL-i; //计算PWM高电平时间EA=0;PWM_high=i; //装载PWM高电平时间PWM_low=j; //装载PWM低电平时间EA=1;}//主程序voidmain(void){P0M1=0;P0M0=0; //设置P0口为准双向口P1M1=0;P1M0=0; //设置P1口为准双向口P2M1=0;P2M0=0; //设置P2口为准双向口P3M1=0;P3M0=0; //设置P3口为准双向口P4M1=0;P4M0=0; //设置P4口为准双向口P5M1=0;P5M0=0; //设置P5口为准双向口P6M1=0;P6M0=0; //设置P6口为准双向口P7M1=0;P7M0=0; //设置P7口为准双向口
P_PWM=0;P3M1&=~(1<<5); //P3.5设置为PWM输出P3M0|=(1<<5);TR0=0; //停止计数ET0=1; //允许中断PT0=1; //高中断优先级TMOD=0x00; //T0为工作模式0,定时AUXR|=0x80; //1T,不分频INT_CLKO|=0x01; //P3.5引脚输出时钟TH0=0;TL0=0;TR0=1; //T0开始计数EA=1;pwm=PWM_DUTY/10; //给PWM一个初值,这里占空比为10%LoadPWM(pwm); //计算PWM重装值
while(1){while(pwm<(PWM_HIGH_MAX-8)){pwm+=8; //PWM逐渐加到最大LoadPWM(pwm);delay_ms(8);}while(pwm>(PWM_HIGH_MIN+8)){pwm-=8; //PWM逐渐减到最小LoadPWM(pwm);delay_ms(8);}}}//T0中断子程序voidtimer0_int(void)interrupt1{if(P_PWM){TH0=(u8)(PWM_low>>8); //如果输出高电平,则装载低电平时间TL0=(u8)PWM_low;}else{TH0=(u8)(PWM_high>>8); //如果输出低电平,则装载高电平时间TL0=(u8)PWM_high;}}(4)软硬件联合调试
把编写好的源程序用KeilC51软件编译成*.hex文件,在STC-ISP编程软件中将*.hex文件下载到STC15F2K60S2实验板(见附录C和附录D)中即可用示波器从单片机的P3.5引脚测量到PWM信号。11.3单片机电源电压测量系统的设计
1.STC15F2K60S2系列单片机的A/D转换器(1)STC15F2K60S2系列单片机A/D转换器的工作原理11.3.1STC15F2K60S2系列单片机的A/D转换器和PCA模块单片机有8路A/D转换器和3个可编程计数器阵列(PCA)模块。STC15F2K60S2系列单片机的A/D转换器由多路模拟量输入通道选择开关、比较器、逐次逼近寄存器、10位D/A转换器、A/D转换结果寄存器(ADC_RES和ADC_RESL)及A/D转换控制寄存器(ADC_CONTR)构成。STC15F2K60S2单片机A/D转换器的结构图(2)与STC15F2K60S2系列单片机A/D转换器相关的寄存器①P1口模拟功能控制寄存器P1ASFB7B6B5B4B3B2BlB0P17ASFP16ASFP15ASFP14ASFP13ASFP12ASFP11ASFP10ASF②A/D转换控制寄存器ADC_CONTRB7B6B5B4B3B2B1B0ADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS0A/D转换速度设置SPEED1SPEED0A/D转换所需时间1190个时钟周期转换一次,当单片机的工作频率为21MHz时,A/D转换频率约为300kHz10180个时钟周期转换一次01360个时钟周期转换一次00540个时钟周期转换一次A/D转换器的模拟量输入通道设置CHS2CHS1CHS0模拟量输入通道选择000选择P1.0作为模拟量输入通道001选择P1.1作为模拟量输入通道010选择P1.2作为模拟量输入通道011选择P1.3作为模拟量输入通道100选择P1.4作为模拟量输入通道101选择P1.5作为模拟量输入通道110选择P1.6作为模拟量输入通道111选择P1.7作为模拟量输入通道③A/D转换结果寄存器ADC_RES、ADC_RESL名称B7B6B5B4B3B2B1B0ADC_RESADC_RES9ADC_RES8ADC_RES7ADC_RES6ADC_RES5ADC_RES4ADC_RES3ADC_RES2ADC_RESL
ADC_RES1ADC_RES0(3)STC15F2K60S2系列单片机A/D转换器的典型应用(4)STC15F2K60S2系列单片机的A/D转换器用于按键扫描的电路2.STC15F2K60S2系列单片机的PCA模块
STC15F系列单片机集成了3个PCA模块,可用于软件定时、外部脉冲捕捉、高速脉冲输出及脉宽调制(PWM)输出。(1)PCA模块的结构PCA模块中含有一个特殊的16位PCA定时/计数器,有3个16位的捕获/比较模块与之相连。(2)与PCA模块应用有关的特殊功能寄存器①PCA工作模式寄存器CMODB7B6B5B4B3B2B1B0CIDL———CPS2CPS1CPS0ECF②PCA控制寄存器CCONB7B6B5B4B3B2B1B0CFCR———CCF2CCF1CCF0③PCA比较/捕获寄存器CCAPM0、CCAPM1和CCAPM2B7B6B5B4B3B2B1B0—ECOM0CAPP0CAPN0MAT0TOG0PWM0ECCF0B7B6B5B4B3B2B1B0—ECOM1CAPP1CAPN1MAT1TOG1PWM1ECCF1B7B6B5B4B3B2B1B0—ECOM2CAPP2CAPN2MAT2TOG2PWM2ECCF2④
PCA基准定时器的低8位CL和高8位CH。⑤
PCA捕获/比较寄存器的低位CCAPnL和高位CCAPnH。⑥
PCA模块PWM寄存器PCA_PWM0、PCA_PWM1和PCA_PWM2。PCA模块0的PWM寄存器PCA_PWM0的格式如下:B7B6B5B4B3B2B1B0EBS0_1EBS0_0————EPC0HEPC0L⑦将单片机的PCA/PWM功能在P1口、P2口和P3口之间切换的寄存器AUXR1(P_SW1)及P_SW2。辅助寄存器AUXR1的格式如下:B7B6B5B4B3B2B1B0S1_S0CCP_S0SPI_S0S2_S0GF2ADRJ—DPS外设功能切换控制寄存器P_SW2(不可位寻址)的格式如下:B7B6B5B4B3B2B1B0S1_S1CCP_S1SPI_S1—————11.3.2单片机电源电压测量系统的设计方法1.任务要求
设计一个单片机电源电压测量系统,用STC15F2K60S2单片机的A/D转换器来测量其电压,单片机的工作频率为22.1184MHz,只要根据A/D转换器内部基准电压计算单片机电源电压即可。用一个4位共阴极LED数码管来显示检测到的电压值,要求电压值保留两位小数。2.任务分析
根据任务要求,读STC15F2K60S2单片机A/D转换器内部基准电压,计算单片机电源电压,不需增加任何硬件,只需有单片机最小系统和4位共阴极LED数码管显示电路即可,采用单片机的I/O方式控制74HC595驱动4位共阴极LED数码管。这里单片机的工作频率设置为22.1184MHz。选择用单片机的A/D转换器来测量单片机电源电压值,通过读取的A/D转换器内部基准电压值,利用公式ADC=1024×Vref/Vx进行计算,我们要测量的单片机电源电压值就是Vx,所以:Vx=1024×Vref/ADC=1024×1.25/ADC=1280/ADC用4位共阴极LED数码管显示测量到的电压值,使用T0定时1ms中断的节拍进行一次显示刷新。T0设置为工作方式0来产生定时1ms中断的节拍,AUXR设置为0x10,T0速度是传统8051单片机T0速度的12倍,不分频,定时1ms,所以T0的初值是[65536-(22118400/1000)]。3.任务设计(1)元器件的选择
根据任务要求和任务分析,采用STC15F2K60S2单片机作为CPU,通过74HC595驱动4位共阴极LED数码管的段码和位码,用一个4位共阴极LED数码管显示电压值,再加上单片机的外围工作电路即可完成设计,设计所用器件清单如表所列。元器件名称数量/个STC15F2K60S2(LQFP44)174HC595(SOP16)20.1μF瓷片电容247μF电解电容1100μF电解电容14位共阴极LED数码管1201Ω电阻8(2)硬件原理图设计本程序包含5个功能模块:①主程序。②查询法读一次A/D转换结果子程序。③向74HC595发送1字节子程序。④显示扫描子程序。⑤T01ms中断子程序。(2)软件程序设计软件源程序如下:#include"STC15Fxxxx.H"//用户定义宏#defineMAIN_Fosc22118400L //定义单片机的工作频率为22.1184MHz#defineDIS_DOT0x0A //在段码表中0~9数字与0.~9.的间隔数#defineTimer0_Reload(65536UL-(MAIN_Fosc/1000))//T0中断频率,1000次/stypedefunsignedcharu8;typedefunsignedintu16;typedefunsignedlongu32;/*定义4位共阴极LED数码管的段码表,包括01234567890.1.2.3.4.5.6.7.8.9.*/u8codet_display[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF};//定义4位共阴极LED数码管的位码表u8codeT_COM[]={0x01,0x02,0x04,0x08};//定义I/O口sbitP_HC595_SER=P4^0; //74HC595的引脚14用于SER数据输入sbitP_HC595_RCLK=P5^4; //74HC595的引脚12用于RCLK锁存时钟sbitP_HC595_SRCLK=P4^3; //HC595的引脚11用于SRCLK数据时钟移位//本地变量声明u8LED4[4]; //显示缓冲u8display_index; //显示位索引bitB_1ms; //1ms标志u8msecond;u16Get_ADC10bitResult(u8channel);
//通道0~7//主程序voidmain(void){u8i;u16j;P0M1=0;P0M0=0; //设置P0口为准双向口P1M1=0;P1M0=0; //设置P1口为准双向口P2M1=0;P2M0=0; //设置P2口为准双向口P3M1=0;P3M0=0; //设置P3口为准双向口P4M1=0;P4M0=0; //设置P4口为准双向口P5M1=0;P5M0=0; //设置P5口为准双向口P6M1=0;P6M0=0; //设置P6口为准双向口P7M1=0;P7M0=0; //设置P7口为准双向口display_index=0;P1ASF=0; //对内部基准电压进行A/D转换ADC_CONTR=0xE0; //90T打开A/D转换器AUXR=0x80; //T0设置为1T,16位自动重装计数初值模式
TH0=(u8)(Timer0_Reload/256); //T0初值高8位TL0=(u8)(Timer0_Reload%256); //T0初值低8位ET0=1; //允许T0中断TR0=1; //开启T0EA=1; //打开总中断
for(i=0;i<4;i++)LED4[i]=0x00; //上电消隐
while(1){if(B_1ms) //1ms到{B_1ms=0;if(++msecond>=200) //200ms到{msecond=0;for(j=0,i=0;i<16;i++)//读A/D转换器内部基准电压值,P1ASF=0,读通道0j+=Get_ADC10bitResult(0);j=(u32)128000UL*16/j;/*计算MCU电压值,ADC=1024*Uref/Ux,则Ux=1024*Uref/ADC
=1024*1.25/ADC=1280/ADC,为保留两位小数计算时放大了100倍*/LED4[1]=j/100+DIS_DOT; //缓存电压值的个位,加上小数点LED4[2]=(j%100)/10; //缓存电压值小数点后第一位数LED4[3]=j%10; //缓存电压值小数点后第二位数}}
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025吉林大学化学学院赵晓刚教授团队博士后招聘1人考试重点题库及答案解析
- 2025恒丰银行上海分行社会招聘29人考试重点试题及答案解析
- 2025云南建投第一建设有限公司社会招聘1人备考核心试题附答案解析
- 2025河南轻工职业学院招聘工作人员(硕士)46人考试核心试题及答案解析
- 2025河北唐山一中教育集团金枫叶学校招聘教师1人参考考试试题及答案解析
- 2025广东中山市板芙镇招聘公办中小学校临聘教师1人备考考试试题及答案解析
- 2025四川雅安市名山区茗投产业集团有限公司招聘合同制员工10人考试重点题库及答案解析
- 2025年宝鸡千阳县中医医院招聘(3人)备考核心题库及答案解析
- 2025宁夏沙湖旅游股份有限公司招聘6人(第二批)考试重点试题及答案解析
- 平凉市市直学校招聘2026届协议培养师范生23人(第二批)考试重点试题及答案解析
- 电力电缆-电力电缆附件安装方法及步骤(电气设备运行维护)
- 《医学美容技术》课件-实训:VISIA皮肤检测仪(理论)
- 项目经理安全早班会
- 医学影像图像质量管理
- 《如何理解「销售」》课件
- TGDNAS 049-2024 脊髓神经功能评估技术
- 2022年北京海淀初二(上)期末语文试卷及答案
- 分布式光伏电站支架结构及荷载计算书
- GB/T 16475-2023变形铝及铝合金产品状态代号
- 门诊药房运用PDCA降低门诊药房处方调配差错件数品管圈QCC成果汇报
- 化工有限公司年产4000吨-N-N-二甲基苯胺项目安全预评价报告
评论
0/150
提交评论