AT89C51芯片数控直流电源 第4页

AT89C51芯片数控直流电源 第4页
4.2 程序运行原理
在本电路中由于CPU的工作任务是单一的,因此,源程序的工作过程为:系统上电复位后,默认输出9伏电压,然后扫描K1,K2键,当K1或K2键有按下时,程序跳转至相应的按键处理子程序,经按键子程序处理后,再嵌套调用显示子程序,完成显示与输出操作后返回主程序,继续扫描此两键。
程序设计需要考虑的主要问题有两个方面。一方面要找出数字量Dn与输出电压的关系,这是程序设计的依据;另一方面要建立显示值与输出电压值的对应关系,这是程序设计是否成功的标志。因为在本系统中,显示的输出电压值不是之间从输出电路中通过检测得到的,因此显示与输出并不存在直接联系。但为了使显示值与实际输出值相一致,在程序编写时,必须人为地为两者建立某种关系。采用的方法是:在程序存储器中建立TAB1和TAB2两张表格,TAB1放101个Dn值,数值从小到大顺序排列,其值分别对应输出电压0-10V,TAB2存放数码显示器0-9字符所对应的数据。TAB1表格的数据指针存放在内存RAM中23H单元,内存20H,21H和22H三个单元分别存放数码显示器小数点一位,个位和十位的字符数据指针。在主程序中初始化后之后首先给23H赋予40的偏移量,这个偏移量指向TAB表中的Dn为145,此值对应的输出电压为9V,由于这个原因,必然要求显示器显示的字符为“09.0”,为此,须分别给20H,21H和22H赋予0,9和0的偏移量,这三个偏移量分别指向TAB2中0,9和输出两者之间就建立了初步的对应关系。为了使两者保持这种对应的关系,在K1和K2按键处理子程序中,必须使23H,20H,21H和22H四个数据指针保持“同步”地变化,即为当K有键时,23H单元增加1指向下一Dn时,20H单元也相应增加1指向下一字符,并且20H单元(小数点一位指针)、21H单元(个位指针)和22H元(十位指针)应遵循十进制加法的原则,有进位时相应各位应作出相应地变化;当K2有键时,23H单元减1指向前一Dn时,20H单元也相应减1指向前一字符,并且20H,21H,22H三个单元的数据指针应遵循十进制减法原则,有借位时相应的各位须作出相应地变化。按照这一算法只要控制TAB1表格数据指针不超出表格的长度就能使显示值与输出值保持一一对应的关系,即显示器能准确地显示出电源输出电压值的大小,达到电路设计的目的。由于理论计算与实际情况还存在着一定的差异,为了使显示值更加接近实际输出值,本电路在装配需要对输出电压进行校正。方法是:在电压输出电路带一轻负载的情况,将输出电压调至8.3V(显示器显示值)选用精确度较高的数字万用表对实际输出电压值进行校正,通过调整W1使实际输出电压达到8.3V;然后再将输出电压调至5V和9V(均为显示器显示值),同样用数字表进行校正,通过调整W2使输出电压值分别达到5V和9V。如此反复校正几次,就能使显示器的显示值和实际输的一致出值达到较好的一致性。0符所对应的数值。这样显示与实际输出电压达到较好性。
第三章 AT89C51单片机运行程序
下面附上AT89C51芯片控制键盘的C语言程序:
#include "REG52.h"
#include "viic_c51.h"
#define zlg7290 0x70 #define SubKey 0x01
#define SubCmdBuf 0x07
#define SubDpRam 0x10
void delayMS(unsigned char i)
{
unsigned char j,k;
for(k=0;k
for(j=0;j<60;j++);
}
unsigned char ZLG_SendData(unsigned char SubAdd,unsigned char Data)
{
if(SubAdd>0x17)
return 0;
ISendStr(zlg,SubAdd,&Data,1);
delayMS(10);
return 1;
}
unsigned char ZLGSendCmd(unsigned char Data1,unsigned char Data2)
{
unsigned char Data[2];
Data[0]=Data1;
Data[1]=Data2;
ISendStr(zlg,0x07,Data,2);
delayMS(10);
return 1;
}

上一页  [1] [2] [3] [4] [5] [6] [7] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有