单片机流星灯_51单片机流星灯c语言源程序
大家自己根据程序中的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语言源程序相关推荐
- 单片机流星灯_51单片机拖尾灯实现
这个拖尾灯,或者扫描灯,或者流星灯,不管怎么叫,原理上估计都是一样的.这玩意困扰了我好长的时间.我知道用PWM可以做出明暗效果.但是无法做到实现多路控制. 在网上有种叫"霹雳游侠扫描灯&qu ...
- m0单片机io口_51单片机蜂鸣器
蜂鸣器实验 * 蜂鸣器 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机.打印机.复印机.报警器.电子玩具.汽车电子设备.电话机.定时器等电子产品中作发声器件.蜂鸣器主要分为压电 ...
- m0单片机io口_51单片机独立按键和矩阵按键实现
独立按键实验 按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时, 开关断开.我们开发板上使用的按键及内部简易图如下图所示 管脚与管脚之间(注意是距离)距离长的是导通状态,短的是接通状 ...
- 单片机加减法计算器_51单片机之4位数加法计算器的设计报告
2014级单片机原理与应用 课程设计报告 课题名称 4位数加法计算器的设计 一.设计任务及要求: 设计任务: 1.通过4*4矩阵键盘输入数字及运算符: 2.可以进行4位十进制数以内的加法预算.如果计算 ...
- 51 单片机 建立 文本文件_51单片机KEIL如何建立多个C文件及注意事项
1如何建立多个C文件 首先,我们需要一个新文档,这个文档的建立有两种方法(以delay1s函数为例).第一种,在工程目录下建立一个delay1s.txt然后将其改名为delay1s.h.因为都是同编码 ...
- 单片机加减法计算器_51单片机简易计算器程序 实现数字的加减乘除运算
单片机源程序如下: #include //头文件 #define uint unsigned int #define uchar unsigned char sbit lcden=P1^1; //LC ...
- ht1621b和单片机电平匹配_51单片机对HT1621 LCD 控制器的使用
51 单片机对 HT1621 LCD 控制器的使用 HT1621 是一款 128 个位元的 LCD 控制器件,内部 RAM 直接对应 LCD 的显示单元.相应 的软件使它适用于包括 LCD 模块和显示 ...
- 单片机炫彩灯实训报告_51单片机呼吸灯实验报告.doc
51单片机呼吸灯实验报告.doc 呼吸灯1功能与技术分析呼吸灯就是让LED灯的闪烁像呼吸一样,时呼时吸,时亮时暗,利用LED的余辉和人眼的暂留效应,看上去和人的呼吸一样.可以展示出各种酷炫的图像.11 ...
- 单片机并口应用实验c语言,1单片机并口简单应用(流水灯).docx
试验1单片机并口简单应用(流水灯) 实验目的 1.了解单片机C语言程序的基本结构 2.了解单片机C语言程序的设计和调试方法 3.掌握顺序控制程序的简单编程 4.熟悉51单片机的端口使用 实验仪器 单片 ...
最新文章
- 利用TLD2131组成LED矩阵显示实验电路板
- Linux引到过程与服务控制
- 干货!几招教你降低论文重复率!!
- C语言深度剖析书籍学习记录 第六章 函数
- postgresql存图片字段类型_PostgreSQL 入门
- UTC时间与当地时间的转换关系?
- android 大小端转换器,大小端转换的C++ 封装 :hton , ntol
- DeepStream User Guide
- module ‘cv2‘ has no attribute ‘face‘已安装仍报错解决
- 我是这样在Google paly上赚美刀的
- 计算机网络知识点————交换机
- 一张图彻底理解级联!!!!!
- 配置J2ME开发环境 Eclipse、eclipseME、WTK
- 金蝶ERP二次开发笔记(二)----ID相关处理
- 【Flink】详解Flink的八种分区
- 高新技术企业认定条件2023
- 计算机英语新词的认知语义阐释论文,计算机英文专业论文题目 计算机英文论文题目怎样定...
- 目标检测YOLO实战应用案例100讲-网联自动驾驶中感知图像隐私目标分类与检测方法
- RECS高管教练课程是什么?
- python向上向下取整_python 向上取整ceil 向下取整floor 四舍五入round