在avr单片机中怎么设计霓虹灯,怎么用AVR单片机检测电流并通过所检测电流控制发光二极管的亮灭
来源:整理 编辑:八论文 2022-12-03 14:19:23
本文目录一览
1,怎么用AVR单片机检测电流并通过所检测电流控制发光二极管的亮灭
你可以通过外接元件,比如电阻,检测两边的电压,然后换算成电流,一般avr单片机输入输出电流最好别超过20MA,要不会损坏芯片。要控制发光二极管的亮灭,可以通过设置PWM波来实现。直接使用PWM波来控制不就可以了么,串一个固定电阻再看看别人怎么说的。
2,怎么设计单片机控制LED闪烁并且可以组成一个LED灯字 搜
可以这样子,把所有LED并联起来,直接接单片机随便哪个IO口,然后再加个1K上拉电阻,用51单片机可以实现,具体程序为#include"reg51.h"sbit LED=P1^0;//把LED灯接在P1.0口就行void delay(int ms);void main() while(1) LED=~LED; delay(500); }}void delay(int ms) int i,j; for(i=ms;i>0;i--) for(j=113;j>0;j--);}如果稍微复杂点的,就把LED分别接到所有的IO口(看具体需要),然后也是加上拉电阻,接下来的程序,就随自己需要,看需要怎样显示,就在上面的程序里改一下,直接对P0,P1,P2口操作就行,可以做成流水灯什么的(在上面程序修改)1.如果可以用接口芯片的话,HD7279就可以,用专门的指令译码方式2.如果直接接单片机,看采用共阴极还是共阳极方式,将相应的码字输出就可以。当然还有其他的解决方式可以这样子,把所有LED并联起来,直接接单片机随便哪个IO口,然后再加个1K上拉电阻,用51单片机可以实现,具体程序为#include"reg51.h"sbit LED=P1^0;//把LED灯接在P1.0口就行void delay(int ms);void main() while(1) LED=~LED; delay(500); }}void delay(int ms) int i,j; for(i=ms;i>0;i--) for(j=113;j>0;j--);}如果稍微复杂点的,就把LED分别接到所有的IO口(看具体需要),然后也是加上拉电阻,接下来的程序,就随自己需要,看需要怎样显示,就在上面的程序里改一下,直接对P0,P1,P2口操作就行,可以做成流水灯什么的(在上面程序修改)首先定时器中断时间比如5ms,用来定时刷新数码管,他就不闪了。其次,你另外申明一个全局变量,flash_count,每次定时中断,就是每次5ms,flash_count++,同时你每次中断再判断flash_count==xxx时,你的led取反,同时设flash_count=0你可以控制xxx,从1-255 改变,就可以控制闪烁的频率不断变化。手工打的哦。采纳我吧。
3,霓虹灯是如何制作的
霓虹灯在制作工艺上,不论是明管、粉管还是彩管,其制作工艺基本相同,它们都需经过玻管成型、封接电极、轰击去气、充惰性气体、封排气孔老炼等工艺。
玻管成型:制作人员沿着图案或文字的轮廓经过专用火头,将直玻璃管烧、烤、弯成图案或文字的过程,制作人员水平的高低可凭肉眼看的出来,水平低的人员制成的灯管易出现转弯处凹凸不平、太厚或太薄、内侧皱折、偏歪不成平面等。
封接电极:将弯成型的灯管经过火头接上电极和排气孔的过程,接口不得太薄或太厚,接口处须完全烧融,否则易出现慢漏气。
轰击去气:制作霓虹灯的关键。是通过高压电轰击电极,加热电极焚烧灯管电极内肉眼看不见的水蒸气、尘土、油质等物质,排掉这些有害物质,将玻管抽成真空的过程。轰击去气的温度达不到,上述有害物质会除不彻底,直接影响灯管的质量。轰击去气的温度过高会引起电极过度氧化,使其表面产生氧化层,引起灯管质量下降。轰击去气彻底的玻管充入适当隋性气体,经过老练,即完成霓虹灯制作过程。
当外电源电路接通后,变压器输出端就会产生几千伏甚至上万伏的高压。当这一高压加到霓虹灯管两端电极上时,霓虹灯管内的带电粒子在高压电场中被加速并飞向电极,能激发产生大量的电子。这些激发出来的电子,在高电压电场中被加速,并与灯管内的气体原子发生碰撞。当这些电子碰撞游离气体原子的能量足够大时,就能使气体原子发生电离而成为正离子和电子,这就是气体的电离现象。带电粒子与气体原子之间的碰撞,多余的能量就以光子的形式发射出来,这就完成了霓虹灯的发光点亮的整个过程。霓虹灯在制作工艺上,不论是明管、粉管还是彩管,其制作工艺基本相同,它们都需经过玻管成型、封接电极、轰击去气、充惰性气体、封排气孔老炼等工艺。
玻管成型:制作人员沿着图案或文字的轮廓经过专用火头,将直玻璃管烧、烤、弯成图案或文字的过程,制作人员水平的高低可凭肉眼看的出来,水平低的人员制成的灯管易出现转弯处凹凸不平、太厚或太薄、内侧皱折、偏歪不成平面等。
封接电极:将弯成型的灯管经过火头接上电极和排气孔的过程,接口不得太薄或太厚,接口处须完全烧融,否则易出现慢漏气。
轰击去气:制作霓虹灯的关键。是通过高压电轰击电极,加热电极焚烧灯管电极内肉眼看不见的水蒸气、尘土、油质等物质,排掉这些有害物质,将玻管抽成真空的过程。轰击去气的温度达不到,上述有害物质会除不彻底,直接影响灯管的质量。轰击去气的温度过高会引起电极过度氧化,使其表面产生氧化层,引起灯管质量下降。轰击去气彻底的玻管充入适当隋性气体,经过老练,即完成霓虹灯制作过程。
当外电源电路接通后,变压器输出端就会产生几千伏甚至上万伏的高压。当这一高压加到霓虹灯管两端电极上时,霓虹灯管内的带电粒子在高压电场中被加速并飞向电极,能激发产生大量的电子。这些激发出来的电子,在高电压电场中被加速,并与灯管内的气体原子发生碰撞。当这些电子碰撞游离气体原子的能量足够大时,就能使气体原子发生电离而成为正离子和电子,这就是气体的电离现象。带电粒子与气体原子之间的碰撞,多余的能量就以光子的形式发射出来,这就完成了霓虹灯的发光点亮的整个过程。.
4,怎么学AVR单片机
哪种AVR教程好?这是没有答案的,如果要确定一个的话,建议看看马潮老师写的AVR教程就行了。其他教程都是大同小异。
哪种AVR开发板好?现在AVR开发板多如牛毛,没有好的,也没有不好的。我用的AVR开发板只是一个引出了所有端口的最小系统板,一样用的好好的。
如果你要开始学,那建议先把目标放的高一些,即选Atmega128芯片的AVR单片机吧,这个一掌握,Atmega单片机中的8位系列的单片机就算掌握了。当然有兴趣再去学习16位的AVR单片机AtXmega或者32位的AVR单片机AVR32UC3。
学习AVR主要是在www.OURDEV.CN,里边有很多高手,还有很多资料,是个很不错的学习论坛
学习使用单片机就是理解单片机硬件结构,以及内部资源的应用,在汇编或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。
第一步:数字I/O的使用
使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。
第二步:定时器的使用 学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。
定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。
第三步:中断
单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。要使单片机在程序正常运行过程中,对快速动作做出反应,就必须使用单片机的中断功能,该功能就是在快速动作发生后,单片机中断正常运行的程序,处理快速发生的动作,处理完成后,在返回执行正常的程序。中断功能使用中的困难是需要精确地知道什么时候不允许中断发生(屏蔽中断)、什么时候允许中断发生(开中断),需要设置哪些寄存器才能使某种中断起作用,中断开始时,程序应该干什么,中断完成后,程序应该干什么等等。
中断学会后,就可以编制更复杂结构的程序,这样的程序可以干着一件事,监视着一件事,一旦监视的事情发生,就中断正在干的事情,处理监视的事情,当然也可以监视多个事情,形象的比喻,中断功能使单片机具有吃着碗里的,看着锅里的功能。
以上三步学会,就相当于降龙十八掌武功,会了三掌了,可以勉强护身。
第四步:与PC机进行RS232通信
单片机都有USART接口,特别是MSP430系列中很多型号,都具有两个USART接口。USART接口不能直接与PC机的RS232接口连接,它们之间的逻辑电平不同,需要使用一个MAX3232芯片进行电平转换。
USART接口的使用是非常重要的,通过该接口,可以使单片机与PC机之间交换信息,虽然RS232通信并不先进,但是对于接口的学习是非常重要的。正确使用USART接口,需要学习通信协议,PC机的RS232接口编程等等知识。试想,单片机实验板上的数据显示在PC机监视器上,而PC机的键盘信号可以在单片机实验板上得到显示,将是多么有意思的事情啊!
第五步:学会A/D转换
MAP430单片机带有多通道12位A/D转换器,通过这些A/D转换器可以使单片机操作模拟量,显示和检测电压、电流等信号。学习时注意模拟地与数字地、参考电压、采样时间,转换速率,转换误差等概念。
使用A/D转换功能的简单的例子是设计一个电压表。
第六步:学会PCI、I2C接口和液晶显示器接口
这些接口的使用可以使单片机更容易连接外部设备,在扩展单片机功能方面非常重要。
第七步:学会比较、捕捉、PWM功能
这些功能可以使单片机能够控制电机,检测转速信号,实现电机调速器等控制起功能。
如果以上七步都学会,就可以设计一般的应用系统,相当于学会十招降龙十八掌,可以出手攻击了。
第八步:学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计学习USB接口、TCP/IP接口、各种工业总线的硬件与软件设计是非常重要的,因为这是当前产品开发的发展方向。
到此为止,相当于学会15招降龙十八掌,但还不到打遍天下无敌手的境界。即使如此,也算是单片机大虾了
5,单片机交通灯的设计
4.2.3 系统工作原理 (1)开关键盘输入交通灯初始时间,通过8051单片机P1输入到系统 (2) 由8051单片机的定时器每秒钟通过P0口向8255的数据口送信息,由8255的PA 口显示红、绿、黄灯的燃亮情况;由8255的PC口显示每个灯的燃亮时间。 (3)8051通过 设置 各个信号等的燃亮时间、通过8031设置,绿、红时间分别为60秒、80秒循环由8051的 P0口向8255的数据口输出。 (4) 通过8051单片机的P3.0位来控制系统是工作或设置初值,当.牌位0就对系统进行初始化,为1系统就开始工作。 (5)红灯倒计时时间,当有车辆闯红灯时,启动蜂鸣器进行报警,3S后然后恢复正常。 (6)增加每次绿灯时间车流量检测的功能,并且通过查询P2.0端口的电平是否为低,开关按下为低电平,双位数码管显示车流量,直到下一次绿灯时间重新记入。 (7)绿灯时间倒计时完毕,重新循环。 5.5.2 程序源代码 ORG 0000H ;主程序的入口地址 LJMP MAIN ;跳转到主程序的开始处 ORG 0003H ;外部中断0的中断程序入口地址 ORG 000BH ;定时器0的中断程序入口地址 LJMP T0_INT ;跳转到中断服务程序处 ORG 0013H ;外部中断1的中断程序入口地址 MAIN : MOV SP,#50H MOV IE,#8EH ;CPU开中断,允许T0中断,T1中断和外部中断1中断 MOV TMOD,#51H ;设置T1为计数方式,T0为定时方式,且都工作于模式1 MOV TH1,#00H ;T1计数器清零 MOV TL1,#00H SETB TR1 ;启动T1计时器 SETB EX1 ;允许INT1中断 SETB IT1 ;选择边沿触发方式 MOV DPTR ,#0003H MOV A, #80H ;给8255赋初值,8255工作于方式0 MOVX @DPTR, A AGAIN: JB P3.1,N0 ;判断是否要设定东西方向红绿灯时间的初值,若P3.1为1 则跳转 MOV A,P1 JB P1.7,RED ;判断P1.7是否为1,若为1则设定红灯时间,否则设定绿灯时间 MOV R0,#00H ;R0清零 MOV R0,A ;存入东西方向绿灯初始时间 MOV R3,A LCALL DISP1 LCALL DELAY AJMP AGAIN RED: MOV A,P1 ANL A,#7FH ;P1.7置0 MOV R7,#00H ;R7清零 MOV R7,A ;存入东西方向红灯初始时间 MOV R3,A LCALL DISP1 LCALL DELAY AJMP AGAIN ;------------------------------------------- N0: SETB TR0 ;启动T0计时器 MOV 76H,R7 ;红灯时间存入76H N00: MOV A,76H ;东西方向禁止,南北方向通行 MOV R3,A MOV DPTR,#0000H ;置8255A口,东西方向红灯亮,南北方向绿灯亮 MOV A,#0DDH MOVX @DPTR, A N01: JB P2.0,B0 N02: SETB P3.0 CJNE R3,#00H,N01 ;比较R3中的值是否为0,不为0转到当前指令处执行 ;------黄灯闪烁5秒程序------ N1: SETB P3.0 MOV R3,#05H MOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮 MOV A,#0D4H MOVX @DPTR,A N11: MOV R4,#00H N12: CJNE R4,#7DH,$ ;黄灯持续亮0.5秒 N13: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭 MOV A,#0DDH MOVX @DPTR,A N14: MOV R4,#00H CJNE R4,#7DH,$ ;黄灯持续灭0.5秒 CJNE R3,#00H,N1 ;闪烁时间达5秒则退出 ;------------------------------------------------------------ N2: MOV R7,#00H MOV A,R0 ;东西通行,南北禁止 MOV R3,A MOV DPTR,#0000H ; 置8255A口,东西方向绿灯亮,南北方向红灯亮 MOV A,#0EBH MOVX @DPTR,A N21: JB P2.0,T03 N22: CJNE R3,#00H,N21 ;------黄灯闪烁5秒程序------ N3: MOV R3,#05H MOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮 MOV A,#0E2H MOVX @DPTR,A N31: MOV R4,#00H CJNE R4,#7DH,$ ;黄灯持续亮0.5秒 N32: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭 MOV A,#0EBH MOVX @DPTR,A N33: MOV R4,#00H CJNE R4,#7DH,$ ;黄灯持续灭0.5秒 CJNE R3,#00H,N3 ;闪烁时间达5秒则退出 SJMP N00 ;------闯红灯报警程序------ B0: MOV R2,#03H ;报警持续时间3秒 B01: MOV A,R3 JZ N1 ;若倒计时完毕,不再报警 CLR P3.0 ;报警 CJNE R2,#00H,B01 ;判断3秒是否结束 SJMP N02 ;------1秒延时子程序------- N7: RETI T0_INT:MOV TL0,#9AH ;给定时器T0送定时10ms的初值 MOV TH0,#0F1H INC R4 INC R5 CJNE R5,#0FAH,T01 ;判断延时是否够一秒,不够则调用显示子程序 MOV R5,#00H ;R5清零 DEC R3 ;倒计时初值减一 DEC R2 ;报警初值减一 T01: ACALL DISP ;调用显示子程序 RETI ;中断返回 ;------显示子程序------ DISP: JNB P2.4,T02 DISP1: MOV B,#0AH MOV A,R3 ;R3中值二转十显示转换 DIV AB MOV 79H,A MOV 7AH,B DIS: MOV A,79H ;显示十位 MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#0002H MOVX @DPTR,A MOV DPTR,#0001H MOV A,#0F7H MOVX @DPTR,A LCALL DELAY DS2: MOV A,7AH ;显示个位 MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#0002H MOVX @DPTR,A MOV DPTR,#0001H MOV A,#0FBH MOVX @DPTR,A RET ;------东西方向车流量检测程序------ T03: MOV A,R3 SUBB A,#00H ;若绿灯倒计时完毕,不再检测车流量 JZ N3 JB P2.0,T03 INC R7 CJNE R7,#64H,E1 MOV R7,#00H ;中断到100次则清零 E1: SJMP N22 ;------东西方向车流量显示程序------ T02: MOV B,#0AH MOV A,R7 ;R7中值二转十显示转换 DIV AB MOV 79H,A MOV 7AH,B DIS3: MOV A,79H ;显示十位 MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#0002H MOVX @DPTR,A MOV DPTR,#0001H MOV A,#0F7H MOVX @DPTR,A LCALL DELAY DS4: MOV A,7AH ;显示个位 MOV DPTR,#TAB MOVC A,@A+DPTR MOV DPTR,#0002H MOVX @DPTR,A MOV DPTR,#0001H MOV A,#0FBH MOVX @DPTR,A LJMP N7 ;------延时4MS子程序---------- DELAY: MOV R1,#0AH LOOP: MOV R6,#64H NOP LOOP1: DJNZ R6,LOOP1 DJNZ R1,LOOP RET ;------字符表------ TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END
文章TAG:
在avr单片机中怎么设计霓虹灯