【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自学笔记】概述与准备

推荐帖子

【跪求】codewarrior v7.1 使用ucos v2.86版本的问题
codewarriorv7.1使用ucosv2.86版本的问题各位大侠。我再ucos官网上下载了MCF5235的移植代码。我用到了MCF52110上,我只建立了一个任务,这个任务和空闲任务之间切换几次后出现formaterror异常错误。错误的位置是osCtrsw函数的RTE指令处。但是我把空闲任务中OS_ENTER_CRITICAL();和OS_EXIT_CRITICAL();屏蔽后就不会有问题了。大侠们,帮忙看看。【跪求】codewarriorv7.1使用ucosv2.
wangchao526 实时操作系统RTOS
STM32F103 串口下载未识别的器件怎么处理?
问题:我自己做了个最小系统,用stm32f103串口1下载程序,出现问题如下,按下复位按键,重试,也不行依然出现上面错误的界面;我做了如下工作1)单片机端收发短接,PC串口回环测试正常;2)按着设置BOOT1=0,BOOT0=1,万用表测试也正常,分别是0和3.3V3)复位引脚测试各位大侠,指点一下,我还需要怎么处理才能下载程序 STM32F103串口下载未识别的器件怎么处理?没人给个建议或意见?从你的提示可以看出是没有复位,但从你的步骤看出没有问题,你的复
bsp0321 stm32/stm8
【平头哥RVB2601创意应用开发】第四篇 声音直方图
本篇测评实验的内容是将声音播放和显示结合起来,播放声音的同时屏幕同时显示声音强度的直方图。先上视频,再解释实现方法。视频本实验代码是基于Offline版本的musicplay例程开发的。该例程是将嵌入程序的mp3声音数据(以数组形式保存)播放出来。例如实验中使用的welcome_mp3声音数据就保存在include/welcome_mp3.h中。数组里的数据
oxygen_sh 玄铁RISC-V活动专区
基于ARM7的开发板如何驱动直流电机和步进电机?是不是需要驱动芯片?
我刚接触嵌入式ARM开发,这段时间看了不少资料,51单片机可以接引脚,基于ARM的平台应该怎么做呢?是不是要附加驱动芯片?如果是的话,这样的芯片价格如何,在一般的电子市场有卖吗?基于ARM7的开发板如何驱动直流电机和步进电机?是不是需要驱动芯片?ARM板如果有GPIO给用户的话和51用法相似,接口电压一般是3.3V,注意一下匹配即可.可以的哇GPIO口嘛呵呵很简单地,但有的ARMGPIO控制起来很变态嘿嘿电机肯定是要驱动芯片的了!而且还要隔离的!感谢各位的回答。都是很好的
liurong82 ARM技术
【极海APM32F407】7, 点亮三色墨水屏
墨水屏我从来也没有用过,更谈不到点亮了。然而在写这次活动的步骤时我不知那来的潮水居然想点个墨水屏。我从佳显买了个墨水屏的驱动板子,为了省成本又从闲余买了一个2.13的台弯产的三色墨水屏。在一切到位后我修改了程序。我的定义如下:程序可以从大连佳显网站上找。#defineEPD_W21_MOSI_0 GPIO_ResetBit(GPIOE,GPIO_PIN_12)#defineEPD_W21_MOSI_1 GPIO_SetBit(GPIOE,
ddllxxrr 国产芯片交流
无线充电,发射线圈一端波形顶部,为啥正弦波失真?
无线充电,发射线圈一端波形顶部,为啥正弦波失真?另一端的方波边沿也有振铃,毛刺。有哪些原因会导致这些波形的失真或者杂波的存在呢?无线充电,发射线圈一端波形顶部,为啥正弦波失真?失真还比较严重方波不方发射线圈和接收线圈的阻抗不匹配,会产生反射波,引起波形失真,这是可能电压不稳或含有高频噪声,也会直接反映到输出波形上,波形失真,也是可能就1楼贴的波形看,严格说不是振铃振铃的图像类似下面验证设计时,建议先用线性电源供电,排除输入电源的干扰;确
QWE4562009 电路观察室
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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