C51单片机学习笔记(二)——花样流水灯的实现

发布者:SereneSoul55最新更新时间:2022-07-12 来源: csdn关键字:C51  单片机  花样流水灯 手机看文章 扫描二维码
随时随地手机看文章

1.单片机引脚、晶振、复位的作用

在这里插入图片描述

复位电路:,复位是单片机的初始化操作。单片机启动时都需要先付薇,其作用是“清零”,也就是CPU和其他部件处于一个确定的初始状态,并从这个初始状态开始。

复位实质上是单片机的复位脚保持很短时间的高电平,按键复位就是通过按键接高电平(按一下的时间已经足够)

时钟电路(晶振):产生时间信号,使单片机按照一定的时间规律进行指令,晶振频率越高,时钟信号的周期就小,单片机运行也就越快。

在这里插入图片描述

32个I/O口


P1.0 ~ P1.7 对应1 ~ 8 号引脚


P2.0 ~ P2.7 对应21 ~ 28 号引脚


P3.0 ~ P3.7 对应10 ~ 17 号引脚


P0.0 ~ P0.7 对应39 ~ 32 号引脚

其中,P3口除作标准I/O口外,还可以将每一位用于第二功能:

在这里插入图片描述

其他引脚功能:

在这里插入图片描述

2.流水灯原理图

在这里插入图片描述

D1~D8为发光二极管(LED),由于LED工作时能承受的电流很小,所以后面接在PR1上,PR1是一个排阻,电阻的大小一般为100Ω左右,以防止电流过大击穿二极管,P20-P27是接单片机的P2.0-P2.7的引脚,Vcc接高电平,所以电流从右向左流,要想LED导通,仅需引脚处为低电平,两端形成电位差,LED被点亮

所以通过编程控制P2口的8个引脚,使他们周期性的输出高电平、低电平并延时,即可使LED闪烁,构成流水灯。

3.单片机的周期

时钟周期:

也称振荡周期,是时钟频率的倒数,就看晶振是多少HZ的,若是12MHZ的,时钟周期就是1/12微秒,他是单片机中最小的时间单位,在一个时钟周期内单片机仅能完成一个最基本的动作。


机器周期:

是单片机的基本操作周期,为时钟周期的12倍,在一个机器周期内可以完成一个取指令的动作。


指令周期

指单片机完成一条指令所需的时间,一般为4个机器周期。


4.延时函数的编写

void delay()

{

unsigned int x,y;       //定义无符号的int型x,y

for(x = 1000;x>0;x--)

for(y=110;y>0;y--);

}


每执行一次x-1,y就要从110逐步-1,直到减小到0,x共要自减1000次,总耗时约为1秒(这个时间会有误差,如果要精确延时,后面讲到中断再说明)

如果一个程序里需要不同的延时时间,就需要用带参数的延时函数

void delay(unsigned int z)

{

unsigned int x,y;       //定义无符号的int型x,y

for(x = z;x>0;x--)

for(y=110;y>0;y--);

}


5.使用“位操作”控制流水灯

编程思路:“位操作”就是控制单独的一个I/O口,使该引脚输出高电平或低电平,来驱动与该引脚相连的元器件发生相应的动作。

#include

sbit led0 = P2^0;  // sbit是定义位的关键字,一个引脚就是一位,P2^0代表P2.0引脚,以此类推

sbit led1 = P2^1;

sbit led1 = P2^2;

sbit led1 = P2^3;

sbit led1 = P2^4;

sbit led1 = P2^5;

sbit led1 = P2^6;

sbit led1 = P2^7;

void delay(unsigend z);

void main()

{

led0 = 0;   //此时P2.0引脚为低电平,LED点亮

delay(500);   //延时500毫秒

led0 = 1;    //将P2.0引脚为低电平,LED熄灭

led1 = 0;

delay(500);

led1 = 1;

led2 = 0;delay(500);led2=1;led3=0;delay(500);led3=1;

led4 = 0;delay(500);led4=1;led5=0;delay(500);led5=1;

led6 = 0;delay(500);led6=1;led7=0;delay(500);led7=1;

}

void delay(unsigned z)

{

unsigned x,y;

for(x = z;x>0;x--)

for(y = 110;y>0;y--);

}


按照上一篇的烧写方法就可以烧入单片机,观察到流水灯闪烁。

6.使用字节控制(并行I/O口控制)流水灯

编程思路:51系列单片机是8位单片机,每一组端口共有8个引脚,每个引脚可输出一个电平(0/1),一组端口可同时输出8个电平,正好构成一个字节。用字节操作来控制同时点亮几个流水灯的流动,要比位操作简单的多,即要点亮D2,D4,D6,D8,只需要P2端口从高位P2.7-P2.0 输出 0101 0101,将这8位二进制数转化为十六进制位0X55,只需要P2 = 0X55就行了。

#include

#defined LED P2;  //宏定义 LED表示端口P2

void delay(unsigned int z)//延时函数的另一种写法

{

while(z--);

}

void main()

{

LED = 0xlf;    //0xlf = 0001 1111

delay(30000);     

LED = 0x8f;     //0x8f = 1000 1111   

delay(30000);

LED = 0xc7;     //0xc7 = 1100 0111

delay(30000);

LED = 0xe3;    //0xe3 = 1110 0011 

delay(30000);

LED = 0xf1;     //0xf1 = 1111 0001

delay(30000);

LED = 0xf8;  //0xf8 = 1111 1000

delay(30000);

LED = 0x7c;   //0x7c = 0111 1100

delay(30000);

LED = 0x3e;  //0x3e = 0011 1110

delay(30000);

}


7.使用数组控制流水灯

定义一个char类型(一个字节)的数组存放每个十六进制数,这样用一个for循环就可以循环赋值并延时

#include

unsigned char table[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//点亮第1、2、3、4···个灯的十六进制代码传入

void delay(unsigned int z)

{

unsigned int x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main()

{

for(i=0;i<8;i++)

{

P2 = table[i];

delay(500);

}

}

关键字:C51  单片机  花样流水灯 引用地址:C51单片机学习笔记(二)——花样流水灯的实现

上一篇:C51单片机学习笔记(四)——单片机的中断系统及应用
下一篇:C51单片机学习笔记(六)——液晶显示屏的使用

推荐阅读最新更新时间:2024-11-13 08:30

Proteus通过虚拟串口程序仿真51单片机串口的实现
1.参考文章下载地址: http://download.csdn.net/source/1927624 2. 虚拟串口 3. 串口调试助手 4. Proteus 7.5 sp3 实现方法 1.参考文章(参考文章是从CSDN下载的一篇PDF文件)已经很详细的说明了怎么实现,我就不想啰嗦了,我只提供几个关键的截图和串口调试程序代码 如果参考文章打不开我提供参考文章的下载连接 2.提供Proteus的连线图如下:(值得注意的是单片机的RXD和TXD分别和串口的RXD和TXD一一对应相连,这和用Proteus的虚拟终端给串口输入信号时,单片机和串口的连接方式是不一样的,用Proteus的虚拟终端作为串口输入信号的时候单片机的RX
[单片机]
Proteus通过虚拟串口程序仿真51<font color='red'>单片机</font>串口的实现
MCS-51单片机存储器的组成
1、 程序存储器 片内程序存储器 片外程序存储器 2、 数据存储器 片内RAM 128B 片外RAM max64KB 3、 特殊功能寄存器(SFR) 4、 位存储器
[单片机]
单片机应用系统的抗干扰的解决方案
  针对单片机应用系统实时性强,干扰因素较多的特点,本文介绍了几种实用的抗干扰措施,在硬件抗干扰方面阐述了供电系统的设计、电路板的合理布局以及输入输入干扰的抑制,软件方面给出了软冗余技术、软件陷阱技术以及“看门狗”技术的几个实例。 1. 引言   单片机应用系统的抗干扰设计是系统设计的重要内容之一,抗干扰性能的好坏将决定系统能否在复杂的电磁环境下稳定可靠地工作,从而决定了系统的实际使用价值。特别是在各种实时控制的远距离系统中,由于现场环境恶劣,干扰因素较多,系统不可避免地要受到其他电磁设备的干扰,若仅按常规设计就很难保证系统的正常运行。因此,抗干扰问题是设计者必须充分考虑和解决的,下面从硬件和软件两个方面谈谈抗干扰设计。   
[单片机]
<font color='red'>单片机</font>应用系统的抗干扰的解决方案
基于MCU、CAN控制器和收发器实现燃料电池汽车空调智能节点的设计
在能源日趋紧张、空气 污染 日益严重的今天,开发具有自主知识产权的新型 燃料电池 汽车是我国汽车产业的一个重要飞跃和里程碑,也是国家重点扶持的主要领域之一。燃料 电池 汽车与传统燃油汽车相比具有环保、节能(氢气为燃料)、运行平稳无噪声等特点。燃料电池汽车系统的核心是它的动力系统,即燃料电池 发动机 ,同时配备高功率 锂离子电池 ,能够回收下坡和制动能量。整个汽车系统由若干控制单元组成,各单元通过汽车总线彼此相连,其中 空调 控制系统是这种新型能源汽车的一个辅助控制单元,但它也是汽车系统的一个重要组成部分。本文将给出一种采用通用微控制器( MCU )和独立 CAN 控制器和 收发器 为核心的智能节点,完成与汽车系统之间的通信和控制由
[汽车电子]
基于<font color='red'>MCU</font>、CAN控制器和收发器实现燃料电池汽车空调智能节点的设计
51单片机四位数码管4个LED灯4个按键实现多种功能
任务描述:用89C51单片机实现如下功能: 初始状态为数码管显示2020,四个灯灭。 1、电路有四个控制按键,四个灯,四个数码管; 2、按键1,按下,,第一个数码管开始从0-9递增,同时第一个灯亮; 3、按键2,按下,第二个数码管开始从0-9显示偶数,同时四个灯的偶数灯亮(即2、4个灯亮); 4、按键3,按下,第三个数码管从0-9显示奇数,同时四个灯的奇数灯亮(即1、3个灯亮); 5、按键4,按下,恢复到初始状态 硬件电路图 元件清单 C语言程序 #include reg51.h unsigned char tube1 ={0x5b,0x3f,0x5b,0x3f};//数码管初始状态2020 字符码 unsigned
[单片机]
51<font color='red'>单片机</font>四位数码管4个LED灯4个按键实现多种功能
AVR单片机的熔丝应该如何设置
初学者对熔丝经常不解,AVR芯片使用熔丝来设定时钟、启动时间、一些功能的使能、BOOT区设定、当然还有最让初学者头疼的保密位,设不好锁了芯片很麻烦。要想使MCU功耗最小也要了解一些位的设定。 1:未编程 0:编程 1、BOD(Brown-out Detection) 掉电检测电路 BODLEVEL(BOD电平选择): 1: 2.7V电平; 0:4.0V电平 BODEN(BOD功能控制): 1:BOD功能禁止;0:BOD功能允许 使用方法:如果BODEN使能(复选框选中)启动掉电检测,则检测电平由BODLEVEL决定。一旦VCC下降到触发电平(2.7v或4.0v)以下,MCU复位;当VCC电平大于触发电平后,经过tTOUT 延时
[单片机]
AVR<font color='red'>单片机</font>的熔丝应该如何设置
51单片机系列连载5—定时器
在上一节中我们提到,中断最明显的应用就是定时器,接下来就介绍一下定时器,实际上定时器就是一种计数器,定时/计数器的实质是加1计数器(16)位,由高8位和低8位两个寄存器组成,主要是TMOD与TCON这两个寄存器。 TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。 首先,说一下TMOD寄存器,它的低四位用于T0,高四位用于T1,其格式如下: 其中,GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同
[单片机]
【GD32 MCU 移植教程】7、从 GD32F10x 移植到 GD32E103
1. 前言 本应用笔记旨在帮助您快速将基于 GD32F10x 2.0 版本及以上固件库开发的应用程序从GD32F10x 系列微控制器移植到 GD32E103 系列微控制器。GD32E103 和 GD32F10x 系列相比,考虑软硬件兼容性,从 Flash 和 SRAM 容量,包括外设模块的增强性能上来看,E103 最接近 F105。 开始前您需要安装 GD32E103 关于 KEIL 或 IAR 的插件,在工程选项的器件条目中选择GD32E103 对应型号,添加 GD32E103 的 Flash 下载算法。 为了更好的利用本应用笔记中的信息,您需要对 GD32 系列微控制器有比较深刻的了解。您可在 GD32MCU 资料网站 下
[单片机]
【GD32 <font color='red'>MCU</font> 移植教程】7、从 GD32F10x 移植到 GD32E103
小广播
设计资源 培训 开发板 精华推荐

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

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

502 Bad Gateway

502 Bad Gateway


openresty

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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