51单片机

单片机常用名词解释与常用逻辑电路

↘锁芯ラ 提交于 2020-04-06 16:52:45
MCS-51系列单片机 MCS-51系列单片机分为两大系列,即51子系列与52子系列。 51子系列:基本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、8951 52子系列:增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952 这两大系列单片机的主要硬件特性如下表: 从上表中可以看到,8031、8031、8032、80C32片内是没有ROM的,对应着上表看,我们可以发现,51系列的单片机的RAM大小为128B,52系列的RAM大小为256B,51系列的计数器为两个16位的,52系列的计数器为三个16位计数器。51系列的中断源为5个,52系列的中断源为6个。 8051与80C51的区别: 80C51单片机是在8051的基础上发展起来的,也就是说在单片机的发展过程中是先有8051,然后才有80C51的。 8051单片机与80C51单片机从外形看是完全一样的,其指令系统、引脚信号、总线等完全一致(完全兼容),也就是说在8051下开发的软件完全可以在80C51上应用,反过来,在89C51下开发的软件也可以在8051上应用。这两种单片机是完全可移植的。 既然这两种单片机外形及内部结构都一样,那它们之间的主要差别在哪里呢? 8051与80C51单片机的主要差别就在于芯片的制造工艺上。80C51的制造工艺是在8051基础上进行了改进。

[51单片机学习笔记ONE]-----LED灯的多种使用方法

≯℡__Kan透↙ 提交于 2020-03-30 01:54:39
一.交替闪烁8个LED灯,时间间隔为1s 1 /****************************************************** 2 实验名称: 交替闪烁8个LED灯,时间间隔1s 3 实验时间: 2014年12月2日 4 ******************************************************/ 5 6 #include <reg51.h> 7 8 void delay(unsigned char a); 9 10 void main() 11 { 12 while(1) 13 { 14 /*根据原理图,P0置高电平灯亮*/ 15 P0 = 0x00; 16 delay(45); 17 18 /*根据原理图,P0置低电平灯灭*/ 19 P0 = 0xFF; 20 delay(45); 21 } 22 } 23 24 /*延时1s,有误差。计算公式大约可以用((((c*2)+3)*b+3)*a)*/ 25 void delay(unsigned char a) 26 { 27 unsigned char b,c; 28 for(;a>0;a--) 29 for(b=152;b>0;b--) 30 for(c=70;c>0;c--); 31 32 } 实验的代码很简单。但是实际操作过程中还是遇到了以下问题:

基于51单片机的CAN通讯协议C语言程序

♀尐吖头ヾ 提交于 2020-03-22 09:39:21
//-----------------------函数声明,变量定义-------------------------------------------------------- #include <reg52.h> sbit int0 = P3^2; //-----------------------定义寻址的基址-------------------------------------------------------- #define base_Adr 0x00 //-----------------------定义总线定时寄存器的值-------------------------------------------------------- #define SJA_BTR0 0x00 //该值需要用户根据实际需要的波特率进行计算 #define SJA_BTR1 0x16 //具体计算见文章说明 //-----------------------设置接收报文类型(标示符)-------------------------------------------------------- //该值需要用户根据实际需要重新配置 #define SJA_ACR 0x00 //验收代码寄存器的值 #define SJA_AMR 0x16 //验收屏蔽寄存器的值 //-------

关于单片机中断控制

左心房为你撑大大i 提交于 2020-03-17 22:07:54
1 .对于 STM32 讲,外部中断通道位置 28 ( 35 号优先级)是给外部设备 TIME2 的,但 TIME2 本身能够引起中断的中断源或事件有好多个,比如更新事件(上溢 / 下溢)、输入捕获、输出 匹配、 DMA 申请等。所有 TIME2 的中断事件都是通过一个 TIME2 的中断通道向 STM32 内核提 出中断申请,那么 STM32 中如何处理和控制 TIME2 和它众多的、不同的、中断申请呢? (题外话: STM32 中的一个通用定时计数器,就比 8 位控制器(如 AVR , MCS-51 就更不必说了)中 TIME 要复杂多了。学过 AVR 的,可能对输入捕获、输出匹配等还有概念,但如果你学的标准架构的 MCS-51 ,那 么上手 32 位可能困难就更多了。所以我一直推荐学习 8 位机应该认真的从 AVR 开始。尽管 51 有很大的市 场,价格也相对便宜,但从长远的眼光看问题,从后续掌握 32 位的使用,考虑到学生的可持续发展, AVR 应该是比较好的选择。) 2 . cortex_m3 内核对于每一个外部中断通道都有相应的控制字和控制位,用于单独的和总 的控制该中断通道。它们包括有: z 中断优先级控制字: PRI_n (上面提到的) z 中断允许设置位:在 ISER 寄存器中 z 中断允许清除位:在 ICER 寄存器中 z 中断悬挂 Pending (排队等待

51单片机复习:IIC总线

谁都会走 提交于 2020-03-17 07:52:15
iic串行总线:有两条线,一个数据线SDA,一个时钟线SCL,两条线都接上拉电阻,因而空闲状态,两条线均为高电压,它与其它与之 相连的器件是一种线与的关系,这点我们可以类比c语言的&&符号,意味着连接总线的任意器件只要为低电压,就会拉低总线 电压,连接到总线的器件都有唯一地址。 数据位有效性的规定: 时钟信号SCL为高电平时,数据信号SDA必须保持稳定。 时钟信号SCL为低电平时,数据信号SDA才允许变化。 起始信号和终止信号:(你可以观察到,此时SCL一直为高电平,数据信号定然不变,所以可以以此区别) SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化 表示终止信号。(下降沿为起始信号,上升沿为终止信号) 在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。(了解就行) 接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节, 这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL线使之 为高电平,从而使数据传送可以继续进行。(其实这就是所谓的SCL为高电平时总线为空闲,为低电平总线为忙碌,该文字描述中,总线在忙于其它事物,所以拉低电压等待 当总线处理完事情时,拉高电压

51单片机复习:串口通信

浪子不回头ぞ 提交于 2020-03-10 10:23:18
计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。(比如电脑和单片机) 通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。 并行通信(通常是将数据字节的各位用多条数据线同时进行传送 ) 比如这样说,一个字节有八位,我有八根线,一根传一位,八位同时传递 优缺点: 并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。 串行通信(一个字节八位,一位一位传送) 串行通信是将数据字节分成一位一位的形式在 一条传输线上逐个地传送。 并行通信这里不多谈 我们下面谈谈串行通信,串行通信分异步通信与同步通信 异步通信与同步通信: 异步通信: 异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。 为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。 异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的, 但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系, 但同一字符内的各位之间的距离均为“位间隔”的整数倍。 异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位, 各帧之间还有间隔,因此传输效率不高。 同步通信: 同步通信时要建立发送方时钟对接收方时钟的直接控制

51单片机串口通信

我只是一个虾纸丫 提交于 2020-03-10 10:21:18
1.通信方式分类 (1)并行通信 发送方和接收方用多根数据线连接,多位数据同时发送。传输线多,长距离传输时成本大。 (2)串行通信 单根数据线发送数据,逐位发送。长距离传送成本低,但控制相对复杂。 串行通信又可分为: 异步串行通信 和 同步串行通信 。 异步串行通信 :所谓“异步”,指的是双方设备使用各自的时钟,以字符为单位传输,采用一种特殊的格式称为“帧”(如下图),且各字符之间的间隙不等。 一帧数据由起始位,数据位,校验位和停止位构成。 常态下,数据线上为高电平。起始位为低电平,也就是说,起始位出现,表示有一帧数据要传输了。 校验方式 有奇偶校验、和校验和循环冗余校验三种方式。 其中“和校验”是指,对数据块求和,产生一个字节的校验数据存到数据块末尾,接收方接受数据时对数据块再求和,和末尾的校验数据比较,不一致就表示传输发生错误。 同步串行通信:双方的时钟严格一致,传送的字符数据间没有间隙,双方实现同步。 2.RS232和TTL电平的转换 RS232是美国电子工业协会于1962年发布的串行通信接口标准,RS即Recomend Standard,推荐标准,232为标示号。RS232用的是 负电平逻辑 ,-3V ~ -15V 为1,+3 ~ +15V为0。 TTL是Transistor-Transistor Logic的简写,晶体管-晶体管逻辑。工作电压5V。规定: 对于输出电路

单片机内部结构(干货)

假装没事ソ 提交于 2020-03-06 03:07:19
程序计数器PC(Program Counter): 存放着下一条将要从程序存储器中取出的指令的地址。 工作方式: ① 程序计数器PC自动加1。 ②程序计数器将被置入新的数值。 ③ 在执行子程序或响应中断时:将PC的当前值(可称为断点值)自动送入堆栈;将子程序的入口地址或中断向量地址送入PC,程序流向发生变化,执行子程序或中断服务程序。 51单片机存储器采用 哈佛(Harvard)结构 , 即将程序存储器和数据存储器截然分开,程序存储器和数据存储器各有自己的寻址方式、寻址空间和控制系统。 51单片机的4个物理存储空间相当于3个逻辑存储空间。 程序存储器ROM: (内外统一编址) 用来存放暂时性的数据、运算的中间结果或用作堆栈。 随时进行数据的写入和读出,关闭电源时,其所存储的信息将丢失。 特殊存储器单元: 0000H:复位后程序自动运行的首地址 0003H:外部中断0入口地址 000BH:定时器0溢出中断入口地址 0013H:外部中断1入口地址 001BH:定时器1溢出中断入口地址 0023H:串行口中断入口地址 程序一般应安排在0030H地址以后 数据存储器RAM: 用来存放MCU的固定系统程序、应用程序、数据或表格。如系统监控程序等。 写入信息后不易改写的存储器。断电后,其中的信息保留不变。 ①工作寄存器区(含寄存器组0 ~ 3): 寄存器组0:地址00H~07H 寄存器组1

有关芯片的认识

人盡茶涼 提交于 2020-03-05 04:54:28
去网上查询有关51单片机的知识,并回答: 1)你购买的51单片机的芯片型号叫什么? 2)除此之外有其他的型号芯片吗? 3)哪个基于8051的芯片物美价廉,且性能好? 4)你查完后,你对51单片机有什么了解? 5)除此以外你还查到除51外的开发板? 对说的比较透彻的3人,奖励20经验 截止时间(3.5——3.14) 来源: https://www.cnblogs.com/action0/p/12418147.html

51单片机 时间控制的不同时段交通灯控制设计(简单版)

大憨熊 提交于 2020-02-28 12:38:01
这个交通灯的设计时简单版,只有一个路口(不是十字路口)的那种(想要实现十字路口可以对代码稍加修改) 使用的开发软件:Keil uVision5 单片机类型为:C51 语言类型:C语言 在这里说一下实现的功能 STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,设计格局时间选择不同红绿灯交替时间的交通灯控制电路。一是交通灯的正常指示设计;二是扩展DS12C887等相应的外围电路,利用LCD显示时间;三是设计2个交通灯交替间隔,根据时间不同自动选择,可以通过按键来选择3中不同的功能。 先在这里附上几张实现的图片 在这里贴出代码 # include "reg51.h" # include "absacc.h" typedef unsigned char BYTE ; typedef unsigned int WORD ; unsigned char Key_Value ; //读出的键值 /* 液晶 1602 口地址 */ # define wr_com XBYTE[0xC000] //写命令 # define wr_data XBYTE[0xC100] //写数据 # define rd_com XBYTE[0xC200] //读命令 # define rd_data XBYTE[0xC300] //读数据 /* DS12887 口地址 */ # define