普通8051串口
8051单片机的基本组成
4. CPU标志寄存器
PSW CY AC F0 RS1 RS0 OV — P
CY:进位标志,有进位或借位时 为1,否则为0
AC:辅助进位标志,当D3向D4有
进位或借位时为1,否则为0
11
第3组
F0:用户标志
10
第2组
01
第1组
RS1、RS0:工作寄存器组选择 0 0 第 0 组
二.特殊功能寄存器(高128个单元)
MCS-51内部安排有21个特殊功能寄存器各特 殊功能寄存器的符号及地址(见 P22 表2-6 )。 分别组成以下各个功能模块:
CPU:ACC、B、PSW、SP、DPTR(由两 个8位寄存器DPL、DPH组成)(见P11图2-3)
并行口:P0、P1、P2、P3
中断系统:IE、IP
RAM位寻址区位地址表(P11)
单元地址
2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 27H 26H 25H 24H 23H 22H 21H 20H
MSB
7FH 77H 6FH 67H 5FH 57H 4FH 47H 3FH 37H 2FH 27H 1FH 17H 0FH 07H
1-3 MCS-51系列单片机的内部资源 8051单片机的基本组成
时钟电路
CPU
T0 T1
ROM
RAM
定时计数器
控 制 电 路
并行接口 串行接口
中断系统
P0 P1 P2 P3 TXD RXD INT0 INT1
结构框图
docin/sundae_meng
•
•
并8中位行央的I/处OI/O口理口:P器40个、
... ...
8051F330串口接收程序
/********************************************************************
函数功能:将位选和显示码值写入74HC595,刷新数码管的位选和显示值。
入口参数:无。
返 回:无。
备 注:5ms左右刷新一次,若刷新太慢了人眼会感觉出数码管的闪烁。
函数功能:将传进的参数number转换成十六进制数,写入全局变量displayNum,
用于数码管显示,显示一个无符号char型,即:两位十六进制数。
入口参数:number:要在数码管上显示的数值。
返 回:无。
备 注:无。
********************************************************************/
//Delay(1);
NUM_SCK=1; //上升沿数据移位
//Delay(1);
NUM_SCK=0; //下降沿不变
//Delay(1);
}
//////////////////////////Pino Electronics///////////////////////////
}
//////////////////////////Pino Electronics///////////////////////////
/********************************************************************
函数功能:往74HC595芯片的移位寄存器中写入一个bit并移位。
displayNumCode[3]=numCode[displayNum[3]];
《单片机原理及应用教程》第7章:单片机的串行通信及接口
实验七 中断方式的串口通信实验
实验七中断方式的串口通信实验一实验目的:进一步掌握8051单片机串行口工作原理和方式,以及单片机中断原理和方法。
将单片机串口通信与中断综合运用。
二实验原理:8051单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。
但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出。
这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。
如果在串行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。
在上一个实验中,在单片机与微机进行数据传输时,我们使用查询方式,等待发送/接收中断信号,使CPU工作效率较低。
因此,我们可以用中断的方式进行单片机与微机的串口通信,当发送/接收完毕后产生中断。
这样,在数据传输过程中,CPU可以用于其他任务,大大提高了CPU的工作效率。
在外中断实验中已经提及串行口的中断向量为0023H,中断号为4,另外中断允许位为ES。
三实验内容:单片机与微机相连,使用中断方法实现8051单片机与微机的串口通信。
微机键入一个字符后发送至单片机,单片机收到后又将此字符发送回微机,在微机屏幕上回显。
要求在11.0592MHZ下,串行口的波特率为9600,方式1。
四实验电路图:与实验六的实验图一致。
五实验方法:1. 根据电路图连接好实验电路。
1.按照实验要求编写实验程序,建立新工程,保存为INTCOM。
2.软件调试程序,并在串口观察窗中调试,方法同上一个实验。
3.将Keil C51产生的intcom.hex文件通过在线下载ISP或商用编程器。
六参考程序:1.汇编源程序ORG 0000HLJMP MAINORG 0023H ;中断服务入口地址LJMP COM_INT_SRVMAIN: LCALL INIT_TMR1LCALL INIT_SCIAGAIN: SJMP AGAINCOM_INT_SRV: JBC RI,HERE_SRV ;中断服务子程序SJMP TEST_AGAINHERE_SRV: MOV R7,SBUFMOV SBUF,R7TEST_AGAIN: RETIINIT_SCI: MOV SCON,#0x50SETB ESSETB EA ;开中断RETINIT_TMR1: MOV TMOD,#0x20 ;初始化定时器MOV TH1,#0xFDMOV TL1,#0xFDSETB TR1RETEND2.C语言源程序/*************************************************** 文件名: intcom.c*描述:使用中断方法,微机发送数据到单片机,单片机接收后又发还至微机,并在微机屏幕上显示。
STC12C5A08S2简介
STC12C5A08S2简介新一代宏晶芯片具有1个时钟/机器周期,高速、高可靠,2路PWM,8路10位高速A/D转换,25万次/秒1T 8051带总线,无法解密,管脚直接兼容传统89C52,有全球唯一ID号可省复位电路,36-44个I/O内部R/C时钟的新一代宏晶芯片加密性强,解密难度高。
STC12C5A08S2系列主要性能●高速:1个时钟/机器周期,增强型8051内核,速度比普通8051快8~12倍●宽电压:5.5~3.3V,2.2~3.6V(STC12LE5A60S2系列)●增加第二复位功能脚(高可靠复位,可调整复位门槛电压,频率<12MHz 时,无需此功能)●增加外部掉电检测电路,可在掉电时,及时将数据保存进EEPROM,正常工作时无需操作EEP●低功耗设计:空闲模式,HOLTEK芯片解密,(可由任意一个中断唤醒)●低功耗设计:掉电模式(可由外部中断唤醒),可支持下降沿/上升沿和远程唤醒●工作频率:0~35MHz,相当于普通8051:0~420MHz●时钟:外部晶体或内部RC振荡器可选,在ISP下载编程用户程序时设置●8/16/20/32/40/48/52/56/60/62K字节片内Flash程序存储器,擦写次数10万次以上●1280字节片内RAM数据存储器●芯片内EEPROM功能,擦写次数10万次以上●ISP / IAP,在系统可编程/在应用可编程,无需编程器/仿真器●8通道,10位高速ADC,速度可达25万次/秒,2路PWM还可当2路D/A使用●2通道捕获/比较单元(PWM/PCA/CCP),---也可用来再实现2个定时器或2个外部中断(支持上升沿/下降沿中断)●4个16位定时器,兼容普通8051的定时器T0/T1,2路PCA实现2个定时器●可编程时钟输出功能,T0在P3.4输出时钟,T1在P3.5输出时钟,BRT在P1.0输出时钟●硬件看门狗(WDT)●高速SPI串行通信端口●全双工异步串行口(UART),兼容普通8051的串口●先进的指令集结构,兼容普通8051指令集,有硬件乘法/除法指令●通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口)可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不得超过100mA。
8051单片机的体系结构
(3)数据缓冲区
内部RAM的30H~7FH是数据缓冲区,也称为用户RAM区, 共80个单元。
52子系列内部有256个单元的数据存储器,用户RAM区范 围为30H~FFH,共208个单元。
工作寄存器区和位寻址区的地址及单元数与上述一致。
3、堆栈和堆栈指针 堆栈的概念:是一种数据项按序排列的数据结
构,采用后进先出,这种后进先出操作的缓冲器 区称为堆栈。
由内部控制信号产生输入锁存器两个输入缓冲器buf1和buf2推拉式io驱动器251p0口位图内部结构buf2buf15p0r2为读引脚信号执行movap0时该信号有效6读引脚端口时输出锁存器应为1qqdcvcc控制ad0p0r1p0r2d0p0w图1p0口内部结构读锁存器读引脚锁存器内部总线写锁存器地址数据p00多路开关10写数据读端口p03地址锁存器cbioa15a14a13a12a11a10a9a8a7a6a5a4a3a2a1a0d7d6d5d4d3d2d1d0dbabp10p11p12p13p14p15p16p17resetp30p31p33p34p35p36p37vssvccp00p01p02p05p06p07eaalepsenp27p26p25p24p23p22p21p20p32mcs51片外总线结构示意图返回mcs51单片机片外总线p04返回单片机8031p20p21p22a8a9a10alerd74ls373g6264a7a6a5a4a3a2a1a0o0o1o2o3o4o5o6o7p00p01p02p03p04p05p06p07oeceq0q1q2q3q4q5q6q7d0d1d2d3d4d5d6d7wewrp27p23p24a11a126264we单片机8031p20
P2.0
.P:2.4
单片机
8031 P0.0
STC12C2052AD 系列单片机器件手册 说明书
STC12C2052AD 系列单片机器件手册 --- 1个时钟/机器周期8051 ---无法解密 ---低功耗,超低价 ---高速,高可靠 ---强抗静电,强抗干扰STC12C0552,STC12C0552ADSTC12C1052,STC12C1052ADSTC12C2052,STC12C2052ADSTC12C3052, STC12C3052ADSTC12C4052, STC12C4052ADSTC12C5052, STC12C5052ADSTC12LE0552,STC12LE0552ADSTC12LE1052,STC12LE1052ADSTC12LE2052,STC12LE2052ADSTC12LE3052,STC12LE3052ADSTC12LE4052,STC12LE4052ADSTC12LE5052,STC12LE5052AD技术支援:宏晶科技(深圳) www.MCU-Memory.com support@MCU-Memory.comUpdate date: 2005-10-4 (草案,请随时注意更新)宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC12C2052AD系列 1T 8051单片机中文指南2领导业界革命 覆盖市场需求宏晶科技是新一代增强型8051单片机标准的制定者,致力于提供满足中国市场需求的世界级高性能单片机技术,在业内处于领先地位,销售网络覆盖全国。
在保证质量的基础上,以极低的价格和完善的服务赢得了客户的长期信赖。
目前,全力推出“1个时钟/机器周期”的单片机,全面提升8051单片机性能。
欢迎海内外厂家前来洽谈合作!新客户请直接联系深圳,以获得更好的技术支持与服务。
STC 12C2052AD系列 1T 8051 单片机RST 1 20 VCCRxD/P3.0 2 19 P1.7/SCLK/ADC7TxD/P3.1 3 18 P1.6/MISO/ADC6XTAL2 4 17 P1.5/MOSI/ADC5INT0/P3.2 6 15 P1.3/ADC3INT1/P3.3 7 14 P1.2/ADC2ECI/T0/P3.4 8 13 P1.1/ADC1PWM1/PCA1/T1/P3.5 9 12 P1.0/ADC0Gnd 10 11 P3.7/PCA0/PWM0XTAL1 5 16 P1.4/SS/ADC4DIP-20,SOP-20,(超小封装TSSOP-20定货)STC12C2052、STC12C4052不带A/D转换STC12C2052AD、STC12C4052AD带A/D转换 新客户请直接联系深圳以获得更好的技术支持和服务 欢迎海内外厂家前来洽谈合作南京办:广州办: 传真至深圳申请STC单片机 样片及ISP下载线/编程工具1个时钟/机器周期,超小封装8051单片机在系统可编程,无需编程器,可远程升级可送STC-ISP下载编程器,1万片/人/天内部集成MAX810专用复位电路,原复位电路可以保留,也可以不用,不用时RESET脚直接短到地1个时钟/机器周期,可用低频晶振,大幅降低EMI超低功耗:1、掉电模式: 典型功耗 <0.1μA2、空闲模式: 典型功耗 <1mA3、正常工作模式: 典型功耗 4mA - 7mA4、掉电模式可由外部中断唤醒,适用于电池 供电系统,如水表、气表、便携设备等。
8051系列单片机介绍
8051系列单片机介绍
8051系列(单片机)内部结构可以分为(CPU)、存储器、并行口、串行口、(定时器)/计数器和中断逻辑这几部分,如图。
(处理器)
(微处理器)又称CPU,由运算器和(控制器)两大部分组成。
1.算术逻辑单元
它在控制器所发内部控制(信号)的控制下进行各种算术操作和逻辑操作。
MCS-51系列单片机的算术逻辑单元能完成带进位位加法、不带进位位加法、带进位位减法、加1、减1、逻辑与、逻辑或、逻辑异或、循环移位以及数据传送、程序转移等一般操作外,其特点是:在B(寄存器)配合下,能完成乘法与除法操作。
可进行多种内容交换操作。
能作比较判跳转操作。
有很强的位操作功能。
2.累加器
累加器A是最常用的专用寄存器。
进入ALU作算术操作和逻辑操作的操作数很多来自A,操作的结果也常送回A。
有时很多单操作数操作指令都是针对A的,例如指令INC A是执行A中内容自加1的操作,指令CLR A是执行将A内容清零的操作,指令RL A是执行使A各位内容依次循环向左移动一位的操作.
程序状态字
程序状态字PSW是一个8位寄存器,它包含了许多程序状态信息,其各位的含义见图1-2-2
PSW各位的含义如表1-2-1
(RS)1、RS0与工作寄存器组的关系如表1-2-2。
STC单片机的特性及缺点解析
STC 单片机的特性及缺点解析
STC 单片机
说到STC 单片机有人会说到,STC 也能算主流,我们基于它是国内还算
是比较不错的单片机来说。
STC 单片机是宏晶生产的单时钟/机器周期的单片机,说白了STC 单片机是51 与AVR 的结合体,有人说AVR 是51 的替代单
片机,但是AVR 单片机在位控制和C 语言写法上存在很大的差异。
而STC
单片机洽洽结合了51 和AVR 的优点,虽然功能不及AVR 那幺强大,但是
在AVR 能找到的功能,在STC 上基本都有,同时STC 单片机是51 内核,
这给以51 单片机为基础的工程师们提供了极大的方便,省去了学习AVR 的时间,同时也不失AVR 的各种功能。
STC 单片机是高速、低功耗、超强抗干扰的新一代8051 单片机51 单片
机,指令代码完全兼容传统8051,但速度快8-12 倍,内部集成MAX810 专
用复位电路。
4 路PWM 8 路高速10 位A、D 转换,针对电机电机的供应商
控制,强干扰场合,成为继51 单片机后一个全新系列单片机。
特性
1、下载烧录程序用串口方便好用,容易上手,拥有大量的学习资料及视频,最着名的要属于昌晖仪表网的那个视频了,好多对单片机有兴趣的朋友。
基于单片机的酒精浓度检测系统本科
摘要随着经济的快速发展,私家车数量增长迅速,但酒后驾驶、醉酒驾驶导致的交通事故比例在不断增加,给人民的生命财产造成巨大的损失。
为了预防和减少交通事故的发生,设计了一种基于单片机的酒精浓度检测系统,本设计采用MQ-3气敏传感器采集气体相关数据,经过酒精浓度传感器模块进行调制和数据转化处理,最后将数据传送给单片机进行A/D转换和执行相应的功能。
具有液晶实时显示气体中酒精浓度,通过按键进行阀值设定,超过设定的阀值会发光报警等功能。
关键词:单片机;酒精浓度检测系统;气敏传感器AbstractWith the rapid economic development, the number of priva te cars is growing rapidly, but the proportion of traffic accidents of drunk driving, drunk driving cause is increasin g, causing huge losses to the lives and property of the p eople. In order to prevent and reduce the occurrence of tr affic accidents, designed a kind of alcohol concentration de tection system based on single chip, using the relevant dat a of MQ-3 gas sensors collect gas in this design, modulati on and data conversion treatment after alcohol concentration sensor module, the data is transmitted to the MCU A/D co nversion and executes the corresponding function. A liquid c rystal display the alcohol concentration in air, for thresho ld set by the key, more than the set threshold value will be luminous alarm function.Keywords: single chip microcomputer; alcohol concentration det ection system; gas sensor目录第一章前言 (1)1.1 概述 (1)2.1总体方案设计 (2)2.2单片机系统总体设计 (2)2.3芯片简介 (3)2.3.1 STC12C5A16AD单片机 (3)2.3.2 MQ-3酒精传感器 (5)2.3.3 EEPROM-24C02阀值存储芯片 (9)2.3.4 LCD1602显示模块 (12)第三章硬件电路设计 (16)3.1 主程序/CPU模块 (16)3.2 AT24C02阀值存储模块 (16)3.3 MQ-3传感器调理电路 (17)3.4 LCD液晶显示模块 (18)3.5按键单元设计 (18)第四章系统软件设计 (19)4.1主程序设计 (19)4.2 LCD1602显示程序设计 (20)4.3 24C02阀值存储程序设计 (20)4.4系统调试 (20)总结 (21)致谢 (22)参考文献 (23)附录 (24)第一章前言1.1 概述随着经济的高速发展,更多的人拥有私家车,而且近几年的增长率在不断提高,酒后驾车造成的交通事故也频繁发生,占据交通事故的很大比重。
模拟串口
/****************************************************作者:温子祺*联系方式:wenziqi@*说明:模拟串口实验***************************************************/传统的8051系列单片机一般都配备一个串口,而STC89C52RC增强型单片机也不例外,只有一个串口可供使用,这样就出问题了,假如当前单片机系统要求二个串口或多个串口进行同时通信,8051系列单片机只有一个串口可供通信就显得十分尴尬,但是在实际的应用中,有两种方法可以选择。
方法1:使用能够支持多串口通信的单片机,不过通过更换其他单片机来代替8051系列单片机,这样就会直接导致成本的增加,优点就是编程简单,而且通信稳定可靠。
方法2:在IO资源比较充足的情况下,可以通过IO来模拟串口的通信,虽然这样会增加编程的难度,模拟串口的波特率会比真正的串口通信低一个层次,但是唯一优点就是成本上得到控制,而且通过不同的IO 组合可以实现更加之多的模拟串口,在实际应用中往往会采用模拟串口的方法来实现多串口通信。
普遍使用串口通信的数据流都是1位起始位、8位数据位、1位停止位的格式的,如表1。
表1要注意的是,起始位作为识别是否有数据到来,停止位标志数据已经发送完毕。
起始位固定值为0,停止位固定值为1,那么为什么起始位要是0,停止位要是1呢?这个很好理解,假设停止位固定值为1,为了更加易识别数据的到来,电平的跳变最为简单也最容易识别,那么当有数据来的时候,只要在规定的时间内检测到发送过来的第一位的电平是否0值,就可以确定是否有数据到来;另外停止位为1的作用就是当没有收发数据之后引脚置为高电平起到抗干扰的作用。
在平时使用红外无线收发数据时,一般都采用模拟串口来实现的,但是有个问题要注意,波特率越高,传输距离越近;波特率越低,传输距离越远。
对于这些通过模拟串口进行数据传输,波特率适宜为1200b/s 来进行数据传输。
单片机全面介绍(8051,avr,pic,msp430,arm,dsp)
1、内部 ROM 读取时,PSEN 不动作; 2、外部 ROM 读取时,在每个机器周期会动作两次; 3、外部 RAM 读取时,两个 PSEN 脉冲被跳过不会输出; 4、外接 ROM 时,与 ROM 的 OE 脚相接。 参见图 2—(8051 扩展 2KB EEPROM 电路,在图中 PSEN 与扩展 ROM 的 OE 脚相 接) EA/VPP 访问和序存储器控制信号 1、接高电平时: CPU 读取内部程序存储器(ROM) 扩展外部 ROM:当读取内部程序存储器超过 0FFFH(8051)1FFFH(8052)时自动 读取外部 ROM。 2、接低电平时:CPU 读取外部程序存储器(ROM)。 在前面的学习中我们已知道, 8031 单片机内部是没有 ROM 的,那么在应用 8031 单片机时,这个脚是一直接低电平的。 3、8751 烧写内部 EPROM 时,利用此脚输入 21V 的烧写电压。
ALE/PROG 地址锁存控制信号:在系统扩展时,ALE 用于控制把 P0 口的输出低 8 位 地址送锁存器锁存起来,以实现低位地址和数据的隔离。(在后面关于扩展的课程中我们就 会看到 8051 扩展 EEPROM 电路,在图中 ALE 与 74LS373 锁存器的 G 相连接,当 CPU 对外部进行存取时,用以锁住地址的低位地址,即 P0 口输出。ALE 有可能是高电平也有可 能是低电平,当 ALE 是高电平时,允许地址锁存信号,当访问外部存储器时,ALE 信号负 跳变(即由正变负)将 P0 口上低 8 位地址信号送入锁存器。当 ALE 是低电平时,P0 口上 的内容和锁存器输出一致。关于锁存器的内容,我们稍后也会介绍。
51单片机串口原理
51单片机串口原理
51单片机串口原理是指通过串行通信协议实现数据的发送与
接收的一种通信方式。
串口通信可以用于串联外部设备与单片机进行数据传输,如与计算机、传感器、模块等进行数据交互。
串口通信由发送端与接收端组成。
发送端将要发送的数据转换成串行数据流,通过串行引脚将数据发送到接收端。
接收端接收到串行数据流后,将其转换为并行数据并进行相应的处理。
51单片机的串口通信主要依靠两个寄存器:TBUF(发送缓冲器)和RBUF(接收缓冲器)。
发送端通过向TBUF写入数据
实现数据发送,接收端通过读取RBUF来获取接收到的数据。
串口通信的波特率是指每秒钟传送的位数,它是串口通信中十分重要的参数。
串口通信的波特率由波特发明,并以其名字命名。
常见的波特率有9600、38400、115200等。
串口通信使用的是异步串行通信,即数据以比特为单位依次传送。
在每个数据字节的前后,都有一个起始位和一个或多个停止位。
起始位用于通知接收端数据的到来,停止位用于标记数据的结束。
在51单片机中,通过设置相应的寄存器来配置串口的波特率、数据位数、停止位数和校验位。
通过配置串口通信的参数,可以实现不同设备之间的数据传输。
以上就是51单片机串口通信的基本原理,通过串口通信可以
实现单片机与外部设备之间的数据交互,为嵌入式系统的开发提供了方便和灵活性。
51单片机串口中断与定时器中断共存同时使用
51单片机串口中断与定时器中断共存同时使用单片机中的串口中断和定时器中断在许多应用中都是非常常见的功能,由于它们常常需要同时使用,所以如何使它们共存成为了一个非常重要的问题。
在51单片机中,串口中断和定时器中断共存的具体实现可分为两个方面来考虑:硬件和软件。
1.硬件方面:首先,需要选择合适的串口和定时器资源。
在51单片机中,一般有多个串口和定时器可供选择,需要根据具体的需求来选择合适的资源。
通常情况下,UART片内串口是一个常见的选择,而定时器0是最常用的定时器。
其次,需要配置串口和定时器的中断优先级。
在8051单片机中,中断的优先级是通过EA(全局中断使能)与各个中断源的IE(中断使能位)来实现的。
当EBIT中的各位都清零时,所有中断都被禁止。
对于串口和定时器中断的优先级,一般情况下,定时器中断的优先级要高于串口中断的优先级,所以在配置中断优先级时,需要将定时器中断的中断使能比串口中断的中断使能位设置为高。
2.软件方面:对于串口和定时器中断共存的软件实现,一般需要考虑以下几个关键点:-中断服务函数(ISR)的实现:需要根据中断源的不同,编写相应的中断服务函数。
在编写中断服务函数时,需要注意避免冲突和竞争条件。
可以使用标志位来进行互斥操作,以确保在一些中断服务函数执行期间,其他中断服务函数不会被执行。
-数据的缓冲和处理:在串口中断中,接收到的数据需要进行缓冲和处理。
对于定时器中断,需要考虑定时中断的频率和数据处理的时序。
在这个过程中,需要合理地设计缓冲区和数据处理算法,以确保数据的正确性和完整性。
-时间片的分配和利用:在同时使用串口中断和定时器中断时,需要合理分配时间片,以提高系统的性能。
可以使用优先级和时间片轮转算法,确保各个任务之间的执行顺序和时序要求。
以上是关于51单片机中串口中断和定时器中断共存同时使用的一些思路和实现方法。
在具体应用中,还需要结合具体需求和硬件资源来做相应的设计和调整。
8051的引脚定义及功能
8051的引脚定义及功能8051是一种经典的8位单片机,最早由Intel公司于1980年推出。
它具有许多功能丰富的引脚,用于连接外围设备和实现各种功能。
下面是8051的引脚定义及其功能的详细说明。
1.P0口:P0.0-P0.7为8位双向通用IO口,可连接外围设备或扩展芯片。
P0口可通过对相应位进行读写来实现读取和输出数据。
2.P1口:P1.0-P1.7为八位双向通用IO口,功能同P0口类似。
与P0不同的是,P1口还具有输入/输出控制功能。
P1口的输入/输出控制位可分别设定为输入模式或输出模式。
3.P2口:P2.0-P2.7为8位双向通用IO口,功能同P0口类似。
P2口还具有外部数据总线的能力,用于连接外部存储器或其他设备。
4.P3口:P3.0-P3.7为8位双向通用IO口,功能同P0口类似。
P3口还具有一些额外的功能引脚,如P3.0/RXD和P3.1/TXD用于串口通信,P3.2/INT0和P3.3/INT1用于外部中断。
5.RST引脚:复位引脚,用于将单片机复位到初始状态。
在复位时,所有寄存器和引脚都会被初始化。
6.ALE引脚:地址锁存使能引脚,用于在外部总线上锁存地址信号。
在每个时钟周期的开始,ALE引脚会产生一次正脉冲,用于锁存当前的地址。
7.PSEN引脚:程序存储器使能引脚,用于选择外部程序存储器或内部程序存储器。
当PSEN为低电平时,外部程序存储器被选中。
8.EA/VPP引脚:程序存储器地址扩展/编程电压引脚。
EA引脚用于控制程序存储器地址空间的扩展,VPP引脚用于编程时的供电电压。
9.XTAL1和XTAL2引脚:外部晶体振荡器引脚。
通过连接外部晶体和相关电路,可以实现单片机的时钟源。
10.VCC和GND引脚:供电引脚。
VCC引脚连接正电压,GND引脚连接地。
11.ADC引脚:模拟数字转换引脚,用于连接外部模拟输入设备。
8051的ADC引脚能够将模拟信号转换为数字信号,供单片机进行处理。
单片机汇编专题知识
位符号 SM0 SM1 SM2 REN TB8 RB8 TI
RI
SCON中各位阐明如下:
1) SM0 、SM1——串行口工作方式选
择位
其状态组合和相应工作方式为:
SM0 SM1
工作方式
011
方式2 方式3
2) SM2——允许方式2、3旳多机通信控制位 (寄在存RB方器8)式S为B2U和1F中,3 中,才并,将置若接位受S MR到2I=产旳1生前且中8接位断受数祈到据求旳送;第入不九接然位受丢数缓弃前冲据 8还位是数为据0。,都若将S前M28=位0送,入则接不受论S第BU九F中位,数并据产(生RB中8)断为祈1 求。
12 (256 X ) fosc
溢出率为溢出周期旳倒数。则波特率旳计算公式为:
波特率= 2SMOD
fosc
32 12 (256 X)
实际使用中,波特率是已知旳。所以需要根据波特率旳计 算公式求定时初值X。顾客只需要把定时初值设置到定时器1, 就能得到所要求旳波特率。
串行工作方式2
方式2为11位为一帧旳异步串行通信方式。其帧格式为1个 起始位、9个数据位和1个停止位。如下图所示。
D0 。。。。。。 D7
RXD 8051
TXD
P1.0
A
B
74LS164
CLK STB
2. 数据接受 要实现数据接受,必须首先把SCON中旳允许接受位REN设置为
1。当REN设置为1时,数据就在移位脉冲旳控制下,从RXD端输入。 当接受到8位数据时,置位接受中断标志位RI,发生中断祈求。 其接口逻辑如下图所示。由逻辑图可知,经过外接74LS165,串 行口能够实现数据旳并行输入。
4)停止位:末尾,为逻辑“1”高电平, 可取1、1.5、2位,表达一帧字符传送 完毕。
单片机第七课--串口
1、方式2和方式3发送
写入SBUF TXD TI(中断标志) 起始
D0 D1 D2 D3 D4 D5 D6 D7 TB8
停止位
发送前,先根据用户约定的通信协议由软件设置TB8的值, 然后把要发送的数据写入SBUF启动发送过程,先把起始位 0输出到TXD引脚,然后发送移位寄存器的输出位(D0)到 TXD引脚。每一个移位脉冲都使输出移位寄存器的各位右移 一位,并由TXD引脚输出。 第一次移位时,停止位“1”移入输出移位寄存器的第9位 上 ,以后每次移位,左边都移入0。当停止位移至输出位时, 左边其余位全为0,检测电路检测到这一条件时,使控制电 路进行最后一次移位,并置TI=1,向CPU请求中断。
一个字符帧 空 闲 起 始 位 数据位 校 验 位 停 止 位 空 闲
下一字符 起始位
LSB
MSB
异步通信对硬件要求较低,实现起来比较简单、灵活, 适用于数据的随机发送/接收,但因每个字节都要建立一次同 步,即每个字符都要额外附加两位,所以工作速度较低,在 单片机中主要采用异步通信方式。
2、同步通信 以一串字符为一个传送单位,字符间不加标识位,字符串开 始用同步字符标识(一般约定为1~2个字符),以触发同步时 钟开始发送或接收数据;多字节数据之间不允许有空隙,每位 占用的时间相等;空闲位需发送同步字符。 硬件要求高,通讯双方须严格同步,适用于成批数据传送。 单片机不用该方式。
在单片机的应用中,常用的晶振频率为:12MHz和 11.0592MHz。所以,选用的波特率也相对固定。 常用的串行口波特率以及各参数的关系如表所示。
串行口工作之前,应对其进行初始化,主 要是设置产生波特率的定时器1、串行口控 制和中断控制。具体步骤如下:
确定T1的工作方式(编程TMOD寄存器);
8051单片机串口通信中的检错方法
8051单片机串口通信中的检错方法摘要:为了保证微处理器芯片中串口传输数据内容的正确性,除了串口自带的奇偶校验外。
采用信道编码也可以保证串口数据准确无误的传输。
文中对应用较多奇偶校验CRC一8以及汉明纠错码三种方法进行检错分析,改进了数据传输的效率,同时比较了三种方法之间的性能差异。
关键词:串口通信数据检错(ErrorChecking) 8051 单片机1 串行口方式0应用编程8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就能扩展一个并行口。
例如,用8051单片机串行口外接CD4094扩展8位并行输出口,8位并行口的各位都接一个发光二极管,要求发光管呈流水灯状态。
串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于TI或RI标志。
串行发送时,能靠TI置位(发完一帧数据后)引起中断申请,在中断服务程序中发送下一帧数据,或者通过查询TI的状态,只要TI为0就继续查询,TI 为1就结束查询,发送下一帧数据。
在串行接收时,则由RI引起中断或对RI查询来确定何时接收下一帧数据。
无论采用什么方式,在开始通信之前,都要先对控制寄存器SCON进行初始化。
在方式0中将,将00H 送SCON就能了。
1.1 单片机串行口通信程序设计列子ORG 2000HSTART: MOV SCON,#00H ;置串行口工作方式0 MOV A,#80H ;CLR P1.0 ;关闭并行输出OUT0: MOV SBUF,A ;开始串行输出OUT1: JNB TI,OUT1 ;输出完否CLR TI ;完了,清TI标志,以备下次发送SETB P1.0 ;打开并行口输出ACALL DELAY ;延时一段时间RR A ;循环右移CLR P1.0 ;关闭并行输出JMP OUT0 ;循环1.2 串行口异步通信org 0000HAJMP STARTORG 30HSTART:mov SP,#5fh ;mov TMOD,#20h ;T1: 工作模式2mov PCON,#80h ;SMOD=1mov TH1,#0FDH ;初始化波特率mov SCON,#50h ;Standard UART settings MOV R0,#0AAH ;准备送出的数SETB REN ;允许接收SETB TR1 ;T1开始工作W AIT:MOV A,R0CPL AMOV R0,AMOV SBUF,ALCALL DELAYJBC TI,W AIT1 ;如果TI等于1,则清TI并转W AIT1AJMP W AITW AIT1: JBC RI,READ ;如果RI等于1,则清RI并转READAJMP W AIT1READ:MOV A,SBUF ;将取得的数送P1口MOV P1,ALJMP W AITDELAY: ;延时子程序MOV R7,#0ffHDJNZ R7,$RETEND将程序编译通过,写入芯片,插入实验板,用通读电缆将实验板与主机的串行口相连就能实验了。
stc c51 串口通信协议常用校验计算以及一些常用方法
stc c51 串口通信协议常用校验计算以及一些常用方法STC C51 是一种基于8051 内核的单片机,广泛应用于各种嵌入式系统。
在串口通信中,为了保证数据的正确传输,通常需要使用校验位来检测数据传输过程中可能出现的错误。
以下是一些常用的校验计算方法以及一些常用的方法:1. 奇校验:o 定义:在数据字节的最高位(第8位)为校验位。
该位确保数据中1的个数为奇数。
o 规则:如果字节中的1的个数是偶数,那么奇校验位为1;如果字节中的1的个数是奇数,那么奇校验位为0。
o 优点:简单易懂,易于实现。
o 缺点:对于数据中连续的多个0,可能会产生错误的奇校验结果。
2. 偶校验:o 定义:在数据字节的最高位(第8位)为校验位。
该位确保数据中1的个数为偶数。
o 规则:如果字节中的1的个数是奇数,那么偶校验位为1;如果字节中的1的个数是偶数,那么偶校验位为0。
o 优点:对于数据中连续的多个0,可以避免错误的偶校验结果。
o 缺点:可能会增加多余的1,从而使得接收方无法正确识别信号电平。
3. 无校验:o 定义:不使用额外的校验位。
o 优点:简单、不需要额外的校验位。
o 缺点:无法检测传输错误。
4. 软件校验:o 在发送端对数据进行简单的加和,然后取反(如果是偶数),或减去最大值(如果是奇数),得到一个校验和。
接收端进行相同的计算,并与发送端的校验和进行比较,以检测错误。
5. 硬件校验:o 使用硬件电路(如RS-485 转换器)来实现校验和检测。
这通常更可靠,但也需要额外的硬件成本。
6. 校验方法的选用:o 对于通信距离较短、可靠性要求不高的场合,可以选择简单的校验方法。
o 对于通信距离长、可靠性要求高的场合,建议使用硬件校验或更复杂的软件校验方法。
7. 其他注意事项:o在设计串口通信协议时,应考虑数据的起始、结束标志,以及数据的格式和顺序。
o 为了提高通信的可靠性,可以考虑使用多重的起始和结束标志、重发机制等。
o 在数据传输过程中,应定期检查校验和,以确保数据的完整性。
串口波特率的计算
8051的串口波特率的计算
西南科技大学电子测试实验室通信08级李晓文整理1、方式0的波特率,固定为晶振频率的十二分之一。
2、方式2的波特率,取决于PCON寄存器的SMOD位。
PCON是一个特殊的寄存器,除了最高位SMOD 外,其他位都是虚设的。
计算方法如下:
SMOD=0时,波特率为晶振频率的1/64;
SMOD=1时,为晶振频率的1/32.
3、方式1与方式3的波特率,都由定时器的溢出率决定。
公式为:
波特率= (2SMOD/ 32)×(定时器T1的溢出率)
通常情况下,我们使用定时器的工作方式2,即比率发生器,自动重载计数常数。
溢出的周期为:
T=(256-X)×12/fosc
溢出率为溢出周期的倒数,所以:
如此,也可由波特率反推出计数器的初始值。
下面是常用的波特率及初始值:
51单片机模拟串口波特率计算方法
1.计算波特率位间隔时间(即定时时间,其实就是波特率的倒数)
位间隔时间(us) = 106 (us) / 波特率(bps)
2.计算单片机指令周期:
指令周期(us) = 12 / 晶振频率(Mhz)
3.计算定时器初值:
需要指令周期个数 = 位间隔时间(us) / 指令周期(us)
定时器初值 = 2n—需要指令周期个数
n为定时器位数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中断______串口
(在G盘-单片机学习-中断-串口-温度传感器的串口信息接收)
编写流程:
(这里是对T1设定所说的,也可以对T0进行设定)
A:(串口:要对定时器进行选择(一般是模式2),再进行对串口模式的选择(一般是模式1))
B:以上是对需要发送数据的串口通信来说的,如果只进行接收数据的话,则只需打开软件上的串口开关,无需打开串口中断ES。
一.在main函数中的设定
1.先对TMOD进行设置
这里一般采用的是0x20;
(也就是说高四位中的M1=1,M0=0;可自动重装的8位定时器)
2.进行初值的设定(溢出)
TH1和TL1一般的可用单片机波特率初值设定那个软件进行查询设定。
(晶振11.0592MHz ;比特率自选,一般是9600)
3.启动TCON中的TR1
T1运行的控制位,一般的是TR1 = 1
4.对SCON进行设置
在SCON的设置中,不对SM2,TB8,RB8, T1进行设置
1> 一般采用方式1,即SM0=0; SM1=1;
2> REN是允许串行接受位,1为接受,0为禁止
3> RI本身在这里不需要进行设置,硬件会自动对其进行置1,
(但是在中断程序中需要手动清0)
5. 对串口进行设置
EA = 1;//打开总中断
ES = 1;//打开串口中断
二.在中断函数中的设定
1.定义某个数接受SBUF的值
例如i = SBUF;
3.最后一步对
RI =0;
注:执行中断的过程是循环的。
例子:
/**********************************************
这里简单说明了,串口接收温度数值,在串口调试助手中要以字符格式显示,(查ascll吗表)一、这里选用的是串行通信的模式1,需用到定时器函数。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
【如果只接收不写入数据,则只需打开软件上的串口开关,无需打开串口中断ES。
】、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
(串口调试助手主要以十六进制和字符格式显示,由于十六进制显示过于单调,,还需转码,因此我用的是字符格式显示,其字符的ascll表查询)
【需要注意的是:串行通信的传输速度有点慢,因此要在每个传输的字符之间加个延时函数,否则传输的将是乱七八糟】(串口通信的缺点)
二、如果要向从机发送(写入)数据,这需要打开串口中断开关ES,并且要写一个中断服务函数来接收主机发出去的数据(如53行的中断服务函数)
(在接收数据时要注意TI的使用,它是发送中断请求标志位,由硬件至位。
当其为1的时候表示发送缓冲器已空可以发送下一帧数据。
因此使用while(!TI)等待其清空缓冲器,是一个不错的语句。
RI和TI的功能是相同的,一般写一个就够了,常用的是RI)
同时你可以加入标志位,以帮助你做某些事情
************************************************/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define skip_rom 0xcc //1820跳过ROM
#define begin 0x44 //启动1820进行温度测量
#define reeprom 0xBE //1820读取高速暂存器中的内容
sbit out = P2^3; //1820接口
uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管显示
void delay_1820(uint t);
uchar reset (); //1820的复位
void wbit (uchar value); //写一位
void wbyte (uchar value); //写一个字节(写入上面那三的代码可执行那三个的意思)(ROM 其实有很大的作用,但是现在用不到才跳过去)
uchar rbit (); //读一位
uchar rbyte (); //读一个字节
uchar flag; //准备用作标志位
void timeing_init (void) //定时器开关
{
TMOD = 0X20;
TH1 = 0XFD;
TL1 = 0XFD;
TR1 = 1;
}
void chuan_kou (void) //串口开关及模式1
{
ES = 0;
PCON = 0X00;
SM0 = 0;
SM1 = 1;
REN = 1;
}
/*
void receive (void) interrupt 4 //定时中断服务程序
{
uchar temp;
ES = 0;
if (RI == 1)
{
temp = SBUF; //接收来自主机的信息
flag = 1;
RI = 0; //这个需要手动复位以接收下一帧数据
}
ES = 1;
}
*/
void main()
{
uchar k, e, i;
uchar temp, temp1, temp2;
EA = 1;
chuan_kou ();
timeing_init ();
flag = 0;
P2 = 0x00;
while(1)
{
reset();
wbyte(skip_rom);
wbyte(begin);
reset();
wbyte(skip_rom);
wbyte(reeprom);
e = rbyte();
k = rbyte();
temp = e / 16 + k * 16;
temp1 = temp / 10 % 10;
temp2 = temp % 10;
if (flag == 0)
{
SBUF = 40;
delay_1820(100);
SBUF = temp1 + 48;
delay_1820(100);
SBUF = temp2 + 48;
delay_1820(100);
SBUF = 41;
delay_1820(100);
SBUF = 32;
delay_1820(100);
SBUF = 47;
for (i=0; i<200; ++i)
{
delay_1820(100);
P0 = table[temp / 10 % 10];
P2 = 6;
delay_1820(100);
P0 = table[temp % 10];
P2 = 7;
delay_1820(100);
}
}
}
}
void delay_1820(uint t)
{
uchar i;
for(i=0; i<t; i++);
}
uchar reset () //复位
{
uchar existpulse;
out = 0;
delay_1820 (30);
out = 1;
delay_1820 (3);
existpulse = out;
delay_1820 (30);
return existpulse;
}
void wbit (uchar value) //写一位值{
out = 0;
if (value == 1)
out = 1;
else
out = 0;
delay_1820 (5);
out = 1;
}
void wbyte (uchar value) //写字节{
uchar i, temp;
for (i=0; i<8; ++i)
{
temp = value >> i;
temp = temp & 0x01;
wbit (temp);
delay_1820 (5);
}
}
uchar rbit () //读一位数
{
uchar i;
out = 0;
out = 1;
for (i=0; i<3; i++); /////??????????!!!!!!!!!!!!
return out;
}
uchar rbyte () //读一个字节
{
uchar i,value;
value = 0;
for(i=0; i<8; i++)
{
if(rbit())
{
value = value | (0x01 << i);
}
delay_1820(6);
}
return(value);
}。