STC15W1048脚单片机,开漏和推挽输出比较(点亮LED)

增强型 8051 CPU,1T单时钟/机器周期,指令代码完全兼容传统8051
工作电压:2.5V - 5.5V在这里插入图片描述

1K/2K/3K/4K/5K/7K字字节片内Flash程序存储器,擦写次数10万次以上
片内128字节的SRAM XRAM (xdata)

有片内EEPROM功能,擦写次数10万次以上
ISP/IAP,在系统可编程/在应用可编程,无需编程器/仿真器

内部高可靠复位,ISP编程时16级复位门槛电压可选,可彻底省掉外部复位电路
工作频率范围:5MHz ~ 35MHz,相当于普通8051的60MHz~420MHz

内部高精度R/C时钟(±0.3%),±1%温飘(-40℃+85℃),常温下温飘±0.6%(-20℃+65℃), ISP编程时内部时钟从5MHz~35MHz可设(5.5296MHz / 11.0592MHz / 22.1184MHz / 33.1776MHz).

不需外部晶振和外部复位,还可对外输出时钟和低电平复位信号
串口功能可由[P3.0/INT4,P3.1]结合定时器实现

支持程序加密后传输,防拦截
支持RS485下载

低功耗设计:低速模式,空闲模式,掉电模式/停机模式。
可将掉电模式/停机模式唤醒的定时器:有内部低功耗掉电唤醒专用定时器

可将掉电模式/停机模式唤醒的资源有:
INT0/P3.2, INT1/P3.3 (INT0/INT1上升沿下降沿 中断均可), INT2 /P3.4, INT3/P3.5, INT4/P3.0(INT2 /INT3 /INT4 仅可下降沿中断);管脚T0/T2(下降 沿,不产生中断,前提是在进入掉电模式/停机 模式前相应的定时器中断已经被允许);内部低 功耗掉电唤醒专用定时器。

共2个定时器/计数器——T0(兼容普通8051的定时器)/T2,并均可实现可编程时钟输出, 另外管脚MCLKO可将内部主时钟对外分频输出(÷1或÷2或÷4)。

可编程时钟输出功能(对内部系统时钟或对外部管脚的时钟输入进行时钟分频输出):
由于STC15系列5V单片机I/O口的对外输出速度最快不超过13.5MHz,所以5V单片机的对 外可编程时钟输出速度最快也不超过13.5MHz.;

而3.3V单片机I/O口的对外输出速度最快不超过8MHz,故3.3V单片机的对外可编程时钟 输出速度最快也不超过8MHz.
① T0在P3.5/T0CLKO进行可编程输出时钟(对内部系统时钟或对外部管脚T0/P3.4的 时钟输入进行可编程时钟分频输出);
② T2在P3.0/T2CLKO进行可编程输出时钟(对内部系统时钟或对外部管脚T2/P3.1的 时钟输入进行可编程时钟分频输出);

以上2个定时器/计数器均可1~65536级分频输出。
③ 主时钟在P3.4/MCLKO对外输出时钟,并可如下分频MCLK/1, MCLK/2, MCLK/4.
STC15W10x系列单片机不支持外接外部晶体,其主时钟对外输出管脚P3.4/MCLKO只可 以对外输出内部R/C时钟。MCLK是指主时钟频率, MCLKO是指主时钟输出。

STC15系列8-pin单片机(如STC15W10x系列)在MCLKO/P3.4口对外输出时钟,STC15 系列16-pin及其以上单片机均在MCLKO/P5.4口对外 输出时钟,且STC15W系列20-pin及其以 上单片机除可在MCLKO/P5.4口对外输出时钟外,还可在MCLKO_2/P1.6口对外输出时 钟。
硬件看门狗(WDT)

先进的指令集结构,兼容普通8051指令集,有硬件乘法/除法指令
共6个通用I/O口,复位后为:准双向口/弱上拉(普通8051传统I/O口) 可设置成四种模式:准双向口/弱上拉,强推挽/强上拉,仅为输入/ 高阻,开漏

每个I/O口驱动能力均可达到20mA,但整个芯片电流最大不要超过90mA. 如果I/O口不够用,可外接74HC595(参考价0.15元)来 扩展I/O口,并可多芯片级联扩展几 十个I/O口
工作温度范围:-40 ~ +85℃(工业级) / 0 ~ 75℃(商业级)

封装:SOP-8, DIP-8, DFN-8
开发环境:在Keil C开发环境中,选择 Intel 8052 编译即可

流水灯程序

#include <reg51.h>  //包含STC15W104单片机的相关寄存器定义

sbit LED1 = P1^0;  //定义流水灯连接引脚,此处使用P1.0
sbit LED2 = P1^1;
sbit LED3 = P1^2;

void main()
{
    
    
    LED1 = 1;  //将LED1亮起,表示流水灯开始的位置
    LED2 = 0;  //其余两盏灯熄灭
    LED3 = 0;
    while(1)  //设置死循环,确保程序一直运行
    {
    
    
        LED1 = !LED1;  //取反亮灯状态,即实现灯的亮灭效果
        LED2 = !LED2;
        LED3 = !LED3;
        delay(1000);  //延时一秒钟,使流水灯的效果更加明显
    }
}

void delay(unsigned int t)
{
    
    
    unsigned int i,j;
    for(i=0;i<t;i++)
        for(j=0;j<125;j++);  //循环延时,具体时间取决于循环次数
}

开漏和推挽输出比较

#include "STC15Wxx.h"
#include "init.h"
#include "delay.h"

 sbit LED1 = P3^1;
 sbit LED2 = P3^0;

void main(void)
 {
    
    
	system_init();
 	LED1 = 0;//LED1 点亮
	LED2 = 0;//LED2 点亮
	 while(1)
	 {
    
    
		LED1 = 1;
		LED2 = 1;
		Delay1s();//在此只加了一个延时
		LED1 = 0;
		LED2 = 0; 
		Delay1s();//不加延时,灭后迅速被点亮
	 }
 
 }

void system_init(void)

void system_init(void)
{
    
    
	//配置成准双向IO口,内部有弱上拉
	//P0M0 和P0M1 两个寄存器可以控制P0的7个IO口
		P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;
    P6M0 = 0x00;
    P6M1 = 0x00;
    P7M0 = 0x00;
    P7M1 = 0x00;
	
		P3M0 |= 0x02;//  P3M1 0  P3M0 1   配置P3^1 推挽输出   
	//配置
	



}
#include "delay.h"
#include "intrins.h"//包含空指令_nop
/*STC官方提供的有延时函数
STC15W104 系列 内部RC晶振   
ISP编程时内部时钟从5MHz~35MHz可设(5.5296MHz / 11.0592MHz / 22.1184MHz / 33.1776MHz).  
低功耗设置时,我们可以选择5.5296MHz的晶振。


*/


void Delay100ms()		//@5.5296MHz
{
    
    
	unsigned char i, j, k;

  _nop_();
  _nop_();
	i = 3;
	j = 26;
	k = 223;
	do
	{
    
    
		do
		{
    
    
			while (--k);
		} while (--j);
	} while (--i);
}

void Delay1s()
{
    
    
	char i ;
	for(i=0;i<10;i++)
	{
    
    
		Delay100ms();
	
	}
	
}
void Delay2s()
{
    
    
	char i ;
	for(i=0;i<20;i++)
	{
    
    
		Delay100ms();
	
	}
	
}

猜你喜欢

转载自blog.csdn.net/weixin_51624736/article/details/130470175
今日推荐