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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

, q0 o- k9 [0 ~6 x , }5 r# N# C! X$ u5 c3 O  N

3 N: l* k2 Y" n& S ! f! r: s* e' G- g/ }* `$ {
* l4 N4 g( p  t9 e6 K+ e+ [

" a2 d7 Y+ A6 k* M+ a
; z3 Q7 d7 j* j4 c( C2 K单片机源程序如下:& U/ N1 Z7 I; \* Q
#include"reg52.h"
0 p6 x% k: ~" ~6 w* ~2 E+ J#include"math.h"
# p* `4 Z- l% D& y) X; I#include"intrins.h"
9 l  F9 g& V$ m$ [$ r" F# w/ k#include"function.h"
2 B+ R* F/ ]! K2 Q' O/ z3 r0 _* E6 q
#define DB P0
  t5 l. ~1 V; }0 o/ h0 _: M$ i/ ^! P' w
sbit RS = P1^4;
' G8 i% f! r& x' a  ^1 csbit RW = P1^5;
7 x5 t+ V2 e4 osbit E  = P1^6; void busy(void)//RS=0;RW=1;wait=0闲;wait!=0忙
$ X/ }& Q* Z5 ?/ A{3 ^) Y5 u7 w+ w7 j# [9 d, E
    uchar wait;
( Y2 D/ V& X  {3 l9 s1 R    RS = 0;; C, f$ q* X5 z+ b: j
    RW = 1;5 h. M9 ?! {1 Z  E9 T2 u4 `5 v0 N' I3 `
    E = 1;
$ ?6 [- ]/ M$ v, ~3 m& n; M    for(;;)! m- p0 x% }  D2 m$ j
    {
1 I" Y, z* w, v5 D: h( s        wait = DB;
1 Z/ s& z9 p* \% s# i* X        wait &= 0x80;
; `8 E- s9 F. s7 g& [        if(wait == 0)break;
; M; m) U  {' \# Y8 |; i3 H% c    }
2 b! B* ~2 l7 @    E = 0;6 k( h- N$ U4 V; ]; a
}
* J- K! x& R* T6 S
, L9 g- q6 e. P: P8 L/************************************************************************************
) g# G) U  Y% m: ^2 d                   写指令函数         
3 a( W: P2 o% |% [0 z: b0 I$ x************************************************************************************/
2 P3 U$ `0 o1 N, t( d! T9 ~void w_code(uchar c)//RS=0;RW=0;E下降沿
3 n2 s* n* ]' a" p{" G! q: G7 f9 }! A1 e6 F. g% d& x
    busy();- |7 y* p" F6 w5 L
    RS = 0;4 o$ ?0 T  x7 S, a; @+ }+ e2 \
    RW = 0;
4 Q6 d2 R! g8 e/ X; X! W9 `; v    DB = c;
* A6 B& o, M9 [& U) t# L! r    E = 1;; c6 ?* K5 \( x$ O2 ^, T6 L  U
    E = 0;
6 R1 v* M# N& G4 Q$ X; G" w    DB = 0xff;5 Z. _) ?) m$ c' m1 p
}) y! P7 r/ s$ I/ k

7 I# H8 \$ v6 Y6 R3 [" E/************************************************************************************
; G* [$ I; K7 z0 l                   写数据函数        / [+ o/ ?% m- s- J( x# ?" K! j
************************************************************************************/
1 _% o7 d9 t2 [2 Z  Lvoid w_data(uchar d)//RS=1;RW=0;E下降沿
9 s5 F0 z) X- g. H% G4 G{
. U: K4 O" g: j+ z    busy();$ m3 N% ]+ ]2 w1 w- t% O
    RS = 1;
# I6 i" b% @. C1 a  q    RW = 0;
" u  p, [' ]; K6 i& D) d' ~    DB = d;( ~1 L' R3 t+ U* b  m
    E = 1;
# @+ y5 M8 {9 ]) h, b1 ~! E& P+ Z, V    E = 0;  W. Q$ j4 I2 d+ Z% a
    DB = 0xff;
9 f" K) R. ~5 d* H0 y. e* L& y& U3 f. }}/ E) ?2 N$ }( X2 X  Z

; W! n7 r6 h  B" K% f$ M/************************************************************************************% T: m. i' i9 I& @7 O
                         读数据函数         
2 |' P0 C1 V( e# F: y7 `( I7 [************************************************************************************/
  C/ G, |' @7 u: I1 kuchar r_data(void)//RS=1;RW=1;E下降沿
1 S; {. q  n3 C" Y{
8 _: w# d* o! p" y4 a    uchar rd_lcd;
3 o% p3 ]: K1 f    busy();
8 k( K: a5 }" R+ ^0 Z9 f; q    RS = 1;
- P- M# I  P& d3 n0 \/ v( O    RW = 1;
8 ~  }, h- S5 U" [    E = 1;4 ~: I+ B& e7 M" }* {
    rd_lcd = DB;( j. N, P. Q6 R% b
    E = 0;1 r8 ]: V  [( K% `3 m' ^
     return rd_lcd;+ v7 X/ X# N: }
}
. ?1 A, y: ]# R5 D4 `& E. a
8 i$ `4 b- k1 f) H/************************************************************************************# }7 Y  O: G% n# Z2 F
                   写DGRAM:x_lcd横坐标,y_lcd纵坐标         
8 r" Y$ O, V4 I0 \+ h9 N************************************************************************************// T# ?, |1 n& e+ ]5 w' [; m, L# M) g
void address(uchar x_lcd,uchar y_lcd)//
. e" [- _8 h9 m& V1 V) @& ?{
6 T( U. y% y5 D, I( R  L; [0 D    w_code(y_lcd);//垂直坐标7 ?$ o. D: O# Y' L) J/ t( k
    w_code(x_lcd);//水平坐标7 }8 m  x& R0 @# P7 N, p  T
}
. ~' {0 m/ G( f. t
0 T7 F9 v3 g4 Y2 M1 I6 j5 [9 S/************************************************************************************+ q# [/ R) F- D  y* @. }
                   初始化液晶屏/ {, j/ X+ [6 l/ y+ H
                   0:字库  1:绘图      3 R$ |1 R; g$ s
************************************************************************************/" m$ |% E8 A8 C- K& r
void  lcd_rst(bit a)
: N: t4 C: j& w# M: D& I{  
! D0 o9 ^2 R- Y8 X3 [0 _8 l& T& b    if(a)
6 c5 b# Y  n' [7 k, ?0 Z    {
) s4 F+ z# h" O$ _    w_code(0x01);//   清屏  
4 ~4 x7 Q3 ~, q    w_code(0x32);//   功能设置---8BIT控制界面,绘图显示ON  $ m/ E" T. A2 y# q# h
    w_code(0x36);//   功能设置---8BIT控制界面,扩充指令集  
1 G" i3 M$ Z7 U& X8 O  w% ]    }/ Y! G* K; w5 Y9 |
    else* j  U+ W* s( c! i+ B
    {  U$ [7 s, i; Q- @5 h; |! m9 K+ q
    w_code(0x30);// 功能设置---8BIT控制界面,基本指令集
( c1 r( T+ Y. U4 ]- O0 }    w_code(0x0c);//显示打开,光标关,反白显示关+ g/ |7 e  N3 C9 Q
    w_code(0x01);// 清除屏幕显示,将DDRAM的地址计数器归零. m4 x8 K7 V) U( `! B% D! \+ a
    }! t# P8 H/ i! w; B! [
}/ Z- b" j$ E0 t6 G

8 X+ c" i$ J' m/************************************************************************************
3 R* f3 x# Y; V/ A- h8 e6 k---------------------------写整屏点阵数据
) v6 y: |$ H  f* D' _; r% J$ o---------------------------x :图像数据的起始地址        
! J6 G/ r& [+ n: S* y1 x************************************************************************************/
. [7 V$ N* o4 W' h$ a! B# `1 \; `! i
void  write_lcd_full(uint x )! d9 Z  W4 ?' C4 Y, `
{6 |- p. E) ?- V/ L
      
* s# w4 T0 N9 I0 e; K7 b! C( [      uchar  i,j,a;+ T8 g$ H' w% {7 |& f3 N
      j = 0x80; //Y地址寄存器   
# b! [# O! I% o9 h      for(a = 0;a < 32;a++)
' [0 [9 @" a) {) |0 K          {6 u1 {# d3 X7 j5 L' Z
        w_code(j);
  Y& p' u" v  Q1 q        j++;
" ]8 L* m1 [4 Z        w_code(0x80);//X地址寄存器
9 a: j! u4 t! p          for(i = 0;i < 16;i ++)
% M$ M2 L% i; g              {
1 l6 L( H. @- A9 n            w_data(logo[x]);
: O. H! W- `* a) J5 S2 }, \            x++;& v7 X) X" x- ]4 O/ B6 }
            }
! a0 R1 Q. `2 Q1 K2 i        }
/ l# K2 p4 G$ ~. L% V+ |
1 C6 T$ g& H2 Y; l      j = 0x80; //Y地址寄存器  
* p. C8 b/ u7 l5 D      for(a = 0;a < 32;a++)
, a' k5 X& j5 v# e; k          {
4 M0 r5 }6 Y. M$ v        w_code(j);% z0 j8 @0 }' H/ _/ X6 q2 M3 c# z
        j++;! W1 {- T0 M- H. B
        w_code(0x88);//X地址寄存器; x7 t+ _/ {1 {$ Q) d
          for(i = 0;i < 16;i ++)
" b3 S* r3 I  J  g2 M              {
2 k* g3 @) i; K0 C4 g            w_data(logo[x]);
' P/ N3 `3 A( [/ m! ^* u! Q% h            x++;
* i" E) m2 }5 b" R            }
4 S; C3 R+ `, V% E* b; B2 y/ Q        }8 O- I  i/ _; O
}. i- _. \6 B1 Q- L! v5 ^( i7 g
  l5 X2 |; i. G) F

Keil代码+原理图.rar

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

该用户从未签到

2#
发表于 2022-9-29 11:07 | 只看该作者
再增加一点功率,加上显示就更好了。
) Q8 z9 \* v' Q, ?# Y* ~0 |& k* Y兼顾一下对恒压源进行实时监控,经过单片机分析处理后, 通过数据形式进行反馈,这样的电压更加稳定,就能构成稳定的压控电压源。

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-6 07:13 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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