【C51自学笔记】闪烁灯+流水灯(四种方法) + 74HC573芯片+keil4软件仿真(debug)

发布者:masphia最新更新时间:2022-04-13 来源: eefocus关键字:C51  闪烁灯  流水灯 手机看文章 扫描二维码
随时随地手机看文章

AT89S52:

P0:不含上拉电阻,需要外接

P1,P2,P3:内部含上拉电阻

左下方是个晶振

51单片机的复位是高电平复位(默认是高电平输出)-如何复位:赋予高电平脉冲

复位的接入方法


如何复位详解:RST含高电平脉冲


复位键断开:RST是低电平(接地)


复位键闭合:闭合回路上,RST获得高电平,计算V(rst) = 4.7 v 为高电平


搭建最小系统:


接入晶振

接入RST

接入上拉电阻并为上拉电阻提供VCC

EA接入VCC(代表使用片内存储器) 接入0(代表使用片外存储器)

解释573芯片:

OE上加-:低电平有效,高电平无效。


Z:高组态,既不是高,也不是低。接什么平是什么平,相当于芯片没有工作


Q0:维持原来的状态不改变。


排阻的九个引脚:接入VCC的COM脚是八个电阻共接在一起的。1K的阻值:发光二极管的正向导通电压(1.6-1.7V)除以流过的电流


(3-10mA)


如何点亮图中二极管:


VCC已经提供高电平,保证负极的低电平。

P0i对应第i+1个二极管=》P0i依次设置成低电平。

循环

 

点亮灯:

 

 #include

 sbit led1 = P0^0;

 

 int main()

 {

while(1){

//线操作

P0 = 0xfe;

//位操作

led1 = 0;

}

 

return 0;

 }

 


闪烁灯:

 

 #include

 #define  uint unsigned int

 void delay(uint a){

while(a--)

;

 }

 

 int main()

 {

while(1){

P0=0xfe;//11111110

delay(50000);//并不是精确的秒数,而是一个大致的时间间隔

P0=0xff;//11111111

delay(50000);

}

 

return 0;

 }


流水灯:


 


位操作:


#include

sbit led0=P0^0;

sbit led1=P0^1;

sbit led2=P0^2;

sbit led3=P0^3;

sbit led4=P0^4;

sbit led5=P0^5;

sbit led6=P0^6;

sbit led7=P0^7;

void delay(void)

{

unsigned char a,b;

for(a=0;a<200;a++)

for(b=0;b<200;b++);

}

 

void main()

{

while(1)

{

led0=0;

delay();

led0=1;

delay();

 

led1=0;

delay();

led1=1;

delay();

led2=0;

delay();

led2=1;

delay();

 

led3=0;

delay();

led3=1;

delay();

 

led4=0;

delay();

led4=1;

delay();

 

led5=0;

delay();

led5=1;

delay();

 

led6=0;

delay();

led6=1;

delay();

 

led7=0;

delay();

led7=1;

delay();

}

}


2.线操作:


#include

#define uchar unsigned char 

#define uint unsigned int

 

unsigned char table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

/*

1111 1110

1111 1101

1111 1011

1111 0111

1110 1111

1101 1111

1011 1111

0111 1111

*/

void delay(void)

{

uchar a,b;

for(a=0;a<200;a++)

for(b=0;b<200;b++);

}

 

void main()

{

uchar i;

while(1)

{

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

{

P0=table[i];

delay();

}

 

}

}


方法三:位运算


#include

#define uchar unsigned char 

#define uint unsigned int

 

void delay(void)

{

uchar a,b;

for(a=0;a<200;a++)

for(b=0;b<200;b++);

}

 

void main()

{

uchar k,i;

while(1){

k=0xfe;//11111110

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

{

P0=k; //1111 1110

delay();

k=k<<1;    //1111 1100

k=k|0x01; //1111 1101

//0x01:0000 0001(把最低位 或 为1)

}   

}  

 

}


方法四:函数


#include

#include

 

#define uchar unsigned char 

#define uint unsigned int

void delay(void)

{

uchar a,b;

for(a=0;a<200;a++)

for(b=0;b<200;b++);

}

 

void main()

{

uchar k;

k=0xfe;

while(1)

{

P0=k;

delay();

k=_crol_(k,1);

/*

1111 1110

1111 1101

---

0111 1111 

*/

}

 

}


 


软件仿真:debug


利用软件仿真测试语句间的执行时间:


开启debug

设置断点在起始位置

run

t1 = sec

设置断点在起始位置

run

t2 = sec

时间间隔 = t2-t1

 

设置与硬件同频率的晶振:


点击目标选项按钮

点击项目

点击始终:设置成与硬件符合的时钟(晶振)。

关键字:C51  闪烁灯  流水灯 引用地址:【C51自学笔记】闪烁灯+流水灯(四种方法) + 74HC573芯片+keil4软件仿真(debug)

上一篇:【C51自学笔记】ULN2003+蜂鸣器+继电器+步进电机
下一篇:【C51自学笔记】概述与准备

推荐阅读最新更新时间:2024-11-12 11:17

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>单片机串口工作的四种方式总结
stm32之GPIO配置及库函数学习笔记——以流水灯为例
1.GPIO全称:gpio general-purpose input/output 通用输入/输出端口 2.GPIO寄存器中文名称与英文缩写对照表 3.GPIO_InitTypeDef结构体定义 typedef struct { uint16_t GPIO_Pin;//选择待设置的GPIO引脚 GPIOSpeed_TypeDef GPIO_Speed;//设置选中管脚的速率 GPIOMode_TypeDef GPIO_Mode;//设置选中管脚的工作状态(模式) }GPIO_InitTypeDef; 4.GPIO_Mode:端口的每个位可以分别配置成多种模式,中文名称与英文缩写对照表如下:
[单片机]
stm32之GPIO配置及库函数学习笔记——以<font color='red'>流水灯</font>为例
C51语言与LCM12864ZK的接口控制技术
C51语言与LCM12864ZK的接口控制技术 介绍LCM12864ZK的原理及功能,给出了MCU与LCM128 64ZK的硬件接口电路,同时根据LCM12864ZK的汉字显示指令,给出了相应的控制软件程序。 Interface Control Technology of C51 and LCM12864ZK LIU Jianhua, WANG Shuohe, HAO Ronghua, LIU Min, GENG Peng (Department of Electrical Engineering, Shijiazhuang Railway Institute , Shijiazhuang 050043, China)   Ke
[单片机]
<font color='red'>C51</font>语言与LCM12864ZK的接口控制技术
C51中精确的延时与计算的实现
C51由于其可读性和可移植性很强,在单片机中得到广泛的应用,但在某些时候由于C51编写的程序对在有精确时间要求下,可能就得要用汇编语言来编写,但在C51是否也能实现时间的精确控制呢?答案是肯定的。 在C51中要实现对时间的精确延时有以下几种方法 其一:对于延时很短的,要求在us级的,采用 _nop_ 函数,这个函数相当汇编NOP指令,延时几微秒,就插入个这样的函数。 其二:对于延时比较长的,要求在大于10us,采用C51中的循环语句来实现。 在选择C51中循环语句时,要注意以下几个问题 第一、定义的C51中循环变量,尽量采用无符号字符型变量。 第二、在FOR循环语句中,尽量采用变量减减来做循环。 第三、在do
[单片机]
c51中断/定时寄存器的典型运用程序
程序如下: #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; uchar code table ={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, 0x76,0x79,0x38,0x3f,0}; uchar temp,t0,t1,bai,shi,ge,flag,flag1; uint shu; void
[单片机]
C51--DS18B20数字温度计--C语言
#include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char sbit DQ=P2^6; sbit lcdrs=P1^0; sbit lcdrw=P1^1; sbit lcden=P1^2; void disp(uint a); void init(void); void delay(uint i); uchar ds18b20_init(void); void write_byte(uchar byte); uchar read_byte(void); uint read_ds18b
[单片机]
ARM9(S3C2440)的IO口--LED流水灯
概述 S3C2440A 包含了130 个多功能输入/输出口引脚并且它们为如下显示的八个端口: 端口A(GPA):25 位输出端口 端口B(GPB):11 位输入/输出端口 端口C(GPC):16 位输入/输出端口 端口D(GPD):16 位输入/输出端口 端口E(GPE):16 位输入/输出端口 端口F(GPF):8 位输入/输出端口 端口G(GPG):16 位输入/输出端口 端口H(GPH):9 位输入/输出端口 端口J(GPJ):13 位输入/输出端口 每个端口都可以简单的由软件配置为各种系统配置和设计要求。你必须在开始主程序前定义使用的每个引脚的功能。如果没有使用某个引脚的复用功能,这个引脚可
[单片机]
LPC2103流水灯
#include inc\lpc2103.h #include inc\config.h #define uchar unsigned char #define uint unsigned int void Sys_Init(void) { PINSEL0=0x00000000;//使用GPIO功能,将所有的管脚连接到GPIO PINSEL1=0x00000000;//使用GPIO功能,将所有的管脚连接到GPIO IO0DIR=1 17 | 1 18 | 1 19;//设置IO口管脚的方向,相应位置1为输出, IO0SET=1 17 | 1 18 | 1 19;//初始化IO电平,IOSET对应位置
[单片机]

推荐帖子

MSP430单片机调试经验汇总3
液晶段码与管脚的对应关系昨天调试段码液晶的时候出现一个问题,液晶显示乱码。该段式液晶可显示9位数字,使用的是4-MUX方式。现象:当液晶端口寄存器选择值设置为小于等于0x0f时,液晶能够正常显示,但此时只能显示8位数字.如果寄存器值设置为大于0x0f,液晶显示就会乱。分析:检查电路,没有发现任何不合适的地方,程序也是没有问题的。最后发现在液晶端口寄存器位选择时有一句话,当该位置1时,该端口只能作为液晶显示端口,而该寄存器的每一位控制的端口不止一个,例如BIT4,该位一旦设置为1,则液晶
tiankai001 微控制器 MCU
急求助:有没有TTL电平直接转232和485两种电平的器件?有成品最好.
有没有TTL电平直接转232和485两种电平的器件?有成品最好.也就是说用这个产品有三个接口.可以直接把TTL电平转成232和485信号输出.急求助:有没有TTL电平直接转232和485两种电平的器件?有成品最好.唉,都没人回复max232,电子城有售
anjiu 嵌入式系统
【TI荐课】实现智能伺服的ti 开发板
//training.eeworld.com.cn/TI/show/course/5256【TI荐课】实现智能伺服的ti开发板作电机控制,这个相对来说能理解,能应用
modoyu4ylp0o TI技术论坛
[科普]IGBT这玩意儿——从名称入手
在微电子行业混久了的人,很少有不知道IGBT的。IGBT的英文全称和基础概念对于微电子技术猿来说,想必已经耳熟能详。然而对于工作需要用到IGBT、但从未专业学习过IGBT的人来说,IGBT到底是个什么玩意儿、它为什么叫IGBT、它的核心关键词是什么、要怎么理解它等一系列问题并无法一次性在某个地方获取到,都需要查阅大量的资料,学习大量的基础才能有个初步的了解。为了让更多的人在更少的时间内掌握IGBT,我将在这个公众号内下不定时更新自己所总结的知识,尽量尝试用最通俗易懂
橘子说IGBT 分立器件
求助:PADS从PCB转原理图
网上的一个朋友的问题,放在这里,希望大家多多帮忙:PADS如何从PCB转原理图?之前只用过PROTEL,似乎没有遇见过类似的问题啊!求助:PADS从PCB转原理图问过BRAVE朋友,得到的回复,经典的:从PCB转原理图:ECOFROMPCBsendnetlistECOtopcb就是导到PCBiseeitnowhenhaowoyaokankahemhao谢谢,但不知道怎么操作OK!OK!OK!OK!OK!OK!不能转吧!!好像只能生成E
soso PCB设计
中国IPTV用户数量统计
本帖最后由jameswangsynnex于2015-3-319:58编辑中国IPTV用户数量统计2006-7-13经历了2005年的喧嚣,IPTV有不动生色地过渡到了2006年的下半年,虽然存在不少问题,但是整体来看IPTV今年的发展可谓不小。来自赛迪顾问的统计数据表明,截至2006年5月底,中国IPTV用户规模已经达到35万户。可以看到,在2006年,三大运营商的IPTV用户数量都有了显著的提高。尤其是中国网通的用户分额占总计的2/3左右。截至2006年5月
hkn 移动便携
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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