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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

8 U! D7 i) K3 f0 O4 F; g0 B0 h ( U- N: O, l+ @' @3 Z$ o
0 k$ L/ ^8 G4 j9 L" `+ w

, C5 m) r& C5 n5 z4 B4 r' n( p) W. i& e! F2 I! d
; j/ n1 B; C. Q( a; s% K. S
/ i" ?0 F, g( G4 o
单片机源程序如下:
) Z  |9 ]  h8 E1 w7 A& e. R#include"reg52.h"
) q- q1 Z7 l; D; ]8 u) n& I#include"math.h"
# _+ l" {1 ^  l" z#include"intrins.h"
* [$ B* D5 s; S0 A, E' C) C. H% u#include"function.h"# C( ~6 E# ^) x, a1 T

1 Z: `1 |  z$ I: Q& j#define DB P0) h% o2 p6 s0 U* H( Y2 J' {
- y1 _- K$ J+ c) N+ F* U
sbit RS = P1^4;3 U5 ~# x  d. K& H; S
sbit RW = P1^5;3 w8 o# z7 @' T! t1 b
sbit E  = P1^6; void busy(void)//RS=0;RW=1;wait=0闲;wait!=0忙8 j6 \7 v# I8 f; |% M
{! W  @- M. {$ x% z" V% G
    uchar wait;
+ q) T- J# l$ K& m    RS = 0;
8 u" @/ f" x( }+ d7 A    RW = 1;' M- D( B: z$ h
    E = 1;8 \8 w% u4 o9 P
    for(;;)
7 V) m9 o# w! Q- a1 L! [    {7 P( n! V; H* t2 {. p6 k8 o
        wait = DB;
2 v, X. h/ |, b4 ~* E        wait &= 0x80;, F: O( X' G7 i% T
        if(wait == 0)break;" T6 h, D9 q$ H7 o6 r$ }, k  Q$ n
    }
$ E; H- {0 N6 t' A    E = 0;
, r! X" q0 e7 q" d}
: S8 g: f$ G' D5 W3 ?) t+ k" @! X! e# f- Q% |& {
/************************************************************************************
5 P2 u! l2 r# n1 O- j% N# @! i                   写指令函数         
: z5 a0 H) \1 L3 X' {1 y. E- u************************************************************************************/
3 H5 {  P' s, R& B4 V+ j0 m  @" [2 qvoid w_code(uchar c)//RS=0;RW=0;E下降沿
  X  t- Y/ i# ~{
( f0 c) F8 ?1 B" D, ^+ D3 F0 ~/ ^+ V    busy();
4 o2 }* q" v# L9 A& x! Q    RS = 0;
3 n# H% F# v1 o  ~; t    RW = 0;
+ D, q8 g% @! b  J/ W1 _4 r    DB = c;9 [$ k9 B/ V) }; {) |. v- d6 }
    E = 1;: g9 \/ ?9 V  l; F
    E = 0;
3 B) I+ d  ^4 V6 N    DB = 0xff;
( r' w; g4 `8 r0 a+ O7 R, Z  }; e}
5 u$ u  G7 [% B1 E- C) n/ h
5 t% Z5 |+ c7 b/************************************************************************************
/ [- \; `' f8 @8 K9 F, W# k                   写数据函数        * x# L  }) C+ V" c  K
************************************************************************************/
3 N# A; U" j$ _; v7 Y0 I# Uvoid w_data(uchar d)//RS=1;RW=0;E下降沿
4 `! N. y9 N# M, Z" t6 ^" X+ w{- C# F5 a  x, t3 @# x7 C
    busy();9 N/ B6 T4 o/ n2 Z7 H
    RS = 1;" D( ~4 X1 r+ ]' G) |% ^  T
    RW = 0;; U/ x1 S; N* C2 o* \% P
    DB = d;0 f4 V& @4 r  s. D5 q3 X- ~
    E = 1;
/ c* w& R# y& ~$ C+ O8 D    E = 0;" J& B) C% O  D; f/ |( ?
    DB = 0xff;
+ {: f3 w; P6 ]) n) F8 p}/ Y2 N3 \' a% b/ _" L6 o
; S9 E) [# B4 b# @! b& b! C& H
/************************************************************************************6 O0 {5 a( l" U' v$ S, p/ l/ g) U
                         读数据函数         
! a# c, I8 `  m7 F- V4 _************************************************************************************/
6 m( u9 k; m! ^$ Q; xuchar r_data(void)//RS=1;RW=1;E下降沿
; w* x! ~* a: Y{
5 F* A" P0 w8 G1 `! S( h    uchar rd_lcd;
$ I3 Y  ]6 Q. x+ ^- S* H    busy();1 |, |" w" r; u' v5 p9 f
    RS = 1;% F/ F. V, R' t: E6 n
    RW = 1;
  q) j+ O  w4 s6 M( F- z    E = 1;& p! |3 k+ O4 \% l$ G
    rd_lcd = DB;
2 e& `) F$ J) K$ Q3 s    E = 0;
+ W" u: f: K! o+ ?     return rd_lcd;
8 H$ m3 \. ?& ~+ [6 `7 |) U* s" Q}3 D+ }2 K) A- @$ [
3 N% ]: Q1 N- `& ^0 I2 v; o. x/ b
/************************************************************************************7 p4 a( }# ]1 ]8 F
                   写DGRAM:x_lcd横坐标,y_lcd纵坐标         
. M; v8 M7 s; i+ [************************************************************************************/
' s* t1 Q( e) M& X2 x& K5 ~6 Svoid address(uchar x_lcd,uchar y_lcd)//1 o& d: H- x6 H4 x
{: U: E" T, r* I5 ~
    w_code(y_lcd);//垂直坐标
; G+ v" \/ C/ k, `& h8 q    w_code(x_lcd);//水平坐标
# m- M' _, F5 e9 [) s5 {8 J: ], \}5 f# U) G2 X6 H6 L

2 C# E6 m; \5 p4 V/************************************************************************************
' V9 k0 e0 E9 W; X7 h; [% W: X/ o3 d                   初始化液晶屏
/ D9 _. \- R3 P' G% K$ x                   0:字库  1:绘图      + [* N. t" Z$ M9 @# A7 g1 O
************************************************************************************/( S8 ~  \- Q1 h7 e9 m
void  lcd_rst(bit a)3 d3 F! B8 i! Q* w% Q
{  % N' @: s  X+ C3 j) u+ R3 X! e& D# L
    if(a)
; c6 q5 o- g9 n  q4 i: @    {
- H: q' A, X" w& o7 r    w_code(0x01);//   清屏  
% z* [' T6 E) [- n& h    w_code(0x32);//   功能设置---8BIT控制界面,绘图显示ON  ' c" A0 q% q$ ]2 A5 f
    w_code(0x36);//   功能设置---8BIT控制界面,扩充指令集  
# F' X; t+ j+ \" ?" u& I    }3 G$ N; g( _  D0 B& ?
    else
/ c+ n; F  F7 n& R$ M, u0 i' w' h6 L    {
$ T; k/ @+ M5 @) f& G4 \9 T    w_code(0x30);// 功能设置---8BIT控制界面,基本指令集4 s1 R  `& P+ l' A; p5 c* {4 }
    w_code(0x0c);//显示打开,光标关,反白显示关
6 B/ l+ S9 V; m& _, u8 x6 D5 J( N: L" u0 Z    w_code(0x01);// 清除屏幕显示,将DDRAM的地址计数器归零* w) S/ G* G" ?3 \' `0 w  P- J. j
    }
- U# T8 G. a7 c}/ m& l- B/ `' Y) g( q. g, D- c9 T

) `' B# o; N& S/ `/************************************************************************************
- d" p$ D2 m: A7 b* i; n: m---------------------------写整屏点阵数据4 |  U4 C7 m7 T2 ~
---------------------------x :图像数据的起始地址        
. ~/ i& t, C! [2 ^************************************************************************************/: b' P9 Z; j+ w& p

& D5 h  g) ?1 N- R2 S0 L( Pvoid  write_lcd_full(uint x )
2 P0 m6 B2 u, M; Z% E) ^$ y' s{
: p, z4 r# \0 O/ E1 V- o, H      $ R3 l6 x6 O6 W
      uchar  i,j,a;( j0 l0 m9 i: I& c% s6 b0 Y
      j = 0x80; //Y地址寄存器   
) G) S9 g4 R2 L/ l" m  N      for(a = 0;a < 32;a++)
7 t* W! d7 ], L          {
6 [. ^; Q2 F* ^( y        w_code(j);
- Q) F2 @* D; H  ?' W% |        j++;  S8 `( e# p6 w/ W' B4 s
        w_code(0x80);//X地址寄存器4 X. p+ t, K/ E
          for(i = 0;i < 16;i ++)
* K  Q: J5 ]3 I              {7 W; U# ?# w: [! e
            w_data(logo[x]);
  u- o( y- v5 D5 `8 [& j  A            x++;9 r1 s, x2 f$ V; a. b7 [' X+ v0 G
            }
/ k# m+ x- X$ \9 \- S& p( `* ~        }
5 j+ h/ C3 Q; L* h# V0 f: |+ J5 L& u& V* G1 L
      j = 0x80; //Y地址寄存器  9 N; T0 @0 \- i' _; M
      for(a = 0;a < 32;a++)
" l! A; s+ R+ M' l          {& e$ k& |9 p* X. T5 |
        w_code(j);
& g, H9 B3 `! [+ i: z8 c; f3 y        j++;
$ H+ J4 K3 d, d2 T! }/ d        w_code(0x88);//X地址寄存器
1 F* a. t# K* {" Y  Y/ x5 f0 Q9 E          for(i = 0;i < 16;i ++)) J, c+ k0 @  X7 k; j2 A. g
              {% L+ Q' ~) p5 a; k& ?1 x; G, u
            w_data(logo[x]);0 W6 G4 h" I. u$ g% _
            x++;" T; N0 z" d, _% E: \& `; D
            }1 C" ^! _" u8 g0 V% b8 s
        }
! Q. U$ W) c' t/ }' V$ p0 f}7 U5 ^0 _! Y6 l$ R; P2 J; k3 O0 k

: {) r" s% i6 G, i( p" r$ N1 ^

Keil代码+原理图.rar

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

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-12 08:27 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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