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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

' o2 T* ~( i$ A! |9 L
. Z, V5 o4 b: p' O 5 z7 A6 N4 c: {/ U

; {. H, y( `" A  m
- Q) N& v! F% m7 T( R6 V8 k! {. Z, N; E, Y! Q  ]( ]) ?

  Q2 o+ j8 Y" s, r8 ~单片机源程序如下:. o. j6 k5 H+ {0 g8 ]- {
#include"reg52.h"
! g: i7 M% G+ ^0 k1 m" J7 h#include"math.h"1 o# d  k0 Z2 o$ N
#include"intrins.h"7 O4 F6 Z- a; Q, ?" b! m/ a
#include"function.h", t) `& q4 p6 c/ i; ]
# J$ v( A2 j* N) x* E1 s
#define DB P0
& F7 f" B7 V9 D/ m9 _  U7 s& d/ r; }- r
sbit RS = P1^4;
6 J$ a2 U3 V2 H+ o, b0 Gsbit RW = P1^5;7 _3 B! Y5 I6 ~" w) }6 l( f
sbit E  = P1^6; void busy(void)//RS=0;RW=1;wait=0闲;wait!=0忙
1 |8 p6 s" |/ T6 w+ q{
/ u; K- k. P' e( \. p) d) N' H8 Q    uchar wait;
7 `5 a, u3 `  z, f    RS = 0;
  j: k& w3 E. g" N    RW = 1;
7 g, [8 F" E8 w    E = 1;" L5 g, Y% W1 p$ D1 \. ^  y
    for(;;)
' p  Z1 f- L5 H) w* `- j    {
8 r4 Q. f8 Z! H5 W; n        wait = DB;
& z6 B; t& b4 P: E8 U        wait &= 0x80;- ?# F1 T7 m6 i0 \/ e. f3 a
        if(wait == 0)break;" l/ u7 D2 m5 [- N+ O. B) |% q
    }3 ^8 \6 i  S. A5 b4 `; h* a  W9 ?
    E = 0;
. g* P3 C# ?" |- q9 g- ^9 B% e- Z}$ {# o% Q9 V/ Q4 l* O& N

9 A: {# C$ `' W5 @4 j' ]2 E- v5 D/************************************************************************************7 H& I$ S/ c7 E. ^* l( _9 |' ]; ~# E& M
                   写指令函数         - R" i' i, M5 u
************************************************************************************/
# Y2 h, t+ ~7 n+ O0 z& Vvoid w_code(uchar c)//RS=0;RW=0;E下降沿& U2 M/ e/ j4 K, v
{
6 S5 P1 N  M2 U% N    busy();
: d; r9 L1 K  r    RS = 0;
- w$ S4 J- @' {, r) e! v    RW = 0;7 ~& N8 A3 w  h- i% Z5 N
    DB = c;
# a: ]; a" G* C3 ]& h* z    E = 1;
, P* o) c( T- B" T3 K( r) D/ i    E = 0;
5 a  \3 c8 ]; @5 Y2 S    DB = 0xff;
; W# Q0 T3 _  L8 K: ]; E2 C+ f! Q1 v}  j" f  ~' |5 Z6 z! E

, H6 m! ?& h: m6 R  R8 a/************************************************************************************1 e4 k4 o% r8 [' }9 h3 x* w4 y
                   写数据函数        
6 u; @( p8 v8 ]************************************************************************************/2 y. Q! P) z8 w* s" _2 c
void w_data(uchar d)//RS=1;RW=0;E下降沿
1 y, \5 M7 J$ C/ R! y( f{9 h% d7 H5 H2 e( W8 k/ h
    busy();3 j! b9 Z# Y8 I# x6 W
    RS = 1;- k% \3 |' ]+ B# d
    RW = 0;
" b" ^/ J# U/ m5 r2 r/ E8 k* i    DB = d;% p" I$ k6 c+ e& i7 K+ ?* a% z" U9 r
    E = 1;
* [# f; c) `9 f4 T# f: ^4 o7 P7 y    E = 0;
* D  h( `4 S$ ~/ [2 ?& l    DB = 0xff;
0 \( J2 ]% m' E7 W1 v. A2 r/ I}$ S3 I5 u- J5 W- ]
: C& y# S8 Z8 d
/************************************************************************************
5 V* [) F1 x% H8 \                         读数据函数         % V: d' n6 M8 r3 c. ~5 j: Y7 `$ i& l
************************************************************************************/9 O8 u+ v. \7 U: y5 B. J
uchar r_data(void)//RS=1;RW=1;E下降沿
: `( [7 h% S( }{
3 q: d3 F8 x9 P0 d/ k, C$ K7 }    uchar rd_lcd;
4 a! c! i" c3 p% c3 `8 U    busy();
( n0 X1 \0 V+ d; n  p' t    RS = 1;0 d. E2 B9 t" p4 C$ u9 ]6 s
    RW = 1;
' X6 ?1 B; x. i1 `8 r' ?% ~    E = 1;
; L4 N8 F9 u0 t  ^0 ?, p7 @3 }/ N    rd_lcd = DB;6 g! l8 @. ?& r  J1 K' a3 l
    E = 0;) H% ^" {/ h- C# @, O. Q9 D2 ?
     return rd_lcd;
  }& n* ]! _" V5 R& e5 e3 z}" v4 f( j2 B0 k  ^

! l/ o$ T( ]9 S$ M. z- a8 w) z1 n/************************************************************************************
  `" u, w; ]" _5 c                   写DGRAM:x_lcd横坐标,y_lcd纵坐标         & {/ ?9 e9 q# }* j7 B# Y* C
************************************************************************************/
" ~. ?. |: H# \+ e7 T# rvoid address(uchar x_lcd,uchar y_lcd)//
6 B4 K8 O" M: p+ t2 G( n* [{
) m+ _: D8 I% Z) N5 x3 p; i1 E/ d    w_code(y_lcd);//垂直坐标
, X' |/ I& \8 K& x3 _' ?) B    w_code(x_lcd);//水平坐标
& j" ^+ ^% f- ~- }4 R( I}7 c) s/ ]- ^+ P4 _( Z$ a
2 T1 P) I8 K0 p' A0 X9 U3 w+ M) I4 j- B
/************************************************************************************
3 _* _1 a+ r' c; q( ~7 i# c                   初始化液晶屏7 M2 @6 G2 y+ O! O. e
                   0:字库  1:绘图      ' ?+ x. b1 W% k9 W4 p. E* B; ^0 U0 M/ N
************************************************************************************/
2 @8 ]+ J& s% K# q$ B% Pvoid  lcd_rst(bit a)4 l% C% h/ {: g# \: T
{  2 E5 w5 ~7 `" b
    if(a)- n& M. `- w" G& Z3 x
    {
/ t/ B0 v; t. ~- r& _7 ~" q6 A% N    w_code(0x01);//   清屏  / q7 ]6 l  v' G2 X
    w_code(0x32);//   功能设置---8BIT控制界面,绘图显示ON  - e6 e/ o' Z* z( `" x% k# P  T) V
    w_code(0x36);//   功能设置---8BIT控制界面,扩充指令集  
1 G" o; F6 A9 q% `0 Z% e$ d5 A$ O- v    }
% [3 k8 k$ }9 ^    else
8 W- H" L# C6 n7 _    {
, W6 a& u( Y0 {+ M    w_code(0x30);// 功能设置---8BIT控制界面,基本指令集
: {5 G4 r5 \0 f8 _/ h! Y    w_code(0x0c);//显示打开,光标关,反白显示关
0 y3 _: }0 z3 J7 |' g) t9 O# W+ T( A    w_code(0x01);// 清除屏幕显示,将DDRAM的地址计数器归零
5 m% I' O  m; y% k! e  ^- }4 D    }0 W% D5 l9 @2 a, v, d  T
}
1 r. ^' X# q  ^- b8 \9 p/ K% C" ?  F# c) ~; w
/************************************************************************************
* v3 B" D! \: k! [4 F---------------------------写整屏点阵数据& E( J% D' F$ r; z2 w
---------------------------x :图像数据的起始地址        ! I6 M: \. F/ @+ S  Y
************************************************************************************/& ]* S% q9 E: y7 ~- _
. M  B4 W. W. J+ @8 U( \
void  write_lcd_full(uint x )
1 q( [% j' v( i2 w3 e4 x{
/ M, D4 O3 Z  u      
  q/ b" I% r4 h9 A1 N      uchar  i,j,a;# F. [0 F4 V0 J! B
      j = 0x80; //Y地址寄存器   9 ^7 J4 ~9 H; X" Q# d
      for(a = 0;a < 32;a++)
* ^3 M3 }2 Y9 w( L1 N" M7 ]2 B          {8 \- z8 T5 U3 r; N" C5 }
        w_code(j);
4 Y6 N, u. k: e3 D) v        j++;9 O& M5 R0 l' m1 f) I7 Q
        w_code(0x80);//X地址寄存器3 U; r8 G8 x4 [0 B$ G9 d
          for(i = 0;i < 16;i ++)
! Y' A2 p& B$ c9 u+ E' w! P              {1 i8 r& {  [2 z) [
            w_data(logo[x]);
+ [8 N  A4 x2 |" p( ~6 P            x++;8 m9 C3 h0 G% G( |- g4 |9 g: x
            }! R0 a# u; ~* s5 w
        }) l& f3 \1 ~7 ]& [" X

3 f) q& }& w5 t$ z5 m$ o! I      j = 0x80; //Y地址寄存器  
. ]* b% y8 h. v) a& \, f      for(a = 0;a < 32;a++)
) l( {+ ]- L) Z8 ^          {
8 J2 p- R) _. i% g        w_code(j);; l% ^' i6 J, ^7 r+ K! ~) s; C
        j++;6 r; R3 Y3 x2 R
        w_code(0x88);//X地址寄存器
- s4 [+ X' g4 B$ @6 l; R, a  f          for(i = 0;i < 16;i ++)
2 i( o6 ]  A, V) I2 F- [              {/ ^/ a, h' y9 D3 r
            w_data(logo[x]);/ u, ^) P3 ~+ B4 N
            x++;+ ~7 t( M) v" |
            }9 i* W, O1 q$ I9 \9 x
        }, P; ~) b1 b# V' Y! a
}
! z! Y* [) w5 j8 r, a4 ~# z: k; e' a8 q

Keil代码+原理图.rar

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

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-5 11:59 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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