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

单片机控制ADC0804检测运放TL084的电压仿真

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-4 14:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
单片机控制ADC0804检测运放TL084的电压仿真3 d( T9 n: }$ L
* v# |9 w5 `: B4 a  u
' n1 c9 }8 W9 H
下面这个是整体单片机系统的原理图:$ z5 d: X/ X6 S9 P
- e: V/ o( S8 X/ @) M
0 u- Y% ]0 o. R7 T5 m8 i! a
adc0804检测电压部分原理图:
8 j% f  B3 c; f* i) V- M
  b/ x: k. |$ W, t& i6 I4 V- \0 w' j: Y! ]8 ~
运放TL084产生电压部分的仿真:
' j  s- |8 S3 I4 W5 b+ [ % f" |7 W8 ~+ X6 m4 Q3 A

4 i, v- ?' ^' V3 d* @/ x单片机汇编语言程序:
8 Z/ B, v$ ]* Y: a) O4 ~
ORG 00H
/ B) P7 m" |0 m/ C; }* b5 }ANL P1,#0F0H, j+ C/ x; O' @' t! M% @
START: MOVX @R0,A# m+ e; e; _9 s
) S6 D4 i9 l) l& `

+ I4 |' N' K- O/ j* UWAIT: JB P2.0,ADC
# K0 |5 t! l, S) H      CALL DISP; o3 C' o" V9 ?( I5 C3 V) M
      JMP WAIT! [2 f% b" \+ G& M% o$ g
3 k/ k. A+ d; |6 d+ p& c- r- @

, x3 G' z" j/ C5 f( H6 D. V0 sADC: MOVX A,@R0" W7 `) Y3 {+ I
     CALL L16 @  a. O+ v, @% H/ x1 o5 |1 b: `
     MOV R1,#0FFH3 V7 G0 R+ j7 ?3 O3 d" l

' h8 T2 J" ^$ z
. u  V# ]# x* o. X& r0 J
DISP1: CALL DISP" E! I8 F/ ?  `4 u. h
       DJNZ R1,DISP18 F& r# E1 `+ V" j* F
       JMP START- b9 a! R* j( O4 q% |, v# U

, }7 R8 X$ v% t2 ?

. q: B% T8 s0 q9 j& FL1: CLR C7 L) z; y6 b& ^7 z
    MOV R5,#00H; S$ b5 i: J1 u" y% c( V  [9 f
    MOV R4,#00H: ^( _) W- D; o- o% ?
    MOV R3,#08H
$ O0 |5 b$ _" l
- l. ^2 [" c. _2 ]* v

$ Q4 U- }9 s$ k5 R' [4 u/ S& a; E, q  vNEXT: RLC A/ c5 G* d1 P9 \" O
      MOV R2,A
1 v6 M% F0 q) o6 u      MOV A,R5
5 G4 {! f& X9 F# C      ADDC A,R5) a/ S3 b/ X2 b, O
      DA A3 D5 z6 H7 q3 b/ K5 e
      MOV R5,A9 o1 Y/ r6 j- P; ]1 M7 v) k
      MOV A,R4$ N) U* F! A, Q  _4 R( M
      ADDC A,R4
1 U1 h/ a6 v+ m6 W* T      MOV R4,A
$ E" Y& M2 d. c+ R! v( M- J7 _      MOV A,R2
1 _7 W4 v  J  h, {      DJNZ R3,NEXT
2 G7 L8 w- Y+ B- |/ p      MOV R7,#020 N- Z: Y. ^5 o! e+ k) Z. z- f

+ v1 h4 a( G# C5 L3 T7 t, S

- j, D2 C1 A( @) F$ z; M. y6 QL2: MOV A,R5
" K( D4 t2 ]0 I. O6 q+ |& j6 x8 t7 C5 J    ADD A,R5
: F" K9 ?% l3 P    DA A
- d4 z$ @6 w8 Z: P    MOV R5,A
! K7 J6 y% b# T& }* t$ l8 G2 {    MOV A,R4
& P3 ^; v& f' h8 \6 z) O    DA A6 h4 U( F2 ]2 l. p7 R' H
    MOV R4,A+ E; p  Z* n$ Q5 @, S. j
    DJNZ R7,L2! {! F" T" L/ y
    RET
# F: R3 F# k3 l* |: H6 z* j
' O! o6 S1 y: ^* j% N) w$ v0 q% i$ m

* ~8 V3 ?& b- R6 ]1 R/ J1 WDISP: MOV A,R5
' d8 R# `$ f, q( \5 |4 f* |! R      ANL A,#0FH
. t- h% b$ O, `  F% Z, m$ y6 s      ORL A,#10H! m$ C, U: a& T& o
      MOV P1,A' I0 [9 G6 r' N6 E
      CALL DELAY0 z' J/ f! B6 J9 E8 ?- C# f' k
      MOV A,R5
. m! |4 A/ a" x      ANL A,#0F0H
# i) u5 s6 B6 M      SWAP A
2 I# d# R* Q, d* G" z" M( N. |5 V$ F      ORL A,#20H# \# W4 E- O* F% p7 ^3 U) r1 ~
      MOV P1,A, \2 C. R+ n5 S# H( d
      CALL DELAY8 `) [: A! A7 K7 ?9 p) E; I( W
      MOV A,R4
9 S9 h# H0 e% h8 [+ M* n8 g1 F      ANL A,#0FH- Q: h' o! H% ]- N( ]; r
      ORL A,#40H6 M/ G4 u0 R0 F; E& `( q0 A
      MOV P1,A
: {$ J/ h8 C3 s. s, P      CALL DELAY5 W6 j. q7 E# R9 N
      MOV A,R4
. L) P2 q* v+ h+ p5 U+ j      ANL A,#0F0H2 i7 V, _# D5 N. y! r& e
      SWAP A/ v) `3 U5 @, S: ]0 A8 u
      ORL A,#80H- J  I. T$ p3 e) R( ?3 E' C
      MOV P1,A
* I' Z" l  y5 U) W& b- V      CALL DELAY
& g4 g6 t  @$ V3 t- q4 b' @) e      CLR A0 x( k" Q) [: w; [" I" B9 E
      RET1 T% f, U$ j% ~% Z: X6 Q
% z" g  F) M! ?" ^
  T. \, }& u0 b6 R
DELAY: MOV R6,#10; T3 f4 ]# c( P
* j( X. \' u5 n
% f) K5 T) q' K+ p) j
D1: MOV R7,#248
/ B8 L9 M( G8 ]/ ?1 \) I    DJNZ R7,$
6 H' |9 S  ^0 j1 C    DJNZ R6,D1
2 f) Y: B8 N# j& f    RET
( l3 p% A) K3 y3 y; |9 N    END2 X) H! j/ }6 S5 \, c! g2 f

8 m: v; J, ]. Q$ p
- O( v0 \9 Q0 \1 S& X1 t8 O) [

" \, Q' x+ d1 }

. m" y7 n/ c1 V# }( Ac语言程序:3 K+ v1 a/ Q. ]
#include"at89X52.h"& C" V$ j( n* g* z- f
sbit LCD_RS    =P2^0;
" P0 p) a  ]; Q6 X. nsbit LCD_RW    =P2^1;) r6 G; ^; P+ K3 e( W: f
sbit LCD_E    =P2^2;
. e! r9 }3 d$ g  zsbit ADC_CS    =P2^3;
6 g) }9 V; D& A+ Fsbit ADC_WR   =P3^6;
7 C0 l; S5 P4 \sbit ADC_RD    =P3^7;
- y9 {& o  {9 ~+ O' g- N#define LCD_DATA P08 @+ q% X. D8 U% e3 M
unsigned char LcdBuf1[10]="";
% U8 \$ I% t- }1 k( R3 v/ \  c- k
) N' O: S6 P4 }unsigned char code Bmp001[][8]=
4 ^) Q# @" n8 U# g{
0 W, w9 ~' f3 E& E  {0x06,0x09,0x09,0x06,0x00,0x00,0x00,0x00},7 \3 ^: a& ^6 t8 _
  {0x06,0x09,0x10,0x10,0x10,0x09,0x06,0x00}
; b  f6 t8 g: |& L' u};
* o' K1 k$ b- F7 }4 `2 m7 L
; H8 b' ?0 ]) G$ ~, @# |void dellay(unsigned int h)
+ Y" L1 p3 p2 y9 l8 A{
5 |+ w7 q$ w  E  ?! A/ V  while(h--);   //0.01MS
6 L" u9 e3 T; W( r}
6 w  Q6 _- j0 h) U9 e, c& A
/ a3 X! T& L: y+ W8 i* vvoid WriteDataLcd(unsigned char wdata)* T7 x6 Q1 }" q! e
{1 n/ N: t( M7 u. m  w% h6 m' c
  LCD_DATA=wdata;6 L7 m, V/ Z: Z
  LCD_RS=1;
7 X, ^7 w+ q4 N/ {  t' Q% l0 j  LCD_RW=0;
2 P0 n5 ~" S0 T7 `  LCD_E=0;
9 o3 X$ ]0 G9 o  dellay(1000);- n' U. B7 R2 V8 ~
  LCD_E=1;0 n& i0 v- S. `

0 z& g9 o9 L* M* S6 [' [1 F+ |) Y}
8 a" G% b# C, I; F2 f2 Z
5 \) b3 {% _+ m6 Gvoid WriteCommandLcd(unsigned char wdata). {) p. i" O0 b; Z3 ^) C
{
: H+ g; R9 V  ?: K" _6 b) q  LCD_DATA=wdata;5 G( @# d9 B* r. [5 J
  LCD_RS=0;
5 B% `0 B/ \( W, G5 h, e  LCD_RW=0;) Q* N: C# n7 `
  LCD_E=0;1 j" q' N- j( q6 v
  dellay(1000);. `/ L5 Y# z/ W! Q( }
  LCD_E=1;; H' I, X$ O5 d2 \4 V
}$ a  a% o- I; @  o7 D
( {8 T& b, _5 R# @, a
void lcd_init(void)6 @0 ?; K5 ]( s  w: w
{; ]) ?- Y. @; `8 Z4 Z
  LCD_DATA=0;) j, M( C! t) m
  WriteCommandLcd(0x38);1 y% Z9 \8 m, K) s/ G  \& Q6 [
  dellay(1000);3 T/ L# f) N8 b( C; R2 W
  WriteCommandLcd(0x38);
% ~+ f" `# @* u1 J( `' @5 z* o$ d  dellay(1000);
2 N. T, w# E+ h% I) d$ u  WriteCommandLcd(0x01);
0 T& w7 Y; t4 r" u/ e7 {; l  WriteCommandLcd(0x0c);
2 J; K) t# W3 `) u6 l1 T( X8 ^
1 d9 x0 t$ W0 S7 M9 M}
. Z$ n, `. z, C$ U1 z1 N! @# v7 `
void display_xy(unsigned char x,unsigned char y)
7 F! O9 N# D  n0 J, o( ^7 d{1 a7 D# I8 d, r1 O1 y( W6 S: J
  if(y==1)
; [" h. o+ D: N) u+ Y0 o: u    x+=0x40;
2 d. M, v6 I5 z: d. \" N   x+=0x80;
- d( ^4 r( J1 u9 h' M% `   WriteCommandLcd(x);
$ J( \8 k6 j% N( V* b! i: M}
: U' ^& e  O- y, _
; Z8 }3 \$ L; ]) \8 C- o7 d& _0 pvoid display_string(unsigned char x,unsigned char y,unsigned char *s)6 Z9 j4 `" g/ _4 W+ ^: I
{1 {5 M  V2 ?. @- }
  display_xy(x,y);! M( _5 ~- r  p# C. E/ f1 n2 `: A
  while(*s)
) ?. ]# R/ |+ r, K- P" d% v    {
' R6 a1 L3 C9 [; g2 l, ]' d      WriteDataLcd(*s);2 C) D! g9 j  j& D  G& P& H8 n
      s++;
- @1 h) R- M" o
5 a0 r, c' g2 ^' C/ U7 _& c  Y$ I% r    }0 H1 G. n, d5 C# f5 j

) r  _8 P( a6 v% D3 |' `% C% e}+ m# F" j8 U# |- r
+ W7 I3 r& W; m) C1 S
void Write_CGRAM(unsigned char add,unsigned char *char_num)
% F' b. w6 B" S6 V) u6 j{
7 P. z/ D/ e* F& ^6 r  unsigned i;2 J% ?5 j# t1 z) ^( x0 ~
  add=add<<3;* D- Y$ J" a/ |5 \/ t* z
  WriteCommandLcd(0x40|add+8);
6 d: I6 ?9 `: n- o  for(i=0;i<8;i++)/ z; M/ d. u$ O8 }8 Y+ p( Z' g
   {% \4 A/ q" `+ C
     WriteDataLcd(*char_num++);
3 j. ~% g0 o# O
: |3 \2 F; ^$ t  B/ E3 _6 H* Y$ s( v   }
) r! ]( z6 u. R8 }3 C' p" x. n
* f8 f8 s: }  g}
- r5 r. h1 g3 x# E4 i2 H$ m! v1 p9 y" {/ [1 p
void delayms()
0 S5 |8 l  E* l  P: |( j{+ J1 X) J5 }+ R5 c
  int i;
/ ]2 J3 n0 T* I% W- c6 v- l) H  for(i=110;i>0;i--);& q7 G: O: `2 l/ G0 T
; ?6 ~4 F, [1 i: D: R
}! D& \  H2 E: g1 ]/ W4 F
void delay1s()
1 E- D/ G9 C+ ^& b5 D{* |9 o7 z* _8 M' {; {! l7 x
  int i,j;
4 G: ?- d0 B- U# ?4 V  for(i=1000;i>0;i--);& L; y# ?! {' X7 V. y8 u2 T2 Y
   for(j=110;j>0;j--);
, q- Z- b6 n" U; u8 g}0 e' F. K5 V0 S$ |6 B! r# `

" L. b) g) I) |5 Q& ivoid convert()5 [4 ~* U0 I! H; P
{/ g; i  {/ {0 f3 E# x
  unsigned long value;
" {9 I0 s4 [% I. c3 |3 M  char i;, t/ M, v* W( O+ D) T& l, e8 W! L
  unsigned long res;0 Z7 \. i$ r% L% I: r. p
  int temp,temp2;' G) P$ I3 w& R, H% B
  int w;; Q. `# Y4 L* G2 r2 C; A
  P1=0xff;, j% g0 c) u7 B5 M
  ADC_RD=0;
# {- d, U- H, A! n0 m3 \  for(i=0;i<10;i++);
1 e# g8 U& n5 [( D0 {  value=P1;
* D) f% E- {1 z8 j. G$ J  res=(float)(2550000+110000*value/30)/(2550-11*value/30);6 `) q& b" F1 @- e9 c6 L- L1 U
  temp=(float)(res*10000-10000000)/3851-545;
  D% R) k* _5 [. b  temp2 = temp;
4 }* h8 {4 w3 `3 k  if(temp >= 0)
9 f7 _9 J6 K( R; H% N  {/ T+ b5 {4 j- _3 V  q3 x: \2 M
  for(i=6;temp>0;i--)
  L* }0 |3 U) e3 y& O   {) H) u% m  _- x6 F8 A" e
     LcdBuf1=temp%10+48;
; E( @+ Q- r& A8 }- i8 t! B temp/=10;
8 v' v% f; m. _# Q   }4 A8 p, ]0 F7 U( s& U
  }
: I' }, @1 d0 R* r. g' w- Z  if(temp < 0 )
& B8 c$ K) l+ [5 ]2 K( l   {$ Q8 L/ L" [4 D

6 U+ T+ _8 p  h  Ww= -temp;
+ R( l2 n0 G- _8 ]& e' k       for(i=6;w>0;i--)6 t  B8 z. s3 v! ?
   {
1 B) \, i+ ^) ~- O" `* \% C     LcdBuf1=w%10+48;
/ V) |1 s8 g: N2 o4 U0 a* r6 O6 B w/=10;2 d+ ~& E  k+ n' K* I1 k1 u
   }
$ r0 w% V3 [' {}
& p; ]2 ]6 O4 b8 g! d  if(i>=0&&temp<0)1 l9 b0 z  j) l! q# E+ S% J
  {   
, R* F, C3 m- r, v/ a% u     if(temp > -10)1 M) r' h& Y/ h" F2 j8 v
  {
/ t, P% ^0 _8 ^5 E. L( g$ C  LcdBuf1 = '0';0 T. I1 {: u$ n/ b/ a; q2 J
  i--;. ^7 i7 [( x, l9 _" F8 D7 J
  }9 A. X$ C) S( k: i
  LcdBuf1 = '-';
9 U2 O+ R8 [; j, f. o  i--;   * ^+ x. @; ~) h! ], z: w1 H
/*   if(i==5): S3 m0 e4 g: X
  {
3 F) q/ {: U  S  LcdBuf1[5] = '0';
4 u5 _; O8 T0 q  i --;
3 i5 J. J; d. m5 j3 J0 ~% G% @  }; f; E" j" y* O. O1 Z
  LcdBuf1[4] = '-';2 v! i$ u" t8 e4 _: [2 y' q3 F! q6 a
  i--;  */
( W+ i, k( i* p2 ?
5 L& }  G" K/ ~* p  }
3 v4 P  q2 n" |  for(;i>=0;i--)' q7 z9 \! L9 E/ h2 w
  LcdBuf1=' ';5 Q7 t1 t; R$ k2 c0 _& s
  for(i=0;i<5;i++): `: L" o1 i2 S  l4 r- x
  LcdBuf1=LcdBuf1[i+1];
/ V* ~& s" c: N3 ~2 v  if(LcdBuf1[4]==' ')LcdBuf1[4]='0'; : H7 k4 @* M4 s- B; R# d
  LcdBuf1[5]='.';
! O/ C; |/ k' V9 o! R  LcdBuf1[7]=1;
8 E% o) G' s. z4 }6 a9 Y8 ?  LcdBuf1[8]='C';* b0 [0 F3 ]9 ?& X' E* |5 }: E% h
  WriteCommandLcd(0x84);
* w* D/ [- Y3 b  display_string(3,0,LcdBuf1);9 m' O: A' O) R6 B
  ADC_RD=1;
6 E/ m' `- F" t# T; i$ M* o  ADC_WR=0;1 _" `% \0 e; M0 `
  for(i=0;i<10;i++)- B- t# \. n- d6 C; H: ^7 E+ M; Z
  ADC_WR=1;
; c/ Q) z8 z% E0 \# E" e; M  delayms();
5 b; m! l& ?7 R0 E1 r5 j- H
+ I, A$ a+ E2 c9 C. `
, W: j% v  m. _5 C2 g. g$ t}# x2 W6 N0 l  m& |

- B, C$ J" m! l  m2 H0 O6 {, l. Qmain()% P$ P2 q2 I5 d
{: v* G+ a! x1 r: e6 Q3 I. e) n8 u
  unsigned char i;( W5 y" ?: f8 t' N; W6 a+ h
  lcd_init();( I9 K, r9 ?. h: p- U# q6 m
  for(i=0;i<2;i++)4 J: x. C7 _0 y( N
  Write_CGRAM(i,Bmp001);
" s/ j7 C% }6 B# I1 O  ADC_CS=0;' Y- Y: w3 {/ J* w
  ADC_WR=0;
1 p+ [" A" r+ X! d& T# ^0 `+ ?  for(i=0;i<10;i++);
/ H7 @# F+ e; B- `4 f  ADC_WR=1;0 K6 H, x0 k! E. Z: M
  while(1)0 e9 X. }2 Q$ g: ]
   {
- P; q: X0 g- K% A
: D/ r: u* F3 F. ]下载:
& J9 J$ h9 V/ I% \% j3 U
游客,如果您要查看本帖隐藏内容请回复
& U5 e* f3 y! S" Z) |/ F

3 ?4 y) k4 m+ {) p
1 R- F( e) n( f; H: l! Z5 a3 t

该用户从未签到

2#
发表于 2019-1-4 18:00 | 只看该作者
这个方法不错

该用户从未签到

3#
发表于 2019-3-1 17:07 | 只看该作者
很不错,谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-20 18:30 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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