|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ADC5608和LCD12864电压示波器制作 带源程序% v" u' P6 D3 |( P
' d" G- a9 v3 v# _2 j
9 s3 g( v; }' g+ v: TADC5608转换芯片和lcd12864液晶显示器组成的电压示波器设计.
9 a: }% B4 F! M8 W 2 f0 G* f% V' S0 H$ F! x
; ^1 g7 a7 b6 c9 x, G
ADC5608源程序:4 V% ^. r; W( W2 H/ z- k# ?- m
/*
/ a0 I+ V) m/ b0 x2 ]3 s 先用Io_init()才能用
4 ]7 z+ d4 \9 n7 F2 ?- h: |$ {8 z$ s adpro()返回电压值0~1023
& J- J) e. U1 `2 W: P*/9 E5 ~3 {; V$ C4 O g
" [7 K/ d, x, n. M. X, i3 D3 t& I0 _- E
1 e5 n) }" G1 m" E. {# S5 V
* \! Z$ g6 R8 T) `& k
3 B; M" J) q2 |7 b# J$ ]: R
void Io_init()/ k! @: ]) ]* U0 x: o$ I7 Y
{
4 J! r% ^( Q+ z P1M0=0x80; //设置P1.0为高阻输入,以准备AD X- P/ |6 n$ @- l& T+ k
P1M1=0x00;
H, W' w) s1 j8 w1 ^8 V ADC_CONTR = ADC_CONTR|0x87; //1000,0111打开A/D转换电源 1 s4 d) ]9 L+ m0 {6 c7 m3 W
delay1(10);# O7 Z2 l( h. x' O
delay1(10);
* D. V6 y t2 s- i4 s4 o ADC_CONTR = ADC_CONTR&0xe7; //1110,0000 清ADC_FLAG,ADC_START位和低3位} 7 c2 c# P% u7 S& i
}
, n% h# p+ s* n( I/ u \) Q//=======================================================================================================*/ $ Q! O! b l5 d! P
// 模数转换函数(8位) */& E- B3 B d9 j. Y* b' ^
//=======================================================================================================*/
! G. X8 q* a4 e3 r: E' @
4 d! p8 V) M2 k
5 w2 q5 b! D% G; ~unsigned int adpro()3 u& s5 ~% K4 l
{
& y* Q: M1 c/ b/ c3 G, [! A) b$ z unsigned int adbuf;$ p4 E8 Z' o- X, `3 k5 w) l* f/ t8 k
ADC_DATA = 0; //清A/D转换结果寄存器 K( P- v f$ `) m
ADC_LOW2 = 0;
" [' K/ z* E. R8 M& g, z ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,启动转换
6 v7 L. b# N; T9 O+ y delay1(10);8 s6 n4 X" L/ \7 {/ P
do{ - r% l& @1 c7 D
;
% J, Z* d A) j3 m }
( |" X( i- G7 i5 g( q* S while((ADC_CONTR&0x10)==0); //0001,0000等待A/D转换结束! }$ V& |9 E4 u: x, E( l0 S1 ~% I
ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D转换
# O1 p; Z( y, ?9 O) E2 g" u adbuf=0;
* A% P, K8 L1 L) M! c6 B adbuf = ((adbuf|ADC_DATA)<<2)|(ADC_LOW2&0x03); 2 V- o5 ]+ p- j4 `" J5 [" R
if(adbuf>1024) adbuf=1024;5 u6 D0 }9 `; _( T/ h0 B4 I
return adbuf;. Y V) q/ U2 V. b) @, |: x
}& c$ P4 q7 J' [' z7 p, L3 i- e
3 v: M8 W! w' g
% l3 n) ?2 v8 ?( Y主程序: e- b8 A6 }5 Q) b& }0 T5 Y
/*
8 R/ t3 M! D% f, g" p4 pP1^7口为波形输入端口4 ]9 c$ T% H0 L9 D
*/
6 {) M( {- R0 x#include <STC12C5608AD.H>
9 [6 l" N2 r7 e- T$ j#include <5608_12864.H>2 V4 Y: P: i$ p8 L
#include<picture.H>
, l, ~ G) \8 F% c b$ N#include<ADC5608.H>
4 r# p1 Y, X4 Y0 }9 C( D- c1 I//#include<math.h>) }7 A b& j! _# b
$ ?2 O0 G' `& J h" W P
; A! v3 B3 v( |* ~
sbit a=P3^3;
6 S# z. T& w9 Bsbit b=P3^4;
; ?4 k& j" h; A F" G0 L9 Y6 q* v1 bsbit c=P2^0;
- z; D( P% T+ I; v- Z' J//#define pi 3.1415926; P1 Q( K3 }; a8 B+ b1 c
void main()
p% j6 s; h' N) t7 E; f2 Q{ - p/ [6 E- y! q5 H9 b- i( K
uchar X=15,buf;
5 U2 C" e* t6 O0 K) k2 R$ B- P uchar Y=32,yy;1 A0 z! x$ d9 G: f
double Vol; * v& z) X: A3 w. x6 u$ @
a=0;b=0;c=0;: J+ j+ |) W$ c) L. \
Io_init();7 n- s# K7 D G5 o3 [3 U
// lcd_init();
( _5 k5 O* S8 Y7 b2 b" \ init_picture();
; a- G$ H- n2 n. _3 h t- Z+ g& B: m show_Pic(XY);: }; G7 H W4 p$ h
//Y=32-yy;
7 a3 L# I {( i3 a! o: q+ I/ x while(1) // 进入程序主循环/ h0 z* o* p+ k/ ~, x
{ ; n; q2 U$ B) c& Z3 {* Y
buf=adpro();
" N! i" Y! V. J: t4 j5 m Vol=5000/1024*buf;//电压单位mV 9 |( [0 k) k0 H& S$ `( M! a
if(X<126) X++ ;% N" S0 J" C6 L: y% |
else
" r& B8 J' Y9 E7 }" _ {# p* S: S7 R4 K3 j
X=15;5 A Q; k1 W% `, G
lcd_wcmd(0x01);/ a% h% j& `( u: N9 i q% }
init_picture();
: W% |0 f' b4 ` M+ i5 } show_Pic(XY);. M! H' c o# }& z5 g
}6 s) N9 d' r: Q6 a* a, ]* A
yy=buf/5;' S9 r7 l) F1 }; V: g& X) ~8 I
Y=56-yy;" ?/ p* \/ V+ x* q5 c3 w9 @+ B
DrawDots(X,Y,1);
" ]& Z! w7 d4 e" p2 Q& X2 A8 S// X++;
4 B6 S: r. x# C$ y& X% m$ b// Y=32-25*sin(3.14/180*X*8);' [9 n. O6 n! X4 s2 B9 }
5 z8 }+ ^( A1 q" n X
! f/ M5 u; G% ?: R1 M, X( S" U
. h) g" M# \; z, Z1 \# |
6 K p$ s9 |4 _…………限于本文篇幅 余下代码请下载附件…………
1 R3 p: x- L. n: b- y# l % K8 A6 @) c% @% e7 y
& @( J0 S, f3 |* j5 f8 m
9 T p4 @; Q4 @2 b全部资料下载:, M% L* m* x' [/ g0 j* W
% m! R. Z$ ~+ H! Z2 H$ u8 @
$ a' B* N _) N# S6 X9 n8 k* ]: k% }8 ^
|
|