蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

这篇具有很好参考价值的文章主要介绍了蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有道是“一花独放不是春,万紫千红春满园”

我们不能只满足于 眼前所谓的 “够用、能用” 的少量知识,而不去深入学习探究,进而不慎封锁了自己的见识 和 更多 创新开发上的可能性。

曾经仅满足于学习了蓝桥杯单片机的三个外部晶振 定时器: 定时器0、1、2. 就认为完全够用了

直到有高人提点,方才认识到对官方手册的研究实属过于缺乏了,从而使得自我不能了解到CCP/PCA/PWM模块。

本文就学习研究下这个模块的基础以及驱动原理:

文末会安排代码硬件实验,使其实现外部中断、定时器、PWM输出等功能,并附上源码。

芯片型号:STC15F2K60S2

蓝桥杯单片机CT107D 开发实训平台

CCP代表的是Capture/Compare/PWM(捕捉/比较/脉宽调制)模块,它通常被用于控制PWM电机、PWM LED灯和其他需要精准控制的设备。

CCP意思是: Capture(捕获),Compare(比较),PWM(脉宽调制)。
PCA意思是: Programmable Counter Array(可编程计数器阵列)。

目录

PCA程序可编程计数器/定时器模块:

官方手册中有关CCP/PCA/PWM 的特殊功能寄存器:

特殊功能寄存器总表:(官方手册P783页):

PCA模块工作模式设定表(官方手册P789页):

官方手册例程代码学习(官方手册P801页开始查阅):

 先再次介绍一下三个PCA引脚以及作用:

首先介绍特殊功能寄存器是否需要sfr:

1.1.PCA作外部中断使用代码:

1.2.PCA作外部中断使用下载演示:

2.1.PCA作16位定时器使用代码:

2.2.PCA作16位定时器使用下载演示:

3.1.PCA输出高速脉冲代码:

3.2.PCA输出高速脉冲下载演示:

4.1.CCP/PCA捕获模式测脉冲宽度:  手册第822页有该例程序.


PCA程序可编程计数器/定时器模块:

PCA定时器简介:

PCA模块是程序可编程计数器/定时器模块,用于在单片机中生成定时器/计数器信号。

PCA模块可以帮助用户通过适当的程序设置生成准确的计时器/计数器信号,并在开发各种应用时提供了很大的灵活性。

PCA模块包括三个独立的定时器/计数器,分别是PCA0,PCA1和PCA2。它们的主要区别在于它们的工作模式和功能不同。以下是三个模块的简要说明:

1. PCA0:

该模块是一个多功能模块,可以作为定时器或计数器来使用。它具有多种计时和模式选择功能,并且可以将其输出信号引导到可编程I/O管脚 上。

2. PCA1:

该模块仅可用作定时器,具有比PCA0更精确的计时器基准,并可输出具有可定制占空比的PWM信号。

3. PCA2:

该模块仅可用作计数器,具有与PCA0类似的计数器功能,可以出发中断。它还可以输出方波信号、比较器输出和计数器输入捕获信号。

官方手册中有关CCP/PCA/PWM 的特殊功能寄存器:

特殊功能寄存器总表:(官方手册P783页):

符号 描述 位地址及其符号 复位值
地址 B7 B6 B5 B4 B3 B2 B1 B0

00xx

xx00

CCON  PCA控制寄存器 D8H CF CR --------------------------------------------- CCF2 CCF1 CCF0

0xxx

0000

CMOD PCA模式寄存器 D9H CIDL ------------------------------------------- CPS2 CPS1 CPS0 ECF

x000

000

CCAPM0 PCA 比较/捕获寄存器0、1、2 DAH ---------- ECOM0 CAPP0 CAPN0 MAY0 TOG0 PWM0 ECCF0

x000

0000

CCAPM1 DBH ---------- ECOM1 CAPP1 CAPN1 MAY1 TOG1 PWM1 ECCF1

x000

0000

CCAPM2 DCH ---------- ECOM2 CAPP2 CAPN2 MAY2 TOG2 PWM2 ECCF2

0000

0000

CL PCA的16位计数器 E9H --------------------------------------------------------------------------------------------------------------------------

0000

0000

CH F9H --------------------------------------------------------------------------------------------------------------------------

0000

0000

PCA_PWM0 PCA模块PWM寄存器 F2H EBS0_1 EBS0_0 ------------------------------------------------------------- EPC0H EPC0L

00xx

xx00

PCA_PWM1 F3H EBS1_1 EBS1_0 ------------------------------------------------------------- EPC1H EPC1L

00xx

xx00

PCA_PWM2 F4H EBS2_1 EBS2_0 ------------------------------------------------------------- EPC2H EPC2L

00xx

xx00

AUXRI P_SW1 配置的是串口一、CCP、SPI 的输出引脚映射 A2H S1_S1 S1_S0 CCP_S1 CCP_S0 SP1_S1 SP1_S0 ----------- DPS

0000

0000

CCAPnL(低位字节) PCA的捕获/比较寄存器 ------------------------------------------------------------------------------------------------------------------------------------

0000

0000

CCAPnH(低位字节) ------------------------------------------------------------------------------------------------------------------------------------

0000

0000

 PCA控制寄存器 CCON:(官方手册P785页):

1. PCA计数器开关控制:

CCF0、CCF1和CCF2位控制PCA计数器是否开启。

2. PCA模块中断控制:  

CF、CR和CCIE位控制PCA中断是否生效。

3. PCA定时器控制:   

PCA模块可以通过CCON寄存器中的PCA计数器功能,实现定时器的功能。

4. PCA比较模式控制:

CCM0、CCM1和CCM2位控制PCA比较模式的选择和输出电平的控制。

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

PCA模式寄存器:CMOD (官方手册P784页):

 CMOD寄存器作用是控制PCA的分频、工作模式以及中断允许的:

1. 选择计数器模式:

CMOD寄存器的最低位(bit 0)控制计数器模式,可以选择8位计数器模式或12位计数器模式。

2. 选择时钟源和分频系数:

CMOD寄存器的第2~4位(bit 2~4)控制时钟源和分频系数,可以选择系统时钟、LFOSC、HFOSC或外部时钟,并可以选择1、2、4、8、16或32的分频系数。

3. 使能中断:

CMOD寄存器的第5位(bit 5)可以使能PCA模块的中断功能,当计数器溢出时会触发中断。

PCA中断服务函数中断号为:

void PCA_ISR() interrupt7 using1
{
    //中断服务内容
}

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

 PCA 比较/捕获寄存器CCAPM0、CCAPM1、CCAPM2:(官方手册P785页):

CCAPM0:

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

 CCAPM1:

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

 CCAPM2:

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

PCA模块工作模式设定表(官方手册P789页):

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

PCA的16位计数器CL\CH:

CL和CH地址分别为E9H和F9H,复位值均为00H,用于保存PCA的装载值。

有点类似定时器的TL与TH三个PCA模块共用一个计数器

PCA模块PWM寄存器PCA_PWM0、PCA_PWM1、PCA_PWM2:

PCA_PWM0:

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

 PCA_PWM1:

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

 PCA_PWM2:

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

  AUXR1寄存器配置的是串口一、CCP、SPI 的输出引脚映射:(手册第28页):

 此处只细讲CCP,其余配置位就不贴图解释了,有兴趣自己查阅官方手册

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

 其中第7 和 6位控制串口1的TXD/RXD的引脚映射,第3 和 2位控制SPI的引脚映射,

  其中第5 和 4位控制的就是CCP的 ECI / CCP0 / CCP1 / CCP2 引脚映射:

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

 ECI   是Capture Input引脚,用于捕获外部引脚的信号。

 CCP0和CCP1 是Capture/Compare/PWM功能的引脚之一,它们可以用于PWM输出或者捕获外部引脚的信号。

CCP2  是另一个比较模块的引脚,可以被用于PWM输出或者比较外部引脚的信号。

 PCA的捕获/比较寄存器——CCAPnL(低位字节)和CCAPnH(高位字节):

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

官方手册例程代码学习(官方手册P801页开始查阅):

 先再次介绍一下三个PCA引脚以及作用:

 ECI   是Capture Input引脚,用于捕获外部引脚的信号。

 CCP0和CCP1 是Capture/Compare/PWM功能的引脚之一,它们可以用于PWM输出或者捕获外部引脚的信号。

CCP2  是另一个比较模块的引脚,可以被用于PWM输出或者比较外部引脚的信号。

 

 单独的查阅每个特殊功能寄存器的作用与使用方法是很难学会使用的,在大致了解了几个寄存器以及作用后,

为了更具体深入了解如何通过配置这些寄存器来实现PCA的一些功能,

我们还需对官方例程进行一些学习:

本处贴出的学习代码都是我经过学习STC官方手册例程后,在蓝桥杯CT107D实训平台单片机上尝试实现的代码

首先介绍特殊功能寄存器是否需要sfr:

 截图中左边是官方手册例程使用的是#include"reg52.h",右边是我们蓝桥杯开发板常用的 #include "stc15f2k60s2.h"头文件,

我们发现有关PCA/PWM 特殊功能寄存器的位定义都为我们写好了,因此使用#include "stc15f2k60s2.h"头文件就不需要手动sfr这些寄存器了。

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

1.1.PCA作外部中断使用代码:

手册第801页有该例程序

可直接新建工程复制下载使用:

/*
    配置PCA为外部中断,
    PCA引脚    P1^1 CCP0 接地后LED端口状态反转
*/

其中定时器0用来刷新复制LED的,不起其他作用。

/*
	配置PCA为外部中断,
	PCA引脚	P1^1 CCP0 接地后LED端口状态反转
*/

#include "stc15f2k60s2.h"

sbit buzz=P0^6;

#define CCP_S0 0x10   //P_SW1.4
#define CCP_S1 0x20   //P_SW1.5

unsigned char LED=0xff;

void inint_PCA_exit();                  //初始化PCA为外部中断
void inint_port(unsigned char select);  //74HC138\74hc573芯片片选	函数
void Timer0Init(void);                  //定时器0初始化

void main()
{
	inint_port(5);       //清除蜂鸣器
	buzz=0;
	inint_port(4);       //清除LED
	P0=0XFF;
	
	Timer0Init();        //定时器0初始化   
	inint_PCA_exit();    //初始化PCA为外部中断

	while(1)
	{    
	}
}


//PCA中断服务函数
//using 1是指定中断服务程序使用1号寄存器组来保存寄存器的值。

void PCA_ISR() interrupt 7 using 1
{
	CCF0=0;   //清除中断标志
	LED=~LED; //LED测试取反
}


//初始化PCA为外部中断
void inint_PCA_exit()
{
 //映射引脚到(P1^2/ECI,P1^1/CCP0,P1^0/CCP1,P3^7/CCP2)
	ACC=P_SW1;
	ACC&=~(CCP_S0|CCP_S1);    //CCP_S0=0  CCP_S1=0 
	P_SW1=ACC;                //(P1^2/ECI,P1^1/CCP0,P1^0/CCP1,P3^7/CCP2)
	
/*	
	//映射引脚到(P3^4/ECI_2,P3^5/CCP0_2,P3^6/CCP1_2,P3^7/CCP2_2)
	ACC=P_SW1;
	ACC&=~(CCP_S0|CCP_S1);
	ACC|=CCP_S0;
	P_SW1=ACC;                 //(P3^4/ECI_2,P3^5/CCP0_2,P3^6/CCP1_2,P3^7/CCP2_2)
*/	
/*
	//映射引脚到(P2^4/ECI_3,P2^5/CCP0_3,P2^6/CCP1_3,P2^7/CCP2_3)	
	ACC=P_SW1;
	ACC&=~(CCP_S0|CCP_S1);
	ACC|=CCP_S1;
	P_SW1=ACC;                 //(P2^4/ECI_3,P2^5/CCP0_3,P2^6/CCP1_3,P2^7/CCP2_3)
*/	
	CCON=0;                     
	/*初始化PCA控制寄存器
		PCA定时器停止
		清除CF标志
		清除模块中断标志
	*/
	CH=0;CL=0;                 //复位PCA寄存器
	CMOD=0X00;                 //设置PCA时钟源、禁止PCA溢出中断
	CCAPM0=0X11;               //PCA模块0为下降沿触发
	/*
	CCAPM0=0X21;               //PCA模块0为上升沿触发
	CCAPM0=0X31;               //PCA模块0为上升沿/下降沿触发	
	*/
	CR=1;                      //PCA定时器开始工作
	EA=1;                      //开启总中断
	
}	



//74HC138\74hc573芯片片选	函数
void inint_port(unsigned char select)
{
	switch(select)
	{
		case 4:	P2=(P2&0X1F)|0X80;break;  //LED
		case 5:	P2=(P2&0X1F)|0XA0;break;	//蜂鸣器继电器
		case 6:	P2=(P2&0X1F)|0XC0;break;	//数码管位选
		case 7:	P2=(P2&0X1F)|0XE0;break;	//数码管段选
	}
}

//初始化定时器0
void Timer0Init(void)		//1毫秒@12.000MHz
{
	AUXR &= 0x7F;		//定时器时钟12T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0x18;		//设置定时初始值
	TH0 = 0xFC;		//设置定时初始值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
	
	ET0=1;EA=1;
}


//定时器0中断服务函数
void t0() interrupt 1
{
	unsigned char i;
	if(++i==8)
	{i=0;inint_port(4);P0=LED;}
}

1.2.PCA作外部中断使用下载演示:

 红线接GND模拟按键,开关LED:

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

 

2.1.PCA作16位定时器使用代码:

 手册第805页有该例程序

 /*
    配置PCA为16位定时器
    让LED端口以1S为周期闪烁
    定时周期是10ms进一次中断
*/

/*
	配置PCA为16位定时器
	让LED端口以1S为周期闪烁
	定时周期是10ms进一次中断
*/
#include "stc15f2k60s2.h"

sbit buzz=P0^6;

//假定芯片工作频率为18.432MHz 18432000L
//但蓝桥杯竞赛实训板是 12.000MHz 所以是 12000000L
//填 11.0592MHz 11059200L  应该也没问题
#define FOSC 12000000L
#define T100Hz (FOSC/12/100)


#define CCP_S0 0x10   //P_SW1.4
#define CCP_S1 0x20   //P_SW1.5

unsigned char LED=0xff;
unsigned char cnt=0;
unsigned int value;

void inint_PCA_TIMER();                  //初始化PCA为16位定时器
void inint_port(unsigned char select);  //74HC138\74hc573芯片片选	函数

void main()
{
	inint_port(5);       //清除蜂鸣器
	buzz=0;
	inint_port(4);       //清除LED
	P0=0XFF;
	
	inint_PCA_TIMER();    //初始化PCA为16位定时器

	while(1)
	{    
	}
}


//PCA中断服务函数
//using 1是指定中断服务程序使用1号寄存器组来保存寄存器的值。

void PCA_ISR() interrupt 7 using 1
{
	CCF0=0;               //清除中断标志
	CCAP0L=value;
	CCAP0H=value>>8;	    //更新比较值
	value+=T100Hz;
	if(++cnt==100)        //计数100次
	{
		cnt=0;
		LED=~LED;           //每一秒LED测试取反一次
		inint_port(4);
		P0=LED;
	}
}


//初始化PCA为外部中断
void inint_PCA_TIMER()
{
 //映射引脚到(P1^2/ECI,P1^1/CCP0,P1^0/CCP1,P3^7/CCP2)
	ACC=P_SW1;
	ACC&=~(CCP_S0|CCP_S1);    //CCP_S0=0  CCP_S1=0 
	P_SW1=ACC;                //(P1^2/ECI,P1^1/CCP0,P1^0/CCP1,P3^7/CCP2)
	
/*	
	//映射引脚到(P3^4/ECI_2,P3^5/CCP0_2,P3^6/CCP1_2,P3^7/CCP2_2)
	ACC=P_SW1;
	ACC&=~(CCP_S0|CCP_S1);
	ACC|=CCP_S0;
	P_SW1=ACC;                 //(P3^4/ECI_2,P3^5/CCP0_2,P3^6/CCP1_2,P3^7/CCP2_2)
*/	
/*
	//映射引脚到(P2^4/ECI_3,P2^5/CCP0_3,P2^6/CCP1_3,P2^7/CCP2_3)	
	ACC=P_SW1;
	ACC&=~(CCP_S0|CCP_S1);
	ACC|=CCP_S1;
	P_SW1=ACC;                 //(P2^4/ECI_3,P2^5/CCP0_3,P2^6/CCP1_3,P2^7/CCP2_3)
*/	
	CCON=0;                     
	/*初始化PCA控制寄存器
		PCA定时器停止
		清除CF标志
		清除模块中断标志
	*/
	CH=0;CL=0;                 //复位PCA寄存器
	CMOD=0X00;                 //设置PCA时钟源、禁止PCA溢出中断
	
	value=T100Hz;	
	CCAP0L=value;
	CCAP0H=value>>8;	         //初始化PCA模块0
	value+=T100Hz;	
	
	CCAPM0=0X49;               //PCA模块0为16位定时器模式
	
	CR=1;                      //PCA定时器开始工作
	EA=1;                      //开启总中断
	
}	



//74HC138\74hc573芯片片选	函数
void inint_port(unsigned char select)
{
	switch(select)
	{
		case 4:	P2=(P2&0X1F)|0X80;break;  //LED
		case 5:	P2=(P2&0X1F)|0XA0;break;	//蜂鸣器继电器
		case 6:	P2=(P2&0X1F)|0XC0;break;	//数码管位选
		case 7:	P2=(P2&0X1F)|0XE0;break;	//数码管段选
	}
}

 

2.2.PCA作16位定时器使用下载演示:

 

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

 

3.1.PCA输出高速脉冲代码:

 手册第805页有该例程序,其中6、7、8位和9~16位PWM就不做演示了,自己查阅手册!

/*
    配置PCA为输出高速脉冲
    PCA模块0为16位定时器模式,同时反转CCP0(P1^1)口
*/ 

/*
	配置PCA为输出高速脉冲
	PCA模块0为16位定时器模式,同时反转CCP0(P1^1)口
*/

#include "stc15f2k60s2.h"

sbit buzz=P0^6;

//假定芯片工作频率为18.432MHz 18432000L
//但蓝桥杯竞赛实训板是 12.000MHz 所以是 12000000L
//填 11.0592MHz 11059200L  应该也没问题
#define FOSC 12000000L
#define T100Hz (FOSC/12/100)


#define CCP_S0 0x10   //P_SW1.4
#define CCP_S1 0x20   //P_SW1.5

unsigned char LED=0xff;
unsigned char cnt=0;
unsigned int value;

void inint_PCA_PWM1();                  //初始化PCA输出高速脉冲
void inint_port(unsigned char select);  //74HC138\74hc573芯片片选	函数

void main()
{
	inint_port(5);       //清除蜂鸣器
	buzz=0;
	inint_port(4);       //清除LED
	P0=0XFF;
	
	inint_PCA_PWM1();    //初始化PCA输出高速脉冲

	while(1)
	{    
	}
}


//PCA中断服务函数
//using 1是指定中断服务程序使用1号寄存器组来保存寄存器的值。

void PCA_ISR() interrupt 7 using 1
{
	CCF0=0;               //清除中断标志
	CCAP0L=value;
	CCAP0H=value>>8;	    //更新比较值
	value+=T100Hz;
}


//初始化PCA输出高速脉冲
void inint_PCA_PWM1()
{
 //映射引脚到(P1^2/ECI,P1^1/CCP0,P1^0/CCP1,P3^7/CCP2)
	ACC=P_SW1;
	ACC&=~(CCP_S0|CCP_S1);    //CCP_S0=0  CCP_S1=0 
	P_SW1=ACC;                //(P1^2/ECI,P1^1/CCP0,P1^0/CCP1,P3^7/CCP2)
	
/*	
	//映射引脚到(P3^4/ECI_2,P3^5/CCP0_2,P3^6/CCP1_2,P3^7/CCP2_2)
	ACC=P_SW1;
	ACC&=~(CCP_S0|CCP_S1);
	ACC|=CCP_S0;
	P_SW1=ACC;                 //(P3^4/ECI_2,P3^5/CCP0_2,P3^6/CCP1_2,P3^7/CCP2_2)
*/	
/*
	//映射引脚到(P2^4/ECI_3,P2^5/CCP0_3,P2^6/CCP1_3,P2^7/CCP2_3)	
	ACC=P_SW1;
	ACC&=~(CCP_S0|CCP_S1);
	ACC|=CCP_S1;
	P_SW1=ACC;                 //(P2^4/ECI_3,P2^5/CCP0_3,P2^6/CCP1_3,P2^7/CCP2_3)
*/	
	CCON=0;                     
	/*初始化PCA控制寄存器
		PCA定时器停止
		清除CF标志
		清除模块中断标志
	*/
	CH=0;CL=0;                 //复位PCA寄存器
	CMOD=0X02;                 //设置PCA时钟源、禁止PCA溢出中断
	
	value=T100Hz;	
	CCAP0L=value;	             //P1^1输出100KHz方波               
	CCAP0H=value>>8;	         //初始化PCA模块0
	value+=T100Hz;	
	
	CCAPM0=0X4d;               //PCA模块0为16位定时器模式,同时反转CCP0(P1^1)口
	
	CR=1;                      //PCA定时器开始工作
	EA=1;                      //开启总中断
	
}	



//74HC138\74hc573芯片片选	函数
void inint_port(unsigned char select)
{
	switch(select)
	{
		case 4:	P2=(P2&0X1F)|0X80;break;  //LED
		case 5:	P2=(P2&0X1F)|0XA0;break;	//蜂鸣器继电器
		case 6:	P2=(P2&0X1F)|0XC0;break;	//数码管位选
		case 7:	P2=(P2&0X1F)|0XE0;break;	//数码管段选
	}
}

 

3.2.PCA输出高速脉冲下载演示:

蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用

 

CCP/PCA捕获模式测脉冲宽度:  手册第822页有该例程序.

最后希望大家能从我的文章中初步了解学会了PCA\CCP\PWM的这三种功能,

觉得有用的话请给个三连支持文章来源地址https://www.toymoban.com/news/detail-475348.html

到了这里,关于蓝桥杯STC15F2K60S2单片机 CCP/PCA/PWM模块的学习与使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STC15F100E单片机模拟串口

    STC15F100系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,新一代8051单片机,指令代码完全兼容传统8051,但是速度快6-12倍。 内部集成R/C时钟,5MHz~35MHz宽范围可设置,可以省掉外部晶振。 内部集成复位电路,可省掉外部复位电路。 6个通用I/O口,支持四种模式:准双

    2024年02月20日
    浏览(40)
  • STC15单片机-低功耗设计

    STC15省电模式(数据手册有介绍) STC15系列单片机可以运行3种省电模式以降低功耗,它们分别是: 低速模式 , 空闲模式 和 掉电模式 。 正常工作模式下,STC15系列单片机的典型功耗是2.7mA ~7mA,而掉电模式下的典型功耗是0.1uA,空闲模式下的典型功耗是1.8mA 低速模式由时钟分

    2024年02月05日
    浏览(78)
  • 【STC15单片机】动态数码管

    目录 点亮一位数码管 动态数码管 100s倒计时 动态数码管封装代码 段选:选中哪一位数码管 位选:选中的数码管要显示的内容 这是我对段选位选的理解,就是选中某个位置,赋值字形码,显示想要的图形 如果只想让第一个数码管显示,就只需要让com1 = 1即可,其他comx都=0 如

    2024年02月13日
    浏览(38)
  • 【STC15单片机】简单的矩阵键盘代码

    单片机型号说明:IAP15F2K61S2 新建工程时单片机型号选择 STC15F2K60S2 51单片机矩阵键盘代码 本程序烧写到51单片机应该是正常使用的,手头没有51开发板了,暂时没测试 这个程序烧写到15单片机,前两列按键不能正常使用 只需要在判断第一列按键那部分程序,前面加上P42 = 0;

    2024年02月05日
    浏览(73)
  • STC15系列单片机学习4:串口通讯

    在使用单片机的串口前,得先知道所使用的单片机有几个串口,再结合你的硬件电路图来使用哪个串口。 以下是STC15各系列单片机的串口数量,STC15W4K32S4系列有4个串口 工作模式0:同步移位寄存器(官方建议初学者不学) 工作模式1:8位串口,波特率可变 工作模式2:9位串口

    2024年04月13日
    浏览(38)
  • STC15系列单片机学习6:外部中断

    外部中断,就是通过单片机IO引脚电平的变化触发的中断。 STC15系列单片机的外部中断源一共有5个,分别是外部中断0(INT0)、外部中断1(INT1)、外部中断2(INT2)、外部中断3(INT3)、外部中断4(INT4);当然不是所有的STC15系列单片机都有着5个外部中断。 中断源 触发行为

    2024年03月12日
    浏览(135)
  • 基于STC15系列单片机的智能门锁

    一、项目背景及功能需求 1.1项目背景 智能门锁是一种智能化、高效、安全的门锁,它可以实现密码识别开锁方式,极大地提高了门锁的安全性和便利性。随着人们对安全性的要求越来越高,智能门锁已经成为了现代家庭和企业的必备设备。因此,本项目旨在设计一款基于S

    2024年02月04日
    浏览(56)
  • STC15W104 8脚单片机串口下载程序

    单片机串口下载是一种常见的单片机程序下载方式,它通过串口线连接单片机的串口引脚和电脑的串口接口实现。下面是单片机串口下载的基本原理和操作方法: 确定下载模式:大多数单片机芯片都支持串口下载模式,需要在程序中设置下载模式。 连接串口:使用串口线连

    2024年02月13日
    浏览(38)
  • 基于STC15单片机的智能密码锁(矩阵按键输入)设计

    目录 一、项目背景 二、功能需求  三、功能组成 四、总结         智能门锁是一种基于现代智能化技术,与传统门锁进行比较的创新型的电子门锁产品。传统门锁通常采用钥匙旋转来开启门锁,但传统门锁存在钥匙遗失、易被复制等问题,特别是具有主动性质的人员如

    2024年02月03日
    浏览(44)
  • 微机课设 | 基于STC15单片机的简易数字密码锁设计

    在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。在安全技术防范领域,具有防盗报警功能的

    2024年02月04日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包