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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

" r- _" U# u# F( s 0 Z1 ]; F& o3 w- |9 H' d

3 c2 E. z8 _, U. r# V7 ^3 ?4 Q + L% y1 D6 [  p# V( \1 M

$ x9 ?) J$ a' P" ^
5 p, x3 d/ i' Z6 @5 }% o! \. t6 P  E4 c
单片机源程序如下:- Q  q9 k2 j  C$ `5 e7 n0 u
#include"reg52.h"+ e) \6 Y# }# N$ x0 l
#include"math.h"
, K) B" l; {* D1 ~7 ^; q#include"intrins.h"! K2 |/ p9 j, C3 K0 X1 {
#include"function.h"1 o/ ~' |( @' L  Q. u" w# R( ?
. A( T7 G2 Q$ q$ P' X" L
#define DB P07 d: R9 X( ?' }7 ~

. E! g3 h3 @" t+ ?& y. E2 H/ G3 ssbit RS = P1^4;
4 H7 p( U5 T- msbit RW = P1^5;
1 Z  M1 a+ z0 ]& F/ p" \sbit E  = P1^6; void busy(void)//RS=0;RW=1;wait=0闲;wait!=0忙9 {% {& Z3 H7 G1 P1 C/ v# o* G8 h
{1 j4 \, j3 q! [( C
    uchar wait;' b& e8 U% v# g( B* T  ^
    RS = 0;; W+ O0 i5 u) ~- H# r: i  H$ i# }' N
    RW = 1;, J4 x6 \6 a. N; X2 k
    E = 1;
5 {" `3 N: r8 K' k2 g    for(;;)1 U, X2 x# C8 [3 m1 o0 a
    {
, d. v; A2 ]. b3 U0 h; A        wait = DB;+ \2 I: i4 p& e5 n6 e% V! J" N
        wait &= 0x80;
& C; m" l% F& w7 s3 D7 x" a        if(wait == 0)break;
1 j3 I. [+ q$ A+ J% h2 u5 B6 C    }
! f# P. `/ P" u' z5 M) }1 |    E = 0;
3 \1 B7 C) Y4 }. l+ Q4 x}
2 L1 T9 E+ D. `5 j2 s0 `! A
% w4 m& r; p9 x4 R. y" x  C/************************************************************************************7 t* M$ V, ^( Y7 }; Q1 I. Y
                   写指令函数         
" B' g( E$ o$ l( R************************************************************************************/
5 i0 i9 E. o/ ?; d  z) hvoid w_code(uchar c)//RS=0;RW=0;E下降沿
) v: {' a1 w$ G$ ~( U& B9 l{% q) H7 C6 F% j& n2 i; Z
    busy();# M& [6 c9 u# e/ f9 `$ p' `
    RS = 0;
" o9 P9 R- _! @7 x3 ^9 ~) [( r3 h2 r9 a' D    RW = 0;* E" n8 @" [' I9 U) b
    DB = c;
5 @: s) W: s4 }$ C+ `. p    E = 1;( D& C3 u  O* `8 J/ b! H& N
    E = 0;1 _: c6 t& p. Q' e' E4 C8 a7 F
    DB = 0xff;" J- U6 r  e4 K
}
9 S/ v. |; y5 s  a8 D, |- I" s7 g. G" ~8 {
/************************************************************************************# a- a7 x% b" w2 D+ g; @* g
                   写数据函数        
( U8 H$ M4 i5 q4 ^8 T6 t) @5 t$ H************************************************************************************/
3 I" x/ r$ X+ E2 W3 ^+ l8 b; Yvoid w_data(uchar d)//RS=1;RW=0;E下降沿% ]' p, N- a% {
{
7 y, N/ I/ I: G7 g, u    busy();
6 ^% z( D2 ~& a( B: h    RS = 1;& S7 u; e. x7 e. D3 ]" J2 b
    RW = 0;/ @6 U0 ?1 Z! F1 ~/ {7 @+ q1 X7 `- k
    DB = d;/ d" H1 F0 e: b. z4 T
    E = 1;  \  r& O0 m6 @& @/ Q
    E = 0;% u- M# g8 H  v1 U' N4 a) A; r! s
    DB = 0xff;
1 y0 v  `9 h/ f# ]}4 d9 I0 }, v- q/ R6 v

4 a' Y1 F4 u* g7 p7 V. K4 m& \/************************************************************************************
% i$ c# G- `/ I9 u                         读数据函数         ! m2 O/ q" t6 e# j6 X9 y3 x
************************************************************************************/
) N5 I. m7 N3 S- {" p/ W. v; v# ]  Vuchar r_data(void)//RS=1;RW=1;E下降沿& w' ?2 q$ Q2 y/ s4 v
{
7 Q8 N) j, k  Q& T% m1 B/ V* l    uchar rd_lcd;: z+ T$ e) Y" r0 l3 o+ |+ E% M
    busy();
( Q# X# T" \2 \: |5 h* J- U    RS = 1;+ y. k( k/ R+ @: R6 ~, l, c- e% {
    RW = 1;- N: b" u0 b% d1 V. Q
    E = 1;
5 {: ^8 i- z7 ]. z3 _8 i    rd_lcd = DB;
7 q5 \+ |* N1 o6 e: q8 x    E = 0;
, Q/ M- ]* o* s, w% b( v' ^0 s( t4 ]     return rd_lcd;
# j7 v9 M8 k( y$ {; a3 a}" b& Y3 U- Q3 Y
' J# B7 S9 A! n# U, ?) b3 y# {5 E
/************************************************************************************
; C$ b  A% y* t( @                   写DGRAM:x_lcd横坐标,y_lcd纵坐标         
* M" r- ~4 |9 ]5 T************************************************************************************/  t8 O1 O9 P, L
void address(uchar x_lcd,uchar y_lcd)//
! P' O9 m5 J# t* c{
7 v$ J# r3 G, L$ _4 i" ?0 j    w_code(y_lcd);//垂直坐标
6 q+ n4 y# ~% u; i; k% ]) Y    w_code(x_lcd);//水平坐标' e$ t% }6 h( q" w* A, [2 V
}& ~7 F! J  ?+ U: V; R

/ x4 B( ^& E5 a6 N: |# m" Q, l/************************************************************************************8 z3 @+ q- a5 k2 O$ S2 \
                   初始化液晶屏+ y; @- h* W8 h0 N& u' H
                   0:字库  1:绘图      4 c* T, C; e/ s. M5 }2 x: p
************************************************************************************/& S5 a/ ]: n6 V) v
void  lcd_rst(bit a)
/ N6 D/ a- P& Y; r- [{  
& P  k& V2 \" ^    if(a)+ J4 o$ D1 E0 w  Z
    {* {1 }! Q* L& ^6 k
    w_code(0x01);//   清屏  
/ a/ c* x4 C: \6 Y/ z+ w. J/ r    w_code(0x32);//   功能设置---8BIT控制界面,绘图显示ON  
3 N* y, F5 Z( T/ M7 @3 u% c7 }: Y+ @    w_code(0x36);//   功能设置---8BIT控制界面,扩充指令集  + G; A( t" O% k
    }
0 J% l7 U  Y6 r4 R% Z* u3 @    else$ i# g4 w: J# P. J
    {
  P$ e8 e) Y. b" b    w_code(0x30);// 功能设置---8BIT控制界面,基本指令集
# ?  ]3 ^' p+ i3 e$ `    w_code(0x0c);//显示打开,光标关,反白显示关5 ?# E" L/ [/ m% Y# E, E7 r4 C6 r
    w_code(0x01);// 清除屏幕显示,将DDRAM的地址计数器归零, q1 b& }0 ^; O
    }
3 H# A" {. w' y- h( n}
. x) Y' e) R0 P8 v8 x- L6 u, r8 f; r' Q( f# \& u9 S6 D
/************************************************************************************5 U# u. O' k* H6 V' k
---------------------------写整屏点阵数据
% U* p& J8 n* q9 @) ~9 _' d5 V---------------------------x :图像数据的起始地址        
) x* V6 F0 ]$ W  R- S$ c& D************************************************************************************/
# u+ w2 Z9 C3 R! t3 a: @. I5 A* N: h3 h7 r& {
void  write_lcd_full(uint x )
4 A, Z2 ~3 ]# m! x{
4 t! u* F& h; k% P# |0 m* }1 `9 O: Y      0 c' ?& y; Y$ L' T) D" d* ?1 F
      uchar  i,j,a;
+ @3 C/ s8 i0 \      j = 0x80; //Y地址寄存器   # g7 t0 A8 B3 \6 \! P3 O
      for(a = 0;a < 32;a++)
  A. N0 W* O) U) }: E$ t) {          {3 p  H- O0 g$ l: |
        w_code(j);! V: M- G, ^7 w/ E+ {
        j++;
# L: h# x  M; m0 i6 }4 [/ M        w_code(0x80);//X地址寄存器. ^3 A% T; t( o& j/ A
          for(i = 0;i < 16;i ++)
% e+ J7 X. I4 h4 o$ \9 r& J              {* J, L3 Q: }9 P3 s# }
            w_data(logo[x]);
9 D7 T$ z* E3 U4 N$ l+ e            x++;
( K3 [- i0 `+ h% K1 R2 {! ~            }
) m% \& L. Z2 c" q+ B; \4 k        }
1 i) H2 F5 Z+ M: H, N2 W& z4 S4 B/ D- W7 ~) F# M1 v) {% n
      j = 0x80; //Y地址寄存器  / d7 p0 ^5 F* c2 m
      for(a = 0;a < 32;a++)% n  r$ x2 _& O; o
          {
" [1 ?! X7 ^# n        w_code(j);
+ ^7 J# k5 H! g- y7 d        j++;# T# a7 u3 E; T  I
        w_code(0x88);//X地址寄存器
) }0 ]8 {) I0 U$ S) Q          for(i = 0;i < 16;i ++)" N% ^3 D$ p3 F
              {( B2 A/ G8 K% {
            w_data(logo[x]);
- o6 S0 F3 a: G& k0 Q2 m            x++;
. k& P6 i) N. f) L  [2 o4 b            }
1 c/ O5 h' ]0 d6 p        }% t. H. }: [5 H3 g
}
0 h3 t, Q4 C) Y- W
* A- ^1 u1 d+ D% Y1 K+ B

Keil代码+原理图.rar

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

该用户从未签到

2#
发表于 2022-9-29 11:07 | 只看该作者
再增加一点功率,加上显示就更好了。! Y) v4 l) v" X5 ^" h$ w+ x
兼顾一下对恒压源进行实时监控,经过单片机分析处理后, 通过数据形式进行反馈,这样的电压更加稳定,就能构成稳定的压控电压源。

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-18 10:11 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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