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.mzph.cn/news/793062.shtml

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

相关文章

适用于车载设备无钥匙进入系统汽车用晶振FA-238A

汽车用晶振FA-238A是一款适用于车载设备无钥匙进入系统的耐高温晶振。汽车用晶振FA-238A是爱普生推出一的款MHz表贴式晶体单元&#xff0c;具有很好的预率性能&#xff0c;符合AEC-0200标准&#xff0c;其封装尺寸仅为3.2x2.5x0.7mm&#xff0c;工作温度范围在-40℃~125℃之间&…

【计算机考研】408到底有多难?值得冲吗?

考408就必须要面对的现实&#xff01;拒绝眼高手低&#xff01;&#xff01; 408其实想达到110并不难&#xff0c;但是想上130是比较困难的。 几个必须要面对的现实&#xff1a; 1.如果备考的是11408&#xff0c;除非基础特别好或者学习能力特别强&#xff0c;否则一定要尽早…

非关系型数据库-----------探索Redis支持五种数据类型

目录 一、Redis支持五种数据类型 1.String&#xff08;字符串&#xff09; 2.Hash&#xff08;哈希&#xff09; 3.List&#xff08;列表&#xff09; 4.Set&#xff08;集合&#xff09; 5.sorted set(有序集合) 二、Redis的字符串类型string 1、 SET/GET/APPEND/STRL…

Vue关键知识点

watch侦听器 Vue.js 中的侦听器&#xff08;Watcher&#xff09;是 Vue提供的一种响应式系统的核心机制之一。 监听数据的变化&#xff0c;并在数据发生变化时执行相应的回调函数。 目的:数据变化能够自动更新到视图中 原理&#xff1a; Vue 的侦听器通过观察对象的属性&#…

Red Hat Enterprise Linux release 8.4安装Jenkins

1. 查看安装 1.1 显示 Linux 系统的详细信息&#xff0c;包括内核版本、操作系统版本和其他相关信息 uname -a1.2 查看 Red Hat Linux 系统的版本 cat /etc/redhat-release # 或者 cat /etc/os-release1.3 查看 JDK 是否安装 java -version #查看安装路径 echo $JAVA_HOME1…

【保姆级介绍Oracle】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

Linux云计算之Linux基础2——Linux发行版本的安装

目录 一、彻底删除VMware 二、VMware-17虚拟机安装 三、MobaXterm 安装 四、Centos 发行版 7.9的安装 五、rockys 9.1的安装 六、ubuntu2204的安装 一、彻底删除VMware 在卸载VMware虚拟机之前&#xff0c;要先把与VMware相关的服务和进程终止 1. 在windows中按下【Windo…

windows安装OpenUSD

一、下载OpenUSD git clone https://github.com/PixarAnimationStudios/OpenUSDOpenUSD&#xff0c;原名USD&#xff08;Universal Scene Description&#xff0c;通用场景描述&#xff09;&#xff0c;是由皮克斯动画工作室开发的一种开放数据格式。OpenUSD主要用于在虚拟世界…

上位机图像处理和嵌入式模块部署(qmacvisual获取边界点)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在图像处理中&#xff0c;解决了分割的问题之后&#xff0c;下面就是属性信息的提取。在这其中&#xff0c;有一种属性是非常重要的 &#xff0c;那…

ChatGPT 与 OpenAI 的现代生成式 AI(上)

原文&#xff1a;Modern Generative AI with ChatGPT and OpenAI Models 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 序言 本书以介绍生成式 AI 领域开始&#xff0c;重点是使用机器学习算法创建新的独特数据或内容。它涵盖了生成式 AI 模型的基础知识&#xff0c…

Jackson @JsonUnwrapped注解扁平化 序列化反序列化数据

参考资料 Jackson 2.x 系列【7】注解大全篇三JsonUnwrapped 以扁平的数据结构序列化/反序列化属性Jackson扁平化处理对象 目录 一. 前期准备1.1 前端1.2 实体类1.3 Controller层 二. 扁平化序列反序列化数据2.1 序列化数据2.2 反序列化数据 三. 前缀后缀处理属性同名四. Map数…

尚硅谷50道Java面试题笔记 写的不全

b站链接&#xff1a;https://www.bilibili.com/video/BV1Bb411d7SL/?p4&vd_source714a8042f058b82c668750a0930ff9b0 1 mysql使用innodb引擎&#xff0c;请简述mysql索引的最左前缀如何优化orderby语句。 关键点&#xff1a; 如果排序字段不在索引列上&#xff0c;file…

2006-2022年各省研发投入强度数据/研究与试验发展(RD)经费投入强度数据(无缺失)

2006-2022年各省研发投入强度数据/研究与试验发展(R&D)经费投入强度数据(无缺失) 1、时间:2006-2022年 2、范围&#xff1a;31省 3、来源&#xff1a;科技年鉴 4、指标&#xff1a;研发投入强度/研究与试验发展(R&D)经费投入强度 5、指标解释&#xff1a;研发投入…

spring boot后端controller中接收表单参数校验

校验分为两部分&#xff0c;一部分是前端的输入时就校验&#xff0c;一部分时后端接收参数时的校验。本文提到的是后端接收参数时的校验。这个后端校验的存在有什么意义呢&#xff1f; 比如我们设置前端在输入参数时限制输入不能为空&#xff0c;应该为3-20位非空字符&#xf…

十分钟掌握在 PyTorch 中构建一个深度神经网络,基本组件、步骤和代码实现,从导入模块和定义网络结构到训练和评估网络性能。

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 深度神经网络(Deep Neural Networks, DNNs),也被称为人工神经网络(Artificial Neural Networks,ANNs),已成为当今机器学习任务中最流行、最成功的方法之一。这些网络能够表示数据中的复杂关系,并在图像分类、自然…

python调用java中的jar

一、基于IDEA生成可执行jar包 1、编写class的代码&#xff0c;注意一定要有main()方法才可以生成jar包&#xff0c;main()方法可以没有内容。例如下Java 代码&#xff1a; package Project;public class Demo {public static void main(String[] args){Demo t2 new Demo();S…

Redux Toolkit+TypeScript最佳实践

Redux-Toolkit是为了简化使用Redux繁琐的步骤&#xff0c;可以j降低使用useReducer与useContext管理状态的频率&#xff0c;而且起到项目中状态管理规范和约束化的效果。 阅读本文需要的前置知识&#xff1a;React、Redux、Typescript、Redux hooks。 Redux-Toolkit使用步骤 …

Rust egui(4) 增加自己的tab页面

如下图&#xff0c;增加一个Sins也面&#xff0c;里面添加一个配置组为Sin Paraemters&#xff0c;里面包含一个nums的参数&#xff0c;范围是1-1024&#xff0c;根据nums的数量&#xff0c;在Panel中画sin函数的line。 demo见&#xff1a;https://crazyskady.github.io/index.…

机器学习模型:决策树笔记

第一章&#xff1a;决策树原理 1-决策树算法概述_哔哩哔哩_bilibili 根节点的选择应该用哪个特征&#xff1f;接下来选什么&#xff1f;如何切分&#xff1f; 决策树判断顺序比较重要。可以使用信息增益、信息增益率、 在划分数据集前后信息发生的变化称为信息增益&#xff0c…

6:算法基础--6.3:排序算法,6.4:算法策略

转上一节&#xff1a; http://t.csdnimg.cn/fr4I4http://t.csdnimg.cn/fr4I4 6.3&#xff1a;排序算法 考点1&#xff1a;排序算法的基本概念 1.排序的概念 稳定与不稳定排序 2.排序方法分类 插入类排序直接插入排序希尔排序交换类排序冒泡排序快速排序选择类排序简单选…