HD7279芯片有两种写入指令,即纯指令、带数据的指令。纯指令占一个字节,数据也是占一个字节,带数据指令可以分开两次写入,先写指令,再写数据,这样只要写好一个字节的发送时序,多个字节的发送只要调用单字节发送字函数就可以了。如图4.3所示:
图4.3 HD7279带指令时序图
读键盘时序如图4.4所示:
图4.4 读键盘指令时序图
(2)键盘显示子程序流程
由于HD7279芯片内部有自动扫描功能,因此不需要单片机提供扫描,只是在要改写显示的时候才重写入一次;HD7279内部自带键盘去抖程序,也不需要软件去抖,当有稳定的按键按下后,在KEY管脚处出现低电平,硬件上将KEY管脚接在了外部中断上,因此利用中断方式处理键盘就可以了。流程图如图4.5所示:
图4.5 键盘显示流程
4.3.2 时钟程序
时钟芯片选用的是DS1302,该芯片配合外部专用晶振就可以运行,该芯片有两个电源管脚,工作电源和备用电源,该芯片为低功耗芯片,根据客户的需要,只使用纽扣电池供电,只要可以提供三个月的使用即可。纽扣电池的一般容量为140~150mAH,而DS1302在电压为2.0V时,电流仅为300nA,所以足够满足用户的需要。电动机保护器断电时可以进行掉电保护。由于内部寄存器具有掉电保护功能,因此编写程序时,利用7个字节来保存设定的到期时间的数据,再利用另外的RAM保存温度的门限值和密码。这样当保护器掉电时DS1302芯片由纽扣电池供电,保存数据,当电机和电机保护器断电时,设定的数据不会丢失,保证了本系统的安全性。本设计中时间寄存器和内部寄存器的修改用串行通讯,利用VB界面来实现。
(1)时钟芯片的时序分析
DS1302芯片接口方式为同步串行,读写时应该把片选管脚拉高,在时钟CLK管脚的下降延读出或写入数据。该芯片的数据传输方式有时钟单字节数据传输方式、时钟多字节数据传输方式、寄存器单字节传输方式、寄存器多字节传输方式。而这些传输方式都可以分解为单字节传送方式,因此只要底层的单字节输入输出子函数按照图4.5的时序图写好后,其它的函数调用此函数就可以实现。
图4.6 DS1302数据传输时序图
(2)时钟芯片控制指令
读出或写入DS1302芯片数据时,首先要向数据口发送1个字节的命令字,该命令字的格式如表4.1所示,最高位为引导位,应该写入1,第6位为选择时钟寄存器还是内部寄存器的选择位,1是内部寄存器,0是时钟寄存器,A5-A0是寄存器的地址位,第0位控制操作为读或写。
表4.1 DS1302命令字格式
7 6 5 4 3 2 1 0
1 RAM A4 A3 A2 A1 A0 RD
(3)时钟芯片子程序流程
时钟寄存器为多字节寄存器,各个寄存器地址按照顺序排列,因此应该采用循环的方式编写。每写入或读出一位寄存器时,首先写入地址,然后写入或读出该地址的数据,每接收或发送一个字节调用一次接收或发送子程序。这样多个连续地址的寄存器便可以被连续的操作。该流程图如图4.7所示:
图4.7 时钟多字节操作流程
4.3.2 测温程序
4.3.2.1 DS18B20的操作顺序
为了保证数据可靠地传输,任一时刻1-Wire总线上只能有一个控制信号或数据。进行数据通信时应符合1-Wire总线协议,访问DS18B20的操作顺序遵循以下三步:
第一步:初始化
第二步:ROM命令
第三步:DS18B20功能命令
(1)初始化
基于1-Wire总线上的所有传输过程都是以初始化开始的,主机发出复位脉冲,从机响应应答脉冲。应答脉冲使主机知道,总线上有从机设备,且准备就绪。
(2)ROM 命令
在主机检测到应答脉冲后,就可以发出ROM命令。这些命令与各个从机设备的唯一64位ROM代码相关,允许主机在1-Wire总线上连接多个从机设备时,指定操作某个从机设备。这些命令还允许主机能够检测到总线上有多少个从机设备以及其设备类型,或者有没有设备处于报警状态。共有5种ROM命令,它们分别是:读ROM、搜索ROM、匹配ROM、跳过ROM、报警搜索。对于只有一个温度传感器的单点系统, 跳过ROM(SKIP ROM)命令特别有用,AT89S52不必发送64比特序列号,从而节约了大量时间。对于1-Wire总线的多点系统,通常先把每一个温度传感器DS18B20的64比特序列号测出,要访问某一个从属节点时,发送匹配ROM命令(MATCH ROM),然后发送64 比特序列号,这时可以对指定的从属节点进行操作。
(3)DS18B20功能命令
在主机发出ROM 命令,以访问某个指定的DS18B20后,接着就可以发出DS18B20 支持的某个功能命令。这些命令允许主机写入或读出DS18B20暂存器、启动温度转换以及判断从机的供电方式。DS18B20的功能命令有:温度转换、写暂存器(WRITE SCRACHPAD)、读暂存器(READ SCRACHPAD) 、拷贝暂存器(COPY SCRACHPAD)、恢复EEPROM(RECALLE2)、读取电源供电方式(READ POWER SUPPLY)。AT89S52发出温度转换命令后,DS18B20采集温度并进行A/D转换,结果保存在暂存器的字节0和字节1 。写暂存器(WRITE SCRACHPAD)命令,AT89S52把三个字节的数据按照从LSB到MSB的顺序写入到暂存器的TH 、TL和配置寄存器中。拷贝暂存器(COPYSCRACHPAD)命令将暂存器中TH、TL和配置寄存器的值保存到E2PROM中。读暂存器(READ SCRACHPAD)命令将读取暂存器中9个字节的数值,其中最后一个字节是循环冗余 图4.8 初始化时序图
校验CRC,用于检验读取数据的有效性。
4.3.2.2 1-Wire总线信号时序
所有的1-Wire总线器件要求采用严格的信号时序,以保证数据的完整性。DS18B20 共有6 种信号类型:复位脉冲、应答脉冲、写0、写1、读0和读1。所有这些信号,除了应答脉冲以外,都由主机发出同步信号。并且发送所有的命令和数据都是字节的低位在前。
(1)复位脉冲和应答脉冲
1-Wire总线上的所有通信都是以初始化序列开始。AT89S52输出低电平,保持低电平时间至少480s ,以产生复位脉冲。接着,AT89S52释放总线,4.7K上拉电阻将1-Wire总线拉高,延时15~60s ,并进入接收模式(Rx)。接着DS18B20拉低总线60~240s ,以产生低电平应答脉冲,若为低电平,再延时480s。
(2)写时隙
写时隙包括写0时隙和写1时隙。所有写时隙至少需要60s,且在两次独立的写时隙之间至少需要1s的恢复时间,两种写时隙均起始于AT89S52拉低总线。写1时隙:AT89S52输出低电平,延时2s,然后释放总线,延时60s。写0 时隙:AT89S52 输出低电平,延时60s,然后 图4.9 写时序
释放总线,延时2s。
(5)读时隙
1-Wire总线器件仅在主机发出读时隙时,才向主机传输数据。所以,在主机发出读数据命令后,必须马上产生读时隙,以便从机能够传输数据。所有读时隙至少需要60s,且在两次独立的读时隙之间至少需要1s的恢复时间。每个读时隙都由主机发起,至少拉低总线1s。主机在读 图4.10读时序
时隙期间必须释放总线,并且在时隙起始后的15s
之内采样总线状态。典型的读时隙过程为:AT89S52输出低电平延时2s ,然后AT89S52转入输入模式延时12s ,然后读取1-Wire总线当前的电平,然后延时50s。
智能保护器的测温流程如图4.11所示:
图4.11 测温流程图
4.3.3 串行通讯程序
MCS51单片机的串口是一个全双工接收缓冲式的串行通讯接口,可以同时发送和接收数据,它可以作UART(通用异步接收和发送器)用,也可以作同步移位寄存器用。串行口缓冲器SBUF是可直接寻址的特殊功能寄存器。在物理上,数据接收寄存器和数据发送寄存器的地址都是99H,这两个寄存器都用符号SBUF来表示。实现串行通讯首先要初始化串口波特率,设置串口的工作方式。
(1)工作时序分析
单片机的串口有四种工作方式,在本系统中利用发送和接收8位2进制数据,选择串行口的工作方式1,即8位异步通讯接口方式,一帧信息由10位组成。方式1的波特率可变,由定时器/计数器T1的溢出波特率以及SMOD决定,且发送波特率可以不同。该工作模式为异步传输,异步传输的特点是数据在线路上的传输不连续。传送时,数据是以一个字节为单位进行传送的。它用一个起始位表示字符的开始,用停止位表示字符的结束。根据异步串口的特性,本系统采用中断的方式编写串行通讯子程序。其工作的时序图如图4.12所示:
图4.12 串行通讯时序图
(2)串行通讯控制命令
异步串行口的工作方式由SCON寄存器控制,配置SM0、SM1为10,则串口工作于方式1。本系统的通讯部分在主程序中是以中断的方式编写的,因此使能IE中断控制寄存器中的ES位。异步串口需要有一个时钟作为串行通讯的时钟,即波特率。在本设计中以定时器1作为波特率发生器,配置TMOD控制寄存器,设置定时器1工作于方式2,即自动重装方式,而且定时器溢出不产生中断,这样再配合波特率倍增PCON寄存器,就可以连续的为串口提供稳定的波特率。
表4.2 串口程序相关的控制寄存器
SCON SM0 SM1 SM2 REN TB8 RB8 TI RI
PCON SMOD -- -- -- GF1 GF0 PD IDL
TMOD GATE C/T M1 M0 GATE C/T M1 M0
TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IE1
IE EA -- ET2 ES ET EX1 ET0 EX0
(3)串行通讯流程图
在本系统中,主要利用和上位机的串行通讯来实现对门限温度、时钟参数的设置,上位机发的数据格式为8位的2进制数,因此在编程时,每次传输都以一个字节为最小单位。接收到的第一个字节作为命令字,这时根据此命令字所定义的功能来判断以下工作。如果命令是修改时间寄存器,则连续接收7个字节的数据,调用修改时间寄存器函数;如果命令是修改定时的内部寄存器,也连续接收7个字节的数据,调用修改DS1302内部寄存器的功能函数;如果是修改门限温度,则接收一个字节的数据,修改门限对应的寄存器。在传输过程中上位机的数据格式要与下位机配合使用,这样才能实现通讯。
串行接收流程 传送发送流程
首页 上一页 3 4 5 6 7 8 下一页 尾页 6/8/8
电机过热保护器设计(六)由毕业论文网(www.huoyuandh.com)会员上传。