单片机流星灯_原创作品LED流星雨灯(51单片机程序代码)产品分享!

最近公司生产了一款流星雨灯!现把它分享给大家!

一、图片分享:

二、PCB文件分享:

三、原理图分享:

四、

上面只做了5根灯管,如果需要增加灯管的话,只需稍微改动下 下面的程序即可.如果增长

连线把灯管摆成圆形或者方形效果也比较牛逼的.

此款流星灯直径只有1.5公分只可以做30公分、50公分、80公分、1000公分等 。

这个东东主要是做装饰用,技术支持:http://www.51hei.com/ 下面公开全部的源代码.

请大家多多指教.程序代码大家可以随意修改,但不可用于商业用途.

/*流星雨程序代码 作者:胡琴   2011-12-12

单片机型号:STC11F04  IO口16个!原理:

利用PWM来模似流星雨:将亮度等级分为8个

,通过改变每一组LED的亮度来达到流星雨效果。

(因为流星雨是前面亮后面越来越暗,就像一条龙一样,拖着尾巴过来),

完整的程序源代码下载:http://www.51hei.com/f/ledss.rar

*/

#include//MCU头文件

#define uchar unsigned char//字浮型宏定义

#define uint unsigned int//整型宏定义

#define shudu 3 //LED渐变速度调整

uchar yin0 =31;//LED变化等级调整

uchar yin1 =63;//LED变化等级调整

uchar yin2 =95;//LED变化等级调整

uchar yin3 =127;//LED变化等级调整

uchar yin4 =159;//LED变化等级调整

uchar yin5 =191;//LED变化等级调整

uchar yin6 =223;//LED变化等级调整

uchar yin7 =255;//LED变化等级调整

sbit led0=P3^5;//16个IO口

sbit led1=P3^6;

sbit led2=P3^0;

sbit led3=P3^1;

sbit led4=P3^2;

sbit led5=P3^3;

sbit led6=P3^4;

sbit led7=P3^7;

sbit led8=P1^0;

sbit led9=P1^1;

sbit led10=P1^2;

sbit led11=P1^7;

sbit led12=P1^6;

sbit led13=P1^5;

sbit led14=P1^4;

sbit led15=P1^3;

uchar d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15;//各IO口变量

/***************************************************/

/**********************延时子程序*******************/

/***************************************************/

void delay(uint z)

{

uint x,y;//局部变量定义

for(x=0;x<5;x++)//延时外循环

for(y=0;y

}

/**********************************************/

/**********PWM控制红绿兰3种灯亮灭时间**********/

/**********************************************/

void RGBpwm(uchar d0,uchar d1,uchar d2,uchar d3,uchar d4,uchar d5,uchar d6,uchar d7,uchar d8,uchar d9,uchar d10,uchar d11,uchar d12,uchar d13,uchar d14,uchar d15)//3个局部变量,些部分为带

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include <AT89x52.H> //#include <reg51.h> #define uchar unsigned char #define uint unsigned int uchar code hanzi[]; uchar code timer[11][16]; uchar code sw[]; void Show_word(); void Show_pass(); void Send_data(unsigned char *d); sbit resget=P0^7; sbit key_moda=P0^6; sbit key_up=P0^5; sbit key_Down=P0^4; sbit T_CLK=P0^2; sbit T_IO =P0^1; sbit T_RST=P0^0; sbit ACC0=ACC^0; sbit ACC7=ACC^7; uchar starts_time[7]={0x00,0x10,0x22,0x11,0x06,0x07,0x06}; uchar Move,Speed,Flicker,line,Sec,Cent,Hour,Year,Month,Day,Week; uchar a,b,f,h,msec,id,x; uint zimuo; uchar BUFF[10]; void RTInputByte(uchar); uchar RTOutputByte(void); void W1302(uchar, uchar); uchar R1302(uchar); void Set1302(uchar *); void du1302(); void DelayMs(void); void Set(uchar,uchar ); void in_data(); void rxd_data(); void main() { Move=0; zimuo=0; TMOD=0x01; TH0=0x3c; TL0=0xb0; EA=1; TR0=1; ET0=1; SCON=0; while(zimuo<512) { while(Move<16) { for(Speed=0;Speed<10;Speed++) { for(line=0;line<16;line++) { in_data(); rxd_data(); P2_4=1; DelayMs(); P2_7=1; P2=sw[line]; DelayMs(); } } Move++; } Move=0; zimuo=zimuo+32; } zimuo=0; while(1) { if(resget==0) { DelayMs(); if(resget==0) Set1302(starts_time); W1302(0x8e,0x00); W1302(0x90,0xa5); } du1302(); if (key_moda==0) { DelayMs(); if(key_moda==0) { if(id++==9) {id=0;} h=0;msec=0; while(key_moda==0){ Show_word();} } } if(id!=0) { if (key_up==0) { DelayMs(); if(key_up==0) { while(key_up==0) {Show_word();} h=0;msec=0; Set(id,0); } } if (key_Down==0) { DelayMs(); if(key_Down==0) { while(key_Down==0) {Show_word();} h=0;msec=0; Set(id,1); } } }
以下是一个简单的STM32尾灯程序,可以参考一下: ```c #include "stm32f10x.h" #define LED_NUM 8 // 的数量 #define DELAY_MS 100 // 的延迟时间 int main(void) { uint32_t ledState = 0; // 记录的状态 uint32_t i = 0; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); // 使能GPIOC时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; // PC0~PC7 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 速度50MHz GPIO_Init(GPIOC, &GPIO_InitStructure); while (1) { // 点亮 for (i = 0; i < LED_NUM; i++) { GPIO_SetBits(GPIOC, 1 << i); ledState |= 1 << i; delay_ms(DELAY_MS); // 等待一段时间 } // 熄灭 for (i = 0; i < LED_NUM; i++) { GPIO_ResetBits(GPIOC, 1 << i); ledState &= ~(1 << i); delay_ms(DELAY_MS); // 等待一段时间 } // 反转 for (i = 0; i < LED_NUM; i++) { if (ledState & (1 << i)) { GPIO_ResetBits(GPIOC, 1 << i); ledState &= ~(1 << i); } else { GPIO_SetBits(GPIOC, 1 << i); ledState |= 1 << i; } delay_ms(DELAY_MS); // 等待一段时间 } } } void delay_ms(uint32_t delay) { uint32_t i = 0; uint32_t j = 0; for (i = 0; i < delay; i++) { for (j = 0; j < 0x5000; j++) { } } } ``` 这个程序使用了GPIO控制输出,实现了点亮、熄灭和反转的效果,每个的延迟时间可以通过DELAY_MS宏定义设置。注意:在使用该程序之前,需要先在STM32开发环境中配置好GPIO和系统时钟。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值