找回密码
 注册
关于网站域名变更的通知
查看: 251|回复: 2
打印 上一主题 下一主题

0-30V 4A数控稳压电源制作 单片机程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-9-29 09:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
" n3 O9 l; f/ T8 q
6 h, m; O" [$ T* o' p2 t4 m' @" _

( u4 a1 g# B# D, W6 g, b% s + @! T0 p6 S2 B+ B6 `
4 J) T' N6 Y  U% P5 M, w
, S  l" ^6 @) y5 j9 V( y
) B8 @3 q: l# A1 O
单片机源程序如下:; |- b7 G2 O5 V# ?( f- V1 J0 d
#include"reg52.h"+ n, K1 o6 T* C: ?1 @% h
#include"math.h"+ v' }" I; p) A. H! v1 ?! M
#include"intrins.h"
. K) @% y6 ]' t) \6 j2 K#include"function.h"
" M$ W! M, {" f8 m- v5 f0 K4 Z( O0 w% T0 t$ `1 O' [' n' Z
#define DB P0/ G4 l% `; l4 }+ h. O! F
( ?2 V9 @. j" W4 ]& n
sbit RS = P1^4;% O8 S, C1 }% c
sbit RW = P1^5;, h; t" z9 _" T5 C4 j% K: j0 T
sbit E  = P1^6; void busy(void)//RS=0;RW=1;wait=0闲;wait!=0忙
# c* a. g  b7 Q0 d1 l{- X8 `; b& Z8 t% Q& N+ K
    uchar wait;5 G' k7 E# Z$ y( a' f" f( Q
    RS = 0;, Q/ {6 }' M9 o# q
    RW = 1;+ h- d; H( h# K+ a2 T) g2 G
    E = 1;/ f" ~/ V/ \/ a2 m
    for(;;)
6 L1 e- b6 }4 G! o9 `- }" p7 l    {
( i& h9 Y5 B0 u        wait = DB;* D4 K; C5 e( s/ W, ~2 \% y5 ?
        wait &= 0x80;
$ H; u' E, s- J6 K  b" I        if(wait == 0)break;* Z  X/ Y# P8 W; X
    }
7 J% |0 a: W: Z5 u) Y    E = 0;) r; _. V4 A! `: B  N4 f. |
}$ m: o1 Z! J% [) C- Z5 `) R; z
8 \2 N, {" @6 @; U
/************************************************************************************
9 ^" d( D0 E* E8 r                   写指令函数         3 B7 x& S" q. U2 X4 j
************************************************************************************/
1 F. W) D1 n. n" y8 O+ S& pvoid w_code(uchar c)//RS=0;RW=0;E下降沿7 @$ ~8 K$ Q  [- w
{0 E. V( U& F6 S" Q# V
    busy();
5 y- V3 S, V2 l# \# P8 B1 X+ `3 y: n    RS = 0;
% ?/ Q8 I' d+ @8 T; F0 k    RW = 0;
0 i+ \2 r, H3 x/ N1 q    DB = c;! b4 u4 O4 _; W/ `
    E = 1;
8 {) G0 B$ i5 j1 ]) O    E = 0;0 V. p$ `5 h+ |8 b1 v8 f9 c8 P
    DB = 0xff;
8 ?( W: }  A0 ?, U5 h# C2 t}
, u  @( W5 i7 N+ u0 V: n
) M/ B6 I7 \  O3 f6 q" ^' @+ d/************************************************************************************1 n! o/ `7 |1 O0 _4 Z) @/ j8 V# y
                   写数据函数        2 }" I1 F- }; Y) L5 X* G: I
************************************************************************************/
" B8 m! r) j& _! jvoid w_data(uchar d)//RS=1;RW=0;E下降沿, t; y, p1 b' U6 r
{  h7 L4 L& f0 ]. C" n. j& B
    busy();: Q( r1 N3 T' \/ J- ]
    RS = 1;
& d* J0 W. _+ p    RW = 0;; R& S" y% r% ~3 Z& W
    DB = d;
$ b# X' x  @+ k. [$ L. U/ k3 W    E = 1;3 U1 x, j+ |# S4 K* a6 t9 t
    E = 0;
4 O5 o' [# Y3 }4 p6 q8 E; s    DB = 0xff;
, Q+ c! I, E& U0 {+ I6 |}' s8 u& a7 j$ O( v2 ?6 \" n2 k

5 b1 Z; i3 z: x4 m7 k: p/************************************************************************************
2 k1 g) u3 S. c5 g+ v" Q                         读数据函数         
( B: \! l( Y) [# t5 |- B  f0 Y************************************************************************************/
. V* H( E& x- f& v8 D7 Zuchar r_data(void)//RS=1;RW=1;E下降沿6 z4 V1 H$ r2 n) {
{
/ ^8 s7 W& a" y) g4 B    uchar rd_lcd;
1 l/ O) y' O3 v- [) R    busy();
4 T/ b# v3 A5 i3 y: Z    RS = 1;# r+ p4 E" w8 J
    RW = 1;6 ?0 r, j5 q1 ?5 y
    E = 1;- n2 a4 r( ?, b" u1 G0 s0 B
    rd_lcd = DB;
8 `# a$ d8 A# w) W8 ~8 v    E = 0;
9 r+ ?/ a/ ]$ X8 {1 O4 p- M' i     return rd_lcd;( H' w& I" l! ^- H& Q
}- r, [2 ?! `5 [: u
5 W* f- ^: N6 d, i3 Q1 b- X' N8 m
/************************************************************************************4 m: W5 H! D, J: `3 Q: J
                   写DGRAM:x_lcd横坐标,y_lcd纵坐标         
; [) a* m* D+ u************************************************************************************/. S1 Y4 \3 l4 M5 X# i7 P8 y
void address(uchar x_lcd,uchar y_lcd)//8 o$ A- }, z2 m* {4 k7 I% ^
{8 w, |* U7 H. [( N7 [* v
    w_code(y_lcd);//垂直坐标& n* w% e- C( d. d3 V
    w_code(x_lcd);//水平坐标2 ]/ |9 Z; y  n, c% p9 d
}3 G  t3 w2 ?! B
3 d' W5 L8 f6 ?+ c# P! @" z
/************************************************************************************2 `4 ^5 q: C6 z5 a1 y
                   初始化液晶屏
1 o0 M; S, f8 [1 e/ e  }                   0:字库  1:绘图      - T( E7 ^( i1 p
************************************************************************************/
9 A- v& d, i+ a+ ?void  lcd_rst(bit a)
7 H7 b7 Q" j% D5 i7 t{  
1 t2 t& d6 ?4 s# B) z    if(a)
  J' r. H, {+ g* ^    {, S7 A2 C2 d! C" N
    w_code(0x01);//   清屏  
- h1 ~9 w+ W& Y2 J3 ~( C# M    w_code(0x32);//   功能设置---8BIT控制界面,绘图显示ON  ( \& U; t8 P8 s. u) F& {. A
    w_code(0x36);//   功能设置---8BIT控制界面,扩充指令集  ' W6 F: l# O/ n+ L* e8 i2 P
    }' m# l1 i3 w1 Z$ m7 W
    else
/ k  X, j( c! m    {
& o- |& U1 Z9 P% l/ q$ `' P    w_code(0x30);// 功能设置---8BIT控制界面,基本指令集
) U" S$ L: _6 l2 c- F5 L/ Q* g    w_code(0x0c);//显示打开,光标关,反白显示关
7 ~, X, f0 U) J/ l5 x    w_code(0x01);// 清除屏幕显示,将DDRAM的地址计数器归零
2 u% l8 T$ k+ u0 M" O    }9 s$ v8 }# u* V+ w0 `
}/ B. F; b% O  ]2 ]  i
2 P1 b8 A6 L! ~9 Y# c' G
/************************************************************************************$ `; i6 B6 d7 h; l2 x& n
---------------------------写整屏点阵数据5 Y  e% `" H6 U
---------------------------x :图像数据的起始地址        ! U: }8 \" o0 ?/ t  _: @! G
************************************************************************************/
: |; I$ z5 Q5 V  m0 y% H! `' y! P6 A: J4 w, ~. Z
void  write_lcd_full(uint x )
' s6 {- j4 g; P5 ]* E{& Q3 n6 s, |  [* q% F& f! w
      ! q. p8 v+ L; e3 z0 L1 ]
      uchar  i,j,a;
; J4 u- W7 w4 h3 p      j = 0x80; //Y地址寄存器   
% x1 O8 d% W5 _! E. R      for(a = 0;a < 32;a++)
; Q" x& K! a4 |1 R          {
8 V2 }- v4 n- L9 O5 e2 b' e        w_code(j);
( Z' [: z1 D6 M/ d* i        j++;) I: e+ {9 W6 A' a# c- Y
        w_code(0x80);//X地址寄存器+ P  j$ c) s4 l; I% D
          for(i = 0;i < 16;i ++)
; T% w) _& J9 `, Y2 O              {* l# G3 M2 U0 c; N$ w' L% ]* _
            w_data(logo[x]);; A) v* P. u* o/ f) R, c
            x++;
( L) _2 ^. a3 w& R$ v$ m/ r            }8 B# A: j1 j% x5 Q# i
        }
! d, w0 t' a; S7 {. e) ]# w  O8 Q4 y- F! m2 \9 k3 ]6 _
      j = 0x80; //Y地址寄存器    l* \2 I' V' @, r$ O1 C
      for(a = 0;a < 32;a++)
- n! V! B8 w2 f. n7 j9 C          {$ E" m! v! S  P( j& B
        w_code(j);. O! S3 A9 o- C) K! k/ L8 m
        j++;
9 r* u" i8 j( I0 V: ?! a( t        w_code(0x88);//X地址寄存器6 A& e, b* ]+ C4 W0 d
          for(i = 0;i < 16;i ++)
+ P4 F1 {2 q8 D  R' Q              {4 q& Z: Q3 E) L; z+ [2 W
            w_data(logo[x]);) v5 M* O# k5 N7 X+ A0 h
            x++;
0 S! A1 W  l5 B* i4 ?. M            }" E$ t: }" D3 D+ o2 a- U- m
        }
8 V' ]( H7 M0 T, D& b0 G5 s+ P}6 z- G% u0 R; H' J( M6 |# i

3 m, J% d* W. m$ F

Keil代码+原理图.rar

915.43 KB, 下载次数: 0, 下载积分: 威望 -5

该用户从未签到

2#
发表于 2022-9-29 11:07 | 只看该作者
再增加一点功率,加上显示就更好了。
8 u. {# \! T5 \3 Q1 u& B6 V7 b兼顾一下对恒压源进行实时监控,经过单片机分析处理后, 通过数据形式进行反馈,这样的电压更加稳定,就能构成稳定的压控电压源。

该用户从未签到

3#
发表于 2022-9-29 11:20 | 只看该作者
调整管也可以搞这个。使用一套十进制计数器完成系统的控制功能,一方面完成电压的译码显示,另一方面其输出作为EPROM 的地址输入。由EPROM的输出经D/A变换后去控制误差放大的基准电压,以控制输出步进。从而实现直流稳压。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2026-4-18 23:42 , Processed in 0.093750 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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