电子生日蜡烛设计
最新光电式电子蜡烛课程设计说明书
光电式电子蜡烛课程设计说明书模拟电子技术课程设计说明书光电式电子蜡烛院、部:电气与信息工程学院学生姓名:指导教师:职称副教授专业:电子信息工程班级:学号:完成时间: 2016年6月《模拟电子技术》课程设计任务书学院:电气与信息工程学院《模拟电子技术》课程设计任务书学院:电气与信息工程学院摘要本次模电课程设计课题是光电式电子蜡烛,光电式电子蜡烛是一个模拟真实蜡烛的实验产品,传统蜡烛有各种缺陷,对大气造成污染且容易引起火灾,光电式电子蜡烛用电路来实现蜡烛的功能,利用火柴来点燃蜡烛,用嘴吹灭蜡烛,实现了无污染,无危害,而且随时可以开关,不会造成浪费。
设计的系统主要由传感器、放大电路、比较电路,驱动电路等模块组成,由光照光敏电阻仿真点蜡烛,风吹驻极体仿真吹蜡烛。
在软件设计上引入了状态机的思想,使程序结构清晰化。
电子蜡烛的工作原理,采用光敏管用火柴照亮下使发光管发光作为蜡烛,通过时基集成电路,继电器和吹气开关实现对发光管的控制,设计电路,选取元件并制作出器件,实现电子蜡烛功能。
关键词:继电器;吹气;光敏电阻目录1 概述 (1)2 设计方案的论证 (2)2.1 设计方案的比较 (2)2.2 设计方案的选择 (2)3 电路的设计 (3)3.1 总电路原理分析 (3)3.2 元器件的选择 (3)3.3 直流稳压电源的设计 (5)3.3.1 变压电路的选择 (5)3.3.2 整流电路的选择 (5)3.3.3 滤波电路的选择 (6)3.3.4 稳压电路的选择 (9)4 电路的制作与调试 (7)4.1 电路原理图 (7)4.2 电路仿真与调试 (8)4.2.1 电路仿真 (8)4.2.2 电路的调试 (9)4.3 直流稳压电源的调试 (10)5 设计总结与体会 (11)参考文献 (12)致谢 (13)附录一元件清单 (14)附录二电路原理图 (16)附录三电路PCB图 (17)附录四实物图 (18)1 概述原始时代的火把是蜡烛的起源。
基于单片机的光电式蜡烛设计..
天津职业技术师范大学本科生毕业设计光电蜡烛的设计The design of the electronic birthday candles专业班级:电信0901学生姓名:王瑶杰指导教师:葛颖(讲师)系别:电子工程学院2013年6月摘要随着快餐时代的到来,并且为了安全的考虑,就连生日蜡烛也由原来的实物蜡烛而演变为了现在的电子科技—光电蜡烛。
本文介绍的光电蜡烛,用打火机使“蜡烛”点亮;并响起生日歌,吹灭烛光时只需用嘴对准“蜡烛”吹一口气即可,与平常人们的习惯完全吻合。
本设计是基于STC89C51单片机的光电蜡烛,其特点就是以STC89C51为中心,根据火焰传感器所接收到的信号,通过STC89C51来使LED灯亮起,并且使蜂鸣器开始发音。
然后通过声音控制传感器所接收到的信号,使得LED灯熄灭,并伴随着蜂鸣器的关闭。
关键词:STC89C51;火焰传感器;蜂鸣器;声音检测传感器ABSTRACTWith the advent of the era of fast food, and for safety consideration, even birthday candles from real candles and evolution to now electronic science and technology, electronic birthday candles. In this paper, the electronic birthday candles, "candle lit with lighter; And sounded birthday song, blow out the candles with mouth alignment "candle" huff, perfectly match with ordinary people's habits.This design is based on the STC89C51 microcontroller electronic birthday candles, its characteristic is the STC89C51 as the center, according to the signal received by the flame sensor, by STC89C51 devices to make the LED light is lit up, and the buzzer sounds. Then through voice control signal received by the sensor, LED lights, and accompanied by the closing of the buzzer.Key Words:STC89C51; The flame sensor; buzzer; Voice detection sensor;目录[目录生成的操作:鼠标左击该段文字,选择菜单_插入->引用->索引与目录]1输入大标题 .................................................................................. 错误!未定义书签。
“能说会唱”的生日蜡烛——趣味科技小制作
“能说会唱”的生日蜡烛——趣味科技小制作每当为老人祝寿、为孩子过生日时,使用下面介绍的“能说会唱”的生日蜡烛,将会给家庭增添更多的欢乐气氛!当点燃蜡烛时,蜡烛底座内的电路便会发出“祝您生日快乐”的祝福语,随后奏响《生日歌》乐曲,反复循环,直到吹灭蜡烛为止。
弄懂工作原理“能说会唱”的生日蜡烛电路如图—1所示,它由光控电路、语音发生电路和音频功率放大电路等几部分组成。
其核心器件是内储“祝您生日快乐”语音声+《生日歌》乐曲的语音集成电路A。
图-1 “能说会唱”的生日蜡烛电路图平时,蜡烛未点燃,光敏三极管(也叫光电三极管)VT1因无火焰光照射而呈高电阻状态,与VT1发射极相接的语音集成电路A的触发端TG处于低电位,A内部电路不工作,功率放大三极管VT2截止,扬声器B无声。
当点燃蜡烛时,烛光通过裹在蜡烛芯线里的光导纤维传递到光敏三极管VT1的感光窗口,使VT1受光照而呈低电阻,语音集成电路A 的触发端TG获得高电平触发信号,其输出端OUT依次反复输出内储的语音和乐曲电信号,经晶体三极管VT2功率放大后,推动扬声器B 发声。
吹灭蜡烛,光敏三极管VT1失去光照而恢复高电阻状态,语音集成电路A亦失去触发信号,则扬声器B最多只播放一遍内储语音和乐曲声,便自动停止发声。
准备好元器件本制作共用了9个元器件,采购清单如表1所示。
表1 元器件清单制作与使用整个电路按照图—2所示,以语音集成电路A的小印制电路板为基板,全部焊装在蜡烛的底座腔内。
要求在合适部位为扬声器B开出释音孔;并且不让外界自然光线照射到光敏三极管VT1上。
蜡烛的烛光通过光导纤维传递到底座腔内的光敏三极管VT1上。
光导纤维选用φ1mm、长度大于蜡烛长度约30mm的产品,将它与蜡烛芯线绞在一起浇注在工艺蜡烛中,要求蜡烛插放到底座上以后,光导纤维的尾端必须对准光敏三极管VT1,使传递来的光束刚好直射到VT1顶部感光窗口处。
图-2 “能说会唱”的生日蜡烛接线图因整个电路平时耗电甚微(实测静态总电流<5μA),几乎与电池的自然损耗一样,故无需另设电源开关。
模拟电子生日蜡烛课程设计
模拟电子生日蜡烛课程设计一、课程目标知识目标:1. 学生能理解电路的基本原理,掌握模拟电子生日蜡烛电路的组成及工作原理。
2. 学生能够运用所学知识,分析并解释模拟电子生日蜡烛电路中各个元件的作用及其相互关系。
3. 学生了解模拟电子生日蜡烛电路的设计过程,掌握相关电子元件的连接方法。
技能目标:1. 学生能够独立完成模拟电子生日蜡烛电路的搭建,培养动手操作能力。
2. 学生通过实际操作,提高问题解决能力和团队协作能力。
3. 学生能够运用所学知识,对模拟电子生日蜡烛电路进行优化和改进。
情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发创新意识和探索精神。
2. 学生在课程学习中,树立正确的价值观,认识到科学技术对社会和生活的积极作用。
3. 学生在团队协作中,学会尊重他人,培养良好的沟通能力和合作精神。
分析课程性质、学生特点和教学要求,本课程以实践性、创新性和趣味性为特点,针对六年级学生,注重激发学生的兴趣和动手能力。
通过课程学习,使学生将所学知识与实际应用相结合,提高学生的综合素质。
课程目标分解为具体的学习成果,以便后续的教学设计和评估。
二、教学内容本课程依据课程目标,选择以下教学内容:1. 电路基础知识:电路的组成、电路图的认识、基本电路元件(如电阻、电容、二极管等)的作用。
- 教材章节:第二章“电路的基础知识”2. 模拟电子生日蜡烛电路原理:介绍模拟电子蜡烛的工作原理,分析电路中各个元件的功能及相互关系。
- 教材章节:第三章“模拟电路”3. 实践操作:学生分组进行模拟电子生日蜡烛电路的搭建,学习电子元件的连接方法,掌握电路调试技巧。
- 教材章节:第四章“实践操作”4. 电路优化与改进:针对模拟电子生日蜡烛电路,引导学生思考如何优化电路性能,提高蜡烛的仿真效果。
- 教材章节:第五章“电路优化与改进”教学内容安排和进度:1. 课前准备:预习电路基础知识,了解基本电路元件。
2. 课堂教学:讲解模拟电子生日蜡烛电路原理,示范电路搭建方法。
基于单片机的生日蜡烛设计
天津职业技术师范大学Tianjin University of Technology and Education毕业设计专业:电子信息工程班级学号: 0901-07学生姓名:王瑶杰指导教师:葛颖(讲师)二○一三年六月天津职业技术师范大学本科生毕业设计电子生日蜡烛的设计The design of the electronic birthday candles专业班级:电信0901学生姓名:王瑶杰指导教师:葛颖(讲师)系别:电子工程学院2013年6月摘要随着快餐时代的到来,并且为了安全的考虑,就连生日蜡烛也由原来的实物蜡烛而演变为了现在的电子科技—电子生日蜡烛。
本文介绍的电子生日蜡烛,用打火机使“蜡烛”点亮;并响起生日歌,吹灭烛光时只需用嘴对准“蜡烛”吹一口气即可,与平常人们的习惯完全吻合。
本设计是基于AT89S52单片机的电子生日蜡烛,其特点就是以AT89S52为中心,根据火焰传感器所接收到的信号,通过AT89S52来使LED灯亮起,并且使蜂鸣器开始发音。
然后通过声音控制传感器所接收到的信号,使得LED灯熄灭,并伴随着蜂鸣器的关闭。
关键词:AT89S52;火焰传感器;蜂鸣器;声音检测传感器ABSTRACTWith the advent of the era of fast food, and for safety consideration, even birthday candles from real candles and evolution to now electronic science and technology, electronic birthday candles. In this paper, the electronic birthday candles, "candle lit with lighter; And sounded birthday song, blow out the candles with mouth alignment "candle" huff, perfectly match with ordinary people's habits.This design is based on the AT89S52 microcontroller electronic birthday candles, its characteristic is the AT89S52 as the center, according to the signal received by the flame sensor, by AT89S52 devices to make the LED light is lit up, and the buzzer sounds. Then through voice control signal received by the sensor, LED lights, and accompanied by the closing of the buzzer.Key Words:AT89S52; The flame sensor; buzzer; Voice detection sensor;目录[目录生成的操作:鼠标左击该段文字,选择菜单_插入->引用->索引与目录]1输入大标题 .................................................................................. 错误!未定义书签。
电子蜡烛制作
精品课件!
精品课件!
按照电阻阻值的进位率,240000 Ω=240K Ω(千欧); 第5环是什么意思? ——那是表示电阻误差的标记,棕色代表“1”,也就是说这种电阻的误差是±1% 例2:
橙橙黑金棕
前三环表示330,第四环银色是0.01,表示小数点向前移动两位,得到3.3,这个 电阻的阻值就是3.3Ω。 例3:
红 红黑银 棕 (你如果想知道色环的含义请阅读最后的附录)
电阻和正极的连接
3、单向可控硅基本性能
顾名思义,“单向”就是只允许直流电正向通过,“可控”的意思就是 对电流开通还是切断是可以控制的;至于“硅”是指元件芯片所用材料。 三极的功能: A极:直流电源正极输入 K极:直流电源电流输出 G极:控制极,给它加一定正电压就能使可控硅导通;但是,G极不能
R 2.2Ω
S2 风动开关
SCR 单向可控硅
S1 按钮开关
4.5V 电池组
LED 发光二极管
原理图
电池盒
R 2.2 电阻
LED 发光二极管
SCR 单向可控硅
S2 风动开关
蜡烛底座
S1 按钮开关
安装图
1、电池盒
正极
负极
正极 定位螺丝
螺孔板 负极
2、电阻R
电源正极引线剪短后 剥去1厘米绝缘外套
电阻上的色环标记
棕 红 橙 黄 绿 蓝 紫 灰 白 黑金银
1 2 3 4 5 6 7 8 9 0 0.01 0.1 举例说明:
红黄黑橙棕
第1环:红色,代表数字“2” 第2环:黄色,代表数字“4” 第3环:黑色,代表数字“0”
以上三环结合起来代表数字“240” 而第4环则代表“240”后面应添加的“0”的个数,上例中第4环是“橙色”, 代表3,于是应在后面添加3个“0”,就是:240000,单位默认欧姆, 所以这个电阻的阻值是240000 Ω。
电子生日蜡烛设计报告
电子生日蜡烛设计报告1. 引言生日蜡烛是生日庆祝活动中不可或缺的元素之一。
传统蜡烛需要点火,但其火焰容易造成火灾危险。
为了解决这个问题,我们设计了一款电子生日蜡烛,不仅具备传统蜡烛的功能,而且更加安全与实用。
2. 设计思路2.1. 安全性传统蜡烛需要使用明火点燃,存在火灾风险。
因此,我们的设计中完全去除了明火,采用了电子发光元件来模拟蜡烛火焰效果,消除了火灾隐患,提高了安全性。
2.2. 可重复使用传统蜡烛在点燃一次后就会燃尽,无法重复使用。
而我们的电子生日蜡烛采用充电设计,能够多次使用,节约了资源,也更加环保。
2.3. 省电设计电子生日蜡烛采用了低功耗的发光二极管(LED)作为发光元件,相比传统蜡烛能够极大的降低能源消耗,延长发光时间,提高了蜡烛的使用寿命。
2.4. 多种模式可选为了增加趣味性,我们的电子生日蜡烛设计了多种模式可选。
除了常规的闪烁模式外,还可以选择呼吸灯模式、彩虹灯模式等,满足不同用户的个性化需求。
3. 技术实现3.1. 硬件设计电子生日蜡烛的硬件主要包括电路板、发光二极管(LED)、充电电池和控制器。
电路板负责连接各个部件,发光二极管用于模拟蜡烛的火焰效果,充电电池提供电源,控制器实现模式切换和亮度调节等功能。
3.2. 软件设计电子生日蜡烛的软件设计主要包括模式切换、亮度调节和充电控制。
通过在控制器中编写相应的代码,实现通过按钮切换不同的模式,通过旋钮调节亮度,以及通过充电控制电路对电池进行充电管理,保证蜡烛的正常使用。
4. 测试结果我们对设计的电子生日蜡烛进行了测试,并取得了以下结果:- 安全性:电子生日蜡烛完全去除明火,不需要点火,避免了火灾风险,具备较高的安全性。
- 可重复使用:电子生日蜡烛采用充电设计,不用担心燃烧完毕而无法再次使用。
- 省电设计:电子生日蜡烛采用低功耗LED,能够延长发光时间,提高使用寿命。
- 多种模式可选:电子生日蜡烛提供多种模式选择,增加了趣味性和个性化。
基于LED的电子生日蜡烛电路设计
基于LED的电子生日蜡烛电路设计
这个电路产生了一套基于LED的电子生日蜡烛。
这种蜡烛与吹灭蜡制蜡烛一样具有相同的乐趣,并且它是可重复利用的,可改进的以及环保的。
该电路采用一个热传感器使温度高于周围的温度。
当你对传感器吹气时,其电阻发生了改变。
电路探测到这种改变后会关闭八个LED。
当你停止吹气时,除了一个外所有的LED都会亮起。
你每吹过一次传感器就会进行一个这样的循环,直到八次后所有的LED关闭。
这个“吹气传感器”由一个47-0,1/4-W加热电阻和一个180-0 NTC热敏电阻相连组成。
为了与电阻相连,要刮掉热敏电阻的一个引脚的漆料,从而露出金属接触。
然后切断电阻顶部附近的一个引脚。
刮掉电阻顶部的漆料,露出其金属表面。
然后将电阻与露出的热敏电阻接触焊接起来。
焊接保证了器件之间稳固的热连接。
当加热电阻加上电压后,热敏电阻的温度升高,其电阻值下降。
如果你对该传感器吹气,使它冷却下来,其电阻值会上升。
因此,这个传感器能探测到吹过它的空气。
这个电路的运行电压为6V,可采用四节AA电池或者可充电的铅酸蓄电池。
省去了用一个连接电源的主电路来进行安全保护。
吹气传感器包括加热。
模拟电子蜡烛课程设计书
模拟电子蜡烛课程设计书一、课程目标知识目标:1. 让学生掌握模拟电子蜡烛的基本工作原理,理解电路组成及各部分功能。
2. 使学生了解模拟电子蜡烛电路中所用到的电子元件,如电阻、电容、二极管、三极管等,并掌握其作用。
3. 帮助学生掌握模拟电子蜡烛电路图的识图方法。
技能目标:1. 培养学生动手搭建模拟电子蜡烛电路的能力,提高实践操作技能。
2. 培养学生运用所学知识解决实际问题的能力,能够分析和调试电路故障。
情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发创新意识和探索精神。
2. 培养学生合作交流、分享成果的良好品质,增强团队协作意识。
3. 培养学生关注环保,认识到节能环保的重要性。
课程性质:本课程为实践性较强的课程,结合理论知识,让学生在实践中掌握电子技术的基本原理。
学生特点:六年级学生具有较强的动手能力和好奇心,对新鲜事物感兴趣,但理论知识掌握程度有限。
教学要求:结合学生特点,注重理论与实践相结合,以学生为主体,充分调动学生的积极性,引导他们主动探究、动手实践,培养解决问题的能力。
教学过程中,注重分层教学,关注每一个学生的成长。
通过课程学习,使学生在知识与技能、过程与方法、情感态度价值观等方面取得具体的学习成果。
二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. 模拟电子蜡烛基本原理- 介绍模拟电子蜡烛的工作原理,分析电路组成及各部分功能。
- 教材章节:第二章第三节“模拟电子蜡烛的基本原理”2. 电子元件及其作用- 讲解模拟电子蜡烛电路中所用到的电子元件,如电阻、电容、二极管、三极管等,并介绍其作用。
- 教材章节:第三章“常用电子元件及其特性”3. 电路图识图方法- 培养学生识图能力,通过分析模拟电子蜡烛电路图,让学生掌握电路图的识图方法。
- 教材章节:第四章第一节“电路图的识别与绘制”4. 搭建模拟电子蜡烛电路- 指导学生动手搭建模拟电子蜡烛电路,提高实践操作技能。
- 教材章节:第五章“模拟电子蜡烛电路制作与调试”5. 电路故障分析与调试- 培养学生运用所学知识解决实际问题的能力,分析和调试电路故障。
电子蜡烛课程设计
电子蜡烛课程设计一、课程目标知识目标:1. 学生能够理解电子蜡烛的基本原理,掌握其电路组成及功能。
2. 学生能够描述电子蜡烛与传统蜡烛的优缺点,并列举其在生活中的应用。
3. 学生能够解释欧姆定律在电子蜡烛电路中的应用。
技能目标:1. 学生能够运用所学知识,独立完成电子蜡烛电路的搭建和调试。
2. 学生能够运用科学方法,对电子蜡烛电路进行故障排查和改进。
3. 学生能够通过小组合作,进行电子蜡烛的设计与制作,提高实践操作能力。
情感态度价值观目标:1. 学生能够培养对科学实验的兴趣和热情,激发探索精神和创新意识。
2. 学生能够养成合作、分享、尊重他人意见的良好品质,形成团队意识。
3. 学生能够关注环保,认识到节能减排的重要性,培养节能环保意识。
课程性质:本课程为科学实验课,以实践操作为主,注重学生的动手能力和创新能力。
学生特点:五年级学生具有一定的科学知识和动手能力,好奇心强,喜欢探索新事物。
教学要求:结合学生特点,采用启发式、探究式教学,引导学生主动参与,培养其科学素养和创新能力。
在教学过程中,注重理论与实践相结合,关注学生的个性差异,鼓励学生积极思考,勇于实践。
通过课程学习,使学生能够达到上述课程目标,提高综合运用知识的能力。
二、教学内容本课程依据课程目标,结合课本内容,制定以下教学大纲:1. 电子蜡烛基本原理及电路组成- 介绍电子蜡烛的原理,对比传统蜡烛。
- 分析电子蜡烛电路的组成部分,包括电源、控制电路、LED灯等。
2. 欧姆定律的应用- 讲解欧姆定律的基本概念。
- 结合电子蜡烛电路,说明欧姆定律在实际应用中的作用。
3. 电子蜡烛的制作与调试- 介绍制作电子蜡烛的步骤和方法。
- 引导学生进行电路搭建,调试电子蜡烛。
4. 故障排查与改进- 讲解常见故障的排查方法。
- 引导学生针对问题进行改进,优化电子蜡烛电路。
5. 电子蜡烛的设计与应用- 讨论电子蜡烛的设计方案,培养学生的创新能力。
- 探讨电子蜡烛在生活中的应用,如节日装饰、户外活动等。
项目2电子生日蜡烛控制电路
项目2电子生日蜡烛控制电路项目二电子生日蜡烛控制电路模拟电子技术项目化教程项目概述无论在工农业生产,还是在日常生活中,经常需要将微弱的非电信号转换成成较大的电信号,以推动设备进行工作。
例如:声音通过话筒转换成的信号电压往往在几十毫伏以下,它不可能使扬声器发出足够音量的声音;而从天线接收下来的无线电信号电压更小,只有微伏数量级。
因此信号放大电路是电路系统中最基本的电路,应用十分广泛。
控制电路在实际应用中非常普遍,本项目选择制作一款简易的电子生日蜡烛控制电路,该电路主要依靠三极管的放大、开关作用实现电路功能。
项目引导教学目的:1.半导体三极管的结构、图形符号、特性曲线、主要参数及三极管的工作原理。
2.半导体三极管管型号命名方法、管脚识别方法。
3.放大电路的基本概念、一般组成、其性能指标和工作原理。
4.多级放大器的级间耦合方式、性能特点及放大电路的频率特性。
5.电路仿真软件Multisim的熟练使用,仿真电路的连接与调试。
6.电路装配与调试;仪器仪表的使用方法。
7.电路常见故障排查。
项目引导项目要求:1.工作任务:电子生日蜡烛控制电路的设计、制作与调试2.电路功能:当用火给热敏器件加热,点亮LED,并使得音乐IC演奏乐曲;当嘴对着MIC 吹气时,LED 断电熄灭,音乐IC 也断电停止播放音乐。
项目引导参考电路:项目引导项目咨询:任务1:认识半导体三极管2.1.1 三极管的结构与类型1.三极管的分类(1)按结构(导电类型)划分:NPN和PNP。
(2)按所用半导体材料划分:硅管和锗管。
(3)按用途划分:放大管和开关管。
(4)按工作频率划分:低频管和高频管。
(5)按功率大小划分:小功率管、中功率管、大功率管。
2.三极管的结构、电路符号三极管结构与符号如图所示。
它们有三区:集电区、基区、发射区;三极:各对应引出的电极分别称为集电极c(Collector)、基极b(Base)和发射极e(Emitter);两结:发射区与基区之间的PN结称为发射结Je,基区与集电区之间的PN结称为集电结Jc。
电子生日蜡烛的制作
这是一个模拟真实蜡烛的实验产品,用开关点亮,用嘴吹灭。
点亮时同时播放“祝你生日快”乐曲,吹灭时乐曲停止播放。
趣味性很强
工作原理:如上图所示,用微型MIC(驻极体话筒)做灯芯(实现用嘴吹灭),数只红色LED围绕在灯芯周围,点亮时即是烛光。
数只各种颜色的LED排列在烛光灯下面点亮时增添色彩。
其工作原理简述如下:
1. 按点式开关联通电路,Q4集电极电压降低——Q3基极电压降低——Q3集电极电压升高——Q4集电极电压也升高——Q4集电极电压进一步降低电路发生翻转,Q3截止,Q4饱和,Q4集电极输出低电平使Q5饱和导通,LED得电发光,同时音乐IC也得电开始演奏“祝你生日快乐”乐曲;
2. 用嘴吹灭:当嘴对这MIC吹起时,MIC感应出的电信号经Q1 Q2放大后,由二极管D1整流为正脉冲加至Q3基极,Q3基极电压升高——Q3集电极电压降低——Q4基极电压也降低——Q4集电极电压升高——Q4基极电压进一步升高,双稳电路再一次发生翻转,Q3饱和,Q4截止,Q4集电极输出高电使Q5截止,LED断电熄灭,音乐IC也断电停止播放音乐。
优点和用途:此款电子生日蜡烛结构简单、使用方便、安全、效果明显,而且无需点火,不产生任何污染是一款真正环保的生日蜡烛,它的使用能为你的生日增添喜庆气氛。
ATtniy单片机电子蜡烛.
ATtiny单片机电子蜡烛,ATtiny candle关键字:ATTINY85,电子蜡烛电路想想当你好不容易跟女朋友共度烛光晚餐,却因为蜡烛点没了或打翻着火了,那是一件多么坑爹的事啊!今天为你分享一款自己diy的超自然的烛光蜡烛。
ATtiny 电子蜡烛,皮特•米尔斯开发这个伟大的蜡烛,正如我们图片所见到的一样,但怎样让这蜡烛的光芒像传统的蜡烛一样闪烁呢。
皮特使用一个高亮的LED和一些模拟的辅助软件,这样就使得ATtiny 电子蜡烛的烛光和传统蜡烛拥有一样的闪烁的烛光,并且优于传统蜡烛,因为它不伴有明火的危险。
ATtiny 电子蜡烛最难的部分就闪烁神态逼真,所以皮特做了一个蜡烛光检测电阻( LDR )和固定电阻作为一个分压器。
这是作为ATTINY85 ADC之中的一个输入端,并离散时间间隔的进行采样。
采样速率为100毫秒。
然后将采集的8bit的电频值存储到EEPROM中,以便记录蜡烛的闪烁图谱,驱动将其连接的LED、PWM形成通路。
在用三节干电池供电。
最后您只需编程程序,然后通过开关进行控制。
下面是ATtiny 电子蜡烛的电路图下面是程序的代码以及写入EEPROM的数据view plainprint?/*Program Description: This program reads a light detecting resistor thru an internal ADC and stores the value,after scaling it, to eeprom. This ADC value is sent to a PWM channel with attached led. This is essentially a data loggerfor light and replay by LED. If, if you aim the LDR at a flickering candle during its recording phase, you have a flickeringled candle.A circuit description and other details can be found atFilename: ATTiny_Candle_v1.0.cAuthor: Pete MillsInt. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms *///********** Includes **********#include#include#include//********** Definitions **********// LED for flame simulation#define LED PB0#define LED_PORT PORTB#define LED_DDR DDRB// Light Detecting Resistor for recording a live flame#define LDR PINB3#define LDR_PORT PINB#define LDR_DDR DDRB// Tactile Switch Input#define SW1 PINB4#define SW1_PORT PINB#define SW1_DDR DDRB#define ARRAY_SIZE 500 // size of the flicker array#define SAMPLE_RATE 100 // ms delay for collecting and reproducing the flicker//********** Function Prototypes **********void setup(void);void toggle_led(void);void program_flicker(void);void led_alert(void);void eeprom_save_array(void);void eeprom_read_array(void);void scale_array(void);uint8_t get_adc(void);uint8_t scale( uint8_t input, uint8_t inp_low, uint8_t inp_hi, uint8_t outp_low, uint8_t outp_hi);uint8_t is_input_low(char port, char channel, uint8_t debounce_time, intinput_block);//********** Global Variables **********uint8_t flicker_array[ ARRAY_SIZE ] = { 0 };uint8_t EEMEM ee_flicker_array[ ARRAY_SIZE ] = { 0 };int main(void){uint16_t replay = 0;setup();eeprom_read_array();while(1){if( is_input_low( SW1_PORT, SW1, 25, 250 ) ){// program the flicker// after entering and upon completion, a predetermined flash pattern will occur as described in led_alert()// aim the ldr at a flickering candle or any other light source ( like a laser ) you want to record during this time// and upon completion the values are stored to eeprom. They are played back immediately as well// as being recalled from eeprom upon first start upled_alert();program_flicker();scale_array();eeprom_save_array();led_alert();}// replay the recorded flicker patternOCR0A = flicker_array[ replay ];++replay;if( replay >= ( ARRAY_SIZE - 13 ) ) // if the end of the stored array has been reached{replay = 0; // start again from the beginning//led_alert();}_delay_ms( SAMPLE_RATE );_delay_ms( 3 ); // ADC Conversion time}}//********** Functions **********void setup(void){//********* Port Config *********LED_DDR |= ( 1 << LED); // set PB0 to "1" for outputLED_PORT &= ~( 1 << LED ); // turn the led offLDR_DDR &= ~( 1 << LDR ); // set LDR pin to 0 for inputLDR_PORT |= ( 1 << LDR ); // write 1 to enable internal pullupSW1_DDR &= ~( 1 << SW1 ); // set sw1 pin to 0 for inputSW1_PORT |= ( 1 << SW1 ); // write a 1 to sw1 to enable the internal pullup//********** PWM Config *********TCCR0A |= ( ( 1 << COM0A1 ) | ( 1 << WGM01 ) | ( 1 << WGM00 ) ); // non inverting fast pwmTCCR0B |= ( 1 << CS00 ); // start the timer//********** ADC Config **********ADMUX |= ( ( 1 << ADLAR ) | ( 1 << MUX1 ) | ( 1 << MUX0 ) ); // left adjust and select ADC3ADCSRA |= ( ( 1 << ADEN ) | ( 1 << ADPS2 ) | ( 1 << ADPS1 ) ); // ADC enable and clock divide 8MHz by 64 for 125khz sample rateDIDR0 |= ( 1 << ADC3D ); // disable digital input on analog input channel to conserve power}void toggle_led(){LED_PORT ^= ( 1 << LED );}uint8_t is_input_low( char port, char channel, uint8_t debounce_time, intinput_block ){/*This function is for debouncing a switch inputDebounce time is a blocking interval to wait until the input is tested again. If the input tests low again, a delay equal to input_block is executed and the function returns ( 1 )*/if ( bit_is_clear( port, channel ) ){_delay_ms( debounce_time );if ( bit_is_clear( port, channel ) ){_delay_ms( input_block );return 1;}}return 0;}uint8_t get_adc(){ADCSRA |= ( 1 << ADSC ); // start the ADC Conversionwhile( ADCSRA & ( 1 << ADSC )); // wait for the conversion to be complete return ~ADCH; // return the inverted 8-bit left adjusted adc val}void program_flicker(){// build the flicker arrayfor( int i = 0; i < ARRAY_SIZE; i++ ){flicker_array[ i ] = get_adc();_delay_ms( SAMPLE_RATE );}}void led_alert(){// this is a function to create a visual alert that an event has occured within the program// it toggles the led 10 times.for( int i = 0; i < 10; i++ ){OCR0A = 0;_delay_ms( 40 );OCR0A = 255;_delay_ms( 40 );}}void eeprom_save_array(){for( int i = 0; i < ARRAY_SIZE; i++ ){eeprom_write_byte( &ee_flicker_array[ i ], flicker_array[ i ] );}void eeprom_read_array(){for( int i = 0; i < ARRAY_SIZE; i++ ){flicker_array[ i ] = eeprom_read_byte( &ee_flicker_array[ i ] );}}uint8_t scale( uint8_t input, uint8_t inp_low, uint8_t inp_hi, uint8_t outp_low, uint8_t outp_hi){return ( ( ( input - inp_low ) * ( outp_hi - outp_low ) ) / ( ( inp_hi - inp_low ) + outp_low ) );}void scale_array(){uint8_t arr_min = 255;uint8_t arr_max = 0;uint8_t out_low = 20;uint8_t out_high = 255;// find the min and max valuesfor( int i = 0; i < ARRAY_SIZE; i++ ){if( flicker_array[ i ] < arr_min )arr_min = flicker_array[ i ];if( flicker_array[ i ] > arr_max )arr_max = flicker_array[ i ];}// now that we know the range, scale itfor( int i = 0; i < ARRAY_SIZE; i++ ){flicker_array[ i ] = scale( flicker_array[ i ], arr_min, arr_max, out_low, out_high );}} igh );}} igh );}}}}}}}} }} }} }}EEPROM数据:10000000777B7D7B78BA95535E3E3E4352353E7595:100010004B657B5263586B5562777287858C5D7A2E:10002000535D5062556F6758784E55956B6D7D7373:100030007D5B6B686A6A606B7777987A87605B6BC9:10004000534A5368453B65679C6067537375638A81:100050007F8388806358586B7A787B838A878A8508:1000600083888A8A8A8A8A8C8A8A8A8A8A88837F0B:100070007D7B7A78777570707270704D416D6860B5:1000800035353D3B4145525E41535D60656A5048A0:100090004B4E3535313333363B40504E525D605315:1000A000564B352D2E2E353838393B383158406077:1000B0004D505A5D434053585A554E31312B2E33D3:1000C0003136353638393938404A413B506240364E:1000D000292D455E5D523E333B433545383531333E:1000E00036363936383B4136363039332B29335A98:1000F0006356413D5052556065553B302E303B4E66:10010000362E2B3B393D4A503D45584E4B4E4A45C5:10011000584B555D5B56585E60775E385A52464B79:10012000504A4A354E412E363638524B463B3340C4:100130004E605A504D434A504B48403D4046525BFA:100140006263635B52465B43554526353B5B434DDB:100150004056585A5D50464545413B437287908A08:100160008F979D9573656B4D464555554156555531:10017000565A5A5B5E56625565585A62686D6D6B89:10018000686A6F656D316F55485055675A41555EC5:100190006065686863606A60676A7F838C8788923D:1001A0008D8F888C8C85826A4E35231119433B4193:1001B000674A4A3B2E3045414A5848705B6D72622F:1001C0007567565A5E554D77532D36415D55404003:1001D0004040403E415E82928888909488857B634F:1001E000555356555053550334013A7EFF01603E36:1001F0003E28018EFFFFFFFFFFFFFFFFFFFFFFFF16:00000001FF FFFFFFFFFFFFFFFF16:00000001FF :00000001FF :00000001FF :00000001FF :00000001FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF 0001FF 001FF 001FF 001FF 001FF 001FF 001FF 001FF 001FF 01FF 01FF 01FF 01FF 01FF 01FF 01FF 01FF 01FF F F F F F F F F F F F F F F F F F F。
电子蜡烛
综合实验报告课题名称:LED电子生日蜡烛学院:机械与汽车工程姓名:王少君班级:测控091引言21世纪是一个变幻莫测的世纪,是一个催人奋进的时代.科学技术的飞速发展,知识更新日新月异.希望,困惑,机遇,挑战,随时随地都有可能出现在每一个社会成员的生活之中.抓住机遇,寻求发展,迎接挑战,适应变化的制胜法宝就是学习一门科学技术。
随着IT信息时代的到来,也带动了电子产业高速的发展。
目前,电子信息技术已成为我国国民经济不可或缺的支柱产业的一部分,电子信息在社会的应用和普及率已被国际社会作为衡量一个国家智能化,数字化,网络化的重要标志目录一、设计要求 (4)二、元件清单 (4)三、硬件设计 (4)3.1、AT89C51简介 (4)3.2、发光二极管 (7)3.3、覆铜板 (9)3.4、温度传感器ds18b20 (9)四.电路设计 (9)4.1、时钟电路 (10)4.2、复位电路 (10)4.3、整体电路和PCB电路板 (11)五、程序清单 (13)六、小结 (18)七、参考文献 (19)4 一、设计要求这个电路产生了一套基于LED的电子生日蜡烛。
这种蜡烛与吹灭蜡制蜡烛一样具有相同的乐趣,并且它是可重复利用的,可改进的以及环保的。
该电路采用一个热传感器使温度高于周围的温度。
当你对传感器吹气时,其电阻发生了改变。
电路探测到这种改变后会关闭八个LED。
当你停止吹气时,除了一个外所有的LED都会亮起。
你每吹过一次传感器就会进行一个这样的循环,直到八次后所有的LED关闭。
二、元件清单电阻:0.5K*8,10K*1,1K*1 电容:22pF*2,20uF*1 晶振:12MHZ*1 单片机:STC89C52RC*1 发光二极管:红色*8 温度传感器:ds18b20*1 复位开关:1*1三、硬件设计3.1、AT89C51简介 AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。
LED电子生日蜡烛实验报告综述
综合实验报告课题名称:LED电子生日蜡烛学院:机械与汽车工程姓名:王少君班级:测控091引言21世纪是一个变幻莫测的世纪,是一个催人奋进的时代.科学技术的飞速发展,知识更新日新月异.希望,困惑,机遇,挑战,随时随地都有可能出现在每一个社会成员的生活之中.抓住机遇,寻求发展,迎接挑战,适应变化的制胜法宝就是学习一门科学技术。
随着IT信息时代的到来,也带动了电子产业高速的发展。
目前,电子信息技术已成为我国国民经济不可或缺的支柱产业的一部分,电子信息在社会的应用和普及率已被国际社会作为衡量一个国家智能化,数字化,网络化的重要标志。
目录一、设计要求 (4)二、元件清单 (4)三、硬件设计 (4)3.1、AT89C51简介 (4)3.2、发光二极管 (7)3.3、覆铜板 (9)3.4、温度传感器ds18b20 (9)四.电路设计 (9)4.1、时钟电路 (10)4.2、复位电路 (10)4.3、整体电路和PCB电路板 (11)五、程序清单 (13)六、小结 (18)七、参考文献 (19)一、设计要求这个电路产生了一套基于LED的电子生日蜡烛。
这种蜡烛与吹灭蜡制蜡烛一样具有相同的乐趣,并且它是可重复利用的,可改进的以及环保的。
该电路采用一个热传感器使温度高于周围的温度。
当你对传感器吹气时,其电阻发生了改变。
电路探测到这种改变后会关闭八个LED。
当你停止吹气时,除了一个外所有的LED都会亮起。
你每吹过一次传感器就会进行一个这样的循环,直到八次后所有的LED关闭。
二、元件清单电阻:0.5K*8,10K*1,1K*1电容:22pF*2,20uF*1晶振:12MHZ*1单片机:STC89C52RC*1发光二极管:红色*8温度传感器:ds18b20*1复位开关:1*1三、硬件设计3.1、AT89C51简介AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/********************************************************************************* 广西科技大学电气学院**--------------------------------------------------------------------------------* 实验名 : LCD1602显示试验* 实验说明 : LCD1602显示Pechin Science* 连接方式 : 见连接图* 注意 :*******************************************************************************/#include<reg51.h>#define uchar unsignedchar#define uint unsignedint/**********************************PIN口定义**********************************/#define LCD1602_DATAPINS P0sbit LCD1602_E = P2 ^ 7;sbit LCD1602_RW = P2 ^ 5;sbit LCD1602_RS = P2 ^ 6;sbit P1_0=P1^7; // 扬声器输出口#define key_p P3 //按键输入口int m,i=0;int tri;int l;int x=0,y=2;playc(char ch);char code toneh[14]={0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,};char code tonel[14]={0x22,0x56,0x85,0x9A,0xC1,0xE3,0x03,0x10,0x2B,0x42,0x4C,0x60,0x71,0x81};//歌曲乐谱char codesong1[]="222322113336622552223221133336622550531141255311432536653326425434332321034554330 217023443332";char codesong2[]="167176671111322225777711105666611667665555003111132222355531110566662661166550665 054667705111";char codesong3[]="356665533566655335544332230332133665511666615623000356663550000230232161250330334 332402230232";char code length[]="444444444444444422224422224422224444444444";/*在51单片机12MHZ时钟下的延时函数*/void Lcd1602_Delay1ms(uint c); //误差 0us/*LCD1602写入8位命令子函数*/void LcdWriteCom(uchar com);/*LCD1602写入8位数据子函数*/void LcdWriteData(uchar dat);/*LCD1602初始化子程序*/void LcdInit();/*显示行数子程序*/void DisplayOneChar(uchar x,uchar y, uchar ddata);/*显示函数子程序*/void display(uchar *ddata,x,y);/*按键控制函数子程序*/void key();//音乐部分void timer0(void) interrupt 1 using 1 //计时器1{P1_0=~P1_0;TH0=toneh[tri];TL0=tonel[tri];}void timer1(void) interrupt 3 using 3 //计时器2{TH1=0xCA;TL1=0xFE;m++;key();}/******************************************************************************* * 函数名 : Lcd1602_Delay1ms* 函数功能 : 延时函数,延时1ms* 输入 : c* 输出 : 无* 说名 : 该函数是在12MHZ晶振下,12分频单片机的延时。
*******************************************************************************/ int playc(char ch){int ti;switch(ch){case'q':ti=0;break;case'w':ti=1;break;case'e':ti=2;break;case'r':ti=3;break;case't':ti=4;break;case'y':ti=5;break;case'u':ti=6;break;case'1':ti=7;break;case'2':ti=8;break;case'3':ti=9;break;case'4':ti=10;break;case'5':ti=11;break;case'6':ti=12;break;case'7':ti=13;break;case' ':ti=50;break;default:ti=50;break;}if(ti==50)return (100);elsereturn ti;}/******************************************************************************* * 函数名 : Lcd1602_Delay1ms* 函数功能 : 延时函数,延时1ms* 输入 : c* 输出 : 无* 说名 : 该函数是在12MHZ晶振下,12分频单片机的延时。
*******************************************************************************/void Lcd1602_Delay1ms(uint c) //误差 0us{uchar a, b;for (; c>0; c--){for (b = 199; b>0; b--){for (a = 1; a>0; a--);}}}/******************************************************************************* * 函数名 : LcdWriteCom* 函数功能 : 向LCD写入一个字节的命令* 输入 : com* 输出 : 无*******************************************************************************/ void LcdWriteCom(uchar com) //写入命令{LCD1602_E = 0; //使能LCD1602_RS = 0; //选择发送命令LCD1602_RW = 0; //选择写入LCD1602_DATAPINS = com; //放入命令Lcd1602_Delay1ms(1); //等待数据稳定LCD1602_E = 1; //写入时序Lcd1602_Delay1ms(5); //保持时间LCD1602_E = 0;}/******************************************************************************* * 函数名 : LcdWriteData* 函数功能 : 向LCD写入一个字节的数据* 输入 : dat* 输出 : 无*******************************************************************************/ void LcdWriteData(uchar dat) //写入数据{LCD1602_E = 0; //使能清零LCD1602_RS = 1; //选择输入数据LCD1602_RW = 0; //选择写入LCD1602_DATAPINS = dat; //写入数据Lcd1602_Delay1ms(1);LCD1602_E = 1; //写入时序Lcd1602_Delay1ms(5); //保持时间LCD1602_E = 0;}/******************************************************************************* * 函数名 : LcdInit()* 函数功能 : 初始化LCD屏* 输入 : 无* 输出 : 无*******************************************************************************/ void LcdInit() //LCD初始化子程序{LcdWriteCom(0x38); //开显示LcdWriteCom(0x0c); //开显示不显示光标LcdWriteCom(0x01); //清屏LcdWriteCom(0x06); //写一个指针加1LcdWriteCom(0x80); //设置数据指针起点}/***************************************************************************** *函数名:DisplayOneChr(uchar x,uchar y, uchar ddata)*函数功能:显示行数的设定* 输入 : x,y ddata* 输出 : 无*******************************************************************************/void DisplayOneChar(uchar x,uchar y, uchar ddata){y&=1;x&=15;if(y)x|=0x40;x|=0x80;LcdWriteCom(x);LcdWriteData(ddata);}/***************************************************************************** *函数名:display(uchar *ddata,x,y)*函数功能:显示函数* 输入 : x,y *ddata* 输出 : 无*******************************************************************************/void display(uchar *ddata,x,y){uchar lis=0;y&=0x01;x&=0x0f;while(x<16){DisplayOneChar(x,y,ddata[lis]);lis++;x++;}}/******************************************************************************* * 函数名 : key()* 函数功能 : 按键控制函数* 输入 : 无* 输出 : 无*******************************************************************************/ void key(){uchar key1;key_p=0XFF;key1=key_p;if(key1!=0xFF){Lcd1602_Delay1ms(1);key_p=0xFF;key1=key_p;if(key1!=0xFF){key1=key_p;switch(key1){case 0xFE:x=1; break;case 0xFD:x=2; break;case 0xFB:x=3; break;case 0xF7:y=1; break;case 0xEF:y=~y; break;default : break;}}}}/******************************************************************************* * 函数名 : main* 函数功能 : 主函数* 输入 : 无* 输出 : 无*******************************************************************************/ void main(void){//--定变量--//uchar *s1,*s2,*s3,*h,*h1,*h2,*h3,*h4;//uchar z;uchar xi=16;m=0;TMOD=0x11;P1_0=0;TH0=toneh[0];TL0=tonel[0];TH1=0xCE;TL1=0xFE;IP=0x08;EA=1;LcdInit();s1=" I LOVE Chopin ";s2=" MY LOVE ";s3=" Without You ";h=" Hello Music ";h1=" Music 1: ";h2=" Music 2: ";h3=" Music 3: ";h4=" Music is OVER ";display(h,0,0) ;Lcd1602_Delay1ms(10);while(1){key();if(x==1) {display(h1,0,0);display(s1,0,1); }if(x==2) {x=2;display(h2,0,0);display(s2,0,1); } if(x==3) {display(h3,0,0);display(s3,0,1); }if(y==1){switch(x){case 1:for(i=0;i<93;i++){ET1=1; TR1=1;ET0=1; TR0=1;while(!y){P1_0=1;}xi=xi%16;display(s1,xi,1);xi--;tri=playc(song1[i]);l=length[i]-0x03;while(m<l);m=0;}TR0=0; TR1=0; P1_0=0; break;case 2:for(i=0;i<93;i++){ET1=1; TR1=1;ET0=1; TR0=1;while(!y){P1_0=0;}xi=xi%16;display(s2,xi,1);xi--;tri=playc(song2[i]);l=length[i]-0x03;while(m<l);m=0;}TR0=0; TR1=0; P1_0=0; break;case 3:for(i=0;i<93;i++){ET1=1; TR1=1;ET0=1; TR0=1;while(!y){P1_0=0;}xi=xi%16;display(s3,xi,1);xi--;tri=playc(song3[i]);l=length[i]-0x03;do{}while(m<l);m=0;}TR0=0; TR1=0; P1_0=0; break;default :break;}LcdWriteCom(0x01); //清屏display(h4,0,1);x=0;y=0;}}}。