室内设计学校哪个好,刷神马网站优化排名,工程造价信息网如何进入,网站 概念设计前言 作者#xff1a;小蜗牛向前冲 名言#xff1a;我可以接受失败#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话#xff0c;还请点赞#xff0c;收藏#xff0c;关注#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录
一、单片机… 前言 作者小蜗牛向前冲 名言我可以接受失败但我不能接受放弃 如果觉的博主的文章还不错的话还请点赞收藏关注支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录
一、单片机相关知识点
1、 MCS-5l单片机的堆栈在那个区域、片内ROM区、片外ROM区、片内RAM区、片外RAM区
2、晶振频率和机器周期的计算
3、单片机总线
4、单片机引脚功能 二、单片机综合运用
1、流水灯
2、中断系统、定时器
3、AD\DA和串行口 这里为大家复习了部分期末单片机的知识单片机的结构和综合运用不喜勿喷
一、单片机相关知识点
1、 MCS-5l单片机的堆栈在那个区域、片内ROM区、片外ROM区、片内RAM区、片外RAM区 解析 堆栈区建在07H以上的内部RAM区 2、晶振频率和机器周期的计算
晶振频率晶振频率是指晶体振荡器Crystal Oscillator产生的振荡频率在电子电路中广泛用于提供精确的时钟信号。
机器周期是指执行一条基本的机器指令所需要的时间 公式 T(机器周期) 12*1/晶振频率 如常见的外接12M晶振T时钟周期1/12M。 注时钟周期以时间动作重复的最小周期来度量 3、单片机总线 单片机的总线分为控制总线、地址总线和数据总线等三种。而数据总线用于传送数据控制总线用于传送控制信号 地址总线则用于选择存储单元或外设。
三总线的功能 数据总线Data Bus 数据总线是用于在CPU、内存、输入/输出I/O设备之间传输数据的通道。它决定了CPU与其他硬件组件之间的数据传输宽度即一次能够传输多少位的数据。 地址总线Address Bus 址总线用于传递CPU生成的内存地址指示要读取或写入的存储器位置。地址总线的宽度决定了CPU能够寻址的内存空间的大小。例如一个8位的地址总线可以寻址 (2^8 256) 个内存位置。 控制总线Control Bus 控制总线用于传递控制信号这些信号控制着各个硬件组件的操作。控制信号包括时钟信号、读/写控制信号、中断请求、总线请求/总线响应等。时钟信号用于同步整个系统的操作。 4、单片机引脚功能 VCC 和 GND VCC 是电源引脚连接到正电源。GND 是地引脚连接到地。 XTAL1 和 XTAL2 连接晶振的引脚用于提供单片机的时钟 RST 复位引脚用于复位单片机。 ALEAddress Latch Enable 地址锁存使能引脚用于在地址总线16位和数据总线8位之间切换。 PSENProgram Store Enable 程序存储器使能引脚用于选择外部程序存储器。 EAExternal Access 外部访问引脚用于控制是否从外部程序存储器执行代码。 Port 0P0 8位的双向I/O端口。 Port 1P1 8位的双向I/O端口。 Port 3P3 8位的双向I/O端口。 RXD 和 TXD 串行通信端口引脚用于串行通信。 二、单片机综合运用
这里的复习主要是考试大题这里我们主要关心C51单机连接了哪些电路和程序控制
1、流水灯
用Proteus绘制电路原理图 电路 时钟电路 复位电路 p1口和流水灯连接 用Keil编写程序输出hex文件
#includereg51.h#define uchar unsigned charvoid main()
{uchar arr[]{0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7E};//01111111,10111111,11011111,···11111110实现0的右移int i,j;while(1){for(i0;i8;i){P1arr[i]; for (j0;j10000;j);//延时}}
}
在这个程序中数组arr的每个元素都是一个8位的二进制数。每个位代表P1端口上的一个引脚的状态从而决定连接到P1端口的LED的亮灭状态。在这里数组的每个元素都是一个特定的二进制模式它们之间的不同位的值导致LED灯在流水灯效果中不同的位置亮起。 具体来说数组arr中的每个元素可以表示为一个二进制数其中每个位对应P1端口上的一个引脚。对于arr数组的定义
uchar arr[]{0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7E};
这里使用的二进制数都是从最高位到最低位依次递减的每个元素都是前一个元素右移一位并在最低位添0。以第一个元素 0xFE 为例它的二进制表示是 11111110表示P1端口上有8个引脚其中7个引脚是高电平1而最低位的引脚是低电平0。 下面是每个元素的二进制表示和相应的亮灭状态 0xFE - 11111110 - LED在最高位亮。0xFD - 11111101 - LED在次高位亮。0xFB - 11111011 - 以此类推流水灯效果循环。 如果给P1端口不同的值实际上就是通过改变P1端口的输出状态从而控制连接到P1端口的LED的亮灭状态。每个元素的二进制表示中的每一位都对应一个LED的状态通过在数组中循环切换不同的元素可以实现LED在P1端口上的流水灯效果。 2、中断系统、定时器
在了解中断系统时我们要先了解一下定时器。
定时器
时器是一种特殊的硬件模块用于在固定的时间间隔内生成定时中断或执行一些计数操作。 计时功能 定时器可以用于测量时间间隔从而实现一定的时间延迟或精确的时间测量。 产生定时中断 定时器可以配置为在计数到特定值时生成中断。这使得程序可以在固定的时间间隔内执行特定的任务例如定时采样传感器数据、定时更新显示等。 PWM生成 定时器可以用于生成脉冲宽度调制PWM信号用于控制电机速度、调光LED等。 PWM生成 定时器可以用于生成脉冲宽度调制PWM信号用于控制电机速度、调光LED等。 下面是一个简单的C51程序示例演示如何配置和使用定时器
#include reg51.hvoid initTimer() {// 配置定时器模式为模式116位计数器TMOD 0x01;// 设置定时器初值假设要产生1ms的定时TH0 0xFC;TL0 0x18;// 启用定时器中断ET0 1;// 启动定时器TR0 1;
}void timerInterrupt() interrupt 1 {// 定时器中断服务程序// 在这里添加定时器中断处理的代码
}void main() {// 初始化定时器initTimer();// 主程序while (1) {// 在这里添加主程序的代码}
}为了更好的理解上面的程序我们还需要了解下面的知识
TMOD是定时器模式寄存器 用于配置8051单片机的定时器/计数器工作模式。TMOD寄存器的每个位对应一个定时器/计数器因为8051单片机可以包含两个独立的定时器/计数器定时器0T0和定时器1T1。
TMOD寄存器的位布局如下
----------------------------------------------------------------
| GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 |
----------------------------------------------------------------7 6 5 4 3 2 1 0GATE: 定时器/计数器的门控位。当GATE位为1时定时器/计数器在TR寄存器位定时器运行控制位为1且外部引脚INTx为高电平时计数。当GATE位为0时TR位的状态不影响计数。 C/T: 定时器/计数器模式位。当C/T位为1时为定时器模式当C/T位为0时为计数器模式。 M1和M0: 定时器/计数器模式位。这两位一起确定了工作模式共有四种工作模式00、01、10、11。 下面是一些常见的定时器模式配置
M10, M00: 13位定时器模式。
M10, M01: 16位定时器/计数器模式。
M11, M00: 8位自动重载定时器/计数器模式。
M11, M01: 2个8位定时器/计数器模式。
上面的程序表示我们现在了模式1
TH0Timer 0 High Byte和TL0Timer 0 Low Byte是定时器/计数器0的高字节和低字节寄存器。这两个寄存器一起形成了16位的计数器用于计时或计数操作。 上面我们是产生1ms的定时这里是怎么产生的呢 首先我们需要计算定时器0的初值。定时器0的初值可以通过以下公式来计算 初值 65536 - (定时时间 / 机器周期) 其中定时时间是你所期望的定时时间单位为毫秒机器周期是单片机的时钟周期可以通过晶振频率来计算公式为 机器周期 1 / (晶振频率 / 12) 假设你期望的定时时间为1毫秒晶振频率为12MHz则计算过程如下 机器周期 1 / (12MHz / 12) 1μs 初值 65536 - (1ms / 1μs) 65536 - 1000 64536 因此你可以将定时器0的初值设置为64536即可实现1毫秒的定时。 转换为16进制0xFC68,所以TH0oxFC和TL00x18 中断 当单片机正在执行某程序时如果突然出现意外情况它就需要停止当前正在执行的程序转而去执行处理意外情况的程序又称中断子程序执行处理完后又接着执行原来的程序。 中断流程中断请求、中断响应、中断处理、中断返回
MCS-51共有五个中断源 外部中断 0INT0 中断源描述 INT0是外部中断0连接到P3.2引脚。中断触发条件 当P3.2引脚上的电平由高变为低下降沿触发时INT0中断被触发。 外部中断 1INT1 中断源描述 INT1是外部中断1连接到P3.3引脚。中断触发条件 当P3.3引脚上的电平由高变为低下降沿触发时INT1中断被触发。 定时器/计数器 0 溢出中断TF0 中断源描述 TF0是定时器/计数器0T0的溢出中断。中断触发条件 当T0溢出时TF0中断被触发。 定时器/计数器 1 溢出中断TF1 中断源描述 TF1是定时器/计数器1T1的溢出中断。中断触发条件 当T1溢出时TF1中断被触发。 串行口中断RI/TI 中断源描述 RI接收中断和 TI发送中断是与串行通信相关的中断。中断触发条件 当串行口接收到数据时RI或当串行口发送完数据时TI相应的中断被触发。 上面我们用的是定时器/计数器 0 溢出中断TF0。
3、AD\DA和串行口
这里的知识点其实是非常重要的但是这里不做为复习重点我们了解一下即可。
AD\DA
AD和DA分别代表模数转换Analog-to-DigitalAD和数模转换Digital-to-AnalogDA是在电子系统中用于将模拟信号和数字信号相互转换的过程。
8051串行口的设置和相关的寄存器 SCON串行控制寄存器 用于设置串行口的工作模式和控制串行通信的各个方面 SCON 0x50; // 设置串行口为模式 1启用接收MOD定时/计数器模式寄存器 用于设置定时器模式因为在串行通信中通常使用定时器来生成波特率。 TMOD 0x20; // 设置定时器 1 为模式 28 位自动重装定时器TH1 和 TL1定时/计数器1的高字节和低字节寄存器 用于设置定时器1的初值以实现正确的波特率。 TH1 0xFD; // 根据波特率设置 TH1 的值
TL1 0xFD; // 根据波特率设置 TL1 的值TI 和 RI 位SCON寄存器中的位 用于标志发送中断和接收中断。 TI 0; // 发送中断标志位初始设为0
RI 0; // 接收中断标志位初始设为0