51单片机实验01-点亮LED小灯

目录

一,软件下载

 二,单片机概述

1,单片机内部资源

1)flash

2)ram

3)sfr

2,51单片机

3,单片机最小系统

 三,点亮最右边的小灯

1,指出满足小灯点亮的有关网络标号的电平要求

 1)addr2 addr1 addr0=110 

2)led=0

3)addr 3=1 及 enled=0;

4)编写代码 

5) 运行结果

四,实验-点亮LED小灯

1、实验的背景和意义

2、实验目的

3、实验任务及要求

4、实验仪器

5、实验步骤

6、实验报告撰写要求

​☀

 1)按照学号末位和小灯编号相对应进行操作

①确定需要亮的led

 ②预打开三极管开关

 ③译码器使能,并打开开关

④指出满足小灯点亮的有关网络标号的电平要求

⑤实现效果

⑥代码

 2)实现闪烁LED小灯的实验

①效果 

②撰写本实验的完整c语言代码。


一,软件下载

俗话说,“工欲善其事必先利其器”。我先把需要用到的软件下载安装上,相关的软件都放到了网盘中,可通过链接下载👇

链接:https://pan.baidu.com/s/1QEDpuNhcYVB6lmxFNW2z4Q?pwd=6666 
提取码:6666 
--来自百度网盘超级会员V1的分享

下载后会有如下文件:

 单片机开发,需要两个软件:编程软件(Keil uVision4)和下载软件(STC_ISP_V480 )

还有一个开发板串口驱动CH341SER(下载安装好就行,后期不需要手动打开该驱动,默认就有)

 Keil uVision4软件界面:

 STC_ISP_V480软件界面:

 二,单片机概述

1,单片机内部资源

这里的单片机内部资源指的是单片机能够提供给读者可使用的东西。

单片机主要有三大类资源:flash,ram及sfr。

1)flash

flash资源是程序的存储空间。其优点在于:可重复擦写,容量大,成本低等。flash最大的意义就是断电后数据不会丢失(类似于电脑的硬盘,把电脑关机后,所有保存过的文件都在)。

早期的单片机是otprom一次可编只读存储器(one  time  programmable  read-only memory)来存储单片机的程序,程序只能写入一次,如果写错了,只能换一片重新写入。

2)ram

ram全称为random  access  memory,随机存取存储器,也称为主存,是单片机的数据存储空间,用来存储程序运行过程中产生的和需要的数据(类似于电脑的的内存,最典型的应用就是计算器,一旦关机,数据不复存在)。

ram的优点:读写速度快,理论上可以无限次写入,即寿命无限,不管程序怎么运行和怎么读写,它都不会坏。

3)sfr

sfr全称为special  function  register,特殊功能寄存器。

单片机有很多功能,每个功能都会对应一个或多个sfr,用户就是通过对sfr的读写来实现单片机的多种多样的功能。

2,51单片机

我们通常所说的51单片机指的都是兼容了Intel  mcs-51体系架构的一系列单片机。而51是它的一个通俗的简称。

在接下来的单片机航行中我选择的是宏晶科技的STC89C52单片机来进行学习。它是一款51内核的单片机,具有标准的51体系结构和功能,程序下载方式简单,方便学习。

它的资源情况:

  • flash程序空间是8k字节(1k=1024,1字节=8位)
  • ram数据空间是512字节
  • sfr后面会逐一用到并补充

3,单片机最小系统

单片机最小系统也称为单片机最小应用系统,是指用最少的原件组成可以工作的单片机系统。

单片机最小系统主要有三要素:电源,晶振和复位电路。如下图所示:

 【图片取自《手把手教你学51单片机-C语言版》p12,有兴趣的可以去网盘下载电子板书本来看】

 链接:https://pan.baidu.com/s/1QEDpuNhcYVB6lmxFNW2z4Q?pwd=6666 
提取码:6666 
--来自百度网盘超级会员V1的分享 

 如果想要详细了解其他的知识如:电源,晶振,复位电路和led小灯的介绍的可下载网盘中的电子书自行阅读,接下来单片机的学习,我将不再详细地把其他知识写到博客里面(因为没必要做一个木得感情的打字机器,最主要的还是代码编写的思路,效果的呈现)。

更多资源可转到金沙滩官网查看。

青岛金思特电子有限公司 (qdkingst.com)

 三,点亮最右边的小灯

 最右边的小灯所对应的网络标号为db0。那么就可以沿着相同的网络标号来找到其在单片机上所对应的端口,并给其相应的电平,使小灯能够点亮。

1,指出满足小灯点亮的有关网络标号的电平要求

 1)addr2 addr1 addr0=110 

按照下图的三步走让二极管正极有电压,即使三极管(作为开关)打开。如下👇

 110为二级制显示,换算成十进制为6,为138译码器输出的y6,译码器的y6进而可控制基极的电平(因为译码器上的y6和三极管基极中的电平,两者的网络编号都是leds6,因此y6可以和基极相连并可以控制基极的电平)。138译码器有一个特点,就是输入只能指定对应的输出端为低电平,其他输出端口为高电平,即只有一个低电平输出。因此当 a2 a1 a0=110时,就表示了y6为低电平。

知道了addr2 ,addr1,addr0这三个译码器上的网络标号,我就可以通过【显示译码与步进电机的选择跳线】区域的图纸,来一一对应到单片机上:

  1. addr2=P1.2;
  2. addr1=P1.1;
  3. addr0=P1.0

在编写代码时,需要在main方法之前进行定义,如下👇

sbit addr0=P1^0;
sbit addr1=P1^1;
sbit addr2=P1^2;

因为在单片机的编码中没有P1.x这种描述,无法识别,一般将P1.x写为P1^x。 (写多了就行)

2)led=0

要让最右边的led灯点亮,需要二极管的阴极为低电平。

二极管有一竖的位置为阴极,阴极的电平要比阳极低,二极管才能够导通,通过下图我们可以看到,二极管的阳极通过三极管开关接了5v的电压,一般而言5v可以视为高电平,因此,我们需要将二极管的阴极接入低电平。

“沿着”电路元件的网络标号来最终找到单片机电路上 ,由图可以看到,我们需要将P0.0输入低电平,因为P0.0在程序中使用led来代表,所以我们给led这个赋值为0。

 因此led=0。

需要在main方法前声明,让led代表P0^0,如下👇

sbit led=P0^0;

3)addr 3=1 及 enled=0;

要使138译码器能够工作,就需要让它使能,而138有三个使能端:e1,e2,e3,如下图👇:

 因此,e3=1。

由于e2=0,e1=0,且e2与e1连一起了,两个的与为0,所以,enled=0。

依旧需要沿着网络标号找到单片机电路上所对应的端口,如下👇

并在main方法前面进行声明,如下:

sbit addr3=P1^3;
sbit enled=P1^4;

4)编写代码 

如上,所有的都分析完了之后,我开始写代码,编写代码如下:👇

​
#include< reg52.h>  // 头文件,包含有众多寄存器的地址
sbit led=P0^0;
sbit addr0=P1^0;
sbit addr1=P1^1;
sbit addr2=P1^2;
sbit addr3=P1^3;
sbit enled=P1^4;
void main(){
enled=0;
addr3=1;
addr2=1;
addr1=1;
addr0=0;
led=0; 		 // led代表一个发光二极管。阴极输入低电平,发光二极管导通,	小灯点亮while(1);   // 小灯常亮
}​

5) 运行结果

值得注意的是,当我在同一个工程里面有多个c文件时,如果不修改每一次create生成的hex文件的文件名,那么该文件会指向哪个c文件,我就会无迹可寻。因此,当每次使用rebuild来编译不同的c文件时,都建议将对象文件的名字进行修改,如下👇,当然,如果文件不多的话,也可以不用改。

 也可以将编译好的对象文件专门放到一个目录里面,如下👇

四,实验-点亮LED小灯

1、实验的背景和意义


单片机全称叫单片微型计算机,是一种集成在电路芯片,采用大规模集成电路技术把CPU、随机存储器RAM 、只读存储器ROM、多种输入输出口、定时器/ 计时器等功能集成到一块硅片上构成的一个小而完善的计算机系统。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的应用。大致可以分为以下几个范畴:
1、在智能仪器仪表上的应用,例如精确的测量设备;
2、在工业控制中的应用,例如用单片机可以构成形式多样的控制系统,与计算机互联网构成二级控制系统等;
3、在家用电器中的应用,可以从手机、电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话、集群移动通信、无线电话对讲机等;
4、在医用设备中的应用,例如医用呼叫机、各种分析仪、超声诊断设备及病床呼叫系统等等;
5、在各种大型电器中的模块化作用,如音乐集成单片机,看似简单的功能,微缩在电子芯片中,就需要复杂的类似于计算机的原理。
本实验着重在于分析计算机软件和开发过程中的环节和步骤,并从实践经验出发做了详细的分析和研究。本实验就是充分利用了8051 芯片的I/O 引脚,实际采用STC89C52RC单片机为中心器件来实现点亮LED小灯和进行小灯闪烁实验。

2、实验目的


1、学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。
2、掌握c 语言程序设计方法。
3、培养实践技能,提高分析和解决实际问题的能力。

3、实验任务及要求


1、用发光二极管作为显示电路,KST-51开发板中的小灯从左到右分别为LED9、LED8、LED7、LED6、LED5、LED4、LED3、LED2共计8只小灯。按照学号末位和小灯编号相对应进行操作,如学号2132331217的同学完成对LED7小灯的操作,另外学号末位为0和1的同学分别完成对小灯LED9和LED8的操作。具体操作见本实验的后续要求。
2、实现点亮LED小灯的实验,编写完整代码。
3、实现闪烁LED小灯的实验,只编写和任务2中不同部分的代码。

4、实验仪器


计算机1台、KST-51开发板1套。

5、实验步骤


1、建立文件夹,按照三大步完成项目和文件的建立及关联。
第一步:建立一个项目;
第二步:新建一个文件(加上 .c);采用软件Keil uVision4等进行代码编写。
第三步:添加文件到项目中去。
2、编译生成 ***.hex 文件。
3、连接KST-51开发板,利用软件STC-ISP-v4.80等完成单片机程序“烧写”。
4、观察实验现象,进行有关记录。

6、实验报告撰写要求


1、认真研读教材附录D的KST-51开发板原理图,指出满足小灯点亮的有关网络标号的电平要求,写在实验报告中。

开发板原理图可在网盘中下载

 链接:https://pan.baidu.com/s/1QEDpuNhcYVB6lmxFNW2z4Q?pwd=6666 
提取码:6666 
--来自百度网盘超级会员V1的分享 

 1)按照学号末位和小灯编号相对应进行操作

如学号2132331217的同学完成对LED7小灯的操作,另外学号末位为0和1的同学分别完成对小灯LED9和LED8的操作。

①确定需要亮的led

例如我学号末尾是4,因此我需要点亮led4,看图:

元件标号为led4的发光二极管的网络标号为db2。 之后开始沿着网络标号找到单片机:

 之后写上代码👇

 ②预打开三极管开关

打开三极管开关相关的电平在点亮最右边的小灯中已经分析过了,并且打开开关的代码不变,写下来,如下👇

 因为此时,还没有让译码器使能,138译码器并没有开始工作,开关没有真正的打开。接下来我让译码器使能开始工作。

 ③译码器使能,并打开开关

最后再加上

while(1);

 使灯长亮。

④指出满足小灯点亮的有关网络标号的电平要求

     led=0;  // 低电平
    addr2=1;  // 高电平
    addr1=1;
    addr0=0;
    enled=0;
    addr3=1;

⑤实现效果

 如下,led4(从右数第三个)点亮👇

⑥代码
#include<reg52.h> 
sbit led=P0^2;	 // 二极管阴极所接的端口
sbit addr0=P1^0;  // 138译码器低位输入
sbit addr1=P1^1; // 138译码器中位输入
sbit addr2=P1^2;// 138译码器高位输入
sbit addr3=P1^3; // 使能端es
sbit enled=P1^4; // 使能端 e1和e2
void main(){led=0;  // 二极管阴极需要低电平addr2=1;addr1=1;addr0=0;enled=0;addr3=1;while(1);
}

 2)实现闪烁LED小灯的实验

之前我在main方法中的最后一行写了while(1);一个死循环让灯长亮。如果想要在灯能够一直一亮一灭的话,需要在while(1)死循环内加入两个for循环来控制led,一个for循环用于让灯亮一段时间,另一个for循环用于让灯灭一段时间,之后一直重复再重复的一亮一灭。效果如下👇:

①效果 

闪烁一个小灯

②撰写本实验的完整c语言代码。
#include<reg52.h> 
sbit led=P0^2;	 // 二极管阴极所接的端口
sbit addr0=P1^0;  // 138译码器低位输入
sbit addr1=P1^1; // 138译码器中位输入
sbit addr2=P1^2;// 138译码器高位输入
sbit addr3=P1^3; // 使能端es
sbit enled=P1^4; // 使能端 e1和e2
void main(){unsigned int i=0;addr2=1;addr1=1;addr0=0;enled=0;addr3=1; while(1){led=0;  // 灯亮for(i=0;i<50000;i++);     // 灯亮一段时间led=1;   // 灯灭for(i=0;i<50000;i++);}
}

如果文章哪里有错误,请在评论区留言或者是私信我,一定知错就改。

如果文章哪里有不懂,请在评论区留言或者是私信我,一定倾囊相助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/591934.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VsCode配置c++环境(详细)

这里写目录标题 1. 下载 MinGW添加环境变量 2. 配置VsCode3. 下载插件4. 测试5. 注意事项 1. 下载 MinGW MinGW 是 Minimalistic GNU for Windows 的缩写&#xff0c;相当于win版的gcc。 到MinGW官网下载。 也可以使用迅雷白嫖笔者下载好的 MinGW from 迅雷 提取码&#xff1a…

Redis 的主从复制、哨兵

目录 一. Redis 主从复制 1. 介绍 2. 作用 3. 流程 4. 搭建 Redis 主从复制 安装redis 修改 master 的Redis配置文件 修改 slave 的Redis配置文件 验证主从效果 二. Redis 哨兵模式 1. 介绍 2. 原理 3. 哨兵模式的作用 4. 工作流程 4.1 故障转移机制 4.2 主节…

MySQL故障排查与优化

一、MySQL故障排查 1.1 故障现象与解决方法 1.1.1 故障1 1.1.2 故障2 1.1.3 故障3 1.1.4 故障4 1.1.5 故障5 1.1.6 故障6 1.1.7 故障7​ 1.1.8 故障8 1.1.9 MySQL 主从故障排查 二、MySQL优化 2.1 硬件方面 2.2 查询优化 一、MySQL故障排查 1.1 故障现象与解决方…

Linux是什么,该如何学习

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Linux的起源与发展 2、Linux在现代计算机领域…

vue 使用自定义标签URL Protocol 调用本地exe 并传参

创建注册表文件reg&#xff0c;并运行 里面的路径需要替换成实际exe的绝对路径 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\App] "URL:App Protocol Handler" "URL Protocol""" [HKEY_CLASSES_ROOT\App\DefaultIcon] &qu…

解决echarts xAxis设置type:‘value‘后 x轴有负值的时候 Y轴在0点显示

前提&#xff1a;xAxis设置type:‘value’ 数据&#xff1a;data里面含有负数值&#xff0c;导致Y坐标轴一直在 X&#xff08;0&#xff09;上面显示 解决方案&#xff1a; yAxis里面设置 axisLine: { onZero:false } yAxis:{type: value,name:测试,axisLine: { onZero:false …

理解main方法的语法

由于JVM需要调用类的main()方法&#xff0c;所以该方法的访问权限必须是public&#xff0c;又因为JVM在执行main()方法时不必创建对象&#xff0c;所以该方法必须是static的&#xff0c;该方法接收一个String类型的数组参数&#xff0c;该数组中保存执行Java命令时传递给所运行…

【贪玩巴斯】programmer程序员常用Mac指令

1. 如何获取文件地址&#xff1f; 方法&#xff08;常用&#xff09;&#xff1a;对于想要获取地址的文件&#xff0c;右键后&#xff0c;按option键&#xff08;空格左边的左边&#xff0c;command指令的左边那个键&#xff09;&#xff0c;就会出现‘将xx拷贝为路径名称’&a…

CentOS7安装MySQL8.0.28(持续)

第一步 &#xff1a;下载mysql MySQL https://www.mysql.com/

Windows10安装CloudCompare(图文安装)

CloudCompare是一个3D点云&#xff08;和三角网格&#xff09;处理软件。它最初被设计用于在两个密集的3D点云&#xff08;例如用激光扫描仪获取的点云&#xff09;之间或点云和三角形网格之间进行比较。它依赖于专用于此任务的特定八叉树结构。 之后&#xff0c;它已经扩展到一…

[计算机效率] 磁盘空间分析工具:FolderSize

3.15 磁盘空间分析工具&#xff1a;FolderSize FolderSize是一款磁盘管理工具&#xff0c;提供预约交互式磁盘空间分析体验&#xff0c;可以可视化观察磁盘空间使用情况。程序可以帮助用户快速查看并统计硬盘中的各个分区所占用的空间大小以及文件夹和文件的大小&#xff0c;并…

基于深度学习的植物叶片病害识别系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;本文深入研究了基于YOLOv8/v7/v6/v5的植物叶片病害识别系统&#xff0c;核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;进行性能指标对比&#xff1b;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码&#xff0c;及基于Strea…