8-2STC15系列单片机技术应用(6)

上传人:ji****72 文档编号:26923603 上传时间:2018-01-03 格式:PPT 页数:41 大小:956.50KB
返回 下载 相关 举报
8-2STC15系列单片机技术应用(6)_第1页
第1页 / 共41页
8-2STC15系列单片机技术应用(6)_第2页
第2页 / 共41页
8-2STC15系列单片机技术应用(6)_第3页
第3页 / 共41页
8-2STC15系列单片机技术应用(6)_第4页
第4页 / 共41页
8-2STC15系列单片机技术应用(6)_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《8-2STC15系列单片机技术应用(6)》由会员分享,可在线阅读,更多相关《8-2STC15系列单片机技术应用(6)(41页珍藏版)》请在金锄头文库上搜索。

1、上次课内容回顾,STC15系列单片机内部结构图,8.3.1 STC系列单片机片内RAM的使用 STC15F2K60S2单片机片内SRAM有2KB (比普通8051系列单片机增加了1792或1920字节) 编址:000H7FFH 基本内存:低128B,直接或内部间接寻址 扩展内存:高128B,内部间接寻址 SFR:与扩展内存同地址,直接寻址 扩充内存:增加的1792B(100H-7FFH),外部间接寻址。与片外RAM怎么区分?,内部RAM的使用 AUXR的字节地址为8EH,可进行位寻址,AUXR的格式如下:EXTRAM= 0,访问内部RAMEXTRAM=1,访问外部RAM,1.I/O口控制寄存器

2、 STC15系列单片机有P0、P1、P2、P3、P4、P5,使用I/O口时,应先设置对应的端口模式配置寄存器PxM1、PxM0(x05).,8.4 STC系列单片机输入/输出口,8.5 STC15系列单片机中断系统8.5.1 中断系统结构 STC15F2K60S2系列单片机提供14个中断源1、外部中断5个:INT0,INT1, INT2, INT3,INT42、定时计数器2个:T0,T1,另T2,T3,T4被屏蔽3、串行口4个:串口1、串口2、串口3、串口4 4、A/D转换中断 1个5、低压检测LVD中断 1个6、SPI中断 1个,8.6 STC15系列单片机定时器/计数器 定时器/计数器工作

3、原理与传统8051相同,其核心部件是加1计数器,实质是对输入脉冲进行计数。,8.6.1 定时器/计数器的控制寄存器 STC15系列单片机内部集成了5个16位定时器/计数器(T0、T1、T2、T3、T4) ,有定时和计数2种工作方式 ,由TMOD 、AUXR、T4T3M控制。 其中T0、T1的工作方式由TMOD控制, T2、T3、T4工作方式由AUXR、T4T3M寄存器控制。,辅助寄存器AUXR(地址为8EH,复位值为01H)各位定义如下:,1)Tnx12:定时器n速度控制位。 0:定时器0的速度与传统8051单片机定时器速度相同,即12分频,12T模式。 1:定时器0的速度是传统8051单片机

4、定时器速度的12倍,即不分频,1T模式。,3)T2_C/ :(D3)定时器2工作方式选择。 0:定时器(计数脉冲从内部系统时钟输入; 1:计数器(计数脉冲从P3.1/T2引脚输入)。,2)T2R:(D4)定时器2运行控制位。 0:不允许定时器2运行; 1:允许定时器2运行。,UART_M0x6用于控制UART串口的速度。S1S2为串行口1波特率发生器选择位。 EXTRAM用于设置是否允许使用内部1024字节的扩展RAM。,T2H/RL_TH2:定时器2重装值寄存器高字节 (地址为0D6H,复位值为00H),T2L/RL_TL2:定时器2重装值寄存器低字节 (地址为0D7H,复位值为00H),8

5、.6.2 定时器/计数器的工作方式 T0、T1有4种工作模式 ,而T2、T3、T4工作方式只有固定的模式0,可作定时器、计数器用,它们的内部结构如下:,8.6.3 定时器/计数器的编程应用例1 使用T0作10ms定时中断对P1.0取反,T0工作在模式0,fsys=6MHz,为1T模式。T0工作在模式0是16位自动重装模式 定时初值计算:(216x)1/6us10ms, 初值 x15A0H,使用定时器设计程序如下:AUXR DATA 8EHORG0000LJMPMAINORG000BHLJMPTM00ORG0100HMAIN:MOV SP,#6FHMOVTMOD,#00MOVAUXR,#80H;

6、1T模式MOVTL0,#0A0HMOVTH0,#15H,SETBET0SETBTR0SETBEA SJMP $TM00: CPLP1.0RETIEND,C51程序设计#include void main( ) TMOD=0; AUXR=0X80;/1模式 TH0=0X15; TL0=0XA0; ET0=1;TR0=1; EA=1; while(1);void time0( ) interrupt 1 P10=!P10;,例2 要求在1T模式下,用定时器T2产生时钟频率38.4KHz输出(fsys=18.432MHz) 。 T2产生时钟频率从P3.0/T2CLKO引脚输出 T2工作在模式0是16

7、位自动重装模式 T2定时器的定时初值: (216x)/18.432us1/(238.4)ms 初值 x0FF10H,使用定时器设计程序如下:AUXRDATA 8EH;INT_CLKODATA 8FH;T2HDATA 0D6HT2LDATA 0D7HT2CLKOBITP3.0;寄存器和位定义ORG0000ORLAUXR,#04H;T2x121MOVT2L,#10HMOVT2H,#0FFHORLAUXR,#10H;启动T2MOVINT_CLKO,#04;T2CLKO1 SJMP$END,8.4 STC15系列单片机片上A/D转换器的使用STC15系列单片机片内8路A/D转换器,可作为温度检测、电池

8、电压检测、频谱检测、按键扫描等用。 8.4.1 片上A/D转换器工作原理与A/D转换有关的特殊功能寄存器如下表(P.167):,1 STC15F2K60S2片内A/D内部结构,STC15F2K60S2的ADC组成多路选择开关比较器逐次比较寄存器10位DAC转换结果寄存器(ADC_RES和ADC_RESL)ADC控制寄存器ADC_CONTR,STC15F2K60S2的ADC转换原理STC15F2K60S2的ADC是逐次比较型模数转换器。逐次比较型ADC由一个比较器和D/A转换器构成,通过逐次比较逻辑,从最高位(MSB)开始,顺序地对每一输入电压与内置D/A转换器输出进行比较,经多次比较,使转换所

9、得的数字量逐次逼近输入模拟量对应值。,(2)参考电压源STC15F2K60S2单片机ADC模块的参考电压源是输入工作电压Vcc,一般不用外接参考电压源。如果Vcc不稳定(例如电池供电的系统中,电池电压常常在5.3V-4.2V之间漂移), 则可以在8路A/D转换的一个通道外接一个稳定的参考电压源,计算出此时的工作电压Vcc,再计算出其他几路A/D转换通道的电压。,2A/D功能设置寄存器P1ASF P1ASF是将P1口设置为A/D模拟功能的特殊功能寄存器,字节地址为9DH,不能进行位寻址,复位时为00H。P1ASF格式说明如下: 例如:把P1.6用做A/D转换器使用时, 将P1ASF.6设置为1即

10、可(注意不可位寻址)编语言指令:ORL P1ASF, #40H C语言语句:P1ASF |= 0x40;,3A/D转换控制寄存器ADC_CONTRADC_CONTR是选择通道和启动A/D转换的特殊功能寄存器,字节地址为BCH,不能进行位寻址。ADC_ CONTR格式说明如下: (1) CHS2、CHS1、CHS0是模拟输入通道选择位,,(2) ADC_START是A/D转换启动控制位。 (3) ADC_FLAG是A/D转换结束标志位,要由软件清0。 (4) SPEED1、SPEED0是A/D转换速度选择控制位,转换速度设置如下:,STC15F2K60S2单片机A/D转换模块的时钟外部晶体时钟或

11、内部R/C振荡器所产生的系统时钟,不使用时钟分频寄存器CLK_DIV对系统时钟分频后所产生的供给CPU工作所使用的时钟。优点:不仅可以让ADC用较高的频率工作,提高A/D的转换速度;而且可以让CPU用较低的频率工作,降低系统的功耗。需要注意设置ADC_CONTR控制寄存器的语句执行后,要经过4个CPU时钟的延时,其值才能够保证被设置进ADC_CONTR控制寄存器。,(5) ADC_POWER是电源控制位。 1时,接通A/D转换器电源; 0时,关闭A/D转换器电源。 说明建议进入空闲模式前,将ADC电源关闭,即ADC_POWER =0。启动A/D转换前一定要确认ADC电源已打开,A/D转换结束后

12、关闭ADC电源可降低功耗,也可不关闭。初次打开内部ADC转换模拟电源,需适当延时,等内部模拟电源稳定后,再启动A/D转换。建议启动A/D转换后,在A/D转换结束之前,不改变任何I/O口的状态,有利于提高A/D转换的精度。,4. CLK_DIV.5是ADRJ位ADRJ=0,10位A/D高8位放入ADC_RES,低2位存放在ADC_RESL。A/D计算公式如下: 取10位结果理论计算值 =210*(Vin/Vcc) 取8位结果理论计算值 =28*(Vin/Vcc)ADRJ=1,10位A/D高2位放入ADC_RES,低8位存放在ADC_RESL。A/D计算公式如下: 取10位结果理论计算值 =210

13、*(Vin/Vcc),ADRJ=0时,ADC_RES7:0存放高8位ADC结果,ADC_RESL1:0存放低2位ADC结果。,ADRJ=1时,ADC_RES1:0存放高2位ADC结果,ADC_RESL7:0存放低8位ADC结果。,如果STC15F2K60S2单片机的10位A/D转换结果的高8位存放在ADC_RES中,低2位存放在ADC_RESL的低2位中,模/数转换结果计算公式如下:取10位结果 (ADC_RES7:0,ADC_RESL1:0) = 1024Vin/Vcc取8位结果 ADC_RES7:0 = 256Vin / Vcc Vin为模拟输入通道输入电压,Vcc为单片机实际工作电压,用

14、单片机工作电压作为模拟参考电压。,与A/D转换中断有关的寄存器中断允许控制寄存器IE中的EADC位(D5位)用于开放ADC中断EA位(D7位)用于开放CPU中断中断优先级寄存器IP中的PADC位(D5位)用于设置A/D中断的优先级 在中断服务程序中,要使用软件将A/D中断标志位ADC_FLAG(也是A/D转换结束标志位)清0。,2、STC15F2K60S2单片机ADC模块的使用编程要点打开ADC电源,第一次使用时要打开内部模拟电源(设置ADC_CONTR)。适当延时,等内部模拟电源稳定。一般延时1ms以内即可。设置P1口中的相应口线作为A/D转换通道(设置P1ASF寄存器)。,选择ADC通道(设置ADC_CONTR中的CHS2CHS0)。根据需要设置转换结果存储格式(设置CLK_DIV中的ADRJ位)。查询A/D转换结束标志ADC_FLAG,判断A/D转换是否完成,若完成,则读出结果(结果保存在ADC_RES和ADC_RESL寄存器中),并进行数据处理。,读取转换结果注意:如果是多通道模拟量进行转换,则更换A/D转换通道后要适当延时,使输入电压稳定,延时量取20s200s即可,与输入电压源的内阻有关。如果输入电压信号源的内阻在10K以下,可不加延时。如果是单通道模拟量转换,则不需要更换A/D转换通道,也就不需要加延时。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号