学习了一段时间,有了一定经验的朋友,肯定会觉得不过瘾,老是纸上谈兵,点个LED有什么用?能不能来点实际点的。好的,我们就安排一点实际一点的,这次是点亮真的电灯了,不过要注意安全,莫要发生触电事故,另外这次要用到双向可控硅了,强电没接触过的朋友,先预习吧,正好我要花点时间准备一下了。
上传啦,是一块线路板图,单面板,红线代表跳线。没有原理图,简单地说一下吧。A17是一个8芯的插针,可以用它与单片机的P1口相连,记得我上传的板子吗?在P1口接LED前也有一个8芯插座的位置,装上去,用一根8芯扁平电缆相连就行了,记住,两块板子要用一只电源,也就是要共地。板上用的器件,如果用外接5V电源,那么D1、D2、D3、D4及C1、C2、C3、C4、C5、C6及T9(7805)、A18(散热器)均不需要装,如果用外接交流电,则将它们装上去,A26是一插座,可以用来向单片机板供电。
IC1到IC8上使用交流光耦,型号为MOC3020,注意,MOC3020是6脚封装,由于没有找到6脚的插座,所以全是用的8脚的插座,插时最上两只不用,即靠插座底安装,R9——R16是限流电阻,470殴,1/4W,金属膜。R1——R8是限流电阻,330殴,1/2W,金属膜。T1——T8是晶闸管(可控硅),型号是BTA06-800C,用ST的比较好,6安培,800V电压,加上合适的散热片后,带500W以内的负载应没问题。A1-A8是相应的散热片的位置,我用的散热片比较小,因为只带灯,又是间隙亮,所以问题不大。P1——P5是接线端子。根据各人条件去买吧——也用不着菲尼克斯的,哈哈。
好了,一切装好,OK了,通电吧,当心,再次提醒大家,小心触电哦。电源一端接P2,另一端接到P3——P5,负载则一端接P3——P5中的一个(它们都是连着的),另一端则接P1的八个输出端子之一。
至于软件,就自已编了,原来让LED怎么亮的,现在改成了让电灯亮,如此而已。
有了这么一个东东,其实也可以让它和PC机接起来,让PC机来做流水灯或做更多的事情,顺便上传一个文件给大家玩玩,我用C++ BUILD编的,只有玩的价值,没什么用途。就是用它来控制计算机的打印接口,输出高或低电平而已。大家可以去电脑商场买一根并口电缆(不是打印电缆,是两端都可以和计算机相连的那种),载去一头,把它的八根数据线接到A17的八个输入端,然后将地线相连,就可以演示了,放心,板子是光耦隔离的,不会对计算机造成伤害。
关键字:单片机教学 流水灯
引用地址:
平凡单片机教学 实战一 流水灯
推荐阅读最新更新时间:2024-03-16 14:48
PIC16F630的I/O口的操作流水灯
//实验目的:RC0-RC5口的流水灯,熟悉PIC16F630的I/O口的操作 #include PIC.h __CONFIG(0x31b4); //看门狗关;内部RC振荡,RA4/RA5做I/O,MCLR脚做复位 //------------------------------------ //延时函数 void delay() { int i; //定义循环变量 for(i=5000;i 0;i--) //循环次数控制 { NOP(); //消耗一个指令周期时间 NOP(); } } //------------------------------
[单片机]
单片机自学笔记之流水灯
#include reg52.h //52系列单片机头文件 #include intrins.h //C51库自带头文件 #define uchar unsigned char //宏定义无符号字符型为uchar #define uint unsigned int //宏定义无符号整型为uint void delay(uint z); //声明延时函数 uchar aa; //定义无符号变量 void main() //主函数 { aa=0xfe; //给变量赋初值 while(1) //大循环,无限循环 { P1=aa; //给P1口赋值1010 1010 delay(500); //调用延时子函数延时500毫秒
[单片机]
STM32流水灯的几种实现方法
#include “stm32f10x.h” void RCC_Configuration(void);//2 void GPIO_Configuration(void);//GPIO void Delay(u32 count) { u32 i=0; for(;i count;i++); } int main(void) { RCC_Configuration();//3 LED_Init(); while(1) { GPIO_SetBits(GPIOA,GPIO_Pin_0);//第一灯亮 Delay(800000); //延时 GPIO_ResetBits(GPIOA,GPIO_Pin_0); //第一灯灭
[单片机]
AVR单片机外部中断触发的流水灯程序
/* program name : 外部中断程序; 这费了我好几个小时的心血!成功的喜悦难以用言语表达! 概述: 8位流水非精确定时,一秒循环灯闪烁,等待外部中断一下降沿中断触发信号, 外部中断一旦触发,等待触发按键弹起(此时流水灯暂停状态),中断按键一旦弹 起,继续运行上一级程序(流水灯继续运行); accomplish time : 2014-2-7 22:47:15; */ #include avr/io.h #include avr/interrupt.h //中断必备的头文件; typedef unsig
[单片机]
数码管和流水灯同时工作
#include reg52.h #define uint unsigned int #define uchar unsigned char uchar code temp ={0x80,0xe3,0x44,0x41,0x23,0x11,0x10,0xc3,0x00,0x01}; //数码管由0~9的显示 char code b ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf, 0xdf,0xef,0xf7,0xfb,0xfd,0xfe, 0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x01,0x03,0x07,0x0f,0x1f, 0x3f,0x7f,0xf
[单片机]
手把手教学51单片机 | 第四节 动态数码管,用6位数码管做一个时钟
1.利用定时器做一个流水灯的程序 //流水灯从上到下一次点亮,然后让全部灯闪烁两次,依次循环 #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar temp,a; void Time0_delay(); void main() { temp=0xfe; P1=temp; while(1) { Time0_delay(); temp=_crol_(temp,1); P1=temp; if(temp==0x7f) { for(a=0;a 2;
[单片机]
STM32F407——流水灯
1、流水灯简化代码 2、AD7-8.。 #流水灯简化代码 #include sys.h #include delay.h //#include usart.h #include led.h //#include beep.h //#include key.h #include exti.h extern u8 onoff,dir,speed,change,key; extern u16 time; int main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断分组 delay_init(168); /
[单片机]
单片机 keil流水灯实验
做流水灯实验以前,必须先弄清楚各个发光二极管是怎么控制的,其次,在了解了keil的内部左移右移函数,就可以写出比较简短的流水灯的实验代码。 在写的过程中遇到过一些问题,怎么控制灯的走向,应该用一个怎么样的变量来实现传递,这个很重要。 解决的方法是定义一个unsigned char型变量。 此外还要写一个延时函数,可以是带参数的,也可以不带。 在while大循环里,不能忘了点亮一盏灯,就要把它关上。 #include reg52.h #include intrins.h //包含有左右循环移位子函数的库 #define uint unsigned int void delay() //延时函数,
[单片机]