首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
基于Proteus软件调试实现的数字式指针设计
来源:本站整理  作者:佚名  2011-10-25 12:35:57



  本文主要叙述利用Proteus软件实现的数字式指针温度计的一种调试方法,采用MCS51单片机作为指针温度计的数字信号处理器,其中,温度采集传感器选用Dailas公司的DSl820单总线式数字温度传感器,该温度计的温度值通过四个数码管显示,同时还可以通过刻盘指针指示。

  硬件设计

  硬件设计包括温度采集模块、单片系统及温度显示模块等模块,其中,刻度盘上指针的控制是设计中的一个重点。在设计数字电路的角位移控制时,一般选用步进电机或伺服电机,选用步进电机时,其步进角固定,同时,对于角位移的控制,会产生控制角度的动作位置不够精确的问题;选用伺服电机也就是舵机时,其控制原理是通过MCS51单片机产生脉宽调制(PWM)信号的占空比来改变舵机摇臂旋转的位置,以达到控制伺服电机的目的,最后在刻度盘上指示温度值。

  系统硬件电路原理图如下图所示。

  1. 舵机的工作原理系统中指针的驱动由舵机实现,为使指针在刻度盘上的初始指示精确,文中采用 4个独立按键实现指针刻盘上的粗、微调节。

  舵机是一个简单的闭环系统,其内部硬件电路、微型电机及减速器封装在一个部件内,实物图如下图所示,输出轴可在-90度~90度范围内旋转到任意角度。

  舵机包含控制信号线、电源线和地线3根引线,其反馈元件为一个与输出轴同轴的精密电位器,通过电位器的反馈信号得到舵机输出轴转动的位置,然后将相应的电压值反馈回控制芯片,最后将反馈的输出轴位置与控制引线设定的位置进行比较,得到输出轴位置的偏差,从而驱动微型电机转动,使输出轴转到预定控制的角度。

  舵机的控制信号为一列PWM波,周期为18~20ms,舵机输出轴转动的角度位置与PWM信号占空比呈线性关系,当控制信号的高电平宽度为0.5ms时,舵机输出轴位置为-90度;当信号高电平宽度为2.5ms时,输出轴位置为+90度。

  软件设计单片机软件的设计包括DS1820的读写、模拟PWM输出、单片机温度取值、按键扫描、数码管显示等稗序设计。

  1.DSl820的读写DSl820采用单总线协议,能够实现数据的双向传输,在进行DS1820读写操作前应先对DS1820进行复位,同时,必须严格遵守DS1820的读写时序,尽量精简中断程序,以减少对DS1820的读写时序的影响,提高温度采集的准确性。

  DS1820读、写子程序如下:

 /*******************读操作**********************/
    uchar readbyte(void)
    {
    ucha r i=0:
    uchar dat=0;
    for(i=8;i>0;i--)
    {
    DQ=0:
    dat>>=1:
    DQ=1:
    if(DQ)
    datㄧ=0x80;
    delay(4);
    }
    return(dat);
    }
    /********写操作********/
    void writebyte(unsigned char dat)
    /*写1字节*/
    {
    uchar i=O:
for(i=8;i>0;j--)
    {
    DQ=0:
    DQ=dat&0x01:
    delay(5);
    DQ=1:
    dat>>=1;
    }
    delay(4);
    }
  2.PWM的输出
  利用MCS51单片机的定时器中断产生PWM信号,T0每产生  次中断,PWM输出逻辑电平翻转一次,PWM控制信号的输出周期为20ms。
  定时器中断服务稃序如下:
 void timer0(void)interrupt 1 using 1
    {
    p12=!01 2
    int_d=1 8432-int_d:
    THO=-  (int_d/256);TL0=-
(int_d%256);
    if(int_d>=550&&int_d<=2050)
int_d=int_m;
    else int_d=1 8432_int_m;
    /*判断脉宽是否在正常范围之内*/
    }
  其中,int_m为中断计数的中间变量。
  3.按键扫描程序
  文中采用4个独立按键完成指针刻度盘上的粗、微调节,按键扫描程序如下:
/******独立按键扫描程序****/
  void keysCAN(void)
  {
  /****************指针微调*******************/
    if(p14==O)
    {
    delay(300);
    if(p1 4==0)
    {
    if  (550<=int_m&&int_m<=2047)
int_m+=3;
    while(p14==O)vLEDKey_Scan();
 /*待按键松开,数码管动态扫描*/
    }
    }
    /************指针微调*******/
    if(p1 5==0)
    {
  delay(300);
  if(p1 5==O)
    {
    if
(553<=int_m&&int_m<=2050)
int_m-=3:
    while(p1 5==0) vLedKey_Scan
():
    }
    }
    /**************指针粗调************/
    if(p1 6==0)
    {
    delay(300);
    if(p1 6==0)
    {
    if
(550<=int_m&&int_m<=2030)
int_m+=20;
    while(p1 6==0)vLedKey_Scan();
    }
    }
    /***********指针粗调***************/
    if(p1 7==0)
    {
  delay(300);
  if(p1 7==O)
    {
    if
(570<=int_m&&int_m<=2050)
im_m-=20;
    while(p1 7==O)vLedKey_Scan
();
    }
    }
    }

  Proteus软件调试

  Proteus软件可以对常用的单片机进行实时仿真,具有全速、单步、设置断点等调试功能,可以观察各个变量、寄存器等当前状态,同时支持第三方软件编译和调试环境。

  在Proteus软件中系统的调试界面如下图所示,

其中,逻辑分析仪用于测量单片机产生的PWM信号,其中通道A3为测量PWM信号的基准,通道A5为单片机产生的PWM信号;示波器用于观察产生的PWM信号。

  在Proteus6.9软件中调试的某一调试状态的界面图如下图所示,

系统27℃、43.1℃时指针刻盘的显示效果图分别如下图所示。

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:56,726.56000 毫秒