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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
- a; l8 n2 I  r6 [

5 T- e* ~$ e2 M" Q7 g4 L
0 X) N' ?3 j  S9 k
/ T- C% C7 S" o! P* {1 f& T7 o* m1 c0 _
2 z& T7 C7 P& `: e

2 C% N, r1 a; {. j) D3 L9 g* y0 ]单片机源程序如下:9 O. c9 {& ]# u% k0 R' t
#include"reg52.h". v" J) f0 h0 g! ^8 @3 p
#include"math.h"
6 `0 J: x) r3 ~  M2 w#include"intrins.h"
! ?9 T: R- X0 D#include"function.h"
8 Y) y+ n* V+ K, {* l/ P9 H6 y, |& P6 b" c1 K/ _/ h
#define DB P0& E9 I3 ^: t$ v" n

+ z* u' h5 ?) Msbit RS = P1^4;
7 Z, ^/ n/ T4 B. _sbit RW = P1^5;
( l/ @; X5 c6 t' P- w: E6 Bsbit E  = P1^6; void busy(void)//RS=0;RW=1;wait=0闲;wait!=0忙
* ?4 d$ p- W  v' V$ M8 v# L{
9 G9 |1 ?& }# K" l6 B/ w# j    uchar wait;
# G% r  g" M4 Z- {% [+ K    RS = 0;) [" x  e6 g1 P4 Y  M* z+ h, E9 b
    RW = 1;
6 V$ Y: ]8 ]/ Y. w9 Q    E = 1;
( f* I$ j. z; |$ |    for(;;)
1 g5 l3 }+ g+ J- B    {
+ f! T- |. w3 v+ |9 s3 ^$ O6 ^8 w        wait = DB;
* N! d4 u+ p& [        wait &= 0x80;
5 N% P  g9 k, F7 i        if(wait == 0)break;7 x+ x! s5 c- \: c/ ?4 j
    }
* M- L, ^* Q9 {. m- v/ K    E = 0;
5 n' [( ?6 s% v$ p}
2 p* y& Z2 c8 y. R* }- W' Y) m. x
. z( e0 ~- q+ ?6 m4 Y9 M# X/************************************************************************************0 ^, g. u$ K0 c
                   写指令函数         
  q; J* @( Q9 j  R3 E! @************************************************************************************/1 w. @3 g$ E" z5 g' p
void w_code(uchar c)//RS=0;RW=0;E下降沿: t& A" W3 w9 {  J. z
{2 h$ y! W, Q, v  T, t! [
    busy();
; w8 @/ K: [! e: S* n& N9 [    RS = 0;1 ]% S+ p  F% _% F, p
    RW = 0;
7 G7 h8 L8 F5 y! f! o    DB = c;
2 X. D1 m+ `8 y$ c! \% ~& N4 A' }( h2 _    E = 1;
- X0 S" I0 x6 u9 z( k% @" r    E = 0;
& S) _& B2 v: p% w+ z' h& F    DB = 0xff;8 B' T: n9 j" Z4 v7 F4 }+ d# Z
}
+ [/ U3 y* g3 w
. W9 D* t) V$ u; a- e6 S3 Y/************************************************************************************
' u, m! V4 I# a& B) T  t0 @                   写数据函数        
* x5 x2 U8 b9 V- W3 ]7 `0 _6 W************************************************************************************/4 Q' G, [5 l+ [7 M
void w_data(uchar d)//RS=1;RW=0;E下降沿' Q4 W  C7 ~' W2 L
{
7 y2 B5 J: c. p+ e* m2 L: A2 u    busy();
8 G3 m9 W1 l4 w6 M. o: ]. H    RS = 1;' B& k& I  c. J; |
    RW = 0;7 H/ X" j# P, ~. @  u3 N7 Y* P- e
    DB = d;
: ]' M/ w. W0 D. f( H; y4 u% `$ p    E = 1;; e- |8 e& z0 }! B' u6 n2 Y
    E = 0;
" u/ [) X5 H& s" k9 y5 n    DB = 0xff;7 j- c$ H7 r3 y$ c6 k/ m- H' U
}  \- [8 O9 |5 S/ ~  C! s7 h" \1 ~

+ _; G' W, J/ e% {/************************************************************************************% F7 I) a1 [& u. ?
                         读数据函数         , R. X+ R& w2 T% M" c
************************************************************************************/: z/ M8 R  V1 I/ o# ]( }8 i
uchar r_data(void)//RS=1;RW=1;E下降沿
; [1 H" f- D# J: O; S{
4 R' D" B, }$ [( u0 o( |. B1 H    uchar rd_lcd;
8 o  i9 M$ ~. `3 Z' B( T    busy();& _+ I  _( m- n% s
    RS = 1;
. c) v9 H8 K4 c' ]* B; v    RW = 1;
9 {: I; J# e6 p( s! z( s) a1 x    E = 1;5 f$ I+ L% B9 V, @+ B+ H2 ~
    rd_lcd = DB;
+ d) C# G5 V8 {8 R! r; c! I+ R1 y    E = 0;" t. [, X! z# L* D6 q& T( X
     return rd_lcd;
$ N2 h) K+ L6 y) Q0 l}
1 V6 n) k  X' ]8 d' r* W8 ~1 {* ~. U" g
/************************************************************************************( w. K# [- ~7 W( ^4 b5 e- K+ X
                   写DGRAM:x_lcd横坐标,y_lcd纵坐标         ' Q% u. j' O) N; Y; T# Y
************************************************************************************/
6 U0 e  Q& P4 h* }4 n- T6 s/ dvoid address(uchar x_lcd,uchar y_lcd)//
8 y) a% \, ], A, {{
- O+ n6 s  M  c* w    w_code(y_lcd);//垂直坐标
+ [2 M/ t; W/ q' }8 Q8 X    w_code(x_lcd);//水平坐标, k: O1 ^# {. ~( v/ d0 O6 H
}8 d% h. y/ x$ u3 |  T" T
$ z3 B/ H8 B" d5 ^# l
/************************************************************************************8 ]% d  c  Y: R% S
                   初始化液晶屏: z9 n- l+ H2 N, y
                   0:字库  1:绘图      4 W; L8 ^% T% E* g" t4 N3 I* V
************************************************************************************/# b- D3 s. K& u) d
void  lcd_rst(bit a)
# H2 B7 P3 }  |{  . M! J0 a! w4 S0 V& M8 M- W
    if(a)* }* H* L0 n" V
    {
% \1 A( a( a/ k) i( n    w_code(0x01);//   清屏  
, V6 h" |9 v5 H( p( N    w_code(0x32);//   功能设置---8BIT控制界面,绘图显示ON  : |' S. I# O& }9 @& J
    w_code(0x36);//   功能设置---8BIT控制界面,扩充指令集  9 Y6 n. T. t- D" ^. P* M' x1 b$ g1 V( ~
    }3 d3 Q  s$ b  V9 P
    else5 A" H+ C* Y* {4 P
    {
" L7 N2 S) K9 W5 m. D8 N    w_code(0x30);// 功能设置---8BIT控制界面,基本指令集3 R( r/ P* q8 e4 ^7 s, L
    w_code(0x0c);//显示打开,光标关,反白显示关) T( n6 s0 J( |/ |7 g) m& r
    w_code(0x01);// 清除屏幕显示,将DDRAM的地址计数器归零3 q  ~5 ~' X( |, \
    }
, n4 A: t& A* O2 J* ]; D% g}$ N% Z8 C9 R) x3 s3 e# l

1 c* _2 y$ T! A( r& |/ B! k/************************************************************************************6 T; ^' F) c: h9 F9 S- [
---------------------------写整屏点阵数据
$ p5 X/ |% [1 c. [. g---------------------------x :图像数据的起始地址        
# D! w& b9 V, U" \! {************************************************************************************/
8 p" s5 D: J- d. v
  Y8 J% e* c9 t( h! Nvoid  write_lcd_full(uint x )
' ?& ~" W9 g4 s% s{5 ~" T4 j. `) d; d, Y8 `
      
0 D  D/ p; Q. A4 l" @: G      uchar  i,j,a;: Y3 o' O9 j8 x8 {, X  Z
      j = 0x80; //Y地址寄存器   
* R) g( |4 ^9 \2 f( z( L" {      for(a = 0;a < 32;a++)1 }8 R& w* m( W3 @
          {
$ {/ _( D3 K: j, M& w: O        w_code(j);+ W/ A7 o% `, z1 E! r/ c; y7 [
        j++;6 Y6 |8 M; u1 c9 ~  U5 F
        w_code(0x80);//X地址寄存器
  I# i/ `/ c' o! S$ F& v2 q% ~/ }          for(i = 0;i < 16;i ++)
/ V4 ^8 \. N8 E! M4 ?8 ~              {+ R9 }( [8 E5 C# v5 r! Q6 ]
            w_data(logo[x]);# L) A5 ?3 B0 \
            x++;
& {1 q& G# J" U/ o# X' ^            }
  X" ?* s  z' q' l3 o  c        }
, m8 f& e0 C, d4 a1 B' Y0 a
0 [2 [4 X% k3 {- g5 X      j = 0x80; //Y地址寄存器  4 N8 Z4 F+ M3 l2 A# _& U; _! ~
      for(a = 0;a < 32;a++)
) N, H+ a, }8 k* n, e          {6 |; T; \2 a" q+ R2 D
        w_code(j);1 j; i% H: g7 C* \- ?1 w
        j++;& f' I8 V7 E; d" B+ k
        w_code(0x88);//X地址寄存器" C5 x" J) q4 @% t, s
          for(i = 0;i < 16;i ++)
' G- T( O% H( |  T6 ~- a$ _              {) _% D: X3 o/ T
            w_data(logo[x]);
: a) _. [! p5 R            x++;' B* N$ P* o" S# C- @" W1 Y5 z; A# \( a
            }: R& z" Y4 J. [0 p6 v0 a- `3 I0 @
        }" W( T  _4 T2 j. ?2 f: T0 F
}" D/ A& d  m5 H* C& j6 ?2 m' x

9 s6 Y0 B# e6 B

Keil代码+原理图.rar

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

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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