1、STC系列单片机技术应用上次课内容回顾STC系列单片机技术应用STC15系列单片机内部结构图STC系列单片机技术应用8.3.1 STC系列单片机片内RAM的使用 STC15F2K60S2单片机片内SRAM有2KB (比普通8051系列单片机增加了1792或1920字节)编址:000H7FFH 基本内存:低128B,直接或内部间接寻址 扩展内存:高128B,内部间接寻址 SFR:与扩展内存同地址,直接寻址 扩充内存:增加的1792B(100H-7FFH),外部间接寻址。与片外RAM怎么区分?STC系列单片机技术应用内部RAM的使用 AUXR的字节地址为8EH,可进行位寻址,AUXR的格式如下:E
2、XTRAM=0,访问内部RAMEXTRAM=1,访问外部RAMSTC系列单片机技术应用1.I/O1.I/O口控制寄存器口控制寄存器 STC15系列单片机有P0、P1、P2、P3、P4、P5,使用I/O口时,应先设置对应的端口模式配置寄存器PxM1、PxM0(x05).8.4 STC8.4 STC系列单片机输入系列单片机输入/输出口输出口STC系列单片机技术应用8.5 STC15系列单片机中断系统8.5.1 中断系统结构 STC15F2K60S2系列单片机提供14个中断源1、外部中断5个:INT0,INT1,INT2,INT3,INT42、定时计数器2个:T0,T1,另T2,T3,T4被屏蔽3、
3、串行口4个:串口1、串口2、串口3、串口4 4、A/D转换中断 1个5、低压检测LVD中断 1个6、SPI中断 1个STC系列单片机技术应用8.6 STC158.6 STC15系列单片机定时器系列单片机定时器/计数器计数器 定时器/计数器工作原理与传统8051相同,其核心部件是加1计数器,实质是对输入脉冲进行计数。STC系列单片机技术应用8.6.1 8.6.1 定时器定时器/计数器的控制寄存器计数器的控制寄存器 STC15系列单片机内部集成了5个16位定时器/计数器(T0、T1、T2、T3、T4),有定时和计数2种工作方式,由TMOD、AUXR、T4T3M控制。其中T0、T1的工作方式由TMO
4、D控制,T2、T3、T4工作方式由AUXR、T4T3M寄存器控制。STC系列单片机技术应用 辅助寄存器AUXR(地址为8EH,复位值为01H)各位定义如下:位号位号D7D6D5D4D3D2D1D0位名位名称称T0 x12T1x12UART_MUART_M0 x60 x6T2RT2_C/TT2x12EXTRAMS1S21)Tnx12:定时器n速度控制位。0:定时器0的速度与传统8051单片机定时器速度相同,即12分频,12T模式。1:定时器0的速度是传统8051单片机定时器速度的12倍,即不分频,1T模式。STC系列单片机技术应用3)T2_C/:(D3)定时器2工作方式选择。0:定时器(计数脉冲
5、从内部系统时钟输入;1:计数器(计数脉冲从P3.1/T2引脚输入)。2)T2R:(D4)定时器2运行控制位。0:不允许定时器2运行;1:允许定时器2运行。T位位号号D7D6D5D4D3D2D1D0位位名名称称T0 x12T1x12UART_MUART_M0 x60 x6T2RT2_C/TT2x12EXTRAMS1S2STC系列单片机技术应用 UART_M0 x6用于控制UART串口的速度。S1S2为串行口1波特率发生器选择位。EXTRAM用于设置是否允许使用内部1024字节的扩展RAM。位位号号D7D6D5D4D3D2D1D0位位名名称称T0 x12T1x12UART_UART_M0 x6M0
6、 x6T2RT2_C/TT2x12EXTRAMS1S2STC系列单片机技术应用T2H/RL_TH2:定时器2重装值寄存器高字节 (地址为0D6H,复位值为00H)位号D7D6D5D4D3D2D1D0位名称T2L/RL_TL2:定时器2重装值寄存器低字节 (地址为0D7H,复位值为00H)位号D7D6D5D4D3D2D1D0位名称STC系列单片机技术应用8.6.2 8.6.2 定时器定时器/计数器的工作方式计数器的工作方式 T0、T1有4种工作模式,而T2、T3、T4工作方式只有固定的模式0,可作定时器、计数器用,它们的内部结构如下:STC系列单片机技术应用8.6.3 8.6.3 定时器定时器/
7、计数器的编程应用计数器的编程应用例1 使用T0作10ms定时中断对P1.0取反,T0工作在模式0,fsys=6MHz,为1T模式。T0工作在模式0是16位自动重装模式 定时初值计算:(216x)1/6us10ms,初值 x15A0H STC系列单片机技术应用使用定时器设计程序如下:AUXR DATA 8EHORG 0000LJMPMAINORG 000BHLJMPTM00ORG 0100HMAIN:MOV SP,#6FHMOV TMOD,#00MOV AUXR,#80H;1T模式MOV TL0,#0A0HMOV TH0,#15HSETBET0SETBTR0SETBEA SJMP$TM00:CP
8、L P1.0RETIENDSTC系列单片机技术应用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;STC系列单片机技术应用例例2 2 要求在1T模式下,用定时器T2产生时钟频率38.4KHz输出(fsys=18.432MHz)。T2产生时钟频率从P3.0/T2CLKO引脚输出 T2工作在模式0是16位自动重装模式 T2定时器的定时初值:(216x)/18.432us1/(238.4)ms 初值
9、 x0FF10H STC系列单片机技术应用使用定时器设计程序如下:使用定时器设计程序如下:AUXRDATA 8EH;INT_CLKO DATA 8FH;T2HDATA 0D6HT2LDATA 0D7HT2CLKOBITP3.0;寄存器和位定义ORG0000ORLAUXR,#04H;T2x121MOVT2L,#10HMOVT2H,#0FFHORLAUXR,#10H;启动T2MOVINT_CLKO,#04;T2CLKO1 SJMP$ENDSTC系列单片机技术应用8.4 STC158.4 STC15系列单片机片上系列单片机片上A/DA/D转换器的使用转换器的使用STC15系列单片机片内8路A/D转换
10、器,可作为温度检测、电池电压检测、频谱检测、按键扫描等用。8.4.1 8.4.1 片上片上A/DA/D转换器工作原理转换器工作原理与A/D转换有关的特殊功能寄存器如下表(P.167):STC系列单片机技术应用1 STC15F2K60S2片内片内A/D内部结构内部结构STC系列单片机技术应用 STC15F2K60S2的ADC组成 多路选择开关 比较器 逐次比较寄存器 10位DAC 转换结果寄存器(ADC_RES和ADC_RESL)ADC控制寄存器ADC_CONTRSTC系列单片机技术应用 STC15F2K60S2的ADC转换原理 STC15F2K60S2的ADC是逐次比较型模数转换器。逐次比较型
11、ADC由一个比较器和D/A转换器构成,通过逐次比较逻辑,从最高位(MSB)开始,顺序地对每一输入电压与内置D/A转换器输出进行比较,经多次比较,使转换所得的数字量逐次逼近输入模拟量对应值。STC系列单片机技术应用(2)参考电压源 STC15F2K60S2单片机ADC模块的参考电压源是输入工作电压Vcc,一般不用外接参考电压源。如果Vcc不稳定(例如电池供电的系统中,电池电压常常在5.3V-4.2V之间漂移),则可以在8路A/D转换的一个通道外接一个稳定的参考电压源,计算出此时的工作电压Vcc,再计算出其他几路A/D转换通道的电压。STC系列单片机技术应用2 2A/DA/D功能设置寄存器功能设置
12、寄存器P1ASFP1ASF P1ASF是将P1口设置为A/D模拟功能的特殊功能寄存器,字节地址为9DH,不能进行位寻址,复位时为00H。P1ASF格式说明如下:例如:把P1.6用做A/D转换器使用时,将P1ASF.6设置为1即可(注意不可位寻址)编语言指令:ORL P1ASF,#40H C语言语句:P1ASF|=0 x40;STC系列单片机技术应用3 3A/DA/D转换控制寄存器转换控制寄存器ADC_CONTRADC_CONTRADC_CONTRADC_CONTR是选择通道和启动A/D转换的特殊功能寄存器,字节地址为BCH,不能进行位寻址。ADC_ CONTR格式说明如下:(1)CHS2、CH
13、S1、CHS0是模拟输入通道选择位,CHS2CHS1CHS0模拟输入通道选择000选择P1.0作为A/D输入来用001选择P1.1作为A/D输入来用010选择P1.2作为A/D输入来用011选择P1.3作为A/D输入来用100选择P1.4作为A/D输入来用101选择P1.5作为A/D输入来用110选择P1.6作为A/D输入来用111选择P1.7作为A/D输入来用STC系列单片机技术应用(2)ADC_START是A/D转换启动控制位。(3)ADC_FLAG是A/D转换结束标志位,要由软件清0。(4)SPEED1、SPEED0是A/D转换速度选择控制位,转换速度设置如下:STC系列单片机技术应用
14、STC15F2K60S2单片机A/D转换模块的时钟 外部晶体时钟或内部R/C振荡器所产生的系统时钟,不使用时钟分频寄存器CLK_DIV对系统时钟分频后所产生的供给CPU工作所使用的时钟。优点:不仅可以让ADC用较高的频率工作,提高A/D的转换速度;而且可以让CPU用较低的频率工作,降低系统的功耗。需要注意 设置ADC_CONTR控制寄存器的语句执行后,要经过4个CPU时钟的延时,其值才能够保证被设置进ADC_CONTR控制寄存器。STC系列单片机技术应用(5)ADC_POWER是电源控制位。1时,接通A/D转换器电源;0时,关闭A/D转换器电源。说明 建议进入空闲模式前,将ADC电源关闭,即A
15、DC_POWER=0。启动A/D转换前一定要确认ADC电源已打开,A/D转换结束后关闭ADC电源可降低功耗,也可不关闭。初次打开内部ADC转换模拟电源,需适当延时,等内部模拟电源稳定后,再启动A/D转换。建议启动A/D转换后,在A/D转换结束之前,不改变任何I/O口的状态,有利于提高A/D转换的精度。STC系列单片机技术应用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
16、_RES,低8位存放在ADC_RESL。A/D计算公式如下:取10位结果理论计算值=210*(Vin/Vcc)STC系列单片机技术应用 ADRJ=0时,ADC_RES7:0存放高8位ADC结果,ADC_RESL1:0存放低2位ADC结果。位名称寄存器D7D6D5D4D3D2D1D0ADC_RES98765432ADC_RESL10CLK_DIVADRJ=0STC系列单片机技术应用 ADRJ=1时,ADC_RES1:0存放高2位ADC结果,ADC_RESL7:0存放低8位ADC结果。位名称寄存器D7D6D5D4D3D2D1D0ADC_RES98ADC_RESL76543210CLK_DIVADR
17、J=1STC系列单片机技术应用 如果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为单片机实际工作电压,用单片机工作电压作为模拟参考电压。STC系列单片机技术应用 与A/D转换中断有关的寄存器 中断允许控制寄存器IE中的EADC位(D5位)用于开放ADC中断 EA位(D7位)用于开放CPU中断 中断优先级寄存器IP
18、中的PADC位(D5位)用于设置A/D中断的优先级 在中断服务程序中,要使用软件将A/D中断标志位ADC_FLAG(也是A/D转换结束标志位)清0。STC系列单片机技术应用2、STC15F2K60S2单片机ADC模块的使用编程要点打开ADC电源,第一次使用时要打开内部模拟电源(设置ADC_CONTR)。适当延时,等内部模拟电源稳定。一般延时1ms以内即可。设置P1口中的相应口线作为A/D转换通道(设置P1ASF寄存器)。STC系列单片机技术应用选择ADC通道(设置ADC_CONTR中的CHS2CHS0)。根据需要设置转换结果存储格式(设置CLK_DIV中的ADRJ位)。查询A/D转换结束标志A
19、DC_FLAG,判断A/D转换是否完成,若完成,则读出结果(结果保存在ADC_RES和ADC_RESL寄存器中),并进行数据处理。STC系列单片机技术应用 读取转换结果注意:如果是多通道模拟量进行转换,则更换A/D转换通道后要适当延时,使输入电压稳定,延时量取20s200s即可,与输入电压源的内阻有关。如果输入电压信号源的内阻在10K以下,可不加延时。如果是单通道模拟量转换,则不需要更换A/D转换通道,也就不需要加延时。STC系列单片机技术应用 若采用中断方式,还需进行中断设置(EADC置1,EA置1)。在中断服务程序中读取ADC转换结果,并将ADC中断请求标志ADC_FLAG清零。STC系列
20、单片机技术应用8.4.2 8.4.2 片上片上A/DA/D转换器的使用转换器的使用例例1 1 用STC15F2K60S2单片机P1.2口作为模拟输入端,实现A/D转换。程序设计方法:1、设置ADRJ=0 ANL CLK_DIV,#1101 1111B2、打开A/D转换电源 ORL ADC_CONTR,#80H3、选择P1.2口为模拟输入端4、设置转换周期,选择通道5、延时1ms,启动A/D转换6、检测A/D转换是否结束7、如果转换结束,清除标志,停止A/D转换8、读取A/D转换结果STC系列单片机技术应用ADC_CONTR EQU 0BCHADC_RES EQU 0BDHP1ASF EQU 9
21、DHCLK_DIV EQU 97HGET_ADG:ANL CLK_DIV,#0DFH ORL ADC_CONTR,#80H MOV A,#0000 0100B ORL P1ASF,A MOV ADC_CONTR,#1110 0010B ACALL DELL1MS MOV ADC_RES,#0 ORL ADC_CONTR,#0000 1000BNOPWAIT_AD:MOV A,#0001 0000BANL A,ADC_CONTRJZ WAIT_ADANL ADC_CONTR,#1110 0111BMOV A,ADC_RESRET1、设置ADRJ=0 2、打开A/D转换电源 3、选择P1.2口为模
22、拟输入端4、设置转换周期,选择通道5、延时1ms,启动A/D转换,6、检测A/D转换是否结束7、如果转换结束,清除标志,停止A/D转换8、读取A/D转换结果STC系列单片机技术应用例例2 用STC15F2K60S2单片机的A/D转换通道(P1.2)扩展4个按键,要求编程实现按键扫描。程序段如下:程序段如下:KEY_IN:ACALLGet_ADC;读A/D转换值(键值)CJNEA,#00,JK1;键值比较判断识别 AJMPPK1;跳转到处理K1键JK1:CJNEA,#80H,JK2 AJMPPK2;跳转到处理K2键JK2:CJNEA,#0AAH,JK3 AJMPPK3;跳转到处理K3键JK3:CJNEA,#0C0H,EXT AJMPPK4;跳转到处理K4键EXT:RET
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。