89C51单片机 第10章89C51应用系统设计和开发-临时分类-_第1页
89C51单片机 第10章89C51应用系统设计和开发-临时分类-_第2页
89C51单片机 第10章89C51应用系统设计和开发-临时分类-_第3页
89C51单片机 第10章89C51应用系统设计和开发-临时分类-_第4页
89C51单片机 第10章89C51应用系统设计和开发-临时分类-_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章

89C51应用系统设计和开发单片机应用系统设计包括总体方案、硬件系统、软件系统设计,系统仿真调试和运行维护等。介绍一个实用的数据采集和超限报警系统的设计和开发。10.1

单片机应用系统典型的单片机应用系统除主机外,还包括有:前向通道(即输入部分):数字量、开关量、模拟量信号(A/D)的输入。后向通道(输出部分):数字量、开关量、模拟量信号(D/A)的输出。人机对话通道,即人机交互部分:键盘、显示器、打印机、看门狗(监视)电路等单片机应用系统设计的特点:单片机应用系统一般规模比较小。设计开发过程要借助专用的开发器、仿真器或开发系统来进行。设计中要综合考虑硬件、软件的组成,以达到较高性能价格比。可以采用软件固化实现部分硬件功能也可以采用硬件来实现某些软件的功能。单片机应用系统要求可靠性高,特别是工作于无人值守、不间断工作的环境中,必须保证安全可靠要从电路设计、软件程序等加以考虑。看门狗监视电路就是其中一种。单片机应用系统要尽量作到低功耗、小体积。软件程序固化在单片机内的程序存储器中。要在专门的编程器或下载设备中完成。10.2单片机应用系统的设计过程设计过程包括以下几部分:⑴.总体方案的设计⑵.硬件系统设计⑶.软件系统设计⑷.系统仿真调试⑸.运行维护。这5个部分不是孤立的,而是相互关联、相互依靠、互相制约的。10.2.1

总体方案的设计根据市场需求,进行分析,提出本项目的任务。熟悉和了解控制对象,确定合理可行的技术指标确定系统功能具体实现形式,选择出适合该项目,能迅速开发出性能价格比高的应用系统的单片机。合理地划分硬件和软件两部分的功能要求。

确定总体方案,拟定设计任务书。按照软件工程的思想,列出各子系统的任务书,以及软件、硬件及它们之间的接口标准、技术要求。10.2.2

硬件系统设计

根据功能要求,选择系统的CPU、存储器、I/O接口以及传感器、继电器、显示器、键盘等元器件。原理图和PCB板(印制电路板)的设计。使用专门的

EDA(电子设计自动化)工具软件(如Protel)。它们有强大的自动设计能力,高速有效的编辑功能,使得设计过程简便高效。制版和组装设计完成后,交付制版生产厂家。在PCB板和元器件齐套时,焊接组装。硬件调试利用电子仪器及编写测试程序,进行硬件调试。10.2.5

系统运行与维护应用系统在仿真调试环境中成功后,确定硬件软件基本正确,将程序代码固化到单片机的程序存储器中。独立运行该应用系统。在系统独立运行中,随时观察系统,有时需要对其进行改进。如果运行正常,就可以投入正常的工作中。一般来说,在连续工作的过程中,有可能出现调试中没有遇到的问题,需要设计人员进一步改进。经过一定时间的监护,系统运行正常10.3基于89C51单片机的数据采集系统介绍一个实用的数据采集和超限报警系统。该系统以单片机89C51为核心,可以采集最多16路模拟量输入信号,可以作数据采集、运算和控制调节,及进行超限报警处理等。设开关量输出,控制继电器对外设控制或报警处理系统利用RTC芯片提供实时的日期、时间信息。通过串行RS-485接口和上位机通信构成多机系统。采用LED数码管和发光管显示,进行人机对话。增加硬件看门狗(监视器),保证系统可靠运行。系统中选用同步串行接口芯片芯片间采用串行通信,大大简化了硬件电路,减小仪器的体积。该系统功能齐全,是一个实用性很强的应用系统。10.3.1

单片机数据采集系统的总体设计CPU:89C51单片机主频:11.0592MHz数据采集:16通道模拟量输入多路选择器:4067 (16选1模拟开关电路)A/D转换器:MAX187(12位串行接口A/D转换器)开关量输出:8路开关量输出。看门狗:X5045(带E2PROM的看门狗定时器电路)实时时钟:DS1307(带64字节RAM串行RT电路)串行通信接口:MAX485,提供RS-485标准接口并行I/O接口:8255A并行I/O接口电路显示器:6位LED显示器和8个发光二极管。键盘:4个按键,独立连接的非编码键盘电源:DC+5V、DC+12V软件:程序固化单片机中,采用汇编语言编程。10.3.2

单片机数据采集系统主程序的设计系统连续运行,主程序是一个无限循环、顺序执行的程序。主程序的流程是一个闭合的圈。系统任务包括:初始化,数据采集和处理,结果显示和打印,和上位机的通信,人机对话,超限报警检和处理,定时器监视(看门狗)及系统的控制等。主流程中完成系统初始化,数据的处理,LED显示,超限检测和报警处理,人机对话处理(按键扫描和理),串口发送数据等工作。利用定时中断,对数据采集,存入指定工作单元。利用串口中断,接收上位机发来的信息。10.3.3模拟量输入接口的设计模拟量输入是数据采集系统的关键,采集的信号是度、压力、气体或液体的流量、浓度等连续变化的物理量.信号通过传感器或变送器转换成连续变化的电信号。变换后的电信号有时须经过放大,使信号满足A/D转换器的输入要求。本系统可以进行16通道的模拟量输入。多路选择器4067是一个16选1模拟开关电路,通过它由软件分时选通各个模拟通道的输入。使用12位串行接口的A/D转换器MAX187,它采用1.模拟开关电路40674067是用数字信号控制的16选1的模拟开关在数据采集系统中,经过传感器和放大器转换和处理的模拟信号通过4067多路选择,分时将其中一路的信号传送到A/D转换器中。选择通道的控制信号由89C51的P1口输出。2.12位串行接口的A/D转换器MAX187MAX187—12位精度的A/D转换器ADC12位的A/D转换精度;内部采样/保持电路,采样速率75KHz;内部缓存的参考电压4.096V;3线串行接口和处理器通信,工作在单一的+5V电源低功耗,待机2μA,工作1.5mA;小封装,8个引脚的DIP封装。MAX187的引脚封装:VDD(1脚):

+5V电源AIN

(2脚):

模拟量输入,范围为0V—VREF(0V—4.096V)SHDN(3脚):工作模式选择输入端低电平为待机模式,高电平为正常操作VREF(4脚):参考电压。内部为4.096V,外部为+2.5V—VDDGND(5脚):接地DOUT(6脚):串行数据输出CS

(7脚):片选输入端。低电平启动A/D,高电平时DOUT高阻SCLK

(8脚):串行时钟信号输入端MAX187的操作:利用输入采样/保持电路和逐次比较寄存器将输入的模拟信号转换成12位的数字信号输出。输入信号电压范围为0V-VREF,如使用内部参考电源,电压为4.096V,则输入信号范围即为0V-4.096A/D转换12位,最低一位电压值4.096V/4096=100mV.A/D转换的时间,包括采样/保持的时间在内为10μS.A/D转换过程在SCLK为低,CS端输入信号下降沿

时启动。DOUT端变高时,表示A/D转换完成(EOC).转换结果在DOUT端单向串行输出,经过13个SCLK周期.每个SCLK下降沿后移出后一位,数据改变。数据由最高位开始。完成后,CS变高,DOUT高阻。MAX187工作时序图3.模拟量输入和A/D转换的控制89C51的P1.2,P1.3,P1.4,P1.5连到4067的通道选择A,B,C和D上,程序控制分时选通模拟量输入信号。

MAX187和89C51间通过同步串行通信接口数据交换.89C51作主设备,由P2.3输出时钟SCLK信号,P2.4输出CS信号,P2.5输入A/D转换后的数字信号。利用软件程序来实现MAX187和89C51之间的通信。操作的过程如下:选择模拟输入通道。由P1.2-P1.5输出所通道编码启动A/D转换。保持SCLK(P2.3)为低,将CS(P2.4)由高变低。等待转换完成。检查DOUT,为上升沿时表示完成。读出转换后数据。保持CS(P2.4)为低电平,连续由P2.3输出SCLK时钟信号,最少13个时钟周期。在第一个SCLK的下降沿时,DOUT(P2.5)端产生数据的最高位。在每个SCLK的下降沿,DOUT分别输出各位数据,89C51通过P2.5读入到CPU中。;*****************************************;

MAX187的A/D转换子程序

*;*****************************************DATBUFDATA30H;定义数据缓存单元SCLKBITP2.3CSBITP2.4DOUTBITP2.5;定义MAX187引脚ADC:MOVR5,#0MOVR6,#0MOVR7,#12CLRSCLK;SCLK=0CLRCS;CS=0,启动A/D转换SETBDOUT;置DOUT(P2.5)为输入状态LOOP1:MOVC,DOUTJNCLOOP1;查询DOUT,等待转换完成SETBSCLK;SCLK=1NOPCLRACLRSCLK25LOOP2:

NOPNOPSETBSCLK;SCLK=1,读入数据NOPMOVC,DOUT;读入第1位(最高位)MOVA,R6;R6暂存低位数据RLCAMOVR6,AMOVA,R5

;R5暂存高位数据RLCAMOVR6,ACLRSCLKDJNZR7,LOOP2

;检查读完12位否?SETBCS

;CS=1,数据传送结束MOVDATBUF,R6

;存放高4位MOVDATBUF+1,R5

;存放低8位RET10.3.4

看门狗定时器X5045的设计1.看门狗定时器的工作原理自动监视技术,即看门狗技术(WatchDog)的监控思路:在系统中设置一个定时器(看门狗定时器).处理器正常运行时,程序每隔一定时间发出一条(或几条)指令,将看门狗定时器清零,俗称“喂狗信号”,使得看门狗定时器总是不能溢出。如果处理器“死机”或程序跑飞,就不能发出“喂狗信号”,即不能向看门狗定时器发出清除脉冲。定时器产生计数溢出信号,该信号会自动复位微处理器,系统重新启动和继续工作。常用的看门狗定时器电路型号复位门限/V低电平复位高电平复位看门狗周期/s手动复位E2

PROM容量/bit接口封装形式IMP7054.65有1.6有8DIP/SOIMP7064.40有1.6有8DIP/SOIMP706P2.63有1.6有8DIP/SOIMP813L4.65有1.6有8DIP/SOX50434.25-4.50有可选512×8SPI8DIP/SOX5043P2.55-2.70有可选512×8SPI8DIP/SOX50454.25-4.50有可选512×8SPI8DIP/SOX5045P2.55-2.70有可选512×8SPI8DIP/SOCAT1161可选有有可选2K×8I2C8DIP/SO2.看门狗定时器电路X5045X5045是XICOR公司具有上电复位、电压监控、看门狗定时器以及E2PROM数据存储4种功能的芯片。采用SPI串行接口,体积小、占用I/O线少、功能强广泛应用于仪器仪表、工业控制等领域。可编程选时间的看门狗定时器

VCC电源电压降低检测和复位控制

512×8位串行E2PROM低功耗CMOS电路:10μA等待电流,3mA工作电流数据块锁定保护功能片内建的防误写功能小封装:8引脚DIP、SOIC封装X5045引脚:为8个引脚双列直插封装.CS/WDI

(1脚):芯片选择。当CS为低时,芯片工作。又作看门狗定时器的输入,将清零看门狗定时器。SO

(2脚):在处理器读操作时,串行输出数据。WP(3脚):写保护输入端。低电平时,禁止向其写操作.

VSS

(4脚):地。SI

(5脚):串行输入。SCK(6脚):串行时钟,上升沿输入,下降沿输出数据。RESET(7脚):复位输出。电源降时,输出复位信号。

在看门狗时,输出复位信号。VCC

(8脚):电源电压。指令名称指令格式指令的操作WREN0

0

0

00

1

1

0设置写允许锁存器,允许写操作WRDI0

0

0

00

1

0

0复位写允许锁存器,禁止写操作RDSR0

0

0

00

1

0

1读状态寄存器WRSR0

0

0

00

0

0

1写状态寄存器READ0

0

0

0A80

1

1读存储器,从选定的地址单元开始读出数据WRITE0

0

0

0A80

1

0写存储器,从选定的地址单元开始写入数据1—16字节X5045的控制指令:3.X5045与89C51接口及程序设计X5045通过SPI总线进行数据传送。单片机作主设备

X5045作从设备。89C51通过通用I/O线,利用软件实现数据传送的控制。系统中:P1.0接X5045的SI端,

P1.1接X5045的SCK端,

P1.6接X5045的SO端,

P1.7接X5045的CS/WDI端X5045的RESET输出信号接89C51复位输入端RST.⑴.看门狗定时器X5045的CS/WDI看门狗工作时,判断CPU是否正常.设定时间内,CPU在WDI上产生高到低电平变化,清零定时器,不产生溢出。CPU在程序各部分安排“喂狗”程序,两次间隔小于看门狗定时器的溢出时间正常时,不会产生复位输出.如出现故障,“喂狗”

序不能执行,定时器会溢出,产生复位,系统自动恢复间。X50W4D51状态寄W存D0器2位可看编门程狗位溢,决出定周定期时时001.4

s01600

ms10200

ms11看门狗功能无效“喂狗”(清除定时器指令)一般在主程序,子程序,断处理程序的适当位置安排。;*******************************************;

复位看门狗定时器(喂狗)

*;*******************************************SIBITP1.0SCKBITP1.1SOBITP1.6CSBITP1.7

;定义X5045引脚WDOG:NOPCLRCSNOPSETBCSCLRCSRET⑵.读写操作包括对内部寄存器和E2PROM的读/写操作。操作前,先复位CS选中芯片。结束时,要置位CS。操作必须首先由主设备(处理器)将一条控制指令入X5045的指令寄存器中,然后再进行读写操作写操作前,先读取状态寄存器,判断WIP位。WIP为0时,在写使能允许命令后就可对状态寄存器或E2PROM写数据。数据串行传送操作中:读操作,在SCK下降沿,从SO引脚读取1位数据。;********************************************;

向X5045串行写入8位数据

*;

入口参数:

A=数据

*;*******************************************SI8B:MOVR7,#8NOPSI8B1:CLRSCKRLCAMOVSI,CSETBSCK;SCK上升沿数据输入DJNZ

R7,SI8B1RET;*******************************************;从X5045串行读出8位数据*;出口参数:

A=数据*;*******************************************SO8B:SETBSCKMOVR7,#8NOPSO8B1:SETBSO;置SO为输入CLRSCK;SCK下降沿送一位到SONOPMOVC,SORLCASETBSCK;准备送出下一位数据DJNZR7,SO8B1RET;

设置写允许锁存器,允许对X5045写操作WREN-X:

NOPCLRCLRMOVSCKCSA,#WRENLCALL

SI8B;WREN指令码;串行写入8位数据CLR

SCKSETB

CSRET;

复位写允许锁存器,禁止对X5045写操作WRDI-X:

NOPCLRCLRMOVSCKCSA,#WRDILCALL

SI8B;WRDI指令码;串行写入8位数据CLR

SCKSETB

CSRET;*******************************************;

检查WIP标志,直到WIP无效(为0)时退出

*;*******************************************CHKWIP:

MOV;设置最大循环次数CHKWIP0:

CLRCLRMOVR7,#200SCKCSA,#RDSR;RDSR指令码LCALL

SI8BLCALL

SO8BSETB

CSSETB

SCKJNB

ACC.0,CHKWIP1;检查WIPDJNZ

R7,CHKWIP0CHKWIP1:

RET;*******************************************;

向X5045状态寄存器串行写入8位数据

*;*******************************************WRSR-X:

NOPCLR

SCKCLR

CSMOV

A,#WRSR;WRSR指令码LCALL

SI8BMOV

A,#SRINI;状态寄存器初值LCALL

SI8BCLR

SCKSETB

CSLCALL

CHKWIPRET;向X5045内部存储器串行写入一个字节数据BYTE-W:NOP;存储器地址;写入写允许锁存器;取出地址的第9位A8;插入地址的第9位A8;写入写存储器指令;存储器地址低8位;写入存储器地址MOV

DPTR,#BADDRCLR

SCKCLR

CSMOV

A,#WRENCALL

SI8BSETB

CSNOPCLRMOVRRCMOVMOVCALLMOVCALLMOVCALLCSA,DPHAA,#WRITEACC.3,CSI8BA,DPLSI8BA,#BDATASI8B;写入数据CLR

SCKSETB

CSCALL

CHKWIPRET;************************************************;

从X5045内部存储器串行读出一个字节数据

*;

出口参数:A=数据

*;************************************************;设置存储器地址BYTE-R:

NOPMOV

DPTR,#BADDRCLR

SCKCLR

CSMOV

A,DPHRRCA;取出存储器地址的第9位A8MOVA,#READMOVACC.3,C;插入地址的第9位A8CALLSI8B;写入写存储器指令MOVA,DPL;存储器地址低8位CALLSI8B;写入存储器地址CALLSO8B;读出数据CLRSCKSETBCSRET10.3.5

实时时钟RTC—DS1307的设计1.实时时钟电路(RTC)DS1307DS1307是Dallas公司推出实时时钟接口芯片实时时钟功能。对年,月,日,时,分,秒进行计时。内部56个8位非易失RAM存储单元,用于数据存储。具有可编程的方波输出信号。内部具有电源自动检测电路。采用2线双向串行总线传送地址和数据信息。只用SCL(串行时钟)、SDA(串行数据)两条线。简化了和微处理器间的通信。低功耗、小封装。8个引脚的DIP或用于表面安装的

SOIC封装,大大减小体积。DS1307的引脚(双列直插DIP封装):

X1、X2

(1,2脚):外接32.768KHz晶振。VBAT

(3脚):GND

(4脚):外接+3V电池。接地。SDA

(5脚):

串行数据输入/输出。SCL

(6脚):

串行时钟输入。SQW/OUT(7脚):方波/输出驱动。当允许时,该引脚可输出四种频率(1Hz,4KHz,8KHz,32KHz)的方波Vcc

(8脚):接主电源。DS1307内部寄存器:实时时钟寄存器地址00H—07H,通过写入实现时间和日历初始化和设置。通过读得到时间和日历的信息(BCD码)。控制寄存器用来控制SQW/OUT引脚的操作,它的地址为07H。OUT(D7):引脚SQW/OUT输出控制位。SQWE(D4):方波输出允许位。RS1、RS0(D1、D0):频率选择位。 可选择输出四种频率的方波56个RAM寄存器的地址在08H—3FH。D7D6D5D4D3D2D1D0OUT××SQWE××RS1RS02.实时时钟电路DS1307的数据传送DS1307支持I2C总线协议。I2C总线(Intel-IntegraCircuit)是Philips公司推出的同步串行总线。通信只用两根信号线:串行数据线SDA和时钟线SCL.数据传送时,单片机为主设备,提供串行时钟SCL,控总线操作,并产生开始(START)和停止(STOP)条件。

DS1307作为总线上的从设备。3.89C51和DS1307的连接单片机数据采集系统中:89C51用P2口2条线

和DS1307的I2C总线相连。P2.1接DS1307的SCL端P2.2接DS1307的SDA端DS1307的SQW(方波输出)端接89C51的P2.0。在单片机数据采集系统中,使用DS1307芯片为实时时钟,提供日期和时间信息。应用程序如下:;引脚及控制指令码定义SQWBITP2.0SCLBITP2.1SDABITP2.2LASTREADBIT18HACKBIT19HDS1307WEQU0D0H;DS1307写命令DS1307REQU0D1H;DS1307读命令TPOINTERDATA4EH;RAM地址指针TCONTENTDATA4FH;RAM的内容;******************************************;

DS1307的初始化

*;******************************************INIT-1307:

LCALL

SEND-START;发送开始START条件LCALLLCALLMOV

A,#DS1307W;DS1307写命令:11010000BSEND-BYTE;发送写命令MOV

A,#07H;设置控制寄存器地址07HSEND-BYTE;发送控制寄存器地址MOV

A,#00H;控制字,禁止SQWE输出LCALLSEND-BYTE;发送控制字LCALLSEND-STOP;发送停止STOP条件RET;

DS1307的起始条件

STARTSEND-START:

SETB

SDASETB

SCLNOPNOPCLR

SDA

NOPNOPCLR

SCLRET;

DS1307的停止条件

STOPSEND-STOP:

CLR

SDASETB

SCLNOPNOPSETB

SDARET; 发送8位数据给DS1307的子程序A=数据SEND-BYTE:

CLR

SCLMOV

R6,#8SB-LOOP:

JNBACC.7,ZEROSETB

SDASJMP

ONECLR

SDAZERO:ONE:SETB

SCLNOPSB-EX:RL

ACLR

SCLDJNZ

R6,SB-LOOP

NOPSETB

SDA

NOPSETB

SCLCLR

ACKJNB

SDA,SB-EXSETB

ACKNOPCLR

SCLNOPRET;

由DS1307中读出8位数据的子程序A=数据READ-BYTE:

CLR

SCLREAD-BITS:ACKN:C,SDAASCLR6,READ-BITSLASTREAD,ACKNSDASCLMOV

R6,#8MOV

A,#00HSETB

SDASETB

SCLNOPMOVRLCCLRDJNZJBCLRSETBNOP

NOPCLR

SCLRET;读出DS1307内RAM指定单元一个字节的内容;入口参数:(TPOINTER)=DS1307的RAM地址;

出口参数:(TCONTENT)=DS1307的RAM数据READ-ONE:

LCALL

SEND-STARTA,#DS1307WSEND-BYTEA,TPOINTERSEND-BYTESEND-STOPSEND-STARTA,#DS1307RSEND-BYTELASTREADREAD-BYTESEND-STOPTCOTENT,AMOVLCALLMOVLCALLLCALLLCALLMOVLCALLSETBLCALLLCALLMOVRET;******************************************;向DS1307内RAM指定单元写入一个字节的内容;入口参数:(TPOINTER)=DS1307的RAM地址;

(TCONTENT)=写入RAM的数据;*******************************************WRITE-ONE:SEND-STARTA,#DS1307WSEND-BYTEA,TPOINTERSEND-BYTEA,TCONTENTSEND-BYTESEND-STOPLCALLMOVLCALLMOVLCALLMOVLCALLLCALLRET10.3.6

人—机对话通道的设计采用非编码键盘,用P3.2-P3.5作4个按键输入端,独式的按键设计,利用软件进行按键识别和功能散转采用了LED数码管和发光二极管显示器。其中:6个共阴极LED数码管显示数据,动态扫描;

8个发光二极管指示工作状态。系统中扩展了一片通用并行接口8255A。它的A,B,C口均工作于方式0,即简单输入/出方式

A、B口控制动态扫描方式的LED显示器:A口输出LED段码(a-g,dp),B口输出LED位选信号。用PB0-PB6分时选中6个LED和一组发光管。由电路中可以看出8255A的地址如表:CS

(P2.7)A1A08255A寄存器地

址000A口7FFCH001B口7FFDH010C口7FFEH011控制寄存器7FFFH要显示的数据保存在内部RAM的46H(发光管)、45H、44H、43H、42H、41H、40H单元中(从左到右)。按键处理程序包括按键扫描和程序散转两部分。KEY:

MOV

P3,#0FFHMOV

A,P3;P3口为输入;读取按键状态;高电平表示键按下CPL

AANL

A,#00111100BJZ

KEYLCALL

DELAYMOV

A,P3;A=0时重新扫描键盘;有键按下延时去抖动;再次读取按键状态;高电平表示键按下;A=0时重新扫描键盘;键值送B暂存CPL

AANL

A,#00111100B

;再判有键按下JZ

KEYMOV

B,AMOV

A,P3CPL

AANLA,#00111100B;判别按键释放KEY1:

JNZKEY1LCALL

DELAYMOV

A,BJB

ACC.5,FUN1JBJBACC.4,

FUN2ACC.3,

FUN3JB

ACC.2,

FUN4;按键未释放,等待;释放,延时去抖动;取键值送A;K1按下转FUN1;K2按下转FUN2;K3按下转FUN3;K4按下转FUN4EKEY:RET;功能切换键(FUN1)处理程序;功能切换键(FUN2)处理程序;功能切换键(FUN3)处理程序;功能切换键(FUN4)处理程序FUN1:

………RETFUN2:………RETFUN3:………RETFUN4:………RETDELAY:MOV

R7,#10H;10

ms延时子程序MOV

R6,#0FFHDS1:DS2:DJNZ

R6,DS2DJNZ

R7,DS1RETLED动态扫描显示程序:ORG

0000HLJMP

MAINORG1000HDISP

MOVDPTR,#7FFFH;8255A控制端口MOVA,#80H;8255A的控制字MOVX@DPTR,A;8255A初始化LED:MOV

R2,#07H;R2为LED位数MOV

R5,#01H;R5为位选寄存器,位选码从左到右依次为:;

40H、20H、10H、08H、04H、02H、01HMOV

R1,#40H;R1为缓存区地址,数据从左到右存在内部;

RAM的46H,45H,44H,43H,42H,41H,40H。DISP:

MOV

A,@R1

;取要显示的数据MOV

DPTR,#TABMOVC

A,@A+DPTR

;转换成LED段码MOV

DPTR,#7FFCHMOVX

@DPTR,A;8255A的A口地址;LED段码(字形码)MOV

A,R5MOV

DPTR,#7FFDH;8255AB口地址;送LED位选码;延时1ms;指向下一个数据MOVX

@DPTR,ALCALL

DELAYINC

R1MOV

A,R5RL

AMOV

R5,A;指向下一位DJNZR2,DISP;6位显示完否?LJMPLED;重复显示过程DELAY:MOV

R7,#02H

;延时1

ms子程序TAB:DL:

MOV

R6,#0FFHDL1:

DJNZ

R6,DL1DJNZ

R7,DLRETDB

3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND10.3.7

异步串行通信RS-485

接口的设计将IBM-PC机(或工控机)和多台单片机控制单元构成集散控制或数据采集系统是应用的一大趋势。系统中,单片机为核心的智能测控仪表是现场控制单元,完成数据采集和控制任务。同时,它们作为下机又将采集的数据传送到PC机中。PC机(或工控机)为上位机,用高级语言或数据库语言将数据加工处理,建立数据库,进行显示、打印。同时再将控制命令发送给各下位机,以实现集中管理和远程对单片机系统进行最优控制。通信系统采用主从式串行总线结构。下位机挂在上位机串行通信标准总线上,之间进行主从方式通信1.单片机与PC机通信的RS-485标准串行接口单片机和PC机间通信采用异步串行通信来进行。

PC机配置有COM通信接口。单片机有串行接口。PC机与89C51单片机串行通信采用零调制三线型,只使用TXD(发送数据)、RXD(接收数据)和GND(接地)三条信号线。R8RS9SC-C-545418185单5单标片准机采和用PC“C“机平间衡通电信压采数用字了接R口S口S-电48路5标的准电。气特性”标准的平衡传输方式,是半双工的通信方式。

RS-485标准最大传输距离约1200m,最大传输速率为

10Mb/s。用于多站点互连节省信号线,便于高速、远距离的数据传送。RE(2脚):接收器输出使能。

DE(3脚):驱动器输出使能。

DI(4脚):驱动器输入。

GND(5脚):地。A

(6脚):

同相输入端和输出端。B

(7脚):

反相输入端和输出端。VCC

(8脚):正电源用于RS-485通信的半双工收发器MAX485MAX485是MAXIM公司RS-485通信的低功耗收发器.引脚:RO(1脚):接收器输出。2.单片机数据采集系统的串行接口电路在89C51单片机数据采集系统中,利用异步串行接口经MAX485转换,提供符合RS-485标准的串行通信接

口,实现和PC机间的通信。电路中利用P2.6作为控制串口工作的信号,3.

89C51通信软件设计在异步串行通信中,收、发双方必须事先规定两件事:一是通信双方必须采用统一的编码方法。异步串行通信是按字符传送,传送一个字符时包括起始位数据位、校验位和停止位几部分。在通信时,必须规定字符各部分所占的位数,是否采用奇偶校验以及校验的方式(偶校验还是奇校验)等。二是通信双方相同的传送速率,即相同的波特率。串行通信是按位传送,波特率即每秒传送的二进制位数,双方必须按照相同的波特率来发送和接收数据波特率反映串行通信速率,也反映对传输通道的要⑴.单片机串口波特率的设置:本系统中,设置串口的波特率为9600b/s.89C51通常用定时器T1模式2(自动重装初值定时器方式)作串行通信波特率发生器。T1计数计数速率为fosc/12,溢出后作为移位脉冲其速率即是波特率。计算公式如下:晶振频率fosc=11.095MHz,选SMOD=0,则定时器的初装值为:计算出定时器T1的计数初值为253(0FDH)。有关定时器初始化的程序为:INIT1:MOVTMOD

,#20H;置T1为模式2MOVTL1

,#0FDH;装入初值MOVTH1

,#0FDHMOVPCON

,#00H;设SMOD=0SETBTR1;启动T1运行⑵.串口通信协议在通信协议中,必须包括以下几个方面的约定:①数据文件的格式数据文件中,必须包括被寻呼单片机站号(地址)、命令、字段、数据首地址长度、数据块及各种校验值等必须加以规定,统一格式。②差错检测可采用奇偶校验法,数据帧可采用数据位累加法,也可采用累加和校验法、CRC循环冗余校验等方法。③差错处理每发送一数据块后,如果接收正确,接收方要发回响应信息;否则,回送出错信息,要求重发送,直至正确为否则转出错处理程序,显示系统出错。⑶.串口通信程序波特率:9600b/s。用T1工作方式2作波特率发生器信息格式:串口方式3,数据的传送格式为11位,1位起始位+8位数据位+1位停止位+数据/地址控制位的第9位,无奇偶检验。传送方式:PC机采用查询方式收发数据;89C51采用中断方式接收,查询方式发送握手信号:采用软件握手方法。发送方发送联络

信号“?”,接收方回送“·”号作为应答,建立握联络。随后再依次发送数据。数据块格式:长度(字节数)+发送的数据+校验和。校验方式:累加和校验。回送“00H”,表示正确89C51串口通信的流程图①.单片机的主程序串口初始化,定时器初始化,设定串口的波特率。若串口采用中断方式,还需对中断处理进行设置。以下是有关串口初始化的程序段:RFLAGBIT00H;接收联络信号标志位RNUMBIT01H;接收字节数标志位RDATABIT02H;接收数据标志位RENDBIT03H;接收文件结束标志位ORG0000HAJMP

MAINORG0023HAJMP

RECEORG0040HMAIN:

MOVSP

,

#60HMOVSCON

,

#50H;串口初始化,方式1MOVTMOD,

#20H;定时器初始化方式2MOVTH1

,

#0FDHMOVTL1

,

#0FDH;设置波特率9600波特MOVPCON

,

#00H;设置波特率倍增位SETBTR1;启动定时器1SETBEA;开放中断SETBES;开放串行中断L1:CLRRFLAGCLRRNUMCLRRDATACLRRENDMOVR6

,

#00HMOVDPTR

,

#1000HL2:

……

(以下为主程序的其它部分,本处略)②.89C51单片机串口查询发送子程序将片外RAM从1000H开始的小于256B的数据从串行口发送出去。发送数据字节数在R7中,用R6作累加和寄存器。程序流程图如图所示。单片机串口查询发送子程序如下:SEND:;发‘?’号,即3FHA,#2EH,SEND

;应答信号是‘.’

A,R7;暂存总字节数MOV

A,

#3FHMOV

SBUF,AJNB

TI

,

$CLR

TIJNB

RI

,

$CLR

RIMOV

A

,

SBUFCJNEMOVMOV

MOVJNBCLRR3,

ASBUF

,

ATI

,

$TIMOV

R6

,

#00HMOV

DPTR

,

#1000HSEND1:MOVX

A

,

@DPTR;发送一个字符;计算累加校验和MOV SBUF,

AJNB

TI

,

$CLR

TIADD

A,R6MOV

R6,

AINC

DPTR;计数器R7不为零转移DJNZ

R7

,

SEND1MOV

A,R6;发送校验和MOV

SBUF

,

AJNB

TI

,

$CLR

TIJNB

RI

,

$CLR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论