这学期开始学习专业课,很多东西学了都还没有实际操作起来,想着把大一自学的东西整合起来,算是笔记吧,和大家分享一下。

网上的单片机最小单元是这样的

图片来自网络

我的是这样的


其实这两幅图都是正确的,只是我们的芯片型号不同,但是实现的原理都是一样的。

1.单片机最小系统的概念:

能使单片机正常工作的最小硬件单元电路,就叫单片机最小系统。

2.单片机最小系统的组成:

(1) 复位电路:启动后让单片机从初始状态开始执行程序

(2) 振荡电路:单片机是一种时许电路,必须要有脉冲信号才能工作,他的内部有一个时钟产生电路,只要接上两个电容和一个晶振即可正常工作。

单片机运行需要时钟支持——就像计算机的CPU一样,如果没有时钟电路来产生时钟驱动单片机,那单片机就不能执行程序。

单片机可以看成是在时钟驱动下的时序逻辑电路。

以5l单片机为例随明:51单片机为l2个时钟周期执行一条指令。也就是说单片机运行一条指令,必须要用r2个时钟周期。没有这个时钟,单片机就跑不起来了,也没有办法定时和进行和时间有关的操作。

时钟电路是微型计算机的心脏,它控制着计算机的二个节奏。CPU就是通过复杂的时序电路完成不同的指令功能的。MCS一51的时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路,产生时钟信号:另一种为外部方式,时钟信号由外部引入。如果没有时钟电路来产生时钟驱动单片机,单片机是无法工作的。

单片机时钟电路是用来配合外部晶体实现振荡的电路,这样可以为单片机提供运行时钟,如果运行时钟为0 的话,单片机就不工作,当然超出单片机的工作频率的时钟也会导致单片机不工作。

(3) 存储器访问路经控制:EA=+5V时,EA引脚接电源正极,表示使用内部程序存储器。

3.代码实现小灯闪烁

#include<reg52.h>
#include<intrins.h> //左移函数头文件
/***********************/ typedef unsigned int u16; //对数据类型声明定义,就是将 unsigned int转换成 u16; typedef unsigned char u8;/***********************/ #define led P1 /****************************************************************
**************** 函 数 名 : delay
* 函数功能 : 延时函数,i=1 时,大约延时 10us*****************************************************************
**************/
void delay(u16 i)
{while(i--);
}
/*******************
延时更短的延时函数
***************************/
void delay1(void){unsigned int i;for(i=0;i<1000;i++){;}
}
/***********************/
void main()
{u8 i;led=~0x01;//0x01取反即为 0xFEdelay(50000); //大约延时 450mswhile(1){for(i=0;i<8;i++){P1=~(0x01<<i);delay1(); }}}

4.代码实现逻辑

进入 main 函数后首先 led=~0x01,因为 LED 是低电平点亮,所以 0X01 取反
后的结果是 0XFE,对应二进制数为 1111 1110,即最低位为 0,因此最开始的 D1
指示灯会点亮,然后延时一段时间进入while循环,由于要实现8个LED从D1->D8
循环点亮,因此可以使用 for 循环语句循环 8 次,每循环一次,点亮的小灯向右
移动一个即 P2 口输出的低电平要左移一位,因此可以使用 P2=~(0x01<<i);语句
实现。0X01<<i 表示每次 i 增加 1 次,0x01 中的 1 就移动多少位,因为 (高电平)不会让 LED 点亮,需要取反后变为低电平 0 才能点亮,所以最后的结果需要取反后给 P0 口,并且每次循环都要延时一段时间,这样我们肉眼才能分辨出来。

实现效果

我倒是买了单片机但是仿真软件比较好用我这里就直接在仿真软件上操作。最终实现的效果就是led灯会频繁闪烁。

单片机最小系统实现LED灯闪烁相关推荐

  1. 在单片机中使一个LED灯闪烁

    在单片机中使一个LED灯闪烁 单片机:STC89C52RC 使用的IO口:P1^0 //闪烁一个LED灯(无子函数版) #include<reg52.h> sbit LED1=P1^0; ...

  2. 51C语言中断LED闪烁,单片机定时器中断实现LED灯闪烁程序

    运用定时器0工作在方式1(16位计数器)实现LED灯的闪烁.先来看看定时器0工作在方式1的逻辑结构图. 从上图可以看到,GATE先经过非门,再和INT0引脚作为或门的输入.这里简单提一下数字电路中的与 ...

  3. 以梦为马之89c51单片机精确1s时间LED灯闪烁(中断技术+定时/计数器技术)

    y看了郭天祥老师的视频点亮LED后,感慨颇多,于是在今年完成了多函数编写方法的教程. 在高中阶段我是个追求极度完美的人,再解答任何问题我都要追寻最简单的方法,或者是掌握问题本质,直接猜出答案,对,所以 ...

  4. 8051单片机(STC89C52)八个LED灯闪烁

    #include<STC89C5xRC.h> void delay() {int i,j;for(i=0;i<200;i++)for(j=0;j<=200;j++){;} } ...

  5. STC89C52单片机 使用定时器使LED灯闪烁

    #include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned ...

  6. 单片机最小系统制作记录

    声明:本实验采用面包板,跳线,电子散件制作 目的:单片机最小系统,控制发光二极管闪烁 电子元件清单(仅限本实验的最小系统): 面包板+跳线(>20根) 5V 供电电源 1个 10UF 电解电容 ...

  7. 51单片机入门:LED灯闪烁(原理图+仿真+程序)

    目录 硬件电路设计 仿真电路设计 程序设计 仿真实现 在用51单片机点亮一个LED小灯的基础上,下面尝试将一个LED灯闪烁起来. 硬件电路设计 结合51单片机最小系统的知识,利用AD19画好最小系统电 ...

  8. 手把手讲解51单片机最小系统焊接、流水灯(跑马灯)编写以及烧录

    (1)首先当然是要购买"51单片机最小系统的散件",淘宝上面卖的比较多,散件的话一般二.三十元左右,其次还需要购买一个电烙铁,一般30瓦的就足够了,这里我就讲一讲51单片机散件的焊 ...

  9. 52单片机led灯闪烁c语言程序,单片机LED灯闪烁程序

    原标题:单片机LED灯闪烁程序 点亮 小灯的程序我们第二课完成了,就是让 LED = 0.熄灭小灯的程序也很简单,就是 LED = 1.点亮和熄灭都会了,那么如果我们在亮和灭中间加个延时,反复不停的点 ...

最新文章

  1. APP投资 历史 十万到 十亿元的项目
  2. 《疯狂Java讲义》2
  3. springboot获取ApplicationContext的三种方式
  4. MSTP协议介绍和堆叠技术介绍
  5. PyTorch1.0 教程 例子和书籍
  6. 目标检测——知识蒸馏的学习笔记
  7. C语言无符号整数和有符号整数的比较
  8. html2canvas 在手机app端的问题
  9. 图解RingBuffer数据结构
  10. 安庆集团-冲刺日志(第五天)
  11. JS的Date函数Date方法的相关汇总
  12. 微擎 人人商城 对接京东vop 对接京东商品,同步商品 地址,库存,价格,上下架等。五 (上)京东后台提交订单,用户地址校验...
  13. Chrome浏览器首次打开后未响应较长时间
  14. 计算时间差 html,计算时间差的公式
  15. 沉痛悼念恩师莫绍揆先生
  16. newifi路由器 php,newifi智能路由设置教程
  17. 被ddos攻击,附加IP有作用吗
  18. 路由器如何设置上网(TP-LINK)
  19. 使用Notepad++将windows格式转为linux 的unix
  20. 核心能力:产品认知能力

热门文章

  1. 「JCVI」如何筛选得到最优blast比对结果?
  2. 全志A33移植openharmony3.1标准系统之添加产品编译
  3. GEE实战 | 各种指数分析(植被、水体、建筑)
  4. 事件的独立和事件互不相容两个概念的区别
  5. SpringMVC数据校验、文件上传
  6. Layabox开发微信小游戏好友排行榜功能流程
  7. layui登陆验证页面模板(滑块学习)
  8. 电影排行榜(requests + bs4 scrapy)
  9. 批归一化《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》
  10. LeetCode刷题记录