C51教程 第二个51程序: 跑马灯 流水灯

发布者:翩翩轻舞最新更新时间:2022-01-27 来源: eefocus关键字:C51  51程序  跑马灯  流水灯 手机看文章 扫描二维码
随时随地手机看文章

keil+proteus

第二个51程序 : 跑马灯 流水灯

这是一个AT89c51单片机教程,我们每次都会提供博文教程以及附带资料下载。

单片机就是一个小型CPU,在电子领域应用广泛,电视、冰箱、洗衣机、空调等产品中都能见到他们的身影。它是一个可编程的mcu,根据代码的不同可实现非常多功能


今天要走入第二个程序,跑马灯,按步骤,先硬件,后软件的顺序,先绘制原理图

在这里插入图片描述

建立好之后开始编写代码


#include


void delayms(unsigned int t)

{

unsigned int i,j;

for(i=0; i for(j=0; j<120; j++);

}

void main(void)//主函数

{

int n;

unsigned char a[8] =  { //取表数组

0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};


while(1)

{

for(n=0; n<8; n++)//循环取表 流水灯

{

P1 = a[n];

delayms(500);

}

}

}


写入keil工程,编译生成hex文件

在这里插入图片描述

进入proteus仿真,烧录hex文件,点击运行…

仿真开始运行跑马灯。

在这里插入图片描述

keil工程代码以及proteus仿真原理图资料包:http://download.csdn.net/download/mbs520/12118172


*代码解读

1、

#include

包含头文件,为什么要包含头文件?因为要编写的是51程序,最终代码是要在51单片机里运行,所以要包含一个51头文件,这个文件包含了51所有寄存器的一些定义,怎么查看它呢,编译的时候会出现在你的工程文件中,在keil4的左边工程文件就可以查看了

在这里插入图片描述

2、

void delayms(unsigned int t)//延时函数

{


int a,b;

for(a=0; a for(b=0; b<120; b++);


}

延时函数就是让CPU反复执行一条空指令来消耗时间,这段时间CPU仍然在工作,各寄存器的值保持不变。


3、

void main(void)

这是主函数,程序从这里开始执行

另外,51单片机不用循环语句while,也会循环执行main函数中的内容


4、

int n;  

unsigned char a[8] =  { //取表数组

0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};


int n; //这里定义一个n用来for循环的计数

unsigned char a[8] = { 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

这个数组是干嘛的?我把它转为二进制你就差不多明白了,它们分别是

0000 0001

0000 0010

0000 0100

0000 1000

0001 0000

0010 0000

0100 0000

1000 0000

你会发现有一个1在向左移动,我们把这个1想做是亮着的灯,0是灭的灯,按照这个规律流动,就成了流水灯


5、

while(1)

{

for(n=0; n<8; n++)//循环取表 流水灯

{

P1 = a[n];

delayms(500);

}

}


while(1)是一个死循环,会循环执行里面的内容


for(n=0; n<8; n++)//循环取表 流水灯

{undefined

P1 = a[n];

delayms(500);

}

这个才是跑马灯的真正代码,利用for循环n自增,就可以一次输出数组里面的内容。

P1:在头文件里定义,为单片机IO口寄存器,8bit,每一位由低到高分别存储P1_0-P1_7的高低电平0或1。

依次对P1口输出a[0] a[1] 、a[2]、 a[3]、 a[4]…实现跑马灯效果


百度网盘链接:https://pan.baidu.com/s/18cVVHyE6O1AzvUvZMsApZA

提取码:22pi


(有问题欢迎留言,第一次发帖,不到之处希望各位大神指点)

(也可以私信我问题,看到否可以为为大家耐心解答,很高兴跟大家交流技术问题。范围:电路设计 电路仿真 PCB设计 51单片机 msp430 arduino stm32 luinx)

关键字:C51  51程序  跑马灯  流水灯 引用地址:C51教程 第二个51程序: 跑马灯 流水灯

上一篇:51单片机-asm与C混合编程
下一篇:51单片机教程:51单片机驱动四个8*8点阵

推荐阅读最新更新时间:2024-11-10 11:37

51单片机与PC串口通信程序
#include reg51.h #define BUFFERLEGTH 10 //----------------------------------------------------------------- void UART_init(); //串口初始化函数 void COM_send(void); //串口发送函数 char str ; char j; //------------------------------------------------------------------- void main(void) { unsigned char i; UART_init(); j=
[单片机]
KeilC51下的带进位循环右移指令是什么
一:C语言实现循环移位: 比如将a=0x45循环左移二位。a循环左移n位,即将原来右面(8-n)位左移n位,而将原来左端的n位移到最右面n位。 实现步骤: 1、将a的左端n位先放到b中的高n位中 b= (8-n); 2、将a左移n位,其右面高n位被补0 c= n; 3、将b,c进行或运算 a=c|b; 程序如下: main() { unsigned char a=0x45,b,c; unsigned int n=2; b=a 8-n) c=a n; a=c|b; } 二:Keil C言实现循环移位 在Keil C51中有这样一个
[单片机]
程序的多任务和资源复用举例C51程序
程序的多任务和资源复用举例 有一台机电设备,有两个按键,控制设备的两个不同部分。 现要求: 每个按键按下,相应控制程序运行。但两个按键可以同时按下,就是说两个控制程序可能 需要同时运行。使用一个89C52,如何编写程序? 注:此程序不使用RTOS等操作系统。 /*程序说明: 一)产生波形可以使用中断中计数来产生精确的波形。 本答案中为更能体现程序的多任务和资源复用问题,采用主程序循环产生。 二)请特别注意,题意是两个程序在并发运行,实际按本答案可以扩展到N个不同任务同时运行,在此就不讨论。 (对大程序结构增加了很多其它的概念) 三)因为在论坛上直接贴出,所以程序放在一个文件中。 应该按Timer.c, Key.c, Con
[单片机]
C51 库函数(1)
C-51软件包的库包含标准的应用程序,每个函数都在相应的头文件(.h)中有原型声明。如果使用库函数,必须在源程序中用预编译指令定义与该函数相关的头文件(包含了该函数的原型声明)。例如: #include #include 如果省掉头文件,编译器则期望标准的C参数类型,从而不能保证函数的正确执行。 3.1 CTYPE.H:字符函数 在CTYPE.H头文件中包含下列一些库函数: 函数名: isalpha 原 型: extern bit isalpha(char) 功 能: isalpha检查传入的字符是否在‘A’-‘Z’和‘a’-‘z’之间,如果为真返回 值为1,否则为0。 函数名: isalnum 原 型: extern b
[单片机]
C51单片机串口工作的四种方式总结
方式0:同步移位寄存器输入输出方式 1. 利用移位寄存器实现串行/并行的转换(功能) 2. 波特率:fosc/12 3. RXD(P3.0)----用于串行数据的输入和输出 TXD(P3.1)----充当输出的移位时钟 4. 数据大小:8位 5. 方式0发送: ○ 串口接口移位寄存器(74HC164),主要用于扩展并行输出口 ○ 用单片机本身的3根线换取了8根线的作用 ○ 串行接口将8位数据从SBUF中取出 ○ TXD引脚上输出同步移位脉冲 ○ 以fosc/12的波特率从RXD端串行输出到移位寄存器 ○ 发完后TI置1,向CPU请求中断 6. 7. 8. 方式0接收: ○ 串口接口移位寄存器(74HC1
[单片机]
<font color='red'>C51</font>单片机串口工作的四种方式总结
51单片机-温度PID算法(C程序)
#include reg51.h #include intrins.h #include math.h #include string.h struct PID { unsigned int SetPoint; // 设定目标 Desired Value unsigned int Proportion; // 比例常数 Proportional Const unsigned int Integral; // 积分常数 Integral Const unsigned int Derivative; // 微分常数 Derivative Const unsigned int LastError; // Error
[单片机]
51单片机led灯渐变PWM调光(渐亮渐灭)C语言和汇编源程序
PWM控制led灯渐亮渐灭程序 适用ME500开发系统 短接JP41-2选用8个LED灯 PWM—PulseWidthModulation(脉冲宽度调制) PWM足?种周期?走而高低电平的rV空比可以调制的方波信兮. 按K2—下,PWM值减小,则占空比增加。 兗度逐渐增加,直到8个LED灯达到高亮,蜂鸣器响。 按K1—下,PWM值增加,则占空比减小。 立度逐渐减弱,直到8个LED灯达到最峭,蜂鸣器响。 单片机汇编语言源程序如下: ; PWM 控制 LED 灯渐亮渐灭程序 ; 适用 ME500 开发系统 ; 晶振为11.0592M ; 利用定时器控制产生占空比可变的 PWM 波 ; 按K1,PWM值增加,则占空比减小,LED 灯渐
[单片机]
51单片机是如何存储程序和数据的
简介:(单片机基础知识之单片机存储器)在学校很少用到外扩ROM/RAM的情况,都是用C语言编程,不差空间,代码太大了,买个大ROM的芯片就行了。现在工作了,单位是做SoC的,采用了51的IP核,才算对51的代码/数据空间有了清晰的认识。 在学校很少用到外扩ROM/RAM的情况,都是用C语言编程,不差空间,代码太大了,买个大ROM的芯片就行了。现在工作了,单位是做SoC的,采用了51的IP核,才算对51的代码/数据空间有了清晰的认识。 MCS-51使用哈弗结构,它的程序空间和数据空间是分开编址的,即各自有各自的地址空间,互不重叠。所以即使地址一样,但因为分开编址,所以依然要说哪一个空间内的某地址。而ARM(甚至是x86)这种
[单片机]

推荐帖子

VB2003调用PhoneMakeCall打电话请教
VB2003调用PhoneMakeCall打电话,第一次正确,第二次会在号码后自动加一个8,这样号码就错误了,怎样解决啊?ImportsSystemImportsSystem.IOImportsSystem.TextImportsSystem.CollectionsImportsSystem.Runtime.InteropServicesPrivateSubButton1_Click(ByValsenderAsSystem.Object,ByVale
ttsurvive 嵌入式系统
求推荐一本中英文对照的开关电源书籍
想提高开关电源水平的同时也提高英语水平,求推荐一本中英文对照的开关电源书籍,这样可以互补学习~谢谢!求推荐一本中英文对照的开关电源书籍开关电源维修-一线资料速查速用此书书只是部分章节有英汉对照表还是读英文版,一般没有英汉对照的技术书籍。
hfutdsplab 电源技术
反激式、正激式、推挽式、半桥式、全桥式开关电源的优点和缺点!
01单端正激式单端:通过一只开关器件单向驱动脉冲变压器.正激:脉冲变压器的原/付边相位关系,确保在开关管导通,驱动脉冲变压器原边时,变压器付边同时对负载供电。该电路的最大问题是:开关管T交替工作于通/断两种状态,当开关管关断时,脉冲变压器处于空载状态,其中储存的磁能将被积累到下一个周期,直至电感器饱和,使开关器件烧毁。图中的D3与N3构成的磁通复位电路,提供了泄放多余磁能的渠道。02单端反激式反激式电路与正激式电路相反,脉冲变压器的原/
qwqwqw2088 模拟与混合信号
手机蓝牙天线
手机蓝牙天线的增益要求多少?有谁做过手机蓝牙pcb单级子天线,增益能做多少?尺寸能多小啊?手机蓝牙天线增益是看你的要求来的没规定要多少但是蓝牙输出功率是有要求的有三个class,我们一般用的我是class2class是那个输出功率吧?那一般天线做到多少呢
xiao0qiang RF/无线
.out文件有未决的符号为什么也能运行?
一个简单程序:#includestdioLib.hintmain(){chara1;chara2=123456789;memcpy(a1,a2,10);printf(a1);return1;}编译生成.out文件后用objdumppentium命令查看符号,可以看到memcpy和“printf都是未决符号但是把.out下载到目标机,运行正常,是为什么呢?.out文件有未决的符号为什么也能运行?
cgl123456 嵌入式系统
变频器母线电容的选型容量以及输出电流和输出电压的关系?
一般地380V电压等级的变频器按照输出额定电流选择母线支撑电容,每安培40-50uF电容,这是常规办法,实在额定输出电压额定输出电流条件下的电容容值大小;如果说变频器的输出电压限制在300V,仍然要输出额定电流,此时电容的容量选取应该是怎么样的,输出电压、输出电流、电容容量选择是一个什么样的数量关系?变频器母线电容的选型容量以及输出电流和输出电压的关系?不会计算,又不太懂的这种情况,可以参考变频器制造商提供的推荐值三相桥式整流纹波基波频率为300Hz,为保证稳定工作,滤波电容器
乱世煮酒论天下 电机驱动控制(Motor Control)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved