❶ 51单片机怎么进入休眠状态进入休眠状态后怎么唤醒(有按键唤醒的功能吗)
51单片机, 如 STC 系列单片机 ,可以进入休眠状态(或者掉电模式),待机方式(或者空闲模式),
掉电模式:为 时钟停止的 所有工作状态 全部停止, 可以 有部分 IO 口触发唤醒(连接按键的功能) , 可以 通过 软件 设置 标志位 进入掉电模式
空闲模式:为除了 CPU 不工作外,其余 都正常工作 如 定时器 等等,可以于 中断 及 部分 IO 口触发唤醒, 可以 通过 软件 设置 标志位 进入空闲模式
不是 所有 单片机 具有上述功能,要根据 单片机的 数据手册 标示。
❷ 如何将52单片机的数码管点亮
#include<reg52.h>
#define uint unsigned int
uint code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uint num=0,aa=0,,shi,ge;
void display(uint ,shi,ge);//数码管位显示子函数
void init(); //定时器子函数
void delay(uint z); //延时子函数
void main()
{
init();//初始化定时器
while(1)//进入大循环等待中断的产生
{
if(aa==20)
{
aa=0;
num++;
if(num==100)num=0;
=num/100;
shi=num%100/10;
ge=num%10;
}
display(,shi,ge);
}
}
void display(uint ,shi,ge)
{
P1=0xfe;
P0=table[];
delay(5);
P1=0xfd;
P0=table[shi];
delay(5);
P1=0xfb;
P0=table[ge];
delay(5);
}
void timer0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
aa++;
}
void init()
{
TMOD=1;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void delay(uint z)
{
uint a,b;
for(a=z;a>0;a--)
for(b=110;b>0;b--);
}
提醒:如果对你的数码管是共阳极的,那么uint code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
要改成int code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,
0x82,0xF8,0x80,0x90,0x88,0x83,
0xC6,0xA1,0x84,0x0E};
希望对你有帮助!
❸ 单片机里的唤醒和中断那个先执行
中断唤醒了单片机,然后执行中断程序,中断程序执行完后,返回睡眠语句后的一条语句
中断发生时,单片机已醒了,否则你怎么执行中断程序
下面是介简单实验程序
#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int
sbit lamp1=P3^6; //指示灯1
sbit lamp2=P3^7; //指示灯2
/***********初始化函数**********/
clearmen()
{
lamp1=1; //关指示 灯1
lamp2=1; //关指示 灯2
EA=1; //开总中断
EX1=1;//开外中断1
IT1=1; //下降沿触发
PCON=0X00;
}
void delay1ms(uint t)
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++);
}
//灯慢闪两下后熄灭
main()
{
clearmen(); //初始化
while(1)
{
lamp1=0; ////开灯 电流50-51ma
delay1ms(4000);
lamp1=1; //关灯 电流48-49ma
delay1ms(4000);
lamp1=0;
delay1ms(4000);
lamp1=1;
//PCON=0X01; //进入闲置模式电流43-44ma
PCON=0X02; //进入掉电模式
while(1);//此语句好象不能少,你试一下就知道
}
} //
//定时中断EX1 ,灯快速闪2下
void EX11(void) interrupt 2
{
lamp2=0; //开灯2
delay1ms(1000);
lamp2=1; //关灯2
delay1ms(1000);
lamp2=0;
delay1ms(1000);
lamp2=1;
delay1ms(1000);
}
试验现象,灯先慢闪两下,便于测开灯和关灯时的电流,然后进入闲置模式或掉电模式,电流明显下降
按外部中断按钮后,灯快速闪两下
若没有while(1)语句,则中断只能执行一次
我测的43-44ma,不只是单片机的耗电,还有学习板上其它部分耗电
❹ 52单片机,掉电模式,RC充放电周期唤醒,问题
掉电模式时,给intX低电平能恢复工作吗?
能,问题是,放电电阻太大,改小,电容变大。
不能,你的程序问题。
❺ 如何用红外遥控实现单片机唤醒
红外遥控的解码,只有开关机键可以触发唤醒其它键值不触发,进而实现唤醒
❻ 52单片机
STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统的51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52RC供应商:拍明芯城
器件参数
1. 增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意 选择,指令代码完全兼容传统8051. [1]
2. 工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V 单片机)
3.工作频率范围:0~40MHz,相当于普通8051 的0~80MHz,实际工作 频率可达48MHz
4. 用户应用程序空间为8K字节
5. 片上集成512 字节RAM
6. 通用I/O 口(32 个),复位后为:P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。
7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片
8. 具有EEPROM 功能
9. 共3 个16 位定时器/计数器。即定时器T0、T1、T2
10.外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒
11. 通用异步串行口(UART),还可用定时器软件实现多个UART
12. 工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)
13. PDIP封装