void RGB(unsigned char R ,unsigned char G ,unsigned char B); //主函数void main (void){ RED = 1 ; GREEN = 1 ; BLUE = 1 ; //开始时先关闭LED,当然由于单片机上电就输出 1 ,所以可不写 wh

START:MOV P0,#01H;()只有第一个灯亮 ACALL DELAY;延迟,不加延迟的话 你根本看不起清到底那个灯亮的 MOV P0,#02H;()只有第二个灯亮 ACALL DELAY MOV P0,#04H;()只有第三个灯亮 ACALL DELAY MOV P0,#08H

include "reg51.h" //包含头文件 define uchar unsigned char define uint unsigned int // //延时函数 // delay(uint time) //int型数据为16位,所以最大值为65535 { uint i,j; //定义变量i,j,用

flag) { pwm++; if(pwm>=100)flag=1; } else { pwm--; if(pwm==0)flag=0; } }}main(){ TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; TR0

呼吸灯的程序:/*** 功能:LED灯慢慢变暗,再慢慢变亮。 用定时器模拟的PWM调制。单片机:AT89S52 ***

\x0d\x0avoid main (void)\x0d\x0a{\x0d\x0aunsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值\x0d\x0alcden=0;\x0d\x0aP0=0x00;\x0d\x0adianzhen=0;\x0d\x0aP0=0xff;\x0d\x0awei=0

单片机制作呼吸灯的C语言程序怎样编写?

先说呼吸灯,这个本质上是LED的亮度控制。一般是用PWM方式控制LED亮度,PWM的输出按照一定的规律变化,就可以做出呼吸灯的效果。再说30个LED的控制,如果要简单点做,30个LED可以串起来串一个电阻,接高点的电源电压,30个LE

include#define uchar unsigned charuchar pwm,cnt;sbit led=P1^0;bit flag;void t0isr() interrupt 1{ TH0=(65536-10000)/256; TL0=(65536-10000)%256; cnt++; if(cnt

这位朋友你好,51单片机,如果他的呼吸灯代码,你可以参考他的使用说明书,也就是说他技术指导说明书上会有表达。

include "reg51.h" //包含头文件 define uchar unsigned char define uint unsigned int // //延时函数 // delay(uint time) //int型数据为16位,所以最大值为65535 { uint i,j; //定义变量i,j,用

51单片机设计呼吸灯

1、在电脑上打开proteus软件后,点击图中的“P”字按钮,如图所示。2、然后在出现的窗口中,在keywords栏中输入“AT89C51”。3、然后在右侧出现的选项中选择需要的C51单片机,如图所示。4、接着点击页面下方的确定按钮,如图

先画仿真图,然后写程序,C语言程序要用keil编译出HEX代码文件。给单片机加载HEX文件,点左下方的运行按钮即可运行仿真了,就是显示出效果了。见下图,画红圈的按钮就是运行按钮。

1、打开proteus7.8软件后,点击下图中箭头所指的图标。2、然后在右侧快捷小窗中点击“P”字按钮,如图所示。3、然后在出现的对话框中,输入“AT89C51”就会出现各种51单片机,如图所示。4、然后选择好需要的单片机类型,用鼠

1、首先我们打开Proteus软件,点击左边菜单栏的P按钮,然后再搜索框里输入80c51,选择第一个就是80c51单片机;2、然后在搜索框里面输入led,找到Optoelectronics,然后再里面选择LED-RED,红色的led,当然其他颜色也可以;3、接着

怎么用proteus来仿真51

ACALL DELAY MOV P0,#04H;()只有第三个灯亮 ACALL DELAY MOV P0,#08H;()只有第四个灯亮 ACALL DELAY MOV P0,#10H;()只有第五个灯亮 ACALL DELAY MOV P0,#20H;()只有第六个灯亮 ACALL DELAY MOV P0,#40

include#define uchar unsigned charuchar pwm,cnt;sbit led=P1^0;bit flag;void t0isr() interrupt 1{ TH0=(65536-10000)/256; TL0=(65536-10000)%256; cnt++; if(cnt

include "reg51.h" //包含头文件 define uchar unsigned char define uint unsigned int // //延时函数 // delay(uint time) //int型数据为16位,所以最大值为65535 { uint i,j; //定义变量i,j,用

这位朋友你好,51单片机,如果他的呼吸灯代码,你可以参考他的使用说明书,也就是说他技术指导说明书上会有表达。

51单片机led呼吸灯代码

点阵的话,我想应该可以通过修改扫描的延时来实现呼吸效果。 例如:行扫描,行切换之间的延时修改,亮度会不一样。 其实扫描对于每个led来说,也是占空比的方波。
proteus仿真按理来说是不可能达得到效果的,因为这种仿真得有非常快的处理速度。我刚动手试了下和自己的想法相同,LED只会间断的闪烁。我是用AVR单片机,用51也是一样的。我这个程序也在实物试过效果很好。 *@演示定时器1的快速PWM输出@利用快速PWM输出控制LED的亮度变化,达到呼吸灯的效果*/ #include#include"port_set.h"#include"delay.h" /*********************************************@函数功能:定时器1初始化@说明:定时器初始化为快速PWM,TOP为8位(0x00FF)时钟输入为系统时钟匹配时OC1A输出0,在TOP时输出1OC1B为普通端口输入捕捉触发沿选择下降沿触发捕捉捕捉中断禁止,通道A比较中断禁止通道B比较中断禁止,溢出中断禁止*********************************************/void Timer1_Init(void){TCCR1A = 0x81;TCCR1B = 0x89;OCR1A = (unsigned int)0x0;OCR1B = (unsigned int)0x0;ICR1 = (unsigned int)0x0;TCNT0 = (unsigned int)0x0;SFIOR |= 0x1;TIMSK |= 0x0;} void main(void){unsigned char ocr = 0; //比较值signed char ddr_flag = 1; //比较值的增长方向IO_SET_OUT(B,1); //T1的比较输出端口设置为输出Timer1_Init();while(1){delay_ms(5);//延时一定时间改变一次比较值ocr += ddr_flag;OCR1A = (unsigned int)ocr;/*改变比较值的增长方向*/if(ocr>0xFE)ddr_flag = -1;else if(ocr<0x1)ddr_flag = 1;}}
大致看了下,定时器中断直接调用zhankong()这个函数,写在外面的话,由於有其它代码,不可能每次都执行
这个需要看你的芯片那也识别需求了哦,毕竟代码不同的呢,那个需要编码处理的哦。 所以解码方法也不同
一.51没有这样的功能,STC12单片机才有这样的功能,不过你可以用延时函数来产生PWM波形,但比较浪费CPU时间。二.还有一种方法可以用51来实现,但要消耗两个定时器,一个T0定时器控制PWM周期,另一个T1定时器控制PWM占空比。(T0装的初值要大于T1的初值)在定时器中断的时候都是对I/O口进行取反就可以了。一个定时器产生PWM波形,做不出来,要两个的(不过只赏0分太少了吧!!!)
做8个流水灯加一个呼吸灯比较容易,P1口接8个流水灯,8个LED负极接P1口,则P1口输出低电平有效。P3.7脚接一个开关作切换。仿真图如下所示。