STCC单片机花样流水灯C语言程序

S T C C单片机花样流水灯C语言程

Revised on July 13, 2021 at 16:25 pm

花样流水灯程序#include

#define uint unsigned int

#define uchar unsigned char

uchar num;

uchar code table={

0xaa;~0xaa;0x7e;0xbd;0xdb;

0xe7;0xf3;0xf9;0xfc;0xfa;

0xf6;0xee;0xde;0xbe;0x7e;

0xbe;0xde;0xee;0xf6;0xfa;

0xfc;0xf0;0xc0;0x0;0x5f;0xaf;0xd7;0xeb;0xf5;0xfa;0xff}; void delaymsuint;

void main

{

while1

{

fornum=0;num<31;num++

{

P2=tablenum;

delayms200;

}

P2=0x7f;

delayms40;

P2=0x3f;

delayms80;

P2=0x1f;

delayms130;

P2=0x0f;

delayms190;

P2=0x07;

delayms260;

P2=0x03;

delayms240;

P2=0x01;

delayms330;

P2=0x00;

delayms430;

fornum=0;num<31;num++

{

P2=tablenum;

delayms100;

}

P2=0x7f;

delayms40;

P2=0x3f;

delayms50;

P2=0x1f;

delayms70;

P2=0x0f;

delayms100;

P2=0x07;

delayms140;

P2=0x03;

delayms190;

P2=0x01;

delayms250;

P2=0x00;

delayms320;

}

}

void delaymsuint xms {

uint i;j;

fori=xms;i>0;i--

forj=110;j>0;j--;

}

我是新手;大神勿喷∩_∩

(完整word版)单片机C语言程序设计实训100例

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例 第 01 篇基础程序设计 01 闪烁的LED /*名称:闪烁的LED 说明:LED按设定的时间间隔闪烁 */ #include #define uchar unsigned char #define uint unsigned int

//延时 void DelayMS(uint x) { uchar i; while(x—-) { for(i=0;i〈120;i++); } } //主程序 void main() { P0=0xfe; while(1) { P0=_crol_(P0,1); //P0的值向左循环移动 DelayMS(150); } } 03 8只LED左右来回点亮 /*名称:8只LED左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果 */ #include #include〈intrins.h> #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x——) { for(i=0;i〈120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) {

单片机流水灯多种程序方法

一、傻瓜式编程 #include #define uint unsigned int #define uchar unsigned char void delay(uint z); //延时子函数的声明main () { P0=0xfe;//第一个灯亮 delay(500); P0=0xfd;//第二个灯亮 delay(500); P0=0xfb; delay(500); P0=0xf7; delay(500); P0=0xef; delay(500); P0=0xdf; delay(500); P0=0xbf; delay(500); P0=0x7f; delay(500); } void delay(uint z) //延时子函数 { uint x,y; for(x=0;x

二、用移位符号“<<”或“>>” void main() //主函数 { a=0xfe; //给a赋值 while(1) { P0=a;//给P0口赋值,第一个等亮a为1111 1110 a=~a;//求反a为0000 0001 a=a<<1;//移位a为0000 0010 a=~a;//求反还原a。第二个灯亮a为1111 1101 delay(500); if(a==0x7f) { P0=0x7f;//第八个灯亮一次 delay(500); a=0xfe;//让第一个灯亮,然后无限循环 } } } 三、用移位函数_crol_( )和_cror_( ) main() { a=0xfe; while(1) { P0=a; delay(500); a=_crol_(a,1); //a每次左移一位 } } 四、使用数组 uchar code table[ ]={0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf,0x7f}; main() { whlie(1) { for(a=0;a<8;a++) { P0=table[a]; delay(500); } } }

多种方法写出的51单片机流水灯C语言程序

多种方法写出的51单片机流水灯C语言 程序 流水灯最原始 下面是一个最基本的流水灯程序,使用了51单片机的寄存器编程方法。 include "reg51.h" sbit p0=P1^0; sbit p1=P1^1; sbit p2=P1^2; sbit p3=P1^3; sbit p4=P1^4; sbit p5=P1^5; sbit p6=P1^6; sbit p7=P1^7; void mdelay(unsigned int t){ unsigned char n;

for(;t>0;t--) for(n=0;n<125;n++) void main() while(1) P1=0; p0=1; mdelay(1000); p0=0; p1=1; mdelay(1000); p1=0; p2=1;

流水灯位左移 在流水灯的基础上,我们可以通过左移位的方式来实现流水灯的效果。 void main() unsigned char led = 0x01.// 初始化led为xxxxxxxx while(1) P1 = ~led。// 取反输出,因为我们的电路是低电平亮灯 mdelay(1000); led <<= 1.// 左移一位 if(led == 0) // 如果led变为0了,说明已经左移到最后一位了,需要重新开始 led = 0x01;

流水灯移位函数 为了方便实现流水灯的位移,我们可以封装一个移位函数。 void shift_left(unsigned char *led。unsigned char n) for(unsigned char i=0.i

STCC单片机花样流水灯C语言程序

S T C C单片机花样流水灯C语言程 序 Revised on July 13, 2021 at 16:25 pm

花样流水灯程序#include #define uint unsigned int #define uchar unsigned char uchar num; uchar code table={ 0xaa;~0xaa;0x7e;0xbd;0xdb; 0xe7;0xf3;0xf9;0xfc;0xfa; 0xf6;0xee;0xde;0xbe;0x7e; 0xbe;0xde;0xee;0xf6;0xfa; 0xfc;0xf0;0xc0;0x0;0x5f;0xaf;0xd7;0xeb;0xf5;0xfa;0xff}; void delaymsuint; void main { while1 { fornum=0;num<31;num++ { P2=tablenum; delayms200; } P2=0x7f; delayms40; P2=0x3f; delayms80; P2=0x1f; delayms130; P2=0x0f; delayms190; P2=0x07; delayms260; P2=0x03; delayms240; P2=0x01; delayms330; P2=0x00; delayms430; fornum=0;num<31;num++ { P2=tablenum; delayms100; }

P2=0x7f; delayms40; P2=0x3f; delayms50; P2=0x1f; delayms70; P2=0x0f; delayms100; P2=0x07; delayms140; P2=0x03; delayms190; P2=0x01; delayms250; P2=0x00; delayms320; } } void delaymsuint xms { uint i;j; fori=xms;i>0;i-- forj=110;j>0;j--; } 我是新手;大神勿喷∩_∩

单片机C语言LED灯点亮程序完全版

1例子1第二个灯亮 include void main { P1=0xfd; } include Sbit D1=P1^0; Void main { D1=0 } 注意:稍微改程序时需重新hex化 例子2第一个灯亮 include //52单片机头文件 sbit led1=P1^0; //单片机管脚位声明 void main //主函数 { led1=0; //将单片机P1.0口清零 while1; //程序停止在这里,在后面会讲到为什么这样写. }

例子3第一个灯亮 include //52单片机头文件 void main //主函数 { P1=0xfe; //将单片机P1口的8个口由高到低分别赋值为11111110 while1; //程序停止在这里,在后面会讲到为什么这样写. } 2例子1第三个灯闪烁fir循环 include sbit D2=P1^2; unsigned int a; void main { D2=0; fora=0;a<=10000;a++{}; D2=1; fora=0;a<=10000;a++{}; } 例子2第三个闪烁while循环 include

sbit D2=P1^2; unsigned int a; void main { a=5000; D2=0; whilea--; a=5000; D2=1; whilea--; } 2.include //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main //主函数 { unsigned int i; //定义一个int型变量while1 { i=50000; //变量赋初值为50000 led1=0; //点亮灯 whilei--; //延时 i=50000;

单片机流水灯的程序

单片机流水灯的程序 一、流水灯的概念 流水灯是一种在特定硬件基础上编写的程序,它可以通过单片机控制LED灯的亮灭,从而实现一种特定的灯光效果。流水灯的程序通常利用单片机的定时器/计数器功能,通过对GPIO(通用输入输出)口的操作,控制LED灯的亮灭状态。在程序运行时,LED灯按照特定的顺序逐个亮起,就像流水一样,因此被称为流水灯。 二、硬件组成 要实现流水灯效果,需要准备的硬件包括单片机、LED灯、限流电阻、杜邦线等。其中,单片机是核心控制单元,LED灯是显示设备,限流电阻用于保护LED灯,杜邦线用于连接单片机和LED灯。 三、程序编写 下面是一个基于Arduino的流水灯程序。Arduino是一种常用的单片机开发板,具有易于学习和使用的特点。在这个程序中,我们将使用Arduino板的数字口来控制LED灯的亮灭。 cpp

define NUM_LEDS 8 // LED灯的数量 void setup() { //初始化数字口为输出模式 for (int i = 0; i < NUM_LEDS; i++) { pinMode(i, OUTPUT); } void loop() { //逐个点亮LED灯 for (int i = 0; i < NUM_LEDS; i++) { digitalWrite(i, HIGH); //点亮LED灯 delay(200); //延时200毫秒 digitalWrite(i, LOW); //熄灭LED灯 }

四、程序调试 将程序上传到Arduino板,然后依次连接好LED灯和限流电阻,最后用杜邦线将它们连接到Arduino板的数字口上。当程序运行时,应该可以看到LED灯按照特定的顺序逐个亮起,形成流水灯效果。如果出现问题,可以检查硬件连接是否正确,或者修改程序中的延时时间等参数。 单片机心型流水灯程序 随着科技的不断发展,单片机已经成为了现代电子设备中不可或缺的一部分。其中,流水灯程序作为一种常见的单片机应用,被广泛应用于各种场合。本文将介绍一种基于单片机的简单心型流水灯程序,以帮助读者更好地了解这方面的知识。 一、硬件准备 为了实现心型流水灯程序,我们需要准备以下硬件: 1、单片机开发板(如AT89C51) 2、发光二极管若干

单片机课程设计花样流水灯

河南理工学院 课程设计说明书 题目:把戏流水灯设计 姓名: 院〔系〕: 专业班级: 学号: 指导教师: 成绩: 时间:2021 年 4 月23 日至2021 年5月29日

河南理工学院 课程设计任务书 题目: 把戏流水灯设计 专业、班级 学号 主要内容、根本要求、主要参考资料等: 主要内容: 利用单片机控制16个发光二极管模拟的彩灯按照一定的规律点亮、熄灭、闪烁。 根本要求: 1.实现发光二极管的多样化显示; 2.利用proteus软件完成设计电路和仿真; 3.掌握相关芯片和电子元件的使用方法; 4.通过此次设计将单片机软硬件结合起来对程序进行编辑、校验,锻炼实践能力和理论联系实际的能力。 主要参考资料: [1]李全利,单片机原理及接口技术[M],高等教育出版社 [2]王文杰,单片机应用技术[M],冶金工业出版社 [3]朱清慧,PROTEUS教程—电子线路设计、制版与仿真[M],清华大学出版社 [4]单片机实验指导书,天煌教仪 [5]彭伟,单片机C语言程序设计实训100例[M],电子工业出版社 完成期限:2021.4.23-2021.5.29 指导教师签名: 课程负责人签名: 年月日

目录 绪论 0 1 课程设计的目的和要求 (1) 1.1 设计目的 (1) 1.2 设计要求 (1) 2 总体设计 (1) 2.1 硬件总体设计 (1) 2.1.1 设计思想 (1) 2.1.2 原件清单 (1) 2.1.3 模块分析 (1) 2.2软件总体设计.................................................................................................... 错误!未定义书签。 3 硬件设计 (2) 3.1 AT89C51单片机的硬件结构 (2) 3.1.1主要特性 (3) 3.1.2主要引脚功能 (3) 3.1.3外部总线结构 (5) 3.1.4振荡器特性 (5) 3.1.5芯片擦除 (5) 3.2硬件电路设计 (6) 3.2.1震荡电路 (6) 3.2.2LED电路显示 (7) 3.2.3复位电路 (8) 4软件设计 (8) 4.1主程序设计 (8) 4.2子程序设计 (9) 4.3流水灯控制码程序设计 (9) 4.4程序流程图 (9) 5使用proteus软件调试仿真说明 (10) 5.1 Proteus的介绍 (10) 5.2 Proteus的特点 (10) 5.3 Proteus的使用方法 (10) 5.4电路原理图的设计方法 (11) 5.5仿真过程 (12) 6测试数据 (12) 7附录 (13) 7.1把戏流水灯程序 (13) 7.2把戏流水灯总线路图 (13) 结束语 (15) 参考文献 (15)

单片机流水灯实验电路图+仿真

单片机实验 项目____拉幕式数码显示_______ 学号___1204180217_____ 专业__能源工程及其自动化__ 班级____02____________

姓名___邵鹏程_________ 一、实验目的 1,对单片机进一步了解熟悉 2,掌握数码管显示技术及编程 3,巩固理论知识及 二、实验内容 用51单片机8位控制数码管,在数码管上显示“01234567”,并能循环显示。 三、实验原理图

四、程序设计方法 1、动态数码显示技术;如何进行动态扫描,由于一次只能让一个数码管显示,因此,要显示8位的数据,必须经过让数码管一个一个轮流显示才可以,同时每个数码管显式的时间大约在1ms到4ms之间,所以为了保证正确显示,必须每隔1ms,就得刷新一个数码管。而这刷新时间我们采用单片机的定时/计数器来控制,每定时1ms对数码管刷新一次。 2、在进行数码显示的时候,要对显示单元开辟8个 显示缓冲区,每个显示缓冲区装有显示的不同数据即可

五、C语言源程序 #include #define uint unsigned int #define uchar unsigned char uchar code DIS_SEG7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; uchar code DIS_BIT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //--------------------------------------------------- void delay1ms(uint i) {

几种流水灯的闪亮程序

流水灯闪亮程序 #include #include sbit led1=P1^0; #define uchar unsigned char #define uint unsigned int void delay(uint ms); void main(void) { uchar a; a=0xfe; while(1) { P1=a; delay(500); a=_crol_(a,1); //_crol_(a,1);循环左移_cror_(a,1); ;循环右移} } void delay(uint ms) //500 { uint i, j; // uchar时间短uint时间较长 for (i=ms;i>0;i--) for(j=100;j>0;j--); } 流水灯程序 #include #include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit key=P1^0; sbit led9=P0^7; uchar k; //delay us void Delay(uchar us) //5,7,9 { while(--us); } //delay ms void DelayMS(uint iMs) { uint i,j;

for(i=0;i

单片机c语言编程控制流水灯

说了这么多了,相信你也看了很多资料了,手头应该也有必备的工具了吧!(不要忘了上面讲过几个条件的哦)。那个单片机究竟有什么 功能和作用呢?先不要着急!接下来让我们点亮一个LED(搞电子的应该知道LED是什么吧^_^) 我们在单片机最小系统上接个LED,看我们能否点亮它!对了,上面也有好几次提到过单片机最小系统了,所谓单片机最小系统就是在单片机 上接上最少的外围电路元件让单片机工作。一般只须连接晶体、VCC、GND、RST即可,一般情况下,AT89C51的31脚须接高电平。 #include //头文件定义。或用#include其具体的区别在于:后者定义了更多的地址空间。 //在Keil安装文件夹中,找到相应的文件,比较一下便知! sbit P1_0 = P1 ^ 0; //定义管脚 void main (void) { while(1) { P1_0 = 0;//低电平有效,如果把LED反过来接那么就是高电平有效 } } 就那么简单,我们就把接在单片机P1_0上的LED点亮了,当然LED是低电平,才能点亮。因为我们把LED的正通过电阻接至VCC。 P1_0 = 0; 类似与C语言中的赋值语句,即把0 赋给单片机的P1_0引脚,让它输出相应的电平。那么这样就能达到了我们预先的要求了。 while(1)语句只是让单片机工作在死循环状态,即一直输出低电平。如果我们要试着点亮其他的LED,也类似上述语句。这里就不再讲了。 点亮了几个LED后,是不是让我们联想到了繁华的街区上流动的彩灯。我们是不是也可以让几个LED依次按顺序亮呢?答案是肯定的!其 实显示的原理很简单,就是让一个LED灭后,另一个立即亮,依次轮流下去。假设我们有8个LED分别接在P1口的8个引脚上。硬件连接,在 P1_1--P1_7上再接7个LED即可。例程如下: #include sbit P1_0 = P1 ^ 0; sbit P1_1 = P1 ^ 1; sbit P1_2 = P1 ^ 2; sbit P1_3 = P1 ^ 3; sbit P1_4 = P1 ^ 4; sbit P1_5 = P1 ^ 5; sbit P1_6 = P1 ^ 6; sbit P1_7 = P1 ^ 7; void Delay(unsigned char a) { unsigned char i; while( --a != 0) {

基于C51单片机4按键4种花样流水灯设计

#include #define uchar unsigned char #define uint unsigned int #define LED P3 uchar i,flag1,flag2,flag3,flag4; /*******************定义按键*****************************/ sbit k1=P2^4; sbit k2=P2^5; sbit k3=P2^6;

sbit k4=P2^7; /************************流水灯花样设计********************/ uchar table1[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfc,0x ff};/***从右到左逐一点亮反向灭之**/ /***0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f*左移*/ uchar table2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf}; /*******左右循环********/ uchar table3[]={0x7e,0xbd,0xdb,0xe7,0xff};/****两头靠拢****/ uchar table4[]={0xaa,0x55};/****闪烁****/ /*********************延时程序****************************/ void delay(uint x) { uint i; while(x--) for(i=50;i>0;i--); } /******************判断按键***********************/ void keyscan() { if(k1==0) {delay(10);

C51单片机(32路流水灯C语言程序)

C51单片机(32路流水灯C语言程序) #include void delay(int t){ //时间延迟子函数 unsigned int i,j; for(j=0;j<30;j++) for(i=0;i

单片机闪烁灯流水灯汇编代码大全

单片机闪烁灯流水灯汇编代码大全 1、单片机AT89C51的P2 口接8个发光二极管,让这8 个发光二极管显示闪烁功能,即八灯亮2S,熄灭3S,如此循环。 参考程序: ORG 0000H start: MOV P1,#0H CALL delay MOV P1,#0FFH CALL delay CALL delay LJMP start delay: MOV R7,#200 d2: MOV R6,#250 d1: DJNZ R6,d1 DJNZ R7,d2 RET END ;200*250 次*2*1us=1000ms=1s

个发光二极管能够双灯左移之后再双灯右移, 形成霹雳灯的效果,如此循环 5 次后全灭,延时0.5S 灯右移,形成霹雳灯的效果, 如此循环5 次后全灭。延时0.5S。 参考程序1: ORG 0000H MOV A,#11111100B start: MOV P1,A CALL delay RL A RL A INC R0 CJNE R0,#4,start MOV R0,#00H s: RR A RR A MOV P1,A CALL delay INC R0

CJNE R0,#4,s

MOV R0,#00H LJMP start delay: MOV R5,#100 k1: MOV R6,#250 k2: MOV R7,#250 k3: DJNZ R7,k3 DJNZ R6,k2 DJNZ R5,k1 RET END 参考程序2: ORG 0000H MOV R0,#5 start: MOV P2,#11111100B CALL delay0_5s MOV P2,#11110011B CALL delay0_5s MOV P2,#11001111B MOV P2,#00111111B

单片机心型流水灯程序

#include #define uint unsigned int #define uchar unsigned char uchar code table0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//LED从低位往高位移 uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED从高位往低位移 uchar code table2[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//LED从1个亮到8个都点亮(从低位往高位) uchar code table3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//LED从1个亮到8个都点亮(从高位往低位) uchar code table4[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//LED从8个全亮到一个都不亮(从低位往高位) uchar code table5[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//LED从8个全亮到一个都不亮(从高位往低位) uchar code table6[]={0xfe,0xfc,0xfa,0xf6,0xee,0xde,0xbe,0x7e};//LED从低位往高位移(最低位始终为0) uchar code table7[]={0x7f,0x3f,0x5f,0x6f,0x77,0x7b,0x7d,0x7e};//LED从高位往低位移(最高位始终为0) uchar i,j; //定义循环变量 uint tt=70; //定义时间指数 void delay(uint time) //延时函数 { uint x,y; for(x=time;x>0;x--) for(y=110;y>0;y--); } void disp0() //状态0 所有LED闪烁3次 { for(i=0;i<3;i++) { P0=0x00; P2=0x00; P3=0x00; P1=0x00; delay(300); P0=0xff; P2=0xff; P3=0xff; P1=0xff; delay(300); } } void disp1() //状态1 LED顺时针转一圈 { for(i=0;i<8;i++) { P2=table1[i];

相关文档
最新文档