C51单片机学习笔记七
DHT11 温湿度模块
产品概述
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用领域:暖通
空调;汽车;消费品;气象站;湿度调节器;除湿器;家电;医疗;自动控制
image-20220721225948515
特点
相对湿度和温度测量
全部校准,数字输出
长期稳定性
超长的信号传输距离:20米
超低能耗:休眠
4 引脚安装:可以买封装好的
完全互换 : 直接出结果,不用转化
接线
单片机
DHT11
VCC
VCC
GND
GND
P1.1
DATA
数据传送逻辑
只有一根数据线DATA,上官一号发送序列指令给DHT11模块,模块一次完整的数据传输为40bit,高位先出
数据格式
8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和
通讯过程时序图
image-20220721230414860
时序分析
a : dht = 1 b :dh ...
C51单片机学习笔记六
非标协议外设
LCD1602显示
概述
LCD1602(Liquid Crystal Display)是一种工业字符型液晶,能够同时显示
16×02 即 32 字符(16列两行)
image-20220705221821632
引脚说明
image-20220705221824828
第 1 脚: VSS 为电源地 第 2 脚: VDD 接 5V 正电源 第 3 脚: VL
为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个
10K 的电位器调整对比度。 第 4 脚:RS
为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第 5
脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS 和
R/W 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W
为高电平时可以读忙信号,当 RS 为高电平 R/W 为低电平时可以写入数据。 第 6
脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。 第
...
C51单片机学习笔记五
蓝牙与wifi模块
蓝牙
蓝牙模块,又叫做蓝牙串口模块
串口透传技术
透传即透明传送,是指在数据的传输过程中,通过无线的方式这组数据不发生任何形式的改变,仿佛传输过程是透明的一样,同时保证传输的质量,原封不动地到了最终接收者手里。
以太网,蓝牙,Zigbee, GPRS
等模块玩法一样,对嵌入式程序员来说,不需要关心通讯模块内部数据
及协议栈工作原理,只要通过串口编程获得数据即可
接线
串口交叉相连
单片机
蓝牙模块
RX
TX
TX
RX
VCC
VCC
GND
GND
Wifi模块ESP-01s
AT指令
AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data
TerminalEquipment,DTE)向终端适配器(Terminal
Adapter,TA)或数据电路终端设备(Data CircuitTerminal
Equipment,DCE)发送的。
其对所传输的数据包大小有定义:即对于AT指令的发送,除A ...
单片机学习笔记四
[TOC]
串口
简介
什么是串口
串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方
式的扩展接口。串行接口(Serial
Interface)是指数据一位一位地顺序传送。其特点是通信线路简
单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成
本,特别适用于远距离通信,但传送速度较慢
是设备间接线通信的一种方式
数据一位一位地顺序传送
双向通信,全双工
传送速度相对较慢
关于电器标准和协议
串行接口按电气标准及协议来分包括RS-232-C、RS-422、RS485等。RS-232-C、RS-422与RS-485
标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。
也称标准串口,最常用的一种[串行通讯接口,比如我们的电脑主机的9针串口
,最高速率为20kb/sRS-232是为点对点(即只用一对收、发设备)通讯而设计的,其传送距离最大为约15米。所以RS-232适合本地设备之间的通信
image-20220630161405514
...
C51单片机学习笔记三
PWM
简介
PWM,英文名Pulse Width
Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,例如方波的占空比就是50%.
脉冲宽度调制
通过占空比编码模拟信号
占空比一个周期内,高电平占据时长的百分比
image-20220629164300217
如何实现PWM信号输出
通过芯片内部模块输出,一般观察手册或者芯片IO口都会标明这个是否是PWM口
如下图增强51,STC15w的CPU
image-20220629164320716
2.如果没有集成PWM功能,可以通过IO口软件模拟,相对硬件PWM来说精准度略差
控制舵机
1.什么是舵机
如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为PWM信号控制
用处:垃圾桶项目开盖用、智能小车的全比例转向、摄像头云台、机械臂等 ...
C51单片机学习笔记二
定时器
1.简介
C51中的定时器和计数器是同一个硬件电路支持的,通过寄存器配置不同,就可以将他当做定时器或者计数器使用。
确切的说,定时器和计数器区别是致使他们背后的计数存储器加1的信号不同。当配置为定时器使用时,每经过1个机器周期,计数存储器的值就加1。而当配置为计数器时,每来一个负跳变信号(信号从P3.4
或者P3.5引脚输入),就加1,以此达到计数的目的。
标准C51有2个定时器/计数器:T0和T1。他们的使用方法一致。C52相比C51多了一个T2
定时器和计数器,电路一样
定时或者计数的本质就是让单片机某个部件数数
当定时器用的时候,靠内部震荡电路数数
当计数器用的时候,数外面的信号,读取针脚的数据
定时器怎么定时
定时器的本质原理: 每经过一个机器周期,就加1 :寄存器
思考:
什么是晶振
晶振(晶体震荡器),又称数字电路的“心脏”,是各种电子产品里面必不可少的频率元器件。数字电路的所有工作都离不开时钟,晶振的好坏、晶振电路设计的好坏,会影响到整个系统的稳定性。
什么是时钟周期
时钟周期也称为振荡周 ...
C51单片机学习笔记一
51单片机学习笔记
1.1开发环境搭建与单片机相关知识扫盲
什么是单片机
什么是单片机
单片机(Single-Chip Microcomputer)是一种集成电路芯片,
把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、
多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)
集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
什么是单片机开发板
基于单片机设计一些外接电路,模块以满足学习,日常调研等工作需求
STC89系列单片机
命名规则,封装LQFP44, 特性 定时器,计数器,串口,看门狗,IO
开发环境
keil
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
安装省略
使用
创建项目工程文件夹,可以当作模板Template
创建文件,取名ma ...
安卓基础-布局
安卓布局
线性布局
LinearLayout里面可以放置多个view(这里称为子view,子项)。
子view可以是TextView,Button,或者是LinearLayout,RelativeLayout等等。
它们将会按顺序依次排布为一列或一行。
接下来介绍一些在xml中的设置。
先在xml中放一个LinearLayout。
12345<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> </LinearLayout>
属性
竖直排布与水平排布
通过设置orientation来确定水平或竖直排布子view。
可选值有vertical和horizontal
竖直排布
设置orientation为vertical。
1android:orienta ...
Python面向对象进阶
面向对象进阶
在前面的章节我们已经了解了面向对象的入门知识,知道了如何定义类,如何创建对象以及如何给对象发消息。为了能够更好的使用面向对象编程思想进行程序开发,我们还需要对Python中的面向对象编程进行更为深入的了解。
@property装饰器
之前我们讨论过Python中属性和方法访问权限的问题,虽然我们不建议将属性设置为私有的,但是如果直接将属性暴露给外界也是有问题的,比如我们没有办法检查赋给属性的值是否有效。我们之前的建议是将属性命名以单下划线开头,通过这种方式来暗示属性是受保护的,不建议外界直接访问,那么如果想访问属性可以通过属性的getter(访问器)和setter(修改器)方法进行对应的操作。如果要做到这点,就可以考虑使用@property包装器来包装getter和setter方法,使得对属性的访问既安全又方便,代码如下所示。
1234567891011121314151617181920212223242526272829303132333435363738class Person(object): def __init__(self, name, age ...
Python面向对象基础
面向对象编程基础
活在当下的程序员应该都听过"面向对象编程"一词,也经常有人问能不能用一句话解释下什么是"面向对象编程",我们先来看看比较正式的说法。
"把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。"
这样一说是不是更不明白了。所以我们还是看看更通俗易懂的说法,下面这段内容来自于知乎。
说明:
以上的内容来自于网络,不代表作者本人的观点和看法,与作者本人立场无关,相关责任不由作者承担。
之前我们说过"程序是指令的集合",我们在程序中书写的语句在执行时会变成一条或多条指令然后由CPU去执行。当然为了简化程序的设计,我们引入了函数的概念,把相对独立且经常重复使用的代码放置到函数中,在需要使用这些功能的时候只要调用函数即可;如果一个函数的功能过于复杂和臃肿,我们又可以进一步将函数继续 ...