admin管理员组文章数量:1571937
一、基础知识
1.51单片机介绍
①单片机的任务是信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(例如电机,LED等)的控制。
②单片机跟计算机相比,单片机算是一个袖珍版计算机,一个芯片就能构成完整的计算机系统。但在性能上,与计算机相差甚远,但单片机成本低、体积小、结构简单,在生活和工业控制领域大有所用。
③在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。
注:io口指单片机上的一组引脚,用于与外部设备进行数据交互。它可以实现数字输入、数字输出、模拟输入、模拟输出等功能。
2.51所用的运算符
3.①传统方式编程太过繁杂,故可以用模块化编程(有.c文件:函数、变量的声明和.h文件:可被外部调用的函数、变量的声明)
②预编译(#……)
③举例
4.寄存器
5.51的数据类型
①位变量——bit:是C51 编译器的一种扩充数据类型,它的值是一个二进制位,不是0 就是1。函数可包含类型为"bit"的参数,也可以将其作为返回值。对位变量定义的限制。
②特殊功能寄存器——sfr:是一种扩充数据类型,值域为0~255。用于访问51单片机内部的所有特殊功能寄存器。“sfr”是定义语句的关键字,其后必须跟一个MSC-51单片机真实存在的特殊功能寄存器名,“=”后面必须是一个整型常数,不允许是带有运算符的表达式,是特殊功能寄存器“sfr-name”的字节地址,这个常数值的范围必须在SFR地址范围内,位于0x80-0xFF。
③16位特殊功能寄存器——sfr16:为C51的扩充数据类型,只不过是用来定义单片机的内部16位特殊功能寄存器,并且占用两个内存单元。
④可寻址位——sbit:是C51 中的一种扩充数据类型,利用它可以访问芯片内部的RAM 中的可寻址位或特殊功能寄存器中的可寻址位。
注:sbit和bit区别:bit和其他普通变量类型(如int)类似,只不过是定义的是一个位普通变量,而sbit定义的位必需是特殊功能寄存器或内部RAM区中的可寻址位。
二、51单片机操作
1.1点亮LED
①LED:又叫发光二极管,是一种常用的发光器件,通过电子与空穴复合释放能量发光,可高效地将电能转化为光能,在现代社会具有广泛的用途,如照明、平板显示、医疗器件等。
②原理
注:①LED一边接VCC(正极),另一边接负(低电平)则被点亮。若寄存器为一,通过驱动器,给LO口高电平;若寄存器为零,给io口低电平。②CPU:储存代码
③代码
④结果(LED一亮一灭)
1.2LED闪烁
①代码
注:单片机扫描速度过快,导致代码执行太快,从而导致LED闪的特别快,所以需要添加一个Delay函数来延时。
②结果:LED以1s为周期的闪烁
1.3LED流水灯
①代码
(1)
代码(2)
②结果:前两个LED运行时间间隔为一秒,后面的时间间隔为100毫秒
2.1独立按键控制LED亮灭
①独立按键的介绍
(1)轻触按键:一种电子开关,按下时开关接通,松开开关断开。原理:通过轻触按键内的金属弹片受力弹动来实现接通和断开。
注:弹片被按下时,三个点会连接,实现导通
②原理
独立按键一边接GND(低电平),一边接io口(默认高电平)。即:按键没有按下,io口保持高电平,寄存器值为1,LED不会被点亮;按键按下,io口变为低电平,寄存器值为0,LED会被点亮。
③代码
④结果:LED按下会点亮,松手会灭。
2.2独立按键控制LED状态
①按键的抖动:对于机械开关,断开闭合时,由于机械触点的弹性作用,一个开关闭合时不会马上稳定的接通,断开时也不会一下断开,所以在一瞬间有一连串的抖动。
②解决方法:通过Delay延时函数把抖动时间延时过去
③代码
④结果:按下k1,松手时LED亮,再按下,松手时LED灭。
2.3独立按键控制LED显示二进制
①代码
②结果:按k1,使LED以二进制点亮。
2.4独立按键控制LED移位
①代码
②结果:按k1,灯往左移;按k2,灯往右移。
3.1静态数码管
①数码管介绍:
八个LED有两种连接方式:共阴极连接和共阳极连接
注:51开发部是共阴极连接
注:3,8(位选)接地(低电平),另一边接高电平(io口值为1)会被点亮。
②四位一体数码管
注:12,9,8,6为位选,接高电平的话,负极接到了正极,则不亮;接低电平则亮。下面的引脚给高电平则亮,低电平不亮。
74LS138芯片:A,B,C为输入端,Y0-7是输出端,该芯片接电源,G1,G2A,G2B是使能端(类似于开关),G1接高电平,G2A,G2B接低电平时开始工作。C,B,A给的值是二进制,转化为十进制,对应输出端有效(低电平0),实现三个线控制八个线。
高电平驱动能力弱,低电平驱动能力强。
③多位同时显示的方法:不断很快的扫描,通过余晖达到同时显示。
④代码
⑤结果:第二位显示3。
3.2动态数码管显示
①代码
注:加入Delay函数是为了消影。
4.1LCD1602
5.1矩阵键盘
①原理:矩阵形式,可减少io口的占用。采用逐行或逐列的扫描。逐行扫描:把一行看为一个整体,给P14-17赋值,若这个整体接低电平,则这个整体有效,若给1,则无效,然后控制P10-13口,若P1=0,则代表按键按下(和独立按键类似)。在这我们使用逐列扫描,如果使用逐行扫描,因为引脚冲突,蜂鸣器会响。逐列扫描:把一列看成一个整体,给P10-13赋值,再控制P14-17口来判断按键是否按下。
②扫描
③代码
④结果
注:按键按顺序从一排列到16,显示在LCD上。
6.1定时器/计数器(单片机内部)
①作用:用于计时系统;替代上时间的Delay。
②STC89C52RC有三个定时器(T0、T1、T2)。
③过程
④定时器的工作模式
.T0和T1均有四种工作模式
模式0:13位定时器/计数器
模式1:16位定时器/计数器(常用)
模式2:8位自动重装模式
模式3:两个8位计数器
.模式一
(1)计数部分
TL0和TH0:十六位(两个字节)(65535个数)的计数器,高字节是TH,低字节是TL,0代表是定时器0。
过程:左边的时钟提供脉冲,每来一个脉冲,计数器的值就加一,加到最大值之后,在下一个脉冲的时候,会产生溢出,计数器会回到0(65535+1=0),会制一个标志位---TF0,它会向中断系统申请中断。
(2)控制部分
控制时钟,控制启动暂停。TR0:控制定时器的启动和暂停
(3)时钟部分
时钟最初的来源有两个:一个是SYSclk(系统时钟,即晶振周期,我使用的开发部晶振为11.0592MHz),另一个是T0pin(单片机外部的一个接口)。
晶振上电之后通过内部元件(压电陶瓷),这种陶瓷会发出固定频率的振动,用这种信号产生一个固定的频率。产生的脉冲会被12分频,开关如果连到12分频,输出频率就是11.0592/12赫兹,周期就是12/11.0592us,计数单元每隔12/11.0592us计数一次,计到最大值,就会产生中断。
c/T(T上有横杠):如果配置为1(高电平)的话,就是c功能,也就是计数器功能(T0pin);如果给0,上面横杠代表低电平,就是T功能(定时器功能)。
6.2中断系统
①作用:使CPU具有对外界紧急事件的实时处理能力而设置的。
②定义:CPU正在处理某件事时发生了紧急事件,CPU暂停当前工作,去处理紧急事件,处理完之后,再回到原来被中断的地方,继续原来的工作。
注:请求CPU中断的请求源是中断源。每个中断源都有一个优先级别,CPU先响应优先级别最高的中断请求。
中断嵌套:当CPU正在处理一个中断源时,发生了另一个优先级更高的中断源请求,CPU暂停原来中断源的处理,去处理优先级别更高的中断源,处理完之后,再回来继续处理原来的中断源。有中断嵌套的中断系统是多级中断系统,反之则是单级中断系统。
③STC89C52RC中断资源
.中断源个数:8个(外部中断0、定时器0中断、外部中断1、定时器中断1、串口中断、外部中断2、外部中断3)
.中断优先级:4个
.中断号(中断的入口)
④相关的寄存器
.寄存器是连接软硬件的媒介,相当于复杂机器的“操作按钮”。
.在单片机中寄存器就是一段特殊的RAM存储器,可以存储和读取数据,每一个寄存器背后都连接了一根导线,控制着电路的连接方式。
.TCON
TRO:定时器T0的运行控制位。该位由软件置位。当GATE(TMOD.3)=0,TR0=1时允许T0开始计数,TR0=0时禁止T0计数。当GATE(TMOD.3)=1,TR0=0且INT0(上有横杠)输入高电平时,允许T0计数。
TF0:定时器/计数器T0的溢出中断标志。T0加到最大值后溢出,由硬件置“1”TF0,向CPU请求中断,保持CPU响应该中断时,硬件清“0”TF0。
.TMOD
M1、M0:控制定时器/计数器0模式的选择,一开始配置成0 1。
注:非门:左边给1,右边就变成0(把数据反向)。或门:输入全为0,输出为0,其他均输出1。与门:输入端有0,输出就是0,输入端全为1,输出1。
.EA(总开关):CPU总中断允许控制位,EA等于0相当于开关断开
.ET0:T0的溢出中断允许位,ET0=1,允许T0中断;ET0=0,禁止中断
.IP:中断优先级控制寄存器低
⑤代码
⑥结果:按K1,流水灯向左流动;按K2,流水灯向右移动。
7.1串口
①作用:可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大扩展了单片机的应用范围,增强了单片机系统的硬件实力。
②原理
.发送端(TXD)和接收端(RXD)要交叉连接
.当电平标准不一致时,需要加电平转换芯片
.单向数据传输,直接一根通信线
注:
.这个整体都在MCU里,最左边是数据的总线。
.时钟部分:靠控制T1的溢出率,经过分频,来控制收发器的采样时间,从而控制波特率。
.SBUF:写操作时,写入的是发送寄存器,读操作时 读出的是接受寄存器。
③UART:四种工作模式
模式0:同步移位寄存器
模式1:8位UART,波特率可变
模式2:9位UART,波特率固定
模式3:9位UART,波特率可变
注:波特率:串口通信的速率(发送和接受各数据位的间隔时间)
④寄存器
8.1LED点阵屏
①
.LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素
以“8"字型排列而已。
.LED点阵屏与数码管一样,有共阴和共阳两种接法。
.LED点阵屏需要进行逐行或逐列扫描,才能使所有LED同时显示。
②原理
注:SER(串形数据)给移位寄存器输入,SERCLK(串形时钟),每来一个上升沿,数据就会一位一位的向下走,RCLK可以把输入的八个数据搬到右边的输出缓存中,溢出的数据会移到QH'中
③引脚对应关系
④代码
⑤结果(哭脸)
版权声明:本文标题:51单片机基础(1) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727707221a1126485.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论