4.3 SA828初始化及控制子程序
按照单片机与SA828的接线图,P2.0作为SA828的片选控制口,因此SA828的起始地址为FE00H。系统上电复位之后首先对SA828写初始化字和控制字。具体计算如前面所述。流程图如下:
图4- 2 SA828程序流程图
程序清单如下:
CLR P2.1 ;禁止PWM输出
MOV A,#80H ;SA828初始化寄存器
MOV DPTR,#0FE00H ;SA828地址
MOVX @DPTR,A ;给R0写数据
INC DPTR
MOV A,#60H
无耻悲鄙下流的网"学.网总是抄辣,文^论,文.网http://www.751com.cn INC DPTR
INC DPTR
MOVX @DPTR,A ;给初始化寄存器R4写数据
MOV A,#1BH ;SA828控制寄存器
MOV DPTR,#0FE00H ;SA828地址
MOVX @DPTR,A ;给R0写数据
INC DPTR
MOV A,#2DH
MOVX @DPTR,A ;给R1写数据
INC DPTR
MOV A,#05CH
MOVX @DPTR,A ;给R2写数据
INC DPTR
MOVX @DPTR,A ;给控制寄存器R3写数据
SETB P2.1 ;允许PWM输
单片机对采样到的输出如做PI调节计算转换为电压幅值控制字后,需要重新写入控制字,其方法是相同的。
4.4 ADC0809的控制及数据处理子程序
单片机与ADC0809的接线图所示,P2.7作为ADC0809的片选控制口,因此ADC0809的起始地址为7F00H。如图所示,ADC0809的地址选择线接地,固定8路模拟数据输入端重IN-0为电压采样输入端。ADC0809的CLK信号是从AT89C52的ALE端经四分频器74LS74分频后得到的,工作频率为500HZ,转换时间为128us左右,据此设计一个延时时间,延时时间一到,采用查询方式进行数据传送。即用软件测试EOC(P3.1)的状态,若测试结果为1,则转换结束接着进行数据传送,否则等待,直到测试结果为1。因为ADC0809的最大输入电压为5V,其转换结果FFH对应5V。所以FFH对应的输入应大于等于5V,表示输入超过量程。本设计中FFH对应36V,其转换公式为 ,X= ,因此程序中有二进制转换及乘14子程序,除以100处理为小数点固定显示在次低位。另外,考虑到系统存在电磁干扰,采用了中值滤波子程序进行软件抗干扰。中值滤波对于去掉由于偶然因素引起的波动或采样器不稳定而造成的误差所引起的脉动干扰比较有效。中值滤波之后将最优值存于6AH中再进行转换处理。流程图如图
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页