51 单片机基础

news2025/1/24 17:37:58

一、51 单片机 开发环境配置,vscode+SDCC

编辑器、编译器

最常用的集成开发环境 keil c51

1、vscode + SDCC 开发环境搭建

vscode + 插件( 或者 PlatformIO IDE)

  • EIDE 的使用:详细自学

  • PlatformIO IDE:详细自学

  • vscode + SDCC 51 单片机开发环境搭建

    • 完全开源
    • 基于 vscode 写代码很舒服
    • 不支持在线调试
    • 更换或者添加源文件需要编写 Makefile 文件

    –> 环境搭建

    • vscode 安装完之后,添加 C/C++ 插件

    • 安装 SDCC

      • 安装的路径不能有空格

      • 安装完成之后,通过在 cmd 输入 sdcc -v,出现 sdcc 的版本信息,说明安装完成

        sdcc版本信息

    • 安装 make,并加入环境变量

      make添加至环境变量

      • 安装完成之后,通过在 cmd 输入 make,出现 make 的相关信息,说明安装完成

        make相关信息

    2、使用 SDCC 编译第一个 CH549 代码
    • CH549_sdcc.H 复制到 sdcc安装目录/include/mcs51
    • 通过 code 打开 例程文件夹
    • 打开 ./usr/main.c 文件
    • 终端 --> 新终端
    • 在终端中输入 make,即可编译程序;输入 make clean,即可删除刚才编译的程序

二、通用输入输出 GPIO

  • GPIO:general purpose input or output,通用型输入或输出端口

    • 可以将单片机的每个引脚通过程序设定为通用输入或通用输出,可以实现与外部通信、控制外部硬件或者采集外部硬件数据的功能
    • 寄存器选择相应的功能,寄存器是 CPU 内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果
    • 寄存器的四种功能:
      • 接受二进制代码
      • 储存二进制代码
      • 输出二进制代码
      • 清除二进制代码
    • 具有移位功能的寄存器称为移位寄存器
  • 代码含义:把地址为 0xA0 的寄存器的值配置为 2

    代码含义1

  • 代码编译与下载

    • 打开下载软件 --> 选择相应的芯片型号 --> 设置好下载配置 --> 连接单片机并按单片机上的 download 键 --> 选择刚才编译好的文件 --> 点击下载 --> 显示第一号设备下载完成,即可看到单片机上的 LED 等开始闪烁,若没有闪烁,可以按单片机上的 RST 键

      程序下载

三、时钟、定时器中断、外部中断

  • 时钟:时钟信号,固定频率的脉冲

    • CH549,运行一个指令(led = !led),就需要一个时钟周期

    • 分频器:将时钟信号转换为原来的时钟信号的频率的整数分之一(1/2, 1/3)

    • 倍频器:将时钟信号转换为原来的时钟信号的频率的整数倍

    • CH549 的时钟系统与结构图:

      CH549的时钟系统与结构图

  • 定时器中断

    • 定时器:16位寄存器,工作时,每接收到一个脉冲信号,它都会在原来的寄存器的保存的值上 +1
      • 例如,main 函数中调用另一个函数的代码
    • 定时器中断:触发条件,当定时器溢出的时候,会出发中断的这样一个外设
  • 外部中断:触发条件,某个端口满足设定的电平条件就能触发

  • 其他中断:Uart 中断,ADC 中断等

  • 中断优先级:高优先级的中断会打断低优先级的中断,在执行完高优先级的中断之后,再去执行低优先级的中断

    中断优先级

  • CH549 单片机的中断向量表

    CH549中断优先表

  • 外部中断和定时器中断例程代码

四、PWM

  • PWM:pulse width modulation,脉冲宽度调制
    • 通过控制高电平所占的时间,来达到控制功率的目的
    • 手机屏幕、电机控制
    • PWM 属性:
      • 占空比:一个周期内高电平占整个周期的时间比例,反映了功率的控制情况,占空比越高功率越高
      • 频率:周期的倒数
  • Makefile 文件配置

五、通信:Uart (串口) , i2c,spi

  • 单片机常用通信协议:Uart, i2c,spi

  • Uart(串口通信):通用异步收发器,是一种串行、异步、全双工的通信协议

    • 串口具有通信输出线(TX)和通信接受线(RX)
    • 波特率:度量信息传输的速度,每秒传送的码元符号的个数,因此必须保证输出端和接收端的波特率是一致的
  • 串口通信实验

    • 单片机的 TX 口连接串口转 USB 的 RX, 单片机的 RX 口连接串口转 USB 的 TX,这样可以实现数据回环的效果,即电脑发送给单片机的数据,单片机又会发送回给电脑
  • SPI :串行外设接口,一种高速的、全双工的、同步的串行通讯总线

    • 传输速率大于 Uart 和 i2c,同时可以进行发送和接收

    • spi 中有一根时钟线,无论输入还是输出,都需要通过时钟线

    • spi 通信至少需要四根线来实现:

      • MOSI:主设备数据输出,从设备数据输入

      • MISO:主设备数据输入,从设别数据输出

      • SCLK:时钟信号,由设备产生

      • CS:片选使能信号,由主设备产生

        spi原理

    六、ADDA(模拟信号与数字信号的互相转换)

    • ADC:模数转换器,读取一个引脚模拟电压的大小
    • DAC:数模转换器

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

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

相关文章

C#高级 02异步编程

基础知识 1.什么是异步任务 包含了异步任务的各种状态的一个引用类型 1)正在运行、完成、结果、报错等 2)另有ValueTask值类型版本对于异步任务的抽象 1)开启异步任务后,当前线程并不会阻塞,而是可以去做其他事情 2)异步任务(默认&#xff…

HTTP是怎么泄露账户密码的?

近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。 那么HTTPS和HTTP的区别在…

2023年总结:反复纠结与成长的一年

前言 这是我第五年写年度总结: 《2022年总结:道阻且长,行则将至》 《2021年总结:前路有光,初心莫忘》 《2020年总结,所有努力只为一份期待》 《2019年总结,平凡的我仍在平凡的生活》 现在…

LeetCode206反转链表(java实现)

今天带来的题目解析是leetcode206,反转链表,我们来看下题目描述 如何实现链表的反转呢?我在这里提供的思路是双指针的思路。 具体的思路如下: 假设我们的原链表如下 首先定义一个指针pre,用于指向head之前的位置&am…

RHCE9学习指南 第7章 服务管理

刚装好Windows系统时,需要进行一些优化,如下图所示。 右键单击所得菜单,可以看到一些按钮包括重启、停止、启动该服务。这些管理的是这个服务的当前状态。 双击服务名,在启动类型中设置的是系统启动时,这个服务要不要…

【elk-day01】es和kibana搭建及验证---Mac-Docker

Mac系统使用Docker下载搭建和验证eskibana Docker下载安装es安装es验证kibana安装kibana验证 Docker下载安装 Docker Desktop官网安装下载地址 说明一下为什么要安装desktop版本的docker,因为docker作为工具使用,我们需要的是开箱即用,没有必…

基于Python的城市热门美食数据可视化分析系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 本项目利用网络爬虫技术从XX点评APP采集北京市的餐饮商铺数据,利用数据挖掘技术对北京美食的分布、受欢迎程度、评价、评论、位置等情况进行了深入分析,方便了解城市美食店…

sheng的学习笔记-【中】【吴恩达课后测验】Course 4 -卷积神经网络 - 第四周测验

课程4_第4周_测验题 目录 第一题 1.面部验证只需要将新图片与1个人的面部进行比较,而面部识别则需要将新图片与K个人的面部进行比较。 A. 【  】正确 B. 【  】错误 答案: A.【 √ 】正确 第二题 2.在人脸验证中函数d(img1,img2)起什么作用&a…

每周一算法:邻值查找

给定一个长度为 n n n的序列 A A A&#xff0c; A A A中的数各不相同。 对于 A A A 中的每一个数 A i A_i Ai​&#xff0c;求&#xff1a; m i n 1 ≤ j < i ∣ A i − A j ∣ min_{1≤j<i}|A_i−A_j| min1≤j<i​∣Ai​−Aj​∣&#xff0c;以及令上式取到最小值的…

2023版本QT学习记录 -8- HTTP获取图片并且显示(大数据)

———————HTTP获取图片——————— &#x1f384;效果演示 &#x1f384;HTTP请求图片思维导图 &#x1f384;添加组件 &#x1f384;添加头文件 #include "mainwindow.h" #include "ui_mainwindow.h" #include "qnetworkaccessmanager.h&qu…

【Unity入门】PlayerPrefs的简介与使用

目录 PlayerPrefs储存位置用例注意事项 PlayerPrefs PlayerPrefs 是Unity内置的一个静态类&#xff0c;可以用于存储一些简单的数据类型&#xff1a;int ,string ,float。 分别对应的函数为&#xff1a; SetInt()&#xff1a;保存整型数据GetInt()&#xff1a;读取整形数据Se…

css 超过一行/多行显示省略号... - 附示例

效果 1、超过一行 2、超过多行 - 以两行为例 二、示例代码 1、超过一行 margin: 20px; width: 50px; border: 1px solid red; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 2、超过多行 - 以两行为例 margin: 20px; width: 50px; border: 1px solid r…

Unity is running with Administrator privileges, which is not supported

Unity is running with Administrator privileges, which is not supported 如果还是弹出CMD窗口提示输入密码&#xff0c;但无法怎样都无法输入&#xff0c;请关闭窗口&#xff0c;然后右键快捷方式管理员运行一次。 ----------分割线---------- 为什么这样做&#xff1f; 很…

java keytool.exe ssl

JDK如果没有先安装 JDK8 install_jdk aleady install-CSDN博客 java keytool.exe ssl keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore D:\server.keystore -validity 3650 server.ssl.key-storeD:\server.keystore server.ssl.key-…

深入了解Python中文件IO的使用技巧,提高代码处理效率!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Python提供了强大而灵活的文件I/O&#xff08;输入/输出&#xff09;工具&#xff0c;能够读取、写入和处理各种文件类型。本文将深入介绍Python文件I/O的技巧和示例代码&#xff0c;帮助大家更好地理解如何在Py…

Hive实战:词频统计

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据文件1、在虚拟机上创建文本文件2、将文本文件上传到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、启动Hive Metastore服务2、启动Hive客户端3、基于HDFS文件创建外部表4、利用Hive SQL…

DRF从入门到精通五(路由组件、认证组件、权限组件、频率组件及认证、权限源码分析)

文章目录 一、路由组件REST framework提供了两个routeraction装饰器 二、认证组件(Authentication)三、权限组件(Permissions)内置权限类 四、频率组件(Throttling)五、权限组件源码分析六、认证组件源码分析 一、路由组件 对于视图集ViewSetMixin&#xff0c;我们除了可以自己…

Swift 周报 第四十二期

文章目录 前言新闻和社区苹果 CEO 库克透露接班计划&#xff0c;希望继任者来自公司内部消息称苹果自研 5G 调制解调器开发再“难产”&#xff0c;将推迟到 2026 年 提案正在审查的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组整理周报的第四十二期&…

K8S异常处理

一、概述 1、k8s有时候会报错The connection to the server ip:6443 was refused - did you specify the right host or port &#xff0c;本文档提供几种可能产生该报错的原因和排障思路。 二、发现问题 使用任意Kubectl 命令会报错&#xff1a;The connection to the serv…

uniapp Vue3 日历 可签到 跳转

上干货 <template><view class"zong"><view><view class"top"><!-- 上个月 --><view class"sgy" click"sgy">◀</view><view class"nianyue">{{ year }}年{{ month 1 }}…