找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2353|回复: 3
收起左侧

求帮助 单片机tlc5615+tlc549 线性电源源程序 Proteus仿真原理图

[复制链接]
ID:833013 发表于 2020-11-23 19:20 | 显示全部楼层 |阅读模式
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png 51hei.png V2L}JA`{5`V73(U0]HA[A`F.png
   采用tlc5615进行数模转换将按键的值送给数码管显示
  tlc549进行模数转换将输出的实际电压送给数码管显示

单片机源程序如下:
  1. #include "Tlc549.h"
  2. #include "kpad.h"
  3. #include "LCD1602Display.h"
  4. #include "TLC5615.h"
  5. #define smgport P0
  6. #define smgbit  P2

  7. #include<reg51.h>
  8. #include <intrins.h>
  9. #define uchar unsigned char
  10. #define uint  unsigned int
  11. uchar code smgdm[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};                                                  
  12. uchar code tab[]={"0123456789:"};
  13. uchar code tab1[]={"  Set_U=    mV  "};
  14. uchar code tab2[]={"  Rea_U=    mV  "};
  15. bit flag_10ms,flag_1ms;
  16. bit flag_Keyover,flag_swap;
  17. uchar T0cnt,dispcnt;

  18. void displcd(uint dd,uchar line);
  19. /****************************************************************************/
  20. void timer0(void) interrupt 1 using 1
  21. {
  22.    TH0=-1000/256;
  23.    TL0=-1000%256;
  24.    T0cnt++;
  25.    flag_1ms=1;
  26.    if(T0cnt==10)
  27.     {
  28.      flag_10ms=1;
  29.          T0cnt=0;
  30.     }
  31. }

  32. uint Setv=0;
  33. uint Trdata=5;
  34. /****************************************************************************/     

  35. void Key_Process_smg(uchar Kd,bit flag)
  36.   {float tp;
  37.    if(flag)
  38.           {if((Kd!=10)&&(Kd!=12)&&(Kd!=0xff)) Setv=10*Setv+Kd;
  39.            if(Kd==10) Setv=0;                  
  40.            
  41.            if(Kd==12)
  42.              {tp=19.456*Setv/1024.0;
  43.               Trdata=(uint)tp;
  44.                   flag_swap=0;
  45.                  }
  46.           }        
  47.   }

  48. /****************************************************************************/


  49. /****************************************************************************/

  50. void dispsmg(uint dd,bit flag_dp)
  51.         {
  52.          unsigned char dispdd[4];
  53.          dispdd[3]=smgdm[dd/1000];
  54.          dispdd[2]=smgdm[dd/100%10];
  55.          dispdd[1]=smgdm[dd/10%10];
  56.          dispdd[0]=smgdm[dd%10];
  57.          
  58.          if(flag_dp)
  59.            {smgport=0;
  60.             smgport=~dispdd[dispcnt];
  61.                 smgbit=0xe3&smgbit;
  62.             smgbit=smgbit^(dispcnt<<2);
  63.            }
  64.          dispcnt++;if(dispcnt==4)dispcnt=0;
  65.         }

  66.   uchar add[10],j;
  67. /****************************************************************************/

  68. void main(void)
  69. {
  70.   TMOD=0x01;
  71.   TH0=-1000/256;
  72.   TL0=-1000%256;
  73.   EA=ET0=TR0=1;


  74.   while(1)
  75.          { uchar Kval,k;
  76.            uint Rv,tmp;
  77.            float dfp;

  78.            Kval=Kscan(flag_10ms);         
  79.            flag_10ms=0;
  80.            Key_Process_smg(Kval,flag_Keyover);            
  81.            flag_Keyover=0;
  82.            dac_5615(Trdata);

  83.            if(flag_swap)  tmp=Setv;
  84.            else                   tmp=Rv;
  85.            dispsmg(tmp,flag_1ms);
  86.            flag_1ms=0;

  87.            tmp=0;
  88.             add[j]=TLC549();
  89.             j=++j%10;
  90.             for(k=0;k<10;k++)
  91.              {tmp=tmp+add[k];}
  92.             tmp=tmp/10;
  93.             dfp=2495.0*10.95*tmp/255;
  94.             Rv=(uint)dfp;
  95.                
  96.           }
  97. }
复制代码
51hei.png
程序有问题:
线性电源.zip (42.4 KB, 下载次数: 41)
回复

使用道具 举报

ID:328014 发表于 2020-11-23 20:57 | 显示全部楼层
这个数码管显示好像不对啊
回复

使用道具 举报

ID:976220 发表于 2021-10-30 18:18 | 显示全部楼层
数码管的库文件好像有点问题
回复

使用道具 举报

ID:262 发表于 2021-10-30 20:23 | 显示全部楼层
陈岁穗穗穗 发表于 2021-10-30 18:18
数码管的库文件好像有点问题

楼主这个程序有问题,你还是去研究这个吧,这个仿真是Proteus7.5版本的 我测试了 基本ok:http://www.51hei.com/bbs/dpj-97480-1.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表