手电大家谈-手电筒爱好者之家

 找回密码
 注册成为会员,享受更多功能。

QQ登录

只需一步,快速开始

只需一步,快速开始

搜索
查看: 4303|回复: 19

[原创]我设计的手电

[复制链接]

该用户从未签到

发表于 2007-5-20 12:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册成为会员,享受更多功能。

x
<p></p><p>用AVR tiny13作控制,亮度连续调节,oca0引脚输出PWM,NMOS管是手机电池保护板上的低电压导通NMOS,Vgs最高只有1.2V,电池用一个18650供电...</p><p>功能:初始时,MCU在掉电模式下工作,理论电流&lt;10uA,按下S1灯亮,然后案S1,S2分别降低和增加亮度,按住S1后2S关闭手电,按住S2后2S进入爆闪模式...MCU有自带AD,可检测电池电压,设定低于3.2V时自动关断..NMOS管有很多种,其导通电阻极低,只有30毫欧左右,8引脚,双NMOS...</p><p>最近忙于毕业设计,电路还没调试,懂AVR的朋友可以帮忙调试下,我将原程序贴上来...</p><p>调试工具GCC</p><p>功能可编程随意设定,因为按键只有2个,功能有限,要最大限度的利用...</p><p>#include &lt;avr/io.h&gt;<br />#include &lt;avr/signal.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/delay.h&gt; <br />#include &lt;avr/eeprom.h&gt;<br /><br />#define key1 PB1<br />#define key2 PB2<br />#define set_led_ddrDDRB|=_BV(PB0)<br />#define led_offPORTB&amp;=~_BV(PB0)<br />#define uchar unsigned char<br />#define uint unsigned int<br />#define uint8 uint8_t<br /><br />/* 定义全局变量 */<br />uchar cpu_state;//cpu状态变量<br />uchar light_sign;<br />uchar adc_val;<br />uint8 power=1,inter_count=0,power_sign=0,flash_sign=0;<br /><br />//********** 供电检测 ************<br />// 检测是否进入关机状态 <br />void power_check(void)<br />{<br />if(power==0)<br />{<br />cpu_state=0x30;<br />ADCSRA&amp;=~_BV(ADEN);<br />ADMUX&amp;=~_BV(REFS0);<br />PORTB=0X3F;<br />inter_count=0;<br />led_off;<br />eeprom_write_byte(0,light_sign);<br />}<br />}<br />//****** 电池电压检测 *****************<br />void adc_check(void)<br />{<br />adc_val=ADCH;<br />if(adc_val&lt;0x80) power=0;<br />}<br /><br />//********** 按键检测 *******************<br /><br />void check_key(void)<br />{<br />if(!(PINB&amp;0X04))<br />{<br />uint i;<br />light_sign+=5;<br />if(light_sign&gt;=206) light_sign=206;<br />while(!(PINB&amp;0X3B));//按住按键2s进入闪烁模式,以4Hz的频率闪烁<br />{<br />for(i=0;i&lt;100;i++) _delay_ms(20);<br />flash_sign=1;<br />}<br />}<br />}</p><p>//******* 主程序 **************<br />int main(void)<br />{<br />MCUCR=0X30;//配置CPU状态<br />GIMSK=0X40;//使能休眠<br />TCCR0A=0XC3;//比较匹配模式,快速PWM模式<br />TCNT0=155;//计数值<br />TIMSK0=0X04;//开比较匹配中断<br />cpu_state=0x30;//CPU状态,进入掉电模式<br />PORTB=0X3e;//配置端口<br />eeprom_write_byte(0,186);<br />while(1)<br />{<br />MCUCR=cpu_state;<br />asm("sleep");//掉电模式,最大节省电能<br />check_key();<br />}<br />}<br /><br />//********** 开灯和关灯 **************<br /><br />SIGNAL(SIG_INTERRUPT0)<br />{<br />inter_count++;<br />if(inter_count==1)//开灯,配置寄存器<br />{<br />cpu_state=0x00;<br />inter_count++;<br />PORTB=0X3F;<br />set_led_ddr;<br />light_sign=eeprom_read_byte(0);<br />OCR0A=light_sign;//比较匹配值,ledl亮度<br />TCCR0B=0X0B;//64分频,输出频率f=70Hz<br />ADMUX=0X60;<br />DIDR0=0X20;<br />ADCSRB=0X00;<br />ADCSRA=0XC3;<br />while(!(PINB&amp;0X02));<br />_delay_ms(20);<br />}<br />if(inter_count&gt;=2) <br />{<br />uint8 i;<br />flash_sign=0;<br />light_sign-=5;<br />if(light_sign&lt;=156) light_sign=156;<br />while(!(PINB&amp;0X3D))<br />{<br />for(i=0;i&lt;100;i++) _delay_ms(25);<br />power=0;<br />}<br />}<br /><br />}<br /><br />//*********** 电池电压检测 ***********<br /><br />SIGNAL(SIG_OUTPUT_COMPARE0A)<br />{<br />power_check();<br />if(ADCSRA&amp;0X10) adc_check();<br />if(flash_sign==0)<br />{<br />TCCR0B=0X0B;<br />TCNT0=155;<br />OCR0A=light_sign;<br />}<br />else <br />{<br />TCCR0B=0X0D;<br />TCNT0=155;<br />OCR0A=205;<br />}<br />}<br /></p>

[原创]我设计的手电

[原创]我设计的手电
<br />

[原创]我设计的手电

[原创]我设计的手电
<br />
回复 dsu_marcocopyright:copyright

使用道具 举报

该用户从未签到

 楼主| 发表于 2007-5-20 12:23 | 显示全部楼层
说明得不是那么清楚..还有NMOS和tiny13的资料太大了,上传不了,有需要的朋友联系我..
回复

使用道具 举报

该用户从未签到

发表于 2007-5-20 12:59 | 显示全部楼层
嗯,喜欢C。至少我看得懂。
回复

使用道具 举报

该用户从未签到

发表于 2007-5-20 13:00 | 显示全部楼层
[em05]注释还不够多。按照军标要求,软件注释行数至少要达到1/3。
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2007-5-20 17:05 | 显示全部楼层
楼上的...嗳,我是个业余的,非专业人士...如有需要,我再注释得详细点...其实算多了,要是我自己用的东西,基本不加注释.
回复

使用道具 举报

该用户从未签到

发表于 2007-5-21 14:39 | 显示全部楼层
请问ATTiny13的封装从哪来的啊?我的DXP里面没有。。。
回复

使用道具 举报

头像被屏蔽
  • TA的每日心情
    慵懒
    2015-2-11 10:22
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2007-5-21 15:40 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复

    使用道具 举报

    头像被屏蔽
  • TA的每日心情
    慵懒
    2015-2-11 10:22
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2007-5-21 15:43 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2007-5-22 09:49 | 显示全部楼层
    <p>封装是自己改的,用tiny15的封装改一下就可以了...</p><p>都是自己画的图...</p><p>汇编写程序没c那么方便,51我是用汇编的,慢慢发现算法非常不方便啊,改了用c,代码量也不是很大..编译后才占63%的存储空间,够用了..</p>
    回复

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2007-5-23 18:37 | 显示全部楼层
    <p>没人帮顶...看来我的东西不怎么受欢迎,还是留着自己用了</p>[em11]
    回复

    使用道具 举报

    该用户从未签到

    发表于 2007-5-23 18:49 | 显示全部楼层
    C是看得懂,电路不懂!!
    回复

    使用道具 举报

    该用户从未签到

    发表于 2007-5-24 13:58 | 显示全部楼层
    真是高手啊!
    回复

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2007-5-27 22:45 | 显示全部楼层
    顶上去,帖子都在一起,看的方便点...
    回复

    使用道具 举报

    该用户从未签到

    发表于 2007-5-29 21:02 | 显示全部楼层

    两个建议

    <p>define改成typedef或者static const ,好的编程习惯</p><p>电压检测改成施密特触发器式的,不然电压在临界点变化时会不稳定,特别时电源没有大电容做缓冲的时候</p><p>程序没仔细看随便说说</p>[em05]
    回复

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2007-5-30 19:31 | 显示全部楼层
    <div class="quote"><b>以下是引用<i>woyaya</i>在2007-05-29 21:02:10的发言:</b><br /><p>define改成typedef或者static const ,好的编程习惯</p><p>电压检测改成施密特触发器式的,不然电压在临界点变化时会不稳定,特别时电源没有大电容做缓冲的时候</p><p>程序没仔细看随便说说</p>[em05]</div><p>呵呵...这个是单片机编程,跟系统软件编程是有很大的不同的,在编译软件typede和const都是定义字符数组用的,而定义端口多是使用define. </p><p>这是单锂电18650供电的手电,使用电流最大为300mA,电压检测使用内部一个定时器扫描,连续扫描模式,并没有兄弟你说的施密特触发器模式,以18650放电5小时计算,电池电压从4.2V降至3.1V用5小时,平均降压为1.1V/(5*60min)=0.004V/min,AD的扫描速度为10次/S以上,压降速率极低,对于AD扫描的影响是可以忽略的.也不需要大的电容做缓冲,我已经测试过两次了,4.12V开始放电,自动关灯后立即用万用表测试,3.13V,在次过程中完全没有任何不稳定的现象.万用表电流档测试,最高电压是放电电流只有170ma左右,结果非常令人满意的是,我以最亮档连续放电,竟然可长达8小时多(我不知电池的容量,3块钱在广州陶街拣的二手18650),充电器是三星手机的原装座充改过来的,很好用,</p><p>这是手电的图片</p>

    以下是引用woyaya在20

    以下是引用woyaya在20
    <br />
    回复

    使用道具 举报

    该用户从未签到

    发表于 2007-6-1 20:29 | 显示全部楼层
    <p>我只能说你强!</p><p>另外,不知道170ma的是什么亮度</p><p></p>
    回复

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2007-6-1 23:09 | 显示全部楼层
    <p>呵呵~在宿舍用是够了,不是野外用的~~</p>
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-9-26 00:08
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    发表于 2007-6-2 09:59 | 显示全部楼层
    <p>都比我强 啊啊</p>
    回复

    使用道具 举报

    该用户从未签到

     楼主| 发表于 2007-6-3 22:51 | 显示全部楼层
    <div class="quote"><b>以下是引用<i>lshyd</i>在2007-06-02 09:59:00的发言:</b><br /><p>都比我强 啊啊</p></div><p>呵呵~~最新更新的电路,改为1个按键了,功能不减 </p><p>&nbsp; </p><p>功能说明: <font color="#ee1169">关灯时</font>,按一下按键,开灯常亮,,按一下按键,灯由亮至暗循环改变,在开灯后长按按键2S后自动关灯. </p><p>若关灯时长按按键,则进入闪烁模式,灯以0.5Hz频率闪烁,此时再按一下按键,则关灯.</p>

    以下是引用lshyd在200

    以下是引用lshyd在200
    <br />
    回复

    使用道具 举报

    头像被屏蔽

    该用户从未签到

    发表于 2007-6-4 01:39 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复

    使用道具 举报

    本版积分规则

    小黑屋|手机版|Archiver|论坛自带搜索|下载论坛app|手电大家谈-手电筒爱好者之家 ( 备案序号:鲁ICP备05002565号 )
    以上言论纯属个人观点,与手电大家谈立场无关。
    最佳浏览模式:1920*1080


    GMT+8, 2024-11-20 18:34 , Processed in 0.209867 second(s), 65 queries , Gzip On.

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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