已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
转帖手电论坛littleboy: atiny13+AN9926,10段可调带闪,电池电压检测,电池电压检测XXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXp?tid=34562&highlight=tiny13
ourdev_564361LVAUQN.jpg
程序如下:

#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include <avr/delay.h>  
#include <avr/eeprom.h>

#define key1 PB1
#define key2 PB4

#define set_led_ddrDDRB|=_BV(PB0)
#define clr_led_ddrDDRB&=~_BV(PB0)
#define led_offPORTB&=~_BV(PB0)
#define led_onPORTB|=_BV(PB0)

#define uchar unsigned char
#define uint unsigned int
#define uint8 uint8_t

/* 定义全局变量 */
int light=205;
int inter_count=0;
uchar adc_val;
uint8 power=0,cpu_sta=0x20,flash_sign=0,flash_count=0;

//********** 按键检测 *******************

void check_key(void)
{
if(!(PINB&0X10))
{
power=0;
while(!(PINB&0X10)) ;//按住按键2s进入闪烁模式,以4Hz的频率闪烁
_delay_ms(5);
}
}

//****** 电池电压检测 *****************

void adc_check(void)
{
adc_val=ADCH;
if(adc_val<0x7A)  
{
light=0;
DDRB=0X00;
MCUCR=0X20;
inter_count=0;
PORTB=0X02;
}
}

//********** 开灯和关灯 **************

SIGNAL(SIG_INTERRUPT0)
{
inter_count++;
flash_sign=0;
flash_count=0;
if(inter_count==1)//开灯,配置寄存器
{
PORTB=0X13;
power=1;
cpu_sta=0;
set_led_ddr;
light=eeprom_read_byte(0);
_delay_ms(1);
OCR0A=light;//比较匹配值,ledl亮度
TCNT0=0;
TCCR0A=0Xc3;//比较匹配模式,快速PWM模式
TCCR0B=0X01;//64分频,输出频率f=70Hz
TIMSK0=0X02;//开比较匹配中断

ADMUX=0X63;
DIDR0=0X08;
ADCSRB=0X00;
ADCSRA=0Xe3;

while(!(PINB&0X02));
_delay_ms(20);
}
if(inter_count>=2)  
{
light+=30;
if(light>250) light=1;
while(!(PINB&0X02));
_delay_ms(5);
}
if(power==0)  
{
eeprom_write_byte(0,light);
_delay_ms(1);
cpu_sta=0x20;
clr_led_ddr;
led_off;
TCCR0B=0;
DDRB=0X00;
PORTB=0X02;
flash_count=0;
inter_count=0;
}
}

//*********** 电池电压检测 ***********

SIGNAL(SIG_OVERFLOW0)
{

if(ADCSRA&0X10) adc_check();
if(!(PINB&0X10))
{
flash_count++;
if(flash_count>254) flash_sign=1;
}
else ;

if(flash_sign==1)  
{
TCCR0B=0X04;
OCR0A=205;
}
else  
{
TCCR0B=0X01;
OCR0A=light;
}
}


//******* 主程序 **************
int main(void)
{
GIMSK=0X40;
PORTB=0x02;
CLKPR=0X80;
CLKPR=0X06;
eeprom_write_byte(0,light);
_delay_ms(1);
sei();
while(1)
{
check_key();
MCUCR=cpu_sta;
if(power==0) asm("sleep");
}
}


功能:按键1为开机加调光,关机时,按下按键1,灯亮,然后按按键1调节亮度,先由亮至暗,然后至亮,循环.

此时按下按键2,然后再按下按键1,关灯.关灯时记录上一次灯的亮度,开灯自动读取..

若在开灯后长按按键2,灯爆闪...频率大概是2Hz.爆闪时按下按键1关灯

功耗(用万用表测量的,不是很准确,不过差不了很远):关灯电流:170uA,按此计算,1天放电=170uA*24=4mAH,10天放电=4*10=40mAH

软件设定锂电保护电压是3.2V左右.档数由软件设定,可更改.. ourdev_564362BU0F1U.jpg
+1  科创币    delete   2012-01-30   估计对DIY来说会比较蛋疼
+16  科创币    zhangv   2012-01-30   谢谢共享
+1  科创币    科技人生   2012-01-30   疼得要命
文号 / 360383

浪迹天涯
名片发私信
学术分 0
总主题 0 帖总回复 35 楼拥有证书:笔友
注册于 2012-01-29 07:21最后登录 2018-01-10 01:28
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步

个人简介

暂未填写
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
等待中...
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
处理中..
处理失败
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传,正在处理中
空空如也~
处理中...
处理失败
加载中...
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
插入公式
评论控制
加载中...
文号:{{pid}}
加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
ID: {{user.uid}}