仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (28.79 KB, 下載次數: 37)
下載附件
2020-11-23 20:50 上傳
51hei.png (24.08 KB, 下載次數: 47)
下載附件
2020-11-23 20:50 上傳
V2L}JA`{5`V73(U0]HA[A`F.png (21.79 KB, 下載次數: 43)
下載附件
2020-11-23 19:19 上傳
采用tlc5615進行數模轉換將按鍵的值送給數碼管顯示
tlc549進行模數轉換將輸出的實際電壓送給數碼管顯示
單片機源程序如下:
- #include "Tlc549.h"
- #include "kpad.h"
- #include "LCD1602Display.h"
- #include "TLC5615.h"
- #define smgport P0
- #define smgbit P2
- #include<reg51.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code smgdm[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- uchar code tab[]={"0123456789:"};
- uchar code tab1[]={" Set_U= mV "};
- uchar code tab2[]={" Rea_U= mV "};
- bit flag_10ms,flag_1ms;
- bit flag_Keyover,flag_swap;
- uchar T0cnt,dispcnt;
- void displcd(uint dd,uchar line);
- /****************************************************************************/
- void timer0(void) interrupt 1 using 1
- {
- TH0=-1000/256;
- TL0=-1000%256;
- T0cnt++;
- flag_1ms=1;
- if(T0cnt==10)
- {
- flag_10ms=1;
- T0cnt=0;
- }
- }
- uint Setv=0;
- uint Trdata=5;
- /****************************************************************************/
- void Key_Process_smg(uchar Kd,bit flag)
- {float tp;
- if(flag)
- {if((Kd!=10)&&(Kd!=12)&&(Kd!=0xff)) Setv=10*Setv+Kd;
- if(Kd==10) Setv=0;
-
- if(Kd==12)
- {tp=19.456*Setv/1024.0;
- Trdata=(uint)tp;
- flag_swap=0;
- }
- }
- }
- /****************************************************************************/
-
- /****************************************************************************/
-
- void dispsmg(uint dd,bit flag_dp)
- {
- unsigned char dispdd[4];
- dispdd[3]=smgdm[dd/1000];
- dispdd[2]=smgdm[dd/100%10];
- dispdd[1]=smgdm[dd/10%10];
- dispdd[0]=smgdm[dd%10];
-
- if(flag_dp)
- {smgport=0;
- smgport=~dispdd[dispcnt];
- smgbit=0xe3&smgbit;
- smgbit=smgbit^(dispcnt<<2);
- }
- dispcnt++;if(dispcnt==4)dispcnt=0;
- }
- uchar add[10],j;
- /****************************************************************************/
- void main(void)
- {
- TMOD=0x01;
- TH0=-1000/256;
- TL0=-1000%256;
- EA=ET0=TR0=1;
-
- while(1)
- { uchar Kval,k;
- uint Rv,tmp;
- float dfp;
- Kval=Kscan(flag_10ms);
- flag_10ms=0;
- Key_Process_smg(Kval,flag_Keyover);
- flag_Keyover=0;
- dac_5615(Trdata);
- if(flag_swap) tmp=Setv;
- else tmp=Rv;
- dispsmg(tmp,flag_1ms);
- flag_1ms=0;
- tmp=0;
- add[j]=TLC549();
- j=++j%10;
- for(k=0;k<10;k++)
- {tmp=tmp+add[k];}
- tmp=tmp/10;
- dfp=2495.0*10.95*tmp/255;
- Rv=(uint)dfp;
-
- }
- }
復制代碼
51hei.png (10.72 KB, 下載次數: 37)
下載附件
2020-11-23 20:51 上傳
程序有問題:
線性電源.zip
(42.4 KB, 下載次數: 41)
2020-11-23 19:19 上傳
點擊文件名下載附件
|