目录
程序存储器
ROM只读存储器,存储指令并在断电后不会丢失
程序存储器:ROM,EPROM(可编程只读存储器).
数据存储器
常用的芯片类型包括RAM(随机存储器)和EEPROM(可擦写可编程只读存储器).
只要控制不同单元的控制线,就可以向各单元写入不同的数据了——>用8根线或16根线来译码——>传递数据的八根线是公用的,称为数据总线,十六根地址线也是公用的,称之为地址总线。
80c51单片机
按引脚的功能可分为三部分 :
1. 电源和晶振:(晶振:80C51中,晶振通常被用作内部时钟的主要源)
·Vcc——运行和程序校验时接电源正端。
·Vss——接地。
·XTAL1——片内振荡器的反相放大器输入端 。
·XTAL2——片内振荡器的反相放大器输出端。
(反相放大器是输出信号的相位与输入信号的相位相反,增益由电路的反馈网络确定)
对于80C51,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。微调电容取30PF左右(见图所示)。
(脉冲二分频:)
在80C51微控制器中,P0,P1,P2和P3是四个8位I/O端口,可用于输入/输出数据和控制信号。每个I/O端口包含8个引脚,分别标记为P0.0-P0.7、P1.0-P1.7、P2.0-P2.7和P3.0-P3.7
80c51单片机的结构图如下所示:
控制线有四根:
- ➢RST
- VPD:备用电源引入端(当电源发生故障,电源降到下限值时,备用电源经此端向内部RAM提供电压,以保护内部RAM中的数据不丢失)
- 复位输入信号,高电平有效。在振荡器工作时,在RST上作用两个机器周期以上的高电平,将器件复位。(在RST上作用高电平两个周期以上时电子器件或系统会将所有内部状态清除,并返回到预定义的初始状态。)
- ➢/EA
- Vpp:编程电压,具体电压值视芯片而定——片外程序存储器访问允许信号,低电平有效。
- /EA=1,选择片内程序存储器(80C51为4KB,80C52为8KB) ;
- /EA=0,则程序存储器全部在片外而不管片内是否有程序存储器。
- 当EA线处于高电平状态时,80c51会执行内部程序,也就是使用片内ROM中存储的程序。反之,当EA线处于低电平状态时,80c51会执行外部程序,也就是使用片外存储器中存储的程序
- ALE(PROG:编程脉冲)——地址锁存允许信号,输出。
- 在访问片外存储器或I/O时,用于锁存低八位地址,以实现低八位地址与数据的隔离。
- 即使不访问外部存储器,ALE端仍以固定的频率输出脉冲信号(此频率是振荡器频率的1/6)。在访问外部数据存储器时,出现一个ALE脉冲。
- ALE可以驱动8个LS TTL负载。
- 对片内程序存储器编程时,该引脚用于输入编程脉冲PROG 。
-
在一个计算机系统中,CPU需要通过地址总线向外围设备发送要访问的数据存储器或者其他设备的地址。在发送地址的过程中,CPU需要确保地址信号的稳定性和准确性,以避免数据传输过程中出现错误。
为了实现这个目的,CPU通过ALE控制线向外围设备发出一个脉冲信号,告诉设备现在要发送一个地址信号。外围设备接收到这个信号后,会将地址锁存到一个内部的地址锁存器中,以保证地址信号的稳定性和准确性
- /PSEN——片外程序存储器读选通信号,低电平有效。
- 在从片外程序存储器取指期间,在每个机器周期中,当其有效时,程序存储器的内容被送上 P0口(数据总线)。
- 它可以驱动 8个LSTTL负载。
- 当CPU需要从程序存储器中读取指令时,它会将相应的地址发送到程序存储器,并同时发出一个PSEN控制信号,通知程序存储器准备将数据(指令)传送回CPU。程序存储器收到PSEN信号后,将数据(指令)传送回CPU,并在传送完成后自动恢复到初始状态
80C51有三种基本的寻址空间:
- ➢64 KB的片内、外程序存储器寻址空间;(由EA决定)片内程序存储器为只读存储器ROM
- ➢64 KB的片外数据存储器寻址空间;
- ➢256B(或384B)的片内数据存储器寻址空间,其中包括特殊功能寄存器寻址空间。
在80C51中,设置有一个专门的数据存储器的地址指示器——数据指针DPTR,用于访问片外数据存储器(ERAM)。数据指针DPTR也是16位的寄存器,这样,就使80C51具有64 KB的数据存储器扩展能力。
片内数据存储器结构图:
以下7个特定地址被保留:
复位 0000H~0002H(3个单元)
外部中断0 0003H~000AH(8个单元)
计时器T0溢出 000BH~0012H (8个单元)
外部中断1 0013H~001AH (8个单元)
计时器T1溢出 001BH~0022H (8个单元)
串行口中断 0023H~002AH (8个单元)
*计时器 T2/T2EX 002BH~0032H (8个单元,80C52)
红色字体部分为80C51五个中断源地址,在程序设计时,通常在这些中断入口处设置无条件转移指令,使之转向对应的中断服务程序段处执行。
中断系统:
IE0与IE1作为标志位,表示是否发生中断
定时计数器中断:当定时器计数器溢出时,IF0或IF1置1,表示发生中断
中断函数
在中断函数中调用其他函数,需要保证的是函数的寄存器组(0,1,2,3)和中断函数是一样的
定时器与计数器
TMOD:选择计数方式
TCON
- TH0:高8位计数值寄存器,用于存储定时器计数器的高8位计数值。
- TL0:低8位计数值寄存器,用于存储定时器计数器的低8位计数值
PWM
显示模块
LCD1602显示
RS,此脚为高电平时, 进行数据字节(即使用在 LCD1602上显示的字节,且LCD1602 的数据是 8 位的)的传输操作;此脚为低电平时,则是进行命令字节(即用来对 LCD1602 的一些工作方式作设置的字节)的传输操作 。
R/W,读写选择端。此脚为高电平,可对 LCD1602 进行读数据操作, 反之进行写数据操作
E,使能信号,其实是 LCD1602 的数据控制时钟信号,利用该信号的上升沿实现对 LCD1602 的数据传输
如图所示,并非所有的地址都可直接用来显示字符数据,只有第一行中的 00-0F、第二行中的 40-4F 才能显示,其他地址只能用于存储。要显示字符时,要先输入显示字符地址,也就是告诉模块在哪里显示字符。
最重要的一些常见指令:
清屏
模式设置指令
显式开关控制指令
功能设定指令