单片机第一季:零基础3

news2024/11/17 1:47:01

目录

1,第五章

2,第六章


1,第五章

IDE概念:
IDE就是集成开发环境,就是一套用来开发的完整的软件系统。

Keil和MDK:
(1)本来只能用来开发51单片机,叫Keil;
(2)后来ARM公司收购了Keil软件,基于Keil扩展了ARM的开发,主要用来开发ARM Cortex-M系列单片机的程序(譬如STM32),软件名改成了MDK;
(3)我们安装的是Keil C51,只能用来开发51单片机程序。如果要开发ARM Cortex-M单片机要扩展安装MDk安装包,后面第三季再说。

编译工程:
(1)工程项目中有很多文件,简单的分为3类:工程文件、源文件、目标文件
工程文件就是Keil软件工作需要的文件,和我们写程序没关系;
源文件就是我们写的源代码,就是我们编程编出来的;
目标文件是Keil中的编译器等工具把我们源文件编译后生成的文件,最终向单片机中烧录时需要目标文件来烧录进去。
(2)我们工程刚创建好(空工程)时只有工程文件,此时我们要去编写添加源代码,代码写好后就有了工程文件和源文件,此时点编译操作就可以得到目标文件。
(3)编译的时候有可能会报错(Errors)和报警告(Warnnings),错误就是有很严重的问题,此时编译无效并不能生成最终需要的可烧录的程序文件,必须去排除错误重新编译才可以;警告是轻微问题,有时候可以忽略有时候不行,具体要凭经验。
(4)建议编译时直接点快捷图标栏里面的Rebuild进行编译。

Keil中建立新工程:
(1)建立新工程前建议先关闭之前的工程
(2)菜单栏:Projcet->new uVision Project,选择一个合适的目录用来保存将来的工程项目,并且输入一个项目名
(3)选择CPU,一般都选择Atmel->AT89C51,点击OK。弹出来选择“是否添加标准的8051的起始代码”,选择是,确定就ok了。
(4)现在可以自己开始写代码,或者直接复制一个已经写好的代码文件进来,并且添加到我们的工程项目中。
(5)编译完成,发现一个问题:没有可以用来烧录的.hex文件。编译时生成的文件有很多,但是只有这个.hex文件才是我们最终需要的,可以用来烧录的文件。其他都属于中间文件(杂碎)
(6)打开快速菜单栏中“Target Options”,在弹出的多选框里,点击Output菜单,点选下面的Creat HEX File,然后关闭菜单,重新rebuild即可。

单片机工作流程:
(1)单片机上电;
(2)时钟模块起振,CPU有了时钟节拍,单片机内部各模块开始工作;
(3)CPU从ROM中逐条读取可执行程序来执行,RAM存储变量(对应C语言程序中定义的变量)配合程序执行,直到关机。

12T和6T和1T的问题:典型的51单片机都是12T的,12T的意思就是51单片机内部会对外部时钟频率进行12分频后再给CPU(如果外部晶振是12MHz,则外部时钟频率就是12MHz,内部CPU的主频就是12MHz/12=1MHz),6T的含义就是CPU时钟频率=外部时钟频率/6,1T的含义就是内部CPU时钟频率=外部时钟频率/1。所以1T单片机是最快的。

单片机内部结构框图:
(1)总线,单片机内部模块与模块之间的通信线;
(2)模块,单片机内部各自独立具有一定功能的单元;
(3)要求:大家能看懂图例,知道图中分别表示的是什么。当我们对CPU内部原件模块理解很少的时候其实从框图中看不出什么。框图中实际上传达了很多信息,将来回顾的时候能看出来就行了。

引脚编号和名字:
每一个引脚都有个编号,这个编号主要是看文档时文档里用来描述这个引脚的作用时做标记用的,跟编程是无关的。所以一般引脚编号并不重要。
每一个引脚除了编号外还有个名字,这个引脚的名字比较重要。因为这引脚名字和我们将来在编程中控制这个引脚时的名字是一样的,所以引脚名字和编程有关。

关于仿真器和ISP:
(1)仿真器。早期开发单片机软件时的辅助设备,早期的单片机很多只能烧录一次,或者不提供调试功能,软件开发难度很大。后来单片机厂商就专门发明了一个设备叫仿真器,仿真器能够仿真出单片机的效果,可以用来调试程序。所以那时候买了单片机之后还要买仿真器,用仿真器来开发,好了后烧录到单片机中运行。
缺陷:1、一个仿真器对应1个单片机型号。2、仿真器很贵。
(2)因为仿真器很贵,所以有些公司开发出了软件仿真器,叫软仿真。譬如keil中就自带了软件仿真功能。
(3)后来仿真器被放弃,升级成了调试器。调试器的思路是:程序开发还是在单片机中,只不过我们用一个专用的调试器可以在单片机中直接完成仿真。典型的调试器如Jlink。调试器比仿真器来说更便宜,所以是更好的解决方案。现在的单片机大多都支持调试器方案。
(4)有时候开发程序并不使用调试器进行单步调试,而是直接开放了程序后通过串口将程序下载到单片机中(ISP方式下载)去运行,然后根据运行的现象来直接判断定位问题,然后解决问题,最后完成程序软件开发。这种方式下不需要专用的硬件仿真器和调试器,有时候会配合使用软件仿真功能。还可以配合使用串口打印,或者LED灯的指示等方式来进行调试。
总结:3和4是我们现在开发软件的主流方法。相对来说,没经验的人更喜欢3(有经验的喜欢4);越往后(单片机到嵌入式到物联网)3用的越少,4用的越多;
我们课程的方向是:51单片机阶段用软件仿真结合ISP下载方式来调试程序,STM32学习阶段是调试器和ISP下载两种方式相结合,到了嵌入式阶段就又回到4的方式,以后往后都不会再用Jlink等调试器了。

单片机最小系统介绍:
(1)单片机最小系统,就是指的单片机加上最少的外围电路,然后还可以工作。
(2)最小系统中有3部分电路:供电电路、上电复位电路、晶振电路。

管脚定义:
(1)电源等管脚、单片机上面有一些管脚是用来支持单片机工作的,譬如VCC和GND、RST等,这些引脚和编程无关,程序也无法操控这些引脚。这些引脚软件工程师不用管,硬件工程师很在意。
(2)IO端口。IO端口是单片机和外部电路进行交互的窗口,外部电路通过IO向单片机内部输入(input)信息,单片机通过IO端口向外部输出(output)信息。单片机中大部分的引脚都是IO(P开头的引脚都是IO),将来单片机内部的程序运行就会通过操作这些IO来和外部电路交互,从而实现程序目的。
(3)管脚复用。普通引脚是一个引脚只有一个名字,一种作用;有些引脚有2个名字(譬如P3.0/RxD),这种引脚就有2种作用(意思不是说这个引脚可以同时做2件事情,而是说这个引脚在不同的时候可以工作在不同的2种模式下),可以通过软件编程让这个引脚在某个时间工作在某种模式下。一个引脚的2种模式之间没有关联,配置工作在A模式下则和B模式一点关系都没有。
为什么要管脚复用?纯粹是为了省引脚。

初识IO口:
(1)什么是IO(input/output),单片机的IO物理上表现为单片机的引脚。
(2)IO对单片机的重要意义。
(3)单片机有多少IO
(4)IO的组织形式。首先一个单片机的众多IO分为多个端口(port),一个端口由若干个IO引脚(很多时候都是8个)组成。可以理解为一个端口就是一组IO引脚。

2,第六章

74HC573芯片介绍:
(1)要知道这个芯片怎么工作,就要看他的数据手册;
(2)第一步:找到它的数据手册;
(3)OE(output enable), LE(latch enable)
(4)74HC573芯片是一个锁存器,简单来说就是由输入引脚Dx来控制输出引脚Qx(X等于0-7)。OE和LE影响Dx控制Qx的结果。
(5)当OE为L,LE为L时74HC573工作在锁存模式,此时Qx的输出被锁存(进入锁存状态之前是高就一直是高,是低就一直是低,这就叫锁存。),这就是锁存器的作用。
(6)当OE为L,LE为H时74HC573工作在跟随模式,此时Qx的输出跟随Dx的输入变化而变化。此时逻辑上可以认为74HC573是透明的。

GPIO:general purpose intput output,通用输入输出端口的简称;

LED灯:

LED采用共阳接法,即所有LED 阳极管脚接电源VCC,阴极管脚通过一
个470 欧的限流电阻接到端口上;

要让LED 发光即对应的阴极管脚应该为低电平,若为高电平则熄灭。

C语言移位运算介绍:
C语言中有移位运算符,>>可以右移,<<可以左移。(无符号数移位:移出去的位丢掉了,空出来的位用0补);

流水灯(流水灯是8颗LED其中7灭1亮,亮的在移动)源代码:

#include <reg51.h>

void delay()
{
	unsigned long int num = 30000;
	while(num--);
}

void main()
{
	unsigned char b=0;
	unsigned char a = 0xfe;
	delay();

	for(; b <8 ;b++)
	{
		P2 = ~((~a)<<b);
		delay();
	}
}

通过KEIL软件仿真查看函数运行时间:

如下图红框处。

 

 

 

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

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

相关文章

Python学习笔记(二十)————面向对象

&#xff08;1&#xff09;面向对象的好处 在日常中&#xff0c;记录数据时往往使用统一的表格&#xff0c;这样就不会使得数据信息格式混乱&#xff0c;同样在程序中的数据组织中&#xff0c;仅仅通过变量来记录会显得混乱不统一。 在程序中是可以做到和生活中那样&#xff…

探究Vue源码:mustache模板引擎(5) 对比rollup与webpack,在本地搭建webpack环境

好 从本文开始 我们就来手写一下mustache这个库 他是模板引擎的一个祖先 将模板字符串编译成一个dom字符串 就是它的思想&#xff0c;这也是一个具有跨时代意义的思想 这里的话 我们还是搭一个 webpack 的项目环境 这里值得一提的是 mustache 他官方是通过rollup来进行打包的 …

7-3 种钻石

7-3 种钻石 分数 5 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 2019年10月29日&#xff0c;中央电视台专题报道&#xff0c;中国科学院在培育钻石领域&#xff0c;取得科技突破。科学家们用金刚石的籽晶片作为种子&#xff0c;利用甲烷气体在能量作用下形成碳的等离子体…

抖音seo源码/源代码搭建/源代码部署打包-支持二开

1. 抖音seo源码/源代码搭建/源代码部署打包-支持二开 抖音SEO是指通过提高在抖音平台的关键词排名&#xff0c;来获取流量、获取客户的目的。抖音的流量主要分为付费流量、推荐流量和搜索流量&#xff0c;其中搜索流量因为付费太贵、上热门太累而成为另一种进入方式。与传统搜…

一个UE频繁掉网的问题

这个UE频繁掉网的问题&#xff0c;其实蛮low的&#xff0c;熟悉的人&#xff0c;看一个参数值就搞定这个问题了&#xff0c;但是还是做个记录。问题背景是运营商指定UE锁在某个NR小区&#xff0c;在一个区域的弱信号点(RSRP -110dbm左右)进行TPUT测试&#xff0c;但是最后发现U…

4.日志分布式-ELK

文章目录 日志分布式-ELK概念可以添加的其它组件filebeat 结合 logstash 带来好处为什么要使用 ELK缓存和Fluentd完整日志系统基本特征ELK 的工作原理 部署Elasticsearchjdk环境和防火墙配置安装Elasticsearch修改配置文件优化内存参数启动程序并测试效果安装 Elasticsearch-he…

DTZY-3579-z型三相四线费控智能电能表

智能电能表是现代智能电网中的重要组成部分&#xff0c;它集电能计量、数据采集、远程控制、安全保护等多种功能于一体&#xff0c;为电力系统的高效运行和能源管理提供了有力支持。其中&#xff0c;DTZY-3579-z 型三相四线费控智能电能表是一款性能稳定、功能齐全、安全可靠的…

【百度Linux训练营】

百度Linux训练营 1. Linux基础1.1 操作系统概述1.1 常见目录介绍 2.Linux命令上 1. Linux基础 课程地址 1.1 操作系统概述 操作系统(Operation system) 操作系统是用户和计算机的接口&#xff0c;同时也是计算机硬件和应用程序的接口&#xff0c;也就是我们和计算机底层硬件…

7款非常强大而鲜为人知的国产软件,每一款都是精品!

提起国产软件&#xff0c;大家最常想到的词是乱收费、捆绑安装、不好用、广告多&#xff0c;在过去&#xff0c;这些词在很长一段时间和国产软件捆绑在一起。 其实&#xff0c;有不少鲜为人知的国产软件一直在坚持做好&#xff0c;不仅没有以上问题&#xff0c;功能非常强大&am…

亚马逊云科技数据分析,帮助乐城堡实现更加精细化的业务运营

获得全球三千五百多万用户的认可的移动游戏企业乐城堡希望通过数据分析为游戏业务提供更好的决策支撑。乐城堡在亚马逊云科技上利用Amazon Redshift等服务构建属于自己的云上游戏数据分析平台&#xff0c;实现复杂查询&#xff0c;保证游戏运营人员能快速、近实时地获取所需的数…

leetcode链表刷题2

题单&#xff1a; 一&#xff0c;链表的分割 1.题目描述 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你不需要 保留 每个分区中各节点的初始相对位置。 2.题目接口 /***…

COMDEL射频电源维修康戴尔高频电源CLX2750

美国COMDEL电源维修常见型号包括&#xff1a;CLX2750&#xff1b;CLX2500&#xff1b;CLX-600H&#xff1b;CX600AS&#xff1b;CX-5000S&#xff1b;CX-3500S&#xff1b;CX-2500S&#xff1b;CV500&#xff1b;CDX2000等。 Comdel成立于1966年&#xff0c;总部设在马萨诸塞州…

STM32 10个工程篇:1.IAP远程升级(五)

伴随着催更不断&#xff0c;周日晚上来继续撰写STM32 IAP远程升级的项目例程&#xff0c;在这篇博客中笔者主要结合上位机报文发送机制来介绍下位机的报文解析设计&#xff0c;坚持做原创博客确实是一件很考验耐力的事情&#xff0c;一方面博客的文字和图片需要投入大量精力和时…

关于2023年积分落户公示及落户办理有关工作的通告

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

Mybatis从0到1 SQL注入 参数占位符 XML配置 动态SQL

1. Mybatis基础操作 学习完mybatis入门后&#xff0c;我们继续学习mybatis基础操作。 1.1 需求 需求说明&#xff1a; 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求&#xff0c;完成员工管理的需求开发。 通过分析以上的页面原型和需求&#xff0c;我们确定了功能…

【Python】使用pycharm结合gradio做一个web页面的demo

紧接上文我们安装好了python3.10&#xff0c;现在需要下载它的开发工具pycharm&#xff0c;我们在这里不过多赘述具体细节&#xff0c;仅简要说明关键步骤&#xff0c;来通过gradio体验一下示例demo 一、下载IDE pycharm官网&#xff1a;https://www.jetbrains.com.cn/pycharm…

Scratch 抓小狗

Scratch 抓小狗 本程序转换为HTML后运行。“小狗”角色每0.7秒复制并移动到随机位置和方向&#xff0c;碰到边缘反弹&#xff0c;碰到其它角色后删除&#xff0c;得分1。其它4个角色第一个跟随鼠标&#xff0c;其它的跟随前面的角色&#xff0c;后面3个角色碰到“小狗”角色则得…

第45节:cesium 卷帘效果(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false"></vc

Spring MVC中的HandlerInterceptors和Filters

1.介绍 比较Java servlet过滤器和Spring MVC Handlerinterceptor&#xff0c;以及什么时候一个比另一个更好。 2.Filters 过滤器是web服务器的一部分&#xff0c;而不是Spring框架。对于传入的请求&#xff0c;可以使用过滤器来操作甚至阻止请求到达任何servlet。反之亦然&a…

Bootstrap4 总结

文章目录 Bootstrap4 总结概述安装使用CDN使用源码 屏幕尺寸的分割点响应式容器(Containers).container-fluid.container.container-{breakpoint} 网格系统(Gird system)指定列宽实现8列布局 等列宽auto列宽响应式列 响应式工具类display属性其他工具类 组件按钮按钮组轮播图面…