资源描述
电路图电路功能:1. 实现三个LED灯的十个不同亮度等级的调光,光强等级在数码管上显示出来;2. 三个LED灯的调光方式可以有自动调光、手动调光和根据外部光强自动调光;3. 本电路还可以进一步成为开发LED灯的更多功能的实验电路。驱动程序:#include #define uchar unsigned char#define uint unsigned int#includesbit st=P30;sbit oe=P35;sbit eoc=P31;sbit up=P32;sbit down=P33;sbit clk=P34;sbit zd=P17;sbit sd=P15;sbit wd=P16;sbit red=P10;sbit green=P11;sbit blue=P12;uchar codetab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0x39,0x5e,0x79,0x71,0x00,0xf3,0x76,0x80,0x40;/数码管显示段码uchar m,k,l;int a=5,b;void maichong();void delaynms(uint x);/nms延时程序void ad0809();/芯片启动程序main()/*自动调光程序*/ while(!zd) uint a,b;uchar c,d;for(a=0;a0;c-)for(d=10;d0;d-) red=1; green=1; blue=1; P0=codetaba; delaynms(a); b=10-a; red=0; green=0; blue=0; delaynms(b); for(a=9;a0;a-) if(!zd)for(c=20000;c0;c-)for(d=10;d0;d-) red=1; green=1; blue=1;P0=codetaba;delaynms(a);b=10-a;red=0; green=0; blue=0;delaynms(b); /*手动调光程序*/ while(!sd)EA=1;EX0=1;EX1=1;IT0=0;IT1=0;a=5;while(!sd) P0=codetaba; red=1; green=1; blue=1; delaynms(a); red=0; green=0; blue=0; delaynms(10-a); /*外动调光程序&/while(!wd) int m,i,shu,x; while(!wd) clk=0;st=0;oe=0;eoc=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();clk=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();clk=0;st=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();clk=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();clk=0;st=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();clk=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();for(i=8;i-;i0) /08个时钟周期clk=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();clk=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); clk=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); clk=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); while(!eoc) clk=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();clk=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/等待转换结束此时继续给脉冲 clk=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); clk=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); clk=0; oe=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); m=P2;/数据有效 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); clk=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); clk=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); clk=1; oe=0; _nop_(); _nop_(); _nop_(); clk=0; _nop_(); _nop_(); _nop_(); _nop_(); shu=(m*2)/51; for(x=5000;x-;x0) P0=codetabshu; red=1; green=1; blue=1; for(i=shu;i-;i0) clk=0;_nop_();_nop_();_nop_();_nop_();clk=1;_nop_();_nop_();_nop_();_nop_();red=0;green=0;blue=0;for(i=10-shu;i-;i0) clk=0;_nop_();_nop_();_nop_();_nop_();clk=1;_nop_();_nop_();_nop_();_nop_(); /nms 延时程序void delaynms(uint x)uchar i;while(x-0)for(i=0;i9) a=9; wbzd1() interrupt 2 while(!down); a-; if(a0) a=0;
展开阅读全文