单片机学习笔记-基础知识_单片机编程入门基础知识-程序员宅基地

技术标签: TX-1C学习笔记  c语言  嵌入式硬件  单片机  

一、入门篇

1.1基础知识

  • 单片机:集成芯片(微处理器、存储器、输入/输出接口)
    • CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
    • RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
    • ROM:用以存放程序、一些原始数据和表格;
    • I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;
    • T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
    • 五个中断源的中断控制系统;
    • 一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
    • 片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率取决于单片机型号及性能。
  • 功能实现:编程(C语言/汇编语言)
  • 编程目的:控制芯片各引脚在不同时期输出不同电平(高电平/低电平),进而控制与单片机各个引脚相连接的外围电路的电气状态
  • 芯片上的标号有特定意义
  • 芯片封装
    • DIP双列直插式封装
    • PLCC带引线的塑料芯片封装
    • QFP塑料方形扁平式封装和PFP塑料扁平组件式封装
    • PGA插针网格阵列封装
    • BGA球栅阵列封装
  • 学习外围电路的设计与调试方法

1.2外部引脚介绍

  • 基于8051内核的单片机,若引脚数相同或封装相同,引脚功能相通
  • 常用40脚DIP封装(有20、28、32、44等不同引脚数)

  • 总线:总线(BUS)是计算机各部件之间传送信息的公共通道。微机中有内部总线和外部总线两类。内部总线是CPU内部之间的连线。外部总线是指CPU与其它部件之间的连线。 外部总线有三种: 数据总线DB(Data  Bus), 地址总线 AB(Address  Bus)和控制总线 CBControl   Bus)。
  • 区分芯片引脚序号(PDIP封装为例)
    • 小圆坑/小标记——第一引脚
    • 逆时针方向数引脚1-N
    • 按功能类别
      • 电源和时钟引脚:Vcc、GND、XTAL1、XTAL2等
        • Vcc(40脚)、GND(20脚)——电源引脚,常压+5V,低压+3.3V
        • XTAL1(19脚)、XTAL2(18脚)——外接时钟引脚,分别为片内振荡电路的输入、输出端
      • 编程控制引脚:RST、PSEN▔、ALE/PROG▔、EA▔/Vpp等
      • I/O口引脚:P0、P1、P2、P3,4组8位I/O口(每个口可独立控制)
        • P0口(39脚-32脚)——双向8位三态I/O口,无上拉电阻,为高阻状态,一般外接10KΩ的上拉电阻
        • P1口(1脚-8脚)——准双向8位I/O口,内带上拉电阻,无高阻状态,输入不能锁存,该口在作为输入使用前,要先向该口进行写1操作,然后单片机内部才可正确读出外部信号
        • P2口(21脚-28脚)——与P1口相似
        • P3口(10脚-17脚)——准双向8位I/O口,内带上拉电阻,第一功能与P1口相似,第二功能各引脚定义如下表,P3口的每一个引脚均可独立定义为第一功能的输入/输出或第二功能

标号

引脚

第二功能

说明

P3.0

10

RXD

串行输入口

P3.1

11

TXD

串行输出口

P3.2

12

INT0▔

外部中断0

P3.3

13

INT1▔

外部中断1

P3.4

14

T0

定时器/计数器0外部输入端

P3.5

15

T1

定时器/计数器1外部输入端

P3.6

16

WR▔

外部数据存储器写脉冲

P3.7

17

RD▔

外部数据存储器读脉冲

 

1.3电平特性

  • 数字电路电平特性:高电平、低电平
  • 暂且定义单片机输出与输入为TTL电平(+5V等价逻辑10V等价逻辑0,高电平+5V,低电平0V;计算机串口为RS-232C电平(负逻辑电平),高电平-12V,低电平 +12V
  • 计算机与单片机之间通信时要加电平转换芯片

 

1.4二进制与十六进制

  • 二进制
    • 逢二进一,借一当二
    • 后缀B
    • 当二进制数转换成十进制数时,从二进制数的最后一位起往前看,每一位代表的数为2的n次幂,n表示从最后起的第几位二进制数,从0算起,2n为位权
  • 十六进制
    • 逢十六进一,借一当十六
    • 后缀H

 

1.5二进制的逻辑运算

    • 必须都有,否则就没有
    • C语言中运算符为&
    • 运算规则
      • 0&0=0
      • 0&1=1&0=0
      • 1&1=1
    • 运算符号
    • C语言中&表示“按位与”,变量之间按二进制位数对应关系一一进行与运算
    • 只要其中之一有就有
    • C语言中运算符为|
    • 运算规则
      • 0|0=0
      • 0|1=1|0=1
      • 1|1=1
    • 运算符号
    • C语言中|表示“按位或”,变量之间按二进制位数对应关系一一进行或运算
    • 求反
    • C语言中运算符为!
    • 运算规则
      • !0=1
      • !1=0
    • 运算符号
    • C语言中~表示“按位取反”,如~01010101=(10101010);!表示对单一位进行运算
  • 运算符号

  • 同或
    • 必须相同,否则就没有
    • 逻辑运算符为⊙
  • 异或
    • 必须不同,否则就没有
    • 逻辑运算符为⊕
    • C语言中有“按位异或”运算”^“

 

1.6单片机的C51基础知识介绍

  • 基本数据类型

数据类型

关键字

所占位数

表示数的范围

无符号字符型

Unsigned  char

8

0~255

有符号字符型

Char

8

-128~127

无符号整型

Unsigned int

16

0~65535

有符号整型

Int

16

-32768~32767

无符号长整型     

Unsigned long     

32

0~232−1

有符号长整型

Long

32

-231~231−1

单精度实型

float

32

3.4e-38~3.4e38

双精度实型

double

64

1.7e-308~1.7e308        ..

位类型

bit

1

0~1

  • 数据类型扩充定义
    • 单片机内部有很多特殊功能寄存器,每个寄存器在单片机内部都分配有唯一的地址,一般我们会根据寄存器功能的不同给寄存器赋予各自的名称,当我们需要在程序中操作这些特殊功能寄存器时,必须要在程序的最前面将这些名称加以声明,声明的过程实际就是将这个寄存器在内存中的地址编号赋给这个名称
    • 特殊功能寄存器声明头文件 reg51.h
    • Sfr——特殊功能寄存器的数据声明,声明一个8位的寄存器
    • Sfr16——16位特殊功能寄存器的数据声明
    • Sbit——特殊功能位声明,也就是声明某一个特殊功能寄存器中的某一位
    • Bit——位变量声明,当定义一个位变量时可使用此符号
  • 常用头文件
    • Reg51.h,reg52.h,math.h
  • 运算符
    • 算术运算符

算术运算符      

含义

+

加法

-

减法

*

乘法

/

除法(或求模运算)   

++

自加

--

自减

%

求余运算

  • 关系(逻辑)运算符

关系(逻辑)运算符

含义

大于

>=

大于等于               

小于

<=

小于等于

==

测试相等

!=

测试不等

&&

||

  • 位运算符

位运算符              

含义           

&

按位与

|

按位或                         

^

异或

~

取反

>>

右移

<<

左移

  • 基础语句

语句

类型

if

选择语句

while

循环语句

for

循环语句

switch/case                 

多分支选择语句         

do-wnile

循环语句

  • 应该掌握的主要内容
    • 最小系统运行的必要条件
      • 电源
      • 晶振
      • 复位电路
    • 对单片机任意I/O口的操作
      • 输出控制电平高低
      • 输入检测电平高低
    • 定时器
      • 重点掌握最常用的方式2
    • 中断
      • 外部中断
      • 定时器中断
      • 串口中断
    • 串口通信

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_52911106/article/details/122609658

智能推荐

Ambari2.7.3+HDP3.1.0配置Kerberos互信_kerberos capaths 配置-程序员宅基地

文章浏览阅读1.3k次。文章目录1.Kerberos互信配置前提1.1 配置两个Ambari2.7.3集群Kerberos认证跨域互信1.2 先决条件2.Kerberos互信配置步骤2.1 添加集群节点hosts2.1 向两个集群添加 principal2.2 添加票据名称解析规则2.3 票据名称解析规则测试3.在krb5.conf中配置信任关系3.1 配置capaths3.2 配置realms3.3 配置domain_realm3.4 重启Kerberos服务3.5 修改hdfs-site配置4.测试5.总结1.Kerbero_kerberos capaths 配置

【BZOJ3889】【Usaco2015 Jan】Cow Routing 双键值最短路_usaco2015jan-程序员宅基地

文章浏览阅读1.6k次。题意:从样例讲起。 第一行 s,t,m表示:起点,终点,m条航线。然后m组,每组第一行len,n表示这条航线的代价, 这类似于公交车,只要用了就花这些钱,但是用多少都这些钱。 注意是单向边。举例: 2333 4 3 2 1 4 就是3->2、3->1、3->4、2->1、2->4、1->4都花2333元。这个花销是第一键值。 第二键值是经过几站。比如3->2->_usaco2015jan

Rxjava2 学习教程(四)变换操作符_rxjava 变换-程序员宅基地

文章浏览阅读189次。上一节我们学习了创建操作符和from操作符,今天开始学习变换操作符,所谓变换,显然是将上游被观察者发送的数据进行变化后再发送给下游观察者。Map 操作符方法预览public final <R> Observable<R> map(Function<? super T, ? extends R> mapper) { ...}作用及特点将被..._rxjava 变换

Java容器--接口概述_java descendinginterator-程序员宅基地

文章浏览阅读1k次。言兼原创,欢迎转载,转载请注明出处:http://blog.csdn.net/chengqianyun2002 Interface CollectionCollection是Collection体系中最上层的rootinterface,它代表一组对象集合。JDK并没有直接在CollectionInterface中规定具体的方法实现,而是将具体的方法实现在其子_java descendinginterator

IDEA新建Maven项目时报错_idea for more information about the errors and pos-程序员宅基地

文章浏览阅读5.6k次。E:\Java\jdk1.7.0_80\bin\java.exe -Dmaven.multiModuleProjectDirectory=C:\Users\job012\AppData\Local\Temp\archetype1tmp "-Dmaven.home=E:\IntelliJ IDEA 2018.3.1\plugins\maven\lib\maven3" "-Dclasswor..._idea for more information about the errors and possible solutions, please re

解决android中View.performClick()触发无反映_performviewclick(target); 无反应-程序员宅基地

文章浏览阅读1k次。post到主线程再调用(这是看网友解答的,对我无效): myview.post(new Runnable() { @Override public void run() { myview.performClick(); } }); post并加延时,postDelayed可以解决(这是..._performviewclick(target); 无反应

随便推点

打造 Compose 版本的 Banner_compose banner-程序员宅基地

文章浏览阅读3.4k次,点赞5次,收藏6次。没有 ViewPager ?前段时间 Compose 出来 beta 版本的时候就想着写写玩一玩,把自己写的玩安卓重构成 Compose 版本的,于是就写了几篇文章:初探 Compose 版本的玩安卓再探 Compose 版本的玩安卓Compose 实现下拉刷新和上拉加载Compose Android 开发终极挑战赛: 天气应用如果想学习 Compose 的话,可以去看看,里面有详细的代码供你参考:Github 地址:github.com/zhujiang521…,别忘了是 main 分支。_compose banner

QRcode二维码(C语言)遇到的问题_dev c++二维码实验过程中遇到的问题-程序员宅基地

文章浏览阅读657次。参考文章:简谈二维码(QRcode)的C语言生成,在单片机平台的实现我用Dev-C++测试, EncodeData("http://www.csdn.net/"); printf("size:%d\n",m_nSymbleSize); //MAX_MODULESIZE for(i=0;i<MAX_MODULESIZE;i++){ for(j=0;j<MAX_MODULESIZE;j++){ if(m_byModuleDat.._dev c++二维码实验过程中遇到的问题

java面试3_java 中保证资源安全访问的条件-程序员宅基地

文章浏览阅读433次。转载1.面向对象和面向过程的区别面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。缺点:没有面向对象易维护、易复用、易扩展面向对象优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护缺点:性能比面向过程低2.J..._java 中保证资源安全访问的条件

java.lang.StringIndexOutOfBoundsException: String index out of range: -1_error: string index out of range: -1-程序员宅基地

文章浏览阅读1w次。[2022 中国 DevOps 现状调查全面启动!>>>字符串截取下标越界java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.substring(String.java:1967)出错代码result.put("value", valueBuilder.toString().substring(0,valueBuilder.toString()._error: string index out of range: -1

谷歌浏览器强制跳转到 https 的解决办法-程序员宅基地

文章浏览阅读3.3k次。谷歌浏览器强制跳转到 https 的解决办法

简述物联网系统的分层架构,简要说明各层级的功能,并结合课程内容谈谈各层有哪些物联网的技术运用,在DIY智慧小屋案例中各层都有哪些软硬件构成。_1.列举物联网在衣食住行等方面的应用实例,并写出该应用的物联网架构(感知层、网-程序员宅基地

文章浏览阅读2.1w次,点赞3次,收藏16次。物联网大致可以分成:感知层、网络层、平台层和应用层。1、感知层——感知信息作为物联网的核心,承担感知信息作用的传感器,一直是工业领域和信息技术领域发展的重点,传感器不仅感知信号、标识物体,还具有处理控制功能。感知层由各种百传感器以及传感器网关构成,包括二氧化碳浓度传感器、温度传感器、湿度传感器、二维码标签、度RFID标签和读写器、摄像头、GPS等感知终端。感知层的知作用相当于人的眼耳鼻喉..._1.列举物联网在衣食住行等方面的应用实例,并写出该应用的物联网架构(感知层、网

推荐文章

热门文章

相关标签