图1是单片机最小系统电路;图2是驱动电路。共10路光源DS1~DS10(民间剪纸阅读答案),分别由AT89S52的P0口、P2的高两位驱动;每一路光源由14只高亮LED并联。图2中的D1、D2起到给光源部分降压的作用,这样LED可以不加限流电阻,因为VCC(5V)减去D1、D2、三极管的压降之和后可以保证LED安全地工作。
图1 AT89S52单片机最小系统
图2 驱动与光源电路
单片机最小系统板是以前做的直接拿来用了,自己做了驱动板:
为了不改动单片机最小系统板于是在驱动板上焊上排座,巧妙地实现两块板子间的电气连接:
拆开彩灯的外壳,掏空原先的电路,只留下电源部分:
将电路板固定在上面:
换个角度看,铝散热片上固定的是LM7805稳压块:
再将那10路光源也就是显示面板连接至驱动电路板:
软件设计:
对于此作品(民间剪纸阅读答案),软件上除了实现流水灯的功能就没有其他技巧(民间剪纸阅读答案),但为了尽量使彩灯好看一些,不得不挖空心思想一些新花样。既便如此,一个51芯片也绰绰有余。
/***************************************************程序名称:单片机流水灯简要说明:P0口、P2.0、P2.1输出10路彩灯信号编 写:JiangX.net***************************************************/#include<AT89X52.h>#define uchar unsigned char#define uint unsigned intsbit lie1=P0^6;sbit lie2=P0^5;sbit lie3=P0^4;sbit lie4=P0^3;sbit lie5=P0^2;sbit lie6=P0^1;/*****(n)ms延时子程序*****/void delayms(uint n){while(n--){uchar i;for(i=0;i<125;i++);}}/*****开机画面*****/void kaiji(void){P0=P2=0xff;delayms(2000);P0=P2=0x00;delayms(200);P0=P2=0xff;delayms(200);P0=P2=0x00;delayms(200);P0=P2=0xff;delayms(200);P0=P2=0x00;delayms(200);P0=P2=0xff;delayms(200);P0=P2=0x00;delayms(200);P0=P2=0xff;delayms(200);P0=P2=0x00;delayms(200);P0=P2=0xff;delayms(200);P0=P2=0x00;delayms(200);}/*****流水显示*****/void liushui1(void){uchar temp0,i;temp0=0x01;for(i=0;i<7;i++){P0=temp0;delayms(200);temp0=temp0*2;}}void liushui2(void){uchar temp0,i;temp0=0x03;for(i=0;i<6;i++){P0=temp0;delayms(200);temp0=temp0*2;}}void liushui3(void){uchar temp0,i;temp0=0x07;for(i=0;i<5;i++){P0=temp0;delayms(200);temp0=temp0*2;}}void liushui4(void){uchar temp0,i;temp0=0x0f;for(i=0;i<4;i++){P0=temp0;delayms(200);temp0=temp0*2;}}void liushui5(void){uchar temp0,i;temp0=0x1f;for(i=0;i<3;i++){P0=temp0;delayms(200);temp0=temp0*2;}}void liushui6(void){uchar temp0,i;temp0=0x3f;for(i=0;i<2;i++){P0=temp0;delayms(200);temp0=temp0*2;}}void liushui7(void){uchar temp0,i;temp0=0x7f;for(i=0;i<1;i++){P0=temp0;delayms(200);temp0=temp0*2;}}void liushui8(void){uchar temp0,i;temp0=0x05;for(i=0;i<5;i++){P0=temp0;delayms(200);temp0=temp0*2;}}void liushui9(void){uchar temp0,i;temp0=0x15;for(i=0;i<3;i++){P0=temp0;delayms(200);temp0=temp0*2;}}void liushui10(void){uchar temp0,i;temp0=0x55;for(i=0;i<1;i++){P0=temp0;delayms(200);temp0=temp0*2;}}/*****闪烁1*****/void shanshuo1(void){uchar i;for(i=0;i<5;i++){P2=0xff;P0=0x80;delayms(200);P0=0x7f;P2=0x00;delayms(200);}delayms(500);P0=P2=0x00;delayms(200);}/*****跑马显示*****/void paoma(uchar sudu){uchar i,j;uchar temp1=0x01;uchar temp2=0x40;for(i=0;i<6;i++){P0=temp1;delayms(sudu);temp1=temp1*2;}for(j=0;j<6;j++){P0=temp2;delayms(sudu);temp2=temp2/2;}}/*****闪烁2*****/void shanshuo2(void){uchar i;for(i=0;i<7;i++){P2=0xff;P0=0x80;delayms(200);P2=0x00;P0=0x00;delayms(200);}delayms(500);}/*****堆积显示子程序*****/void duiji1(void){uchar temp0=0x01,i;for(i=0;i<7;i++){P0=temp0;delayms(200);temp0=temp0*2;}}void duiji2(void){uchar temp0=0x01,i;for(i=0;i<6;i++){P0=temp0;lie1=1;delayms(200);temp0=temp0*2;}}void duiji3(void){uchar temp0=0x01,i;for(i=0;i<5;i++){P0=temp0;lie1=1;lie2=1;delayms(200);temp0=temp0*2;}}void duiji4(void){uchar temp0=0x01,i;for(i=0;i<4;i++){P0=temp0;lie1=1;lie2=1;lie3=1;delayms(200);temp0=temp0*2;}}void duiji5(void){uchar temp0=0x01,i;for(i=0;i<3;i++){P0=temp0;lie1=1;lie2=1;lie3=1;lie4=1;delayms(200);temp0=temp0*2;}}void duiji6(void){uchar temp0=0x01,i;for(i=0;i<2;i++){P0=temp0;lie1=1;lie2=1;lie3=1;lie4=1;lie5=1;delayms(200);temp0=temp0*2;}}void duiji7(void){uchar temp0=0x01,i;for(i=0;i<1;i++){P0=temp0;lie1=1;lie2=1;lie3=1;lie4=1;lie5=1;lie6=1;delayms(200);temp0=temp0*2;}}/*****闪烁3*****/void shanshuo3(void){uchar i;for(i=0;i<7;i++){P0=0x55;delayms(200);P0=0x7f;delayms(200);}delayms(500);}/*****主程序*****/void main(void){P0=P2=0x00;while(1){kaiji();liushui1();liushui2();liushui3();liushui4();liushui5();liushui6();liushui7();delayms(500);shanshuo1(); paoma(200);paoma(150);paoma(100);paoma(80);paoma(50);paoma(40);paoma(40);paoma(30);paoma(30);paoma(30);paoma(30);paoma(20);paoma(20);paoma(20);paoma(20);paoma(20);paoma(20);P0=0x41;delayms(1000);shanshuo2();duiji1();duiji2();duiji3();duiji4();duiji5();duiji6();duiji7();delayms(500);liushui8();liushui8();liushui8();liushui9();liushui9();liushui9();liushui10();liushui10();liushui10();shanshuo3();}}