大家自己根据程序中的io定义部分  接上灯即可实现流星灯的效果!!

//.........................................

//内控自走程序

//CPU:STC12C2052

//主频:18.432MHZ(外部晶振144),内部晶振5MHZ

//日期:2008/11/30

//.........................................

#include

#include

#include

#include

#include        //产生随机数SAND();

#define     uchar   unsigned char

#define  uint    unsigned int

#define  T0_DAH  160;

#define  T0_DAL  160;

#define     Speed_Data     0x2;

void    delay(uint);

void    Out_Put (void);

void    Read_Pro1(void);

void    Read_Pro2(void);

void    Pwm_Out (void);

void    Read_Pro_R(uchar QW_Data1);

///

//IO口定义/

///

sbit    ExPort1=P1^0;

sbit    ExPort8=P1^1;//2

sbit    ExPort7=P1^2;//8

sbit    ExPort6=P1^3;//7

sbit    ExPort5=P1^4;//6

sbit    ExPort4=P1^5;//5

sbit    ExPort3=P1^6;//4

sbit    ExPort2=P1^7;//3

sbit    Export9=P3^0;//

sbit    Export10=P3^1;//

//定义RAM

sfr        P1M0=0x91;

sfr        P1M1=0x92;

sfr        P3M0=0xB1;

sfr        P3M1=0xB2;

sfr        WDT_CONTR=0xe1;

sfr     ISP_TRIG=0xe6;

sfr     SPSTAT=0x84;

sfr        PCA_PWM0=0xf2;

sfr        unm1=0xf3;

sfr     unm2=0xf4;

sfr        unm3=0xf5;

sfr     unm4=0xf6;

sfr        unm5=0xf7;

sfr     unm6=0xf8;

bit     Time0_Flag;

uchar   Speed,Time0_Dec,Latch,Add_speed;

uchar   delay_X,Run_S,Run_S1;

uint    delay_z;

uchar    Display_Data[10];

/

//共十六等级/

/

void    timer_0(void) interrupt 1        //共十六等级

{

Time0_Flag=1;

Time0_Dec--;

}

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

//                  主函数功能                     //

//                主要产生花样数据                 //

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

void    main(void)

{

/

/IO口初始化//

/

/*************************读入ID号******************/

P3M0=0x00;

P3M1=0x03;

memset(Display_Data,0x00,sizeof(Display_Data));

//产生一个随机字符型数据

TMOD=0x12;

TR1=1;

delay_z = ((TH1<<8)|TL1)|((SBUF<<8)|ISP_TRIG)|((SPSTAT<<8)|PCA_PWM0);

rand();

srand(delay_z);

Run_S1=rand()/10;                                     //得到一个数据为25-35做为停留时间

Run_S=(uchar)Run_S1*2+15;

TMOD=0x02;                                             //系统初始化

TH0=T0_DAH;

TL0=T0_DAH;

ET0=1;

EA=1;

TR0=1;

Time0_Flag=0;                                         //定时器0初始化

Speed=Speed_Data;

Time0_Dec=64;

while(1)

{

Read_Pro1();

delay_z = ((TH1<<8)|TL1)|((SBUF<<8)|ISP_TRIG)|((SPSTAT<<8)|PCA_PWM0);

srand(delay_z);

rand();

Run_S=(uchar)((rand())*2)+15;

}

}

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

//               花样1:白间七彩右移渐变            //

//                对10MS到进行处理                 //

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

void   Read_Pro1(void)

{uchar j,i,B_W;

Add_speed=1;

memset(Display_Data,0x00,sizeof(Display_Data));

for(i=4;i>0;i--)               //1短

{if(i==4)B_W=64;

if(i==3)B_W=35;

if(i==2)B_W=10;

if(i==1)B_W=1;

Read_Pro_R(B_W);

}

for(i=Run_S;i>0;i--)

{Read_Pro_R(0);

}

for(j=0;j<2;j++)

{for(i=7;i>0;i--)            //2长

{

if(i==7)B_W=64;

if(i==6)B_W=63;

if(i==5)B_W=62;

if(i==4)B_W=60;

if(i==3)B_W=55;

if(i==2)B_W=40;

if(i==1)B_W=15;

Read_Pro_R(B_W);

}

for(i=Run_S;i>0;i--)

{Read_Pro_R(0);

}

}

for(j=0;j<2;j++)

{for(i=5;i>0;i--)            //2中

{

if(i==5)B_W=64;

if(i==4)B_W=63;

if(i==3)B_W=55;

if(i==2)B_W=40;

if(i==1)B_W=15;

Read_Pro_R(B_W);

}

for(i=Run_S;i>0;i--)

{Read_Pro_R(0);

}

}

}

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

void    Read_Pro_R(uchar QW_Data1)

{

Display_Data[9]=Display_Data[8];

Display_Data[8]=Display_Data[7];

Display_Data[7]=Display_Data[6];

Display_Data[6]=Display_Data[5];

Display_Data[5]=Display_Data[4];

Display_Data[4]=Display_Data[3];

Display_Data[3]=Display_Data[2];

Display_Data[2]=Display_Data[1];

Display_Data[1]=Display_Data[0];

Display_Data[0]=QW_Data1;

Out_Put();

Out_Put();

Out_Put();

Out_Put();

Out_Put();

Out_Put();

}

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

//                 花样输出功能                    //

//                对10MS到进行处理                 //

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

void   Out_Put(void)

{uchar S;

bit Time0_Zear;

for(S=0;S

{

Time0_Zear=1;

Time0_Flag=0;

while(Time0_Zear)

{

if(Time0_Flag)                                //中斷時間到,灰度輸出

{

Time0_Flag=0;

WDT_CONTR=0x30;

Pwm_Out();

}

if(Time0_Dec==0)

{EA=0;

Time0_Zear=0;

Time0_Dec=64;

TH0=T0_DAH;

TL0=T0_DAH;

EA=1;

}

}

}

}

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

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

//                 PWM输出功能                     //

//    将Display_Data[]数组内数据与16等级进行比较   //

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

void    Pwm_Out ()

{

Latch=Time0_Dec;

if(Display_Data[0]>Latch)    ExPort1=1;  else    ExPort1=0;

if(Display_Data[1]>Latch)    ExPort2=1;  else    ExPort2=0;

if(Display_Data[2]>Latch)    ExPort3=1;  else    ExPort3=0;

if(Display_Data[3]>Latch)    ExPort4=1;  else    ExPort4=0;

if(Display_Data[4]>Latch)    ExPort5=1;  else    ExPort5=0;

if(Display_Data[5]>Latch)    ExPort6=1;  else    ExPort6=0;

if(Display_Data[6]>Latch)    ExPort7=1;  else    ExPort7=0;

if(Display_Data[7]>Latch)    ExPort8=1;  else    ExPort8=0;

if(Display_Data[8]>Latch)    Export9=1;  else    Export9=0;

if(Display_Data[9]>Latch)    Export10=1; else    Export10=0;

}

单片机流星灯_51单片机流星灯c语言源程序相关推荐

  1. 单片机流星灯_51单片机拖尾灯实现

    这个拖尾灯,或者扫描灯,或者流星灯,不管怎么叫,原理上估计都是一样的.这玩意困扰了我好长的时间.我知道用PWM可以做出明暗效果.但是无法做到实现多路控制. 在网上有种叫"霹雳游侠扫描灯&qu ...

  2. m0单片机io口_51单片机蜂鸣器

    蜂鸣器实验 * 蜂鸣器 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机.打印机.复印机.报警器.电子玩具.汽车电子设备.电话机.定时器等电子产品中作发声器件.蜂鸣器主要分为压电 ...

  3. m0单片机io口_51单片机独立按键和矩阵按键实现

    独立按键实验 按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时, 开关断开.我们开发板上使用的按键及内部简易图如下图所示 管脚与管脚之间(注意是距离)距离长的是导通状态,短的是接通状 ...

  4. 单片机加减法计算器_51单片机之4位数加法计算器的设计报告

    2014级单片机原理与应用 课程设计报告 课题名称 4位数加法计算器的设计 一.设计任务及要求: 设计任务: 1.通过4*4矩阵键盘输入数字及运算符: 2.可以进行4位十进制数以内的加法预算.如果计算 ...

  5. 51 单片机 建立 文本文件_51单片机KEIL如何建立多个C文件及注意事项

    1如何建立多个C文件 首先,我们需要一个新文档,这个文档的建立有两种方法(以delay1s函数为例).第一种,在工程目录下建立一个delay1s.txt然后将其改名为delay1s.h.因为都是同编码 ...

  6. 单片机加减法计算器_51单片机简易计算器程序 实现数字的加减乘除运算

    单片机源程序如下: #include //头文件 #define uint unsigned int #define uchar unsigned char sbit lcden=P1^1; //LC ...

  7. ht1621b和单片机电平匹配_51单片机对HT1621 LCD 控制器的使用

    51 单片机对 HT1621 LCD 控制器的使用 HT1621 是一款 128 个位元的 LCD 控制器件,内部 RAM 直接对应 LCD 的显示单元.相应 的软件使它适用于包括 LCD 模块和显示 ...

  8. 单片机炫彩灯实训报告_51单片机呼吸灯实验报告.doc

    51单片机呼吸灯实验报告.doc 呼吸灯1功能与技术分析呼吸灯就是让LED灯的闪烁像呼吸一样,时呼时吸,时亮时暗,利用LED的余辉和人眼的暂留效应,看上去和人的呼吸一样.可以展示出各种酷炫的图像.11 ...

  9. 单片机并口应用实验c语言,1单片机并口简单应用(流水灯).docx

    试验1单片机并口简单应用(流水灯) 实验目的 1.了解单片机C语言程序的基本结构 2.了解单片机C语言程序的设计和调试方法 3.掌握顺序控制程序的简单编程 4.熟悉51单片机的端口使用 实验仪器 单片 ...

最新文章

  1. 利用TLD2131组成LED矩阵显示实验电路板
  2. Linux引到过程与服务控制
  3. 干货!几招教你降低论文重复率!!
  4. C语言深度剖析书籍学习记录 第六章 函数
  5. postgresql存图片字段类型_PostgreSQL 入门
  6. UTC时间与当地时间的转换关系?
  7. android 大小端转换器,大小端转换的C++ 封装 :hton , ntol
  8. DeepStream User Guide
  9. module ‘cv2‘ has no attribute ‘face‘已安装仍报错解决
  10. 我是这样在Google paly上赚美刀的
  11. 计算机网络知识点————交换机
  12. 一张图彻底理解级联!!!!!
  13. 配置J2ME开发环境 Eclipse、eclipseME、WTK
  14. 金蝶ERP二次开发笔记(二)----ID相关处理
  15. 【Flink】详解Flink的八种分区
  16. 高新技术企业认定条件2023
  17. 计算机英语新词的认知语义阐释论文,计算机英文专业论文题目 计算机英文论文题目怎样定...
  18. 目标检测YOLO实战应用案例100讲-网联自动驾驶中感知图像隐私目标分类与检测方法
  19. RECS高管教练课程是什么?
  20. python向上向下取整_python 向上取整ceil 向下取整floor 四舍五入round

热门文章

  1. 领扣LintCode问题答案-58. 四数之和
  2. Kusto Query Language (KQL) 学习笔记
  3. 浙大 java语言程序设计编程答案,浙大《Java语言程序设计》编程答案4
  4. VScode 插件中 package.json 文件 activationEvents 字段详解
  5. 区块链创业者惠轶之死
  6. gitub优秀的android开源项目
  7. JS中script标签defer和async属性的区别
  8. echarts 圆环图中间插图或文字
  9. 干货 !玩转Linux中的输入输出管理(1)
  10. 生命中不仅仅只有代码