ImageVerifierCode 换一换
格式:DOCX , 页数:40 ,大小:1.03MB ,
资源ID:5383585      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5383585.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(STC12C5410AD程序和在PCAPWM的应用.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

STC12C5410AD程序和在PCAPWM的应用.docx

1、STC12C5410AD程序和在PCAPWM的应用STC12C5410AD_程序和在PCA_PWM的应用一、STC12C5410/STC12C2052 系列主要性能: 2二、A/D转换 及 A/D转换测试程序 3(1)A/D转换典型应用线路,按键扫描 5(2)A/D转换模块的参考电压源 5(3)A/D转换功能汇编程序示例 6三、STC12C5410AD系列单片机的 PCA/PWM的应用 9(1)用SST单片机的PCA功能产生PWM脉冲(转) 9(2)产生精确PWM波形的DDS电路(转) 10(3)基于DDS的调制信号发生器的设计(转) 12(4)STC12C5410 系列单片机 PWM/PCA

2、 应用及测试程序 16(5)STC12C5410AD系列单片机 PWM 输出程序 23(6)STC12C5410AD 系列单片机 PCA 的高速脉冲输出 25(7)利用定时器 0 的溢出作为 PCA模块的时钟输入源 -利用 PCA模块 0 实现了可调频率的 PWM输出 -利用 PCA 模块 1 重新实现了 16位定时器 29一、STC12C5410/STC12C2052 系列主要性能: 高速:1 个时钟 / 机器周期,增强型 8051 内核,速度比普通 8051快 12 倍 宽电压:5.53.8V,2.43.8V(STC12LE5410AD 系列) 低功耗设计:空闲模式,掉电模式(可由外部中断

3、唤醒) 工作频率:035MHz,相当于普通 8051:0420MHz - 实际可到 48MHz,相当于 8051: 0576MHz 时钟:外部晶体或内部 RC 振荡器可选,在 ISP 下载编程用户程序时设置 12K/10K/8K/6K/4K/2K 字节片内 Flash 程序存储器,擦写次数 10 万次以上 512 字节片内 RAM数据存储器 芯片内 E2PROM功能 ISP / IAP,在系统可编程 / 在应用可编程,无需编程器 / 仿真器 通道,STC12C2052AD 系列为 8 位 ADC 4 通道捕获 / 比较单元(PWM/PCA/CCU), STC12C2052AD 系列为 2 通道

4、 - 也可用来再实现 4 个定时器或 4 个外部中断(支持上升沿 / 下降沿中断) 2 个硬件 16 位定时器,兼容普通 8051 的定时器。4 路 PCA 还可再实现 4 个定时器硬件看门狗(WDT) 高速 SPI 通信端口 全双工异步串行口(UART),兼容普通 8051 的串口 先进的指令集结构,兼容普通 8051 指令集 4组 8 个 8 位通用工作寄存器(共 32 个通用寄存器)有硬件乘法 / 除法指令通用 I/O 口(27/23/15 个), 复位后为: 准双向口 / 弱上拉(普通 8051 传统 I/O 口)可设置成四种模式:准双向口 / 弱上拉,推挽 / 强上拉,仅为输入 /

5、高阻,开漏每个 I/O 口驱动能力均可达到 20mA,但整个芯片最大不得超过 55mA STC12C5410 系列单片机是单时钟 / 机器周期(1T)的兼容 8051 内核单片机,是高速 / 低功耗的新一代8051单片机,指令代码完全兼容传统 8051,但速度快 8-12 倍,内部集成 MAX810 专用复位电路。4 路PWM,8 路高速 10 位 A/D 转换。特点:1. 增强型 8051 CPU,1T,单时钟 / 机器周期,指令代码完全兼容传统 80512. 工作电压:5.5V - 3.8V(5V 单片机) / 3.8V - 2.4V(3V 单片机)3. 工作频率范围:0 - 35 MHz

6、,相当于普通 8051 的 0420MHz.实际工作频率可达 48MHz.4. 用户应用程序空间 12K / 10K / 8K / 6K / 4K / 2K / 1K 字节5. 片上集成 512 字节 RAM6. 通用 I/O口(27/23个), 复位后为: 准双向口 / 弱上拉(普通 8051传统 I/O口)可设置成四种模式:准双向口 / 弱上拉,推挽 / 强上拉,仅为输入 / 高阻,开漏每个 I/O口驱动能力均可达到 20mA,但整个芯片最大不得超过 55mA7. ISP(在系统可编程)/IAP(在应用可编程), 无需专用编程器,无需专用仿真器可通过串口(P3.0/P3.1)直接下载用户程

7、序,数秒即可完成一片8. EEPROM 功能9. 看门狗10.内部集成 MAX810专用复位电路(外部晶体 20M以下时,可省外部复位电路)11.时钟源:外部高精度晶体 / 时钟,内部 R/C 振荡器用户在下载用户程序时,可选择是使用内部 R/C振荡器还是外部晶体 / 时钟常温下内部 R/C 振荡器频率为:5.2MHz 6.8MHz精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,应认为是 4MHz 8MHz12.共 2 个 16 位定时器 / 计数器,但可用 PCA 模块再产生 4 个定时器13.外部中断 2 路,下降沿中断或低电平触发中断,Power Down 模式可由外部中断低

8、电平触发中断方式唤醒14.PWM(4 路)/PCA(可编程计数器阵列)- 也可用来再实现 4 个定时器- 也可用来再实现 4 个外部中断(上升沿中断 / 下降沿中断均可分别或同时支持)15. ADC, 10位精度 ADC,共 8 路16. 通用全双工异步串行口(UART),由于 STC12系列是高速的 8051,也可再用定时器软件实现多串口17. SPI 同步通信口,主模式 / 从模式18.工作温度范围: 0 - 75 / -40 - +8519.封装:PDIP-28,SOP-28,PDIP-20,SOP-20,PLCC-32,TSSOP-20(超小封状 6.4mm 6.4mm,定货)二、A/

9、D转换 及 A/D转换测试程序STC12C5410AD 系列带 A/D 转换的单片机在 P1 口,有 8 路 10 位高速 A/D 转换器, 速度可达 100KHz。P1.7 - P1.0 共 8 路电压输入型 A/D,可做温度检测、电池电压检测、按键扫描、频谱检测等。上电复位后 P1 口为弱上拉型 I/O 口,用户可以通过软件设置将 8 路中的任何一路设置为 A/D 转换,不需作为 A/D 使用的口可继续作为 I/O口使用。需作为 A/D使用的口需先将其设置为高阻输入或开漏模式。(?)在 P1M0、P1M1中对相应的位进行设置。ADC_START: 模数转换器(ADC)转换启动控制位,设置为

10、“1”时,开始转换,转换结束后为 0。ADC_FLAG: 模数转换器转换结束标志位,当 A/D 转换完成后,ADC_FLAG = 1,要由软件清 0。不管是 A/D转换完成后由该位申请产生中断,还是由软件查询该标志位 A/D转换是否结束,当 A/D 转换完成后,ADC_FLAG = 1,一定要软件清 0。SPEED1,SPEED0:模数转换器转换速度控制位ADC_POWER: ADC 电源控制位。0:关闭 ADC电源;1:打开 A/D转换器电源.如果软件设置进入空闲模式,ADC电源会自动关闭.启动 AD转换前一定要确认 AD电源已打开,AD转换结束后关闭 AD电源可降低功耗,也可不关闭。初次打

11、开内部 A/D转换模拟电源,需适当延时,等内部模拟电源稳定后,再启动 A/D转换建议启动 A/D 转换后,在 A/D转换结束之前,不改变任何 I/O 口的状态,有利于高精度 A/D转换ADC_DATA / ADC_LOW2 特殊功能寄存器: A/D 转换结果特殊功能寄存器模拟 / 数字转换结果计算公式如下:结果(ADC_DATA7:0,ADC_LOW21:0)=1024 x Vin / VccVin为模拟输入通道输入电压,V c c 为单片机实际工作电压,用单片机工作电压作为模拟参考电压。取 ADC_DATA 的 8 位为 ADC转换的高 8 位,取 ADC_LOW2 的低 2 位为 ADC

12、转换的低 2 位,则为 10 位精度。如果舍弃 ADC_LOW2 的低 2 位,只用 ADC_DATA 寄存器的 8 位,则 A/D 转换结果为 8 位精度。结果 ADC_DATA7:0 = 256 x Vin / Vcc(1)A/D转换典型应用线路,按键扫描(2)A/D转换模块的参考电压源STC12C5410AD系列单片机的参考电压源是输入工作电压 Vcc,所以一般不用外接参考电压源。如7805 的输出电压是 5V,但实际电压可能是 4.88V 到 4.96V,用户需要精度要求比较高的话,可在出厂时将实际测出的工作电压值记录在单片机内部的 EEPROM 里面,以供计算。如果有些用户的 Vcc

13、 不固定,如电池供电,电池电压在 5.3V-4.2V 之间漂移,则 Vcc 不固定,就需要在 8 路 A/D转换的一个通道外接一个稳定的参考电压源,来计算出此时的工作电压 Vcc,再计算出其他几路 A/D转换通道的电压。如可在 ADC 转换通道的第七通道外接一个 1.25V 的基准参考电压源,由此求出此时的工作电压 Vcc,再计算出其它几路 A/D 转换通道的电压。(3)A/D转换功能汇编程序示例;/* - STC International Limited - */;/* - 演示 STC12C5410AD 系列 MCU 的 A/D 转换功能 - */;/* - 演示 STC12C2052A

14、D 系列 MCU 的 A/D 转换功能 - */;如果要在程序中使用或在文章中引用该程序,请在程序中或文章中注明使用了宏晶科技的资料及程序;ADC DEMO_5410_ASM.ASM -汇编程序演示 STC12C5410AD 系列 MCU 的 A/D 转换功能。;本演示程序在 STC-ISP Ver 3.0A.PCB的下载编程工具上测试通过,相关的 A/D 转换结果在 P1 口上显示;转换结果也以 16 进制形式输出到串行口,可以用串行口调试程序观察输出结果。;时钟 18.432MHz, 波特率 = 9600。;转换结果也在 P1 口利用 LED 显示出来, 方便观察。LED_MCU_STAR

15、T EQU P3.7ADC_CONTR EQU 0C5H ;A/D转换寄存器ADC_DATA EQU 0C6H ;A/D转换结果寄存器, 为 10 位 A/D转换结果的高 8 位;ADC_LOW2 EQU 0BEH ;A/D转换结果寄存器, 低 2 位有效, 为 10 位 A/D 转换结果的低 2 位;如果不用 ADC_LOW2 的低 2 位,只用 ADC_DATA 的 8 位,则为 8 位 A/D 转换P1M0 EQU 91H ;P1 口模式选择寄存器 0P1M1 EQU 92H ;P1 口模式选择寄存器 1ADC_Power_On_Speed_Channel_0 EQU 11100000B

16、 ;P1.0作为 A/D输入ADC_Power_On_Speed_Channel_1 EQU 11100001B ;P1.1作为 A/D输入ADC_Power_On_Speed_Channel_2 EQU 11100010B ;P1.2作为 A/D输入ADC_Power_On_Speed_Channel_3 EQU 11100011B ;P1.3作为 A/D输入ADC_Power_On_Speed_Channel_4 EQU 11100100B ;P1.4作为 A/D输入ADC_Power_On_Speed_Channel_5 EQU 11100101B ;P1.5作为 A/D输入ADC_Po

17、wer_On_Speed_Channel_6 EQU 11100110B ;P1.6作为 A/D输入ADC_Power_On_Speed_Channel_7 EQU 11100111B ;P1.7作为 A/D输入;-;定义变量ADC_Channel_0_Result EQU 30H ;0 通道 A/D 转换结果ADC_Channel_1_Result EQU 31H ;1 通道 A/D 转换结果ADC_Channel_2_Result EQU 32H ;2 通道 A/D 转换结果ADC_Channel_3_Result EQU 33H ;3 通道 A/D 转换结果ADC_Channel_4_R

18、esult EQU 34H ;4 通道 A/D 转换结果ADC_Channel_5_Result EQU 35H ;5 通道 A/D 转换结果ADC_Channel_6_Result EQU 36H ;6 通道 A/D 转换结果ADC_Channel_7_Result EQU 37H ;7 通道 A/D 转换结果;- ORG 0000H LJMP MAIN ORG 0050HMAIN: CLR LED_MCU_START ;MCU 工作指示灯 LED_MCU_START EQU P3.7 MOV SP, #7FH ;设置堆栈 ACALL Initiate_RS232 ;初始化串口 ACALL

19、ADC_Power_On ;开 ADC 电源, 第一次使用时要打开内部模拟电源 ;开 ADC电源, 可适当加延时,1mS以内就足够了 ACALL Set_P12_Open_Drain ;设置 P1.2 为开漏 ACALL Set_ADC_Channel_2 ;设置 P1.2 作为 A/D 转换通道 ACALL Get_AD_Result ;测量电压并且取 A/D 转换结果 ACALL Send_AD_Result ;发送转换结果到 PC 机ACALL Set_P12_Normal_IO ;设置 P1.2 为普通 IOMOV A, ADC_Channel_2_Result ;用 P1 口显示 A

20、/D 转换结果 CPL AMOV P1, AWait_Loop: SJMP Wait_Loop ;停机;-;-;-;-Initiate_RS232: ;串口初始化CLR ES ;禁止串口中断MOV TMOD, #20H ;设置 T1 为波特率发生器MOV SCON, #50H ;0101,0000 8位数据位, 无奇偶校验MOV TH1, #0FBH ;18.432MHz 晶振, 波特率 = 9600MOV TL1, #0FBH SETB TR1 ;启动 T1 RET;-Send_Byte:CLR TIMOV SBUF, ASend_Byte_Wait_Finish:JNB TI, Send_

21、Byte_Wait_Finish CLR TI RET;-ADC_Power_On: PUSH ACC ORL ADC_CONTR, #80H ;开 A/D 转换电源 MOV A, #20H ACALL Delay ;开 A/D转换电源后要加延时,1mS 以内就足够了 POP ACCRET;-;设置 P1.2,设置 A/D通道所在的 I/O 为开漏模式Set_P12_Open_Drain: PUSH ACC MOV A, #00000100B ORL P1M0, A ORL P1M1, A POP ACCRET;-;设置 P1.2 为普通 IOSet_P12_Normal_IO: PUSH A

22、CC MOV A, #11111011B ANL P1M0, A ANL P1M1, A POP ACCRET;-Set_ADC_Channel_2: MOV ADC_CONTR, #ADC_Power_On_Speed_Channel_2 ;选择 P1.2 作为 A/D 转换通道 MOV A, #05H ;更换 A/D 转换通道后要适当延时, 使输入电压稳定 ;以后如果不更换 A/D 转换通道的话, 不需要加延时 ACALL Delay ;切换 A/D 转换通道,加延时 20uS200uS 就可以了,与输入电压源的内阻有关 ;如果输入电压信号源的内阻在 10K 以下,可不加延时RET;-Se

23、nd_AD_Result: PUSH ACC MOV A, ADC_Channel_2_Result ;取 AD 转换结果 ACALL Send_Byte ;发送转换结果到 PC 机 POP ACCRET;-Get_AD_Result: PUSH ACC ;入栈保护 MOV ADC_DATA, #0 ORL ADC_CONTR, #00001000B ;启动 AD 转换Wait_AD_Finishe: MOV A, #00010000B ;判断 AD 转换是否完成 ANL A, ADC_CONTR JZ Wait_AD_Finishe ;AD 转换尚未完成, 继续等待 ANL ADC_CONT

24、R, #11100111B ;清 0 ADC_FLAG, ADC_START 位, 停止 A/D 转换 MOV A, ADC_DATA MOV ADC_Channel_2_Result, A ;保存 AD 转换结果 POP ACCRET;-Delay: PUSH 02 ;将寄存器组 0 的 R2 入栈 PUSH 03 ;将寄存器组 0 的 R3 入栈 PUSH 04 ;将寄存器组 0 的 R4 入栈 MOV R4, ADelay_Loop0: MOV R3, #200 ;2 CLOCK -+Delay_Loop1: ; | MOV R2, #249 ;2 CLOCK -+ |Delay_Loo

25、p: ; | 1002 CLOCK |200406 CLOCK DJNZ R2, Delay_Loop ;4 CLOCK | | DJNZ R3, Delay_Loop1 ;4 CLOCK -+ | DJNZ R4, Delay_Loop0 ;4 CLOCK -+POP 04POP 03POP 02RET;-END三、STC12C5410AD系列单片机的 PCA/PWM的应用(1)用SST单片机的PCA功能产生PWM脉冲(转) 一、程序说明:SST单片机带有5路PCA模块,PCA功能比普通的单片机相比提供更强的计时性,同时更少CPU的干预,用它可以减少软件的开销和改进精度。利用PCA的脉冲宽度

26、调制(PWM)模式可以产生一个8位PWM,它通过比PCA定时器的低位(CL)和比较寄存器的低位(CCAPnL)产生。当CL=CCAPnL是输出为高。要进入这个模式,可以对CCAPMn的PWM和ECOM位置位。在PWM 模式,输出的频率决定于PCA定时器的源。由于只有一对CH 和CL寄存器,所有模块共享PCA定时器和频率。输出的占空比由装在高位CCAPnH的值控制。由于写入CCAPnH寄存器不是同步的,写入高位的值不会马上装入CCAPnL做比较,直到输出的另一个周期(当CL从255到0翻转)。用下面的公式计算任何占空比CCAPnH 值:CCAPnH=256(1-占空比)CCAPnH 是8 位整数

27、,占空比是分数。脉冲宽度调制频率PCA定时器模式PWM 频率12MHz16MHz1/12振荡频率3.9KHz5.2KHz1/4振荡频率11.8KHz15.6KHz定时器0溢出:8位16位8位自动重装15.5Hz0.06Hz3.9KHz 到15.3KHz20.3Hz0.08Hz5.2KHz 到20.3KHz外部输入(最大)5.9KHz7.8KHz二、相关寄存器介绍:PCA定时器/计数器模式寄存器(CMOD)位置76543210D9HCIDLWDTE-CPS1CPS0ECF标志 功能CIDL 计数器空闲控制,CIDL=0时,PCA在空闲模式下继续工作。CIDL=1时,PCA在空闲模式下关闭。WDTE 看门狗定时器使能:WDTE=0时,禁止PCA模块4的看门狗功能。WDTE=1时,使能。CPS1 PCA计数脉宽选择位1CPS0 PCA计数脉宽选择位0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1