当前位置:文档之家› 8051单片机串口通信中的检错方法

8051单片机串口通信中的检错方法

8051单片机串口通信中的检错方法
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 单片机串行口通信程序设计列子

基于51单片机的流水灯

基于51单片机的流水灯 利用51单片机P0口实现8个LED(发光二极管)的流水灯控制。可以使用Proteus软件进行仿真调试。 1 硬件设计 利用单片机的PO口控制8个LED,其电路如下图所示。 在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。单击菜单命令“文件”→“新建设计”,选择DEFAULT模板,保存文件名为“LSD.DSN”。在器件选择按钮中单击“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示 都可以不画,它们都是默认的。 在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER和GROUND放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计。 2 软件设计 流水灯又称为跑马灯,在函数中可以将P0口的八种不同状态做成一维数组,循环执行即可,如下所示。当然也可以采用其它函授来实现,如左移一位<<1(或右移一位>>1),循环左移函授_crol_(或循环右移函授_cror_)等。 /****************************************************************** 流水灯

*******************************************************************/ #include "reg51.h" const tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delayms(unsigned int x) //延时 { unsigned int j; unsigned char k; for(j=0;j

AT89C51单片机的基本结构和工作原理

AT89C51单片机的主要工作特性: ·内含4KB的FLASH存储器,擦写次数1000次; ·内含28字节的RAM; ·具有32根可编程I/O线; ·具有2个16位可编程定时器; ·具有6个中断源、5个中断矢量、2级优先权的中断结构; ·具有1个全双工的可编程串行通信接口; ·具有一个数据指针DPTR; ·两种低功耗工作模式,即空闲模式和掉电模式; ·具有可编程的3级程序锁定定位; AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz. AT89C51各部分的组成及功能: 1.单片机的中央处理器(CPU)是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。

(1)运算器 运算器主要用来实现算术、逻辑运算和位操作。其中包括算术和逻辑运算单元ALU、累加器ACC、B寄存器、程序状态字PSW和两个暂存器等。 ALU是运算电路的核心,实质上是一个全加器,完成基本的算术和逻辑运算。算术运算包括加、减、乘、除、增量、减量、BCD码运算;逻辑运算包括“与”、“或”、“异或”、左移位、右移位和半字节交换,以及位操作中的位置位、位复位等。 暂存器1和暂存器2是ALU的两个输入,用于暂存参与运算的数据。ALU的输出也是两个:一个是累加器,数据经运算后,其结果又通过内部总线返回到累加器;另一个是程序状态字PSW,用于存储运算和操作结果的状态。 累加器是CPU使用最频繁的一个寄存器。ACC既是ALU处理数据的来源,又是ALU运算结果的存放单元。单片机与片外RAM或I/O扩展口进行数据交换必须通过ACC来进行。 B寄存器在乘法和除法指令中作为ALU的输入之一,另一个输入来自ACC。运算结果存于AB寄存器中。 (2)控制器 控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件,主要包括程序计数器PC、PC增量器、指令寄存器、指令译码器、定时及控制逻辑电路等,其功能是控制指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。AT89C51单片机中,PC是一个16位的计数器,可对64KB程序存储器进行寻址。复位时PC的内容是0000H. (3)存储器 单片机内部的存储器分为程序存储器和数据存储器。AT89C51单片机的程序存储器采用4KB的快速擦写存储器Flash Memory,编程和擦除完全是电器实现。 (4)外围接口电路 AT89C51单片机的外围接口电路主要包括:4个可编程并行I/O口,1个可编程串行口,2个16位的可编程定时器以及中断系统等。 AT89C51的工作原理: 1.引脚排列及功能 AT89C51的封装形式有PDIP,TQFP,PLCC等,现以PDIP为例。 (1)I/O口线 ·P0口 8位、漏极开路的双向I/O口。 当使用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。在编程时,P0口可用于接收指令代码字节;程序校验时,可输出指令字节。P0口也可做通用I/O口使用,但需加上拉电阻。作为普通输入时,应输出锁存器配置1。P0口可驱动8个TTL负载。 ·P1口 8位、准双向I/O口,具有内部上拉电阻。 P1口是为用户准备的I/O双向口。在编程和校验时,可用作输入低8位地址。用作输入时,应先将输出锁存器置1。P1口可驱动4个TTL负载。 ·P2 8位、准双向I/O口,具有内部上拉电阻。 当使用外存储器或外扩I/O口时,P2口输出高8位地址。在编程和校验时,P2口接收高字节地址和某些控制信号。 ·P3 8位、准双向I/O口,具有内部上拉电阻。 P3口可作为普通I/O口。用作输入时,应先将输出锁存器置1。在编程/校验时,P3口接收某些控制信号。它可驱动4个TTL负载。 (2)控制信号线

51系列单片机之串口通信

51系列单片机之串口通信 单片机的串口通信看起来是很复杂的,主要是因为他用到了更多的寄存器, 与前面的知识相比他更具综合能力,写起来考虑的问题自然也变多了.而前面学 习过的定时器与中断将是单片机通信的基础. 单片机的中断系统中第4 个中断 就是串口中断,要进行串口通信首先就要打开CPU 总中断EA,还要打开串口通 信中断ES,这是串口通信的前堤,而串口通信也跟计时器一样有很多的模式,因此 我们还要设置SCON 寄存器来指定采用哪一种方式进行通信,而在通信的过程中,我们还要设定通信的波特率,不然的话,单片机是没办法进行采样的,这样也不会得 到正确的结果了.我在实验过程中用到的是1 号定时器来设定的波特率,用到了 计时器方式2,也就是8 位自动重装,这样可以简化编程,她的实现思想就是将常 数放入TH,而TL 中则是初始化参数,当溢出时,单片机会自动将TH 中的常数装 入TL 中. 再来说说波特率,我们为什么要设定波特率,因为单片机会以16 倍波 特率的速度进行采样,而在实验中我们用的是10 位异步收发方式,因此要将SM0 置0,SM1 置1.而其中的10 位有8 位数据位,第一位和最后一位是发送数据的起 始与结束.采用高的皮特率就不会出错啦.而波特率是有一个公式的:方式0 的波 特率= fosc/12 方式2 的波特率=(2SMOD/64)- fosc 方式1 的波特率=(2SMOD/32)-(T1 溢出率)方式3 的波特率=(2SMOD/32)-(T1 溢出率)T1 溢出率= fosc /{12 乘以[256 -(TH1)]}根据公式我们很容易就算出当晶 振为110592HZ 时,要达到9600 的波特率,我们只需要将TL1 置FDH 即可,如下图: 除此之外,你还要将SCON 中的REN 位置1,不然的话,单片机是不会接收数 据的. 还有不要忘了选择定时器的工作方式,设置TMOD 为0x20 既是工作方式2,8 位自动重装定时器. 这样一来,初始批工作算是差不多了.而串口通信分为中 断方式,和查询方式,如果你想用查询方式你也不用设置IE 寄存器了. 在串口通

51单片机串口通信,232通信,485通信,程序

51单片机串口通信,232通信,485通信,程序代码1:232通信 #include #define uchar unsigned char #define uint unsigned int uchar flag,a,i; uchar code table[]="i get"; void init() { TMOD=0X20; TH1=0XFD; TH0=0XFD; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; } void main() { init();

while(1) { if(flag==1) { ES=0; for(i=0;i<6;i++) { SBUF=table[i]; while(!TI); TI=0; } SBUF=a; while(!TI); TI=0; ES=1; flag=0; } } } void ser() interrupt 4 {

RI=0; a=SBUF; flag=1; } 代码2:485通信 #include #include"1602.h" #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i; uchar code table[]="i get "; void init() { TMOD=0X20; TH1=0Xfd; TL1=0Xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1;

} void main() { init_1602(); init(); while(1) { if(flag==1) { display(0,a); } } } void ser() interrupt 4 { RI=0; a=SBUF; flag=1; } Love is not a maybe thing. You know when you love someone.

8051单片机考试试题及答案-2

一、填空题 1、请完成下列数制间的转换: 2、(00100110)B =()D ;(10011010)B =() H 3、根据一次传送数据位的多少,单片机传送数据的方 式分为两种,即 4、方式和方式。 5、假定(A)=22H,(R0)=66H,(66H)=FFH,执行指 令: 6、ADD A,@R0 后,累加器A的内容为,CY 内容为。 7、个人电脑(PC)存储器采用的结构为普林斯顿结构, 其特点是数据存储器和程序存储器统一编址,即存放在同一存储器中;而51单片机的存储器结构为 8、结构,其特点 是。 9、单片机中有个并行口,个串行口。 10、单片机能够识别的语言是,但该语言 记忆非常不方便,因此我们通常编写单片机程序使用的语言是;对编程效率要求很而执行效率要求不高的时候,还可以使用C语言对单片机进行

编程。 11、执行指令JZ NEXT时,当A等于时程序发生 跳转。 12、单片机上电复位后P3= H,SP= H。 13、某单片机晶振频率为6MHZ时,则该单片机的一个机 器周期为。 14、单片机系统复位后(PSW)=00H,此时内部RAM 寄存器区当前寄存器组是 15、第组,该组寄存器的单元地址范围为 至。 16、程序状态寄存器PSW的作用是用来保存程序运行过 程中的各种状态信息,其中CY为标志。 二、选择题 1、89C51单片机内部ROM的容量是 ( ) 2、A、128B B、4KB C、256B D、64KB 3、8051单片机的四个并行口P0、P1、P2、P3,用作通 用I/O口时,在读数据之前必须进行的操作是: () 4、A、写0 B、写1 C、读D、随 便

基于8051单片机的波形发生器设计

基于8051单片机的波形发生器设计 摘要:波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、高稳定性、可重复性和易操作性的电子仪器。本系统是基于A T89C51单片机的数字式低频信号发生器,采用AT89C51单片机作为控制核心,外围采用数字/模拟转换电路(DAC0832)、运放电路(LM324)、按键和8位数码管等。通过按键控制可产生方波、三角波、正弦波等,同时用数码管显示其对应的频率。介绍DAC 0832数模转换器的结构原理和使用方法,A T89C51的基础理论,以及与设计电路有关的各种芯片。文中着重介绍了如何利用单片机控制D/A转换器产生上述信号的硬件电路原理和软件编程原理,其设计简单、性能优好,可用于多种需要低频信号的场所,具有一定的实用性。 关键词:AT89C51,DAC0832,LM324 一引言 波形发生器也称函数发生器,作为实验信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。目前,市场上常见的波形发生器多为纯硬件设计而成,且波形种类有限,多为锯齿波,正弦波,方波,三角波等波形,而且这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点。在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟机械振动等领域常常要用到低频信号源,而由硬件电路构成的低频信号其性能难以令人满意,而且由于低频信号源所需的RC很大。大电阻,大电容在制作上有困难,参数的精度也难以保证。体积大,漏电,损耗显著更是致命的弱点。 二功能分析和方案论证与比较 依据不同的设计要求选取不同的设计方案,波形发生器的具体指标要求也有所不同。通常,波形发生器需要实现的波形有正弦波、方波、三角波和锯齿波,有些场合可能还需要任意波形的产生。各种波形指标有:波形的频率、幅度要求,频率稳定度,准确度等。对于不同波形,具体的指标要求也会有所差异,例如,占空比是脉冲波形特有的指标。波形发生器的设计方案多种多样,大致可以分为三大类:纯硬件设计法、纯软件设计法和软硬件结合设计法。 1 方案一 在波形发生器设计纯硬件法的早期,波形发生器的设计主要是采用运算放大器加分立元件来实现。实现的波形比较单一,主要为正弦波、方波和三角波。工作原理相对简单:首先是产生正弦波,然后通过波形变换(正弦波通过比较器产生方波,方波经过积分器变为三角波)实现方波和三角波。在各种波形后加上一级放大电路,可以使输出波形的幅度达到要求,通过开关电路实现不同输出波形的切换,改变电路的具体参数可以实现频率、幅度和占空比的改变。通过对电路结构的优化及所用元器件的严格选取可以提高电路的频率稳定性和准确度。纯硬件法中,正弦波的设计是基础,实现方法也比较多,电路形式一般有LC、RC和石英晶体振荡器三类。LC振荡器适宜于产生几兆赫兹至几百兆赫兹的高频信号;石英晶体振荡器能产生几千赫兹至几百兆赫兹的高频信号且稳定度高;对于频率低于几兆赫兹,特别是在几百赫兹时,常采用RC振荡电路。RC振荡电路又分为文氏桥振荡电路、双T网络式和移相式振荡电路等类型。其中,以文氏桥振荡电路最为常用。目前,实现波形发生器最简单的方法是采用单片集成的函数信号发生器。它是将产生各种波形的功能电路集成到一个集成电路芯片里,外加少量的电阻、电容元件来实现。采用这种方法的突出优势是电路简单,实现方便,精度高,性能优越;缺

8051单片机的内部结构

8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。 8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: 中央处理器(CPU)是整个单片机的核心 部件,是8位数据宽度的处理器,能处理 8位二进制数据或代码,CPU负责控制、 指挥和调度整个单元系统协调的工作,完 成运算和控制输入输出功能等操作。 ·数据存储器(RAM): 8051内部有128个8位用户数据存储 单元和128个专用寄存器单元,它们是统 一编址的,专用寄存器只能用于存放控制 指令数据,用户只能访问,而不能用于存 放用户数据,所以,用户能使用的的RAM 只有128个,可存放读写的数据,运算的 中间结果或用户定义的字型表。 ·程序存储器(ROM): 8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。 ·定时/计数器(ROM): 8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。 ·并行输入输出(I/O)口: 8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。 ·全双工串行口: 8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以 用作异步通信收发器,也可以当同步移位器使用。 ·中断系统: 8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可 满足不同的控制要求,并具有2级的优先级别选择。 ·时钟电路: 8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051 单片机需外置振荡电容。

单片机各种通信方式的特点和主要应用场合

单片机各种通信方式的特点和主要应用场合 串口用的比较多: RS232,用于与标准的RS232设备通讯 网卡,用于互联网或采用网卡端口的设备通讯 I2C,用于单片机自己外设或多个单片机之间通讯 CAN,工业标准,汽车中常用 并口: 并口就是直接将数据输入或输出,多少位数据就要用多少根线,此外还要加上控制线2根以上。 例如8位的数据通讯,至少用10根线。由于单片机的引脚数目有限,这种方法很不实用。 并行口现在计算机都几乎不用了。如果感兴趣,你就找以前的计算技术方面的书上还有介绍。 并口线路复杂,可靠性低,速度低,除了早期的打印机还用,也几乎没有这样的外设了。 大家好,通过前一期的学习,我们已经对ICD2 仿真烧写器和增强型PIC 实验板的使用方法及学习方式有所了解与熟悉,学会了如何用单片机来控制发光管、继电器、蜂鸣器、按键、数码管等资源,体会到了学习板的易用性与易学性,看了前几期实例,大部分都是基于单片机端口操作原理呢? 大家是否觉得这样一个单片机系统似乎缺少点什么呢?不错,本期我们将介绍单片机与电脑通讯,使单片机与PC 机能够联机工作。 单片机除了需要控制外围器件完成特定的功能外,在很多应用中还要完成单片机和单片机之间、单片机和外围器件之间,以及单片机和微机之间的数据交换和指令的传输,这就是单片机的通信。单片机的通信方式可以分为并行通信和串行通信。并行方式传送一个字节的数据至少需要8 条数据线。 一般来讲单片机与打印机等外围设备连接时,除8条数据线外,还要状态、应答等控制线,当传送距离过远时电线要求过多,成本会增加很多。单片机的串行通信方法较为多样,传统的串行通信方式是通过单片机自带的串行口进行RS232 方式的通信。 串行通信是以一位数据线传送数据的位信号,即使加上几条通信联络控制线,也比并行通信用的线少。 因此,串行通信适合远距离数据传送,如大型主机与其远程终端之间,处于两地的计算机之间,采用串行通信就非常经济。 串行通信又分为异步传送和同步传送两种基本方式。 异步通讯:异步通信传输的数据格式一般由1个起始位、7 个或8 个数据位、1 到2 个停止位和一个校验位组成。它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如图1 所示。

单片机串口通信的发送与接收(可编辑修改word版)

51 单片机的串口,是个全双工的串口,发送数据的同时,还可以接收数据。 当串行发送完毕后,将在标志位TI 置1,同样,当收到了数据后,也会在RI 置1。无 论RI 或TI 出现了1,只要串口中断处于开放状态,单片机都会进入串口中断处理程序。在中断程序中,要区分出来究竟是发送引起的中断,还是接收引起的中断,然后分别进行处理。 看到过一些书籍和文章,在串口收、发数据的处理方法上,很多人都有不妥之处。 接收数据时,基本上都是使用“中断方式”,这是正确合理的。 即:每当收到一个新数据,就在中断函数中,把RI 清零,并用一个变量,通知主函数, 收到了新数据。 发送数据时,很多的程序都是使用的“查询方式”,就是执行while(TI ==0); 这样的语句来 等待发送完毕。 这时,处理不好的话,就可能带来问题。 看了一些网友编写的程序,发现有如下几条容易出错: 1.有人在发送数据之前,先关闭了串口中断!等待发送完毕后,再打开串口中断。 这样,在发送数据的等待期间内,如果收到了数据,将不能进入中断函数,也就不会保存的这个新收到的数据。 这种处理方法,就会遗漏收到的数据。 2.有人在发送数据之前,并没有关闭串口中断,当TI = 1 时,是可以进入中断程序的。 但是,却在中断函数中,将TI 清零! 这样,在主函数中的while(TI ==0);,将永远等不到发送结束的标志。 3.还有人在中断程序中,并没有区分中断的来源,反而让发送引起的中断,执行了接收 中断的程序。 对此,做而论道发表自己常用的方法: 接收数据时,使用“中断方式”,清除RI 后,用一个变量通知主函数,收到新数据。 发送数据时,也用“中断方式”,清除TI 后,用另一个变量通知主函数,数据发送完毕。 这样一来,收、发两者基本一致,编写程序也很规范、易懂。 更重要的是,主函数中,不用在那儿死等发送完毕,可以有更多的时间查看其它的标志。 实例: 求一个PC 与单片机串口通信的程序,要求如下: 1、如果在电脑上发送以$开始的字符串,则将整个字符串原样返回(字符串长度不是固定的)。

单片机习题

第一章: 1·何谓微处理器,CPU,微机,单片机? 2·单片机有何特点? 3·微型计算机怎样执行一个程序? 第二章: 1·8051单片机片内包含哪些主要逻辑功能部件? 2·8051的EA端有何用途? 3·8051的存储器分哪几个空间?如何区别不同空间的寻址? 4·简述8051片内RAM的空间分配。 5·简述布尔处理存储器的空间分配,片内RAM中包含哪些可位寻址单元。 6·如何简捷地判断8051正在工作? 7·8051如何确定和改变当前工作寄存器组? 8·805l P0口用作通用I/O口输入时,若通过TTL"OC"门输入数据,应注意什么?为什么?9·805 lP0~P3口结构有何不同?用作通用I/O口输入数据时,应注意什么? 10·8051单片机的EA信号有何功能?在使用8031时,EA信号引脚应如何处理? 11·8051单片机有哪些信号需要芯片引脚以第二功能的方式提供? 12·内部RAM低128B单元划分为哪三个主要部分?各部分主要功能是什么? 13·使单片机复位有几种方法?复位后机器的初始状态如何? 14·开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什么?CPrT如何确定和改当前工作寄存器组? 15·程序状态寄伊器PSW的作用是什么?常用标志有哪些位?作用是什么? 16·位地址7C H与字节地址7CH如何区别?位地址7CH具体在片内RAM中什么位置? 17·8051单片机的时钟周期与振荡周期之间有什么关系? 18·一个机器周期的时序如何划分? 19·什么叫堆栈?堆栈指针SP的作用是什么?8051单片机堆栈的容量不能超过多少字节? 第三章: 1·简述下列基本概念:指令,指令系统,机器语言,汇编语言,高级语言。 2·什么是计算机的指令和指令系统? 3·简述8051汇编指令格式。 4·简述80.51的寻址方式和所能涉及的寻址空间。 5·要访间特殊功能寄存器和片外数据存储器,应采用哪些寻址方式? 6·在8051片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H. 请分析下面各是什么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果。 MOV A.40H MOV R0,A MOV Pl,#F0H MOV @R0,30H MOV DPTR,#3848H MOV 40H.38H MOV R0,30H MOV P0,R0 MOV l8H,#30H

单片机与pc串口通信

课程设计报告书课程名称:MCS-51单片机课程设计题目:单片机与PC机之间的通信 姓名:高永强 学号:010700830 学院:电气工程与自动化学院专业:电气工程与自动化 年级:2007级 指导教师:张丽萍

目录 1.引言与系统结构 (2) 2.硬件实现 2.1.AT89C52 (2) 2.2.MAX232芯片 (3) 2.3. 9针串口 (5) 3.虚拟串口调试 (7) 4.Proteus仿真原理图及元件清单 (14) 5.软件设计 (15) 6.主程序代码 (16) 7.心得体会 (18) 8.参考文献 (18)

1.引言与系统结构:利用PC 机配置的异步通信适配器,可以方便的完成 PC 机遇89C52单片机的数据通信。由于89C52单片机输入、输出电平为TTL 电平,而PC 机配置的是RS-232标准串行接口,二者的电器规范不一致,因此采用MXA232单芯片 实现89C52单片机于PC 机的RS-232标准接口通信电路。 如今,在很多场合中,要求单片机不仅能独立完成单机的控制任务,还要能与其他数据控制设备(单片机、PC 机等)进行数据交换。串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到电脑端,而且也能实现电脑对单片机的控制,比如可以很直观地把红外遥控器键值的数据码显示在电脑上,可以使编写红外遥控程序时方便不少,起到仿真器的某些功效。 89C52有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL 电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND.第2脚的RXD.第3脚的TXD 。 图 1 系统结构 2.硬件实现: 2.1 .AT89C52: AT89C52是51系列单片机的一个型号,它是ATMEL 公

单片机串口通信C程序及应用实例

一、程序代码 #include//该头文件可到https://www.doczj.com/doc/eb6448093.html,网站下载#define uint unsigned int #define uchar unsigned char uchar indata[4]; uchar outdata[4]; uchar flag; static uchar temp1,temp2,temp3,temp; static uchar R_counter,T_counter; void system_initial(void); void initial_comm(void); void delay(uchar x); void uart_send(void); void read_Instatus(void); serial_contral(void); void main() { system_initial(); initial_comm(); while(1) { if(flag==1) { ES = 0; serial_contral(); ES = 1; flag = 0; } else read_Instatus(); } } void uart_send(void) { for(T_counter=0;T_counter<4;T_counter++) { SBUF = outdata[T_counter]; while(TI == 0);

TI = 0; } T_counter = 0; } uart_receive(void) interrupt 4 { if(RI) { RI = 0; indata[R_counter] = SBUF; R_counter++; if(R_counter>=4) { R_counter = 0; flag = 1; } } } void system_initial(void) { P1M1 = 0x00; P1M0 = 0xff; P1 = 0xff; //初始化为全部关闭 temp3 = 0x3f;//初始化temp3的值与六路输出的初始值保持一致 temp = 0xf0; R_counter = 0; T_counter = 0; } void initial_comm(void) { SCON = 0x50; //设定串行口工作方式:mode 1 ; 8-bit UART,enable ucvr TMOD = 0x21; //TIMER 1;mode 2 ;8-Bit Reload PCON = 0x80; //波特率不加倍SMOD = 1 TH1 = 0xfa; //baud: 9600;fosc = 11.0596 IE = 0x90; // enable serial interrupt TR1 = 1; // timer 1 RI = 0; TI = 0; ES = 1; EA = 1; }

基于51单片机

目录 1 引言 (1) 1.1设计要求 (1) 1.2方案论证 (2) 2 单片机和D/A转换器 (3) 2.1AT89C51单片机 (3) 2.2D/AC0808 (5) 2.3LED数码 (7) 3 电路原理与硬件实现 (9) 3.1单片机最小系统及端口连接 (9) 3.2原理介绍 (10) 3.3硬件调试 (13) 4 软件程序设计 (14) 4.1开发工具介绍 (14) 4.2软件流程图 (17) 4.3软件调试 (17) 结束语 (18) 致谢 (18) 参考文献 (18) 附录 (18)

基于51单片机的程控直流电压源 XXX XXXX物理与电子信息工程系,XXX 摘要:本设计是以ATM89C51单片机为控制核心的开关电源,具有输出电压可调,电压数字显示的功能。具体阐述了开关电源的基本原理及工作过程,电源各硬件模块的设计及软件设计。该电源硬件模块包括输入整流和滤波模块、单片机供电电源模块、D/A转换模块及LED显示模块。 关键词:稳压电源;单片机89C51;D/A转换 1 引言 随着电力电子技术的迅速发展,直流电源应用非常广泛,其好坏直接影响着电气设备或控制系统的工作性能。直流稳压电源是电子技术常用的设备之一,广泛的应用于教学、科研等领域。传统的多功能直流稳压电源功能简单、难控制、可靠性低、干扰大、精度低且体积大、复杂度高。而基于单片机控制的直流稳压电源能较好地解决以上传统稳压电源的不足。其良好的性价比更能为人们所接受,因此,具有一定的设计价值。从上世纪九十年代末起,随着对系统更高效率和更低功耗的需求,电信与数据通讯设备的技术更新推动电源行业中直流|直流电源转换器向更高灵活性和智能化方向发展。设计的直流稳压电源主要有单片机系统、键盘、数码管显示器、D/A转换电路、直流稳压电路部分组成,数控电源采用按键盘输入数据,单片机通过D/A,控制驱动模块输出一个稳定电压。工作过程中,稳压电源的电压值由单片机输出,驱动LED显示,由键盘控制进行动态逻辑切换。以单片机为核心的智能化高精度简易直流电源的设计,电源采用数字调节、输出精度高,特别适用于各种有较高精度要求的场合。目前所使用的直流可调电源中,大多为旋钮开关调节电压,调节精度不高,而且经常跳变,使用麻烦。利用本数控电源,可以达到每步0.1V 的精度,输出电压范围0~9.9V ,电流可以达到500mA ,且数码显示直观。 电源采用数字控制,具有以下明显优点: (1)易于采用先进的控制方法和智能控制策略,使电源模块的智能化程度更高,性能更完美。 (2)控制灵活,系统升级方便,甚至可以在线修改控制算法,而不必改动硬件线路。 (3)控制系统的可靠性提高,易于标准化,可以针对不同的系统(或不同型号的产品),采用统一的控制板,而只是对控制软件一些调整即可。 1.1 设计要求 基本要求: (1)输出电压:范围0~9.9V步进0.1V纹波不大于10mv (2)输出电流:500mA (3)输出电压由数码显示

51单片机与串口通信(含代码)

51单片机与串口通信(含代码) 串口调试 1. 发送:向总线上发命令 2. 接收:从总线接收命令,并分析是地址还是数据。 3. 定时发送:从内存中取数并向主机发送. 经过调试,以上功能基本实现,目前可以通过上位机对单片机进行实时控制。 程序如下: //这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收 //和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的 #i nclude #i nclude #i nclude #define INBUF_LEN 4 //数据长度 unsigned char inbuf1[INBUF_LEN]; unsigned char checksum,count3 , flag,temp,ch; bit read_flag=0; sbit cp=P1^1; sbit DIR=P1^2; int i; unsigned int xdata *RAMDATA; /*定义RAM地址指针*/ unsigned char a[6] ={0x11,0x22,0x33,0x44,0x55,0x66} ; void init_serialcomm(void) { SCON=0x50; //在11.0592MHz下,设置串行口波特率为9600,方式1,并允许接收

PCON=0x00; ES=1; TMOD=0x21; //定时器工作于方式2,自动装载方式TH0=(65536-1000)%256; TL0=(65536-1000)/256; TL1=0xfd; TH1=0xfd; ET0=1; TR0=1; TR1=1; // TI=0; EA=1; // TI=1; RAMDATA=0x1F45; } void serial () interrupt 4 using 3 { if(RI) { RI=0; ch=SBUF; TI=1; //置SBUF空 switch(ch) { case 0x01 :printf("A"); TI=0;break; case 0x02 :printf("B"); TI=0;break; case 0x03 :printf("C"); TI=0;break; case 0x04 :printf("D"); TI=0;break; default :printf("fg"); TI=0;break; } }

8051单片机的特点1

1.单片机概念:单片机,又称微控制器,是在一块硅片上集成了各种部件的微型计算机。这些部件包括中央处理器CPU,数据存储器RAM,程序存储器ROM,定时器/计数器和多种I/O接口电路。 2.MCS-51系列单片机中的基本型产品是8051,8031和8751,这三个产品只是片内程序存储器制造工艺不同。8051的片内程序存储器ROM为掩膜型的在制造芯片时已将应用程序固化进去,使它具有了某种专用功能;8031无ROM,使用时需外接ROM;8751的片内ROM是EPROM型的,固化的应用程序可以方便改写。(除片内ROM 类型不同外,其他性能完全相同) 3.其他性能的结构特点:(1)8位CPU; (2)片内震荡器及时钟电路 (3)32根I\O线 (4)外部存储器ROM和RAM寻址范围各64KB (5)2个16位的定时器/计数器 (6)5个中断源,2个中断优先级 (7)全双工串行口 (8)布尔处理器 4.8051的内部结构 8051内部结构可划分为CPU,存储器,并行口,串行口,定时器/计数器和中断逻辑几部分。 (1)中央处理器 8051的中央处理器CPU由运算器和控制逻辑构成。其中包括若干特殊功能寄存器(SFR)。

a 以ALU为中心的运算器 运算逻辑单元ALU能对数据进行加减乘除等算术运算和“与”“或”“异或”等逻辑运算以及位操作运算。 ALU只能进行运算,运算的操作数可以事先存放在累加器ACC或暂存器TMP 中,运算结果可以送回ACC或通用寄存器或储存单元中。累加器ACC也可以写为A。B寄存器在乘法指令中用来存放乘数,在除法指令中用来存放除数,运算后B中为部分运算结果。 程序状态字PSW是8位寄存器,用来寄存本次运算的特征信息,用到其中的七位, 下面是其各位的定义: CY:进位标志,有进位或借位时,CY=1;否则CY=0. AC:半进位标志,当D3位向D4位产生借位或进位时,AC=1;否则AC=0;常用于十进制调整运算中。 F0:用户可设定的标志位,可置位或复位,也可供测试。 RS1,RS0:4个通用寄存器组的选择位,该两位的4种组合状态用来选择0~3寄存器组。 RS1、RS0与工作寄存器组的关系如图表所示 RS1 RS0 工作寄存器组 0 0 0组(00H~07H)0 1 1组(08H~0FH)RS1 RS0 工作寄存器组 1 0 2组(10H~17H)1 1 3组(18H~1FH)

基于51单片机的源代码

基于51单片机的源代码 JIN1 EQU P1.0 JIN2 EQU P1.1 JIN3 EQU P1.2 JIN4 EQU P1.3 INH EQU P2.3 CP EQU P2.2 ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV SP,#70H MOV TMOD,#20H ;自动重装 MOV SCON,#50H MOV PCON,#80H ;双倍波特率SMOD=1 MOV TH1,#0FFH ;57600MHZ波特率初值 MOV TL1,#0FFH MOV P1,#00H MOV P2,#00H SETB TR1 SETB P2.1 LOOP: LCALL keep LCALL SHUCHU ACALL QINGLING AJMP LOOP QINGLING: CJNE R0,#17,QINGLING1 MOV R0,#00H QINGLING1: CJNE R1,#9,FANHUI MOV R1,#00H FANHUI: RET SHUCHU: ACALL SHUA ACALL SHUB ACALL SHUC ACALL SHUD SHUA: MOV R3,#4 SETB JIN1 LLS: MOV R2,#8 LJMP keep INC R1 SETB INH CLR JIN1 CLR INH LLS1: LJMP keep SETB CP

CLR CP DJNZ R2,LLS1 DJNZ R3,LLS RET SHUB: MOV R3,#4 SETB JIN2 QQS: MOV R2,#8 LJMP keep INC R1 SETB INH CLR JIN2 CLR INH QQS1: LJMP keep SETB CP INC R0 CLR CP DJNZ R2,QQS1 DJNZ R3,QQS RET SHUC: MOV R3,#4 SETB JIN3 JJS: MOV R2,#8 LJMP keep INC R1 SETB INH CLR JIN3 CLR INH JJS1: LJMP keep SETB CP INC R0 CLR CP DJNZ R2,JJS1 DJNZ R3,JJS RET SHUD: MOV R3,#4 SETB JIN4 KKS: MOV R2,#8 LJMP keep INC R1 SETB INH CLR JIN4 CLR INH KKS1: LJMP keep

单片机之间的串行通讯

桂林电子科技大学微机与单片机接口 设 计 报 告 指导教师:吴兆华 学生:王晓鹏 学号:092011211 2010 年6月25日

一、设计题目 单片机之间的串行通讯 二、设计内容与要求 实现两个单片机之间的串行通讯,并用数码管分别显示两个单片机的数据,以验证通讯是否成功。 三、设计目的意义 当前,各种简单实用的通讯系统,使其达到数据传送稳在测控系统和工程应用中,常遇到多项任务需同时执行的情况,即主从式多机分布式系统成为现代工业广泛应用的模式。由于单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表等方面都有广泛的应用。利用单片机的串行通信技术设计一定可靠,使用方便,可扩展为DCS系统应用于工业领域,将有广泛的实际应用价值。单片机除了需要外围器件完成特定的功能外,在很多的应用中单片机之间通讯及单片机和外围器件之间的数据交换,多年来国内外在信息的处理特别是控制和信息传输通讯领域有着十分广泛的应用。 四、系统硬件原理图 图 1 系统硬件原理图 五、程序流程图与源程序 软件的设计是重要的。它的好坏直接关系设计的成功与否。软件是用C

语言完成的,需要能熟练的掌握C语言,还要熟悉AT89S52单片机。从程序流程图、通信协议、波特率计算、编写程序、编译、和烧入软件的操作,到最后的调试,是很复杂的。下面作详细介绍: 1、程序流程图 图2 程序流程图 2、 C语言程序 (1)主机的程序 #include /********变量说明***********/ unsigned char i,j,k,KEY,flag; unsigned char time1,time2,time3; unsigned int code ; a[11]={0x00,0x3F,0x7D,0x5B,0x5B,0x00,0x76,0x79,0x38,0x38,0x3f

单片机与PC机串口通信实现正文

毕业设计(论文)课题:单片机与PC机串口通信实现 学生: 孙波系部: 通信工程 班级: 通信1301 学号: 2013120325 指导教师: 童华 装订交卷日期: 2016年x月x日 装订顺序: (1)封面(2)毕业设计(论文)成绩评定记录(3)标题、中文摘要及关键词(4)正文(5)附录(6)参考文献

毕业设计(论文)成绩评定记录表 注:1.此表适用于不参加毕业答辩学生的毕业设计(论文)成绩评定; 2.平时成绩占40%、卷面评阅成绩占60%,在上面的评分表中,可分别按40分、60分来量化评分,二项相加所得总分即为总评成绩,总评成绩请转换为优秀、良好、中等、及格、不及格五等级计分。 教务处制

重庆电子工程职业学院 毕业设计(论文)开题报告 系别通信工程专业通信技术班级通信1301 学生姓名孙波学号2013120325 指导教师童华 一、毕业设计的内容和意义: 目前,随着计算机和微电子技术的高速发展,单片机在国民经济的各个领域的智能化控制中得到了非常广泛的应用。单片机已成为信息处理、物联网络、通信设备、工业控制、家用电器等各个领域不可缺少的智能部件。在一些工业控制中,经常需要以单片机作为下位机执行对被控对象的直接控制,以PC机为上位机完成复杂的数据处理,组成主从式控制系统。 为了提高系统管理的先进性,计算机工业自动控制和监测系统越来越多的采用主从式系统。较为常见的形式是由一台做管理用的上位机计算机(主机)和一台直接参与控制检测的下位机单片机(从机)构成的主从式系统,主机和从机之间以通讯的方式来协调工作。主机的作用一是向从机发送各种命令及参数;二是要及时收集、整理和分析从机发回的数据,供进一步的决策。从机被动的接收、执行主机发

相关主题
文本预览
相关文档 最新文档