单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 421|回复: 1
收起左侧

STC89单片机单按键休眠模式手电筒测试成功电流UA级C语言

[复制链接]
冰冰洁洁 发表于 2019-1-19 17:53 | 显示全部楼层 |阅读模式
手电因小开发板有指示灯,休眠电流大点,但实际能用,开机20MA.待机10MA.休眠3MA。。其实没有灯或换个低功耗的单片就完美了。。。

制作出来的实物图如下:
20190119_173959.jpg 20190119_174008.jpg 20190119_174015.jpg

单片机程序源码:

#include <reg52.h>      //52系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
sbit RS = P2^6 ;
sbit RW = P2^5 ;
sbit EN = P2^7 ;


sbit STA7 = P0^7;         
uint num,num1;


sbit led= P1^0 ;//灯


sbit k1= P3^2 ;//开关


void delayms(uint xms)   
{
uint i,j;
for(i=xms;i>0;i--)        //i=xms即延时约xms毫秒
  for(j=110;j>0;j--);
}
/**
* 等待繁忙标志
*/
void wait(void)
{
        P0 = 0xFF;
        
        do
        {
                RS = 0;
                RW = 1;
                EN = 0;
                EN = 1;
        }while (STA7 == 1);
        EN = 0;
}


/**
* 写数据
*/
void w_dat(uint dat)
{
        wait();
        EN = 0;
        P0 = dat;
        RS = 1;
        RW = 0;
        EN = 1;
        EN = 0;
}


/**
* 写命令
*/
void w_cmd(uint cmd)
{
        wait();
        EN = 0;
        P0 = cmd;
        RS = 0;
        RW = 0;
        EN = 1;
        EN = 0;
}


/**
* 发送字符串到LCD
*/
void write_zfc(uchar *p)//定义一个带指针的函数?(字符串)
{
        while(*p!=0)//不能用";"
        w_dat(*p++);
}


/**
* 初始化1602
*/
void Init_LCD1602(void)
{
        w_cmd(0x38);  // 16*2显示,5*7点阵,8位数据接口
        w_cmd(0x0C);  // 显示器开、光标开、光标允许闪烁
        w_cmd(0x06);  // 文字不动,光标自动右移
        w_cmd(0x01);  // 清屏
        
}


void main()
{


        
        
TMOD=0x01; //设置定时器0为工作方式1(0000 0001)
TH0=(65536-50000)/256;     
TL0=(65536-50000)%256;
EA=1;
ET0=1;
EX0=1;
EX1=1;
TR0=1;
        
        delayms(15);
        
      ET0=0;
      PCON=0x02; //(或PCON=0x01;)        
        
        
while(1)
{

         delayms(15);
         
   if(k1==0)//进入空闲或休眠模式
         {        
               
         while(!k1);
   {         
                led=~led;//
                delayms(50);           
                 if(led==0)
                 {        


                 delayms(3);           
                 led=0;
                 }        
     else         
                 {         
                  ET0=0;
      PCON=0x02; //(或PCON=0x01;)         
                 }         

   }
}
}
}
void ex_int0() interrupt 0//外部中断P3.2 进行PCON=0;唤醒单片机        CPU
{
PCON=0;
ET0=1;        
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

 楼主| 冰冰洁洁 发表于 2019-1-19 20:41 | 显示全部楼层
工程文件

STC89休眠模式单按键手电筒OK.zip

35.99 KB, 下载次数: 12, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机教程网

快速回复 返回顶部 返回列表