|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ADC5608和LCD12864电压示波器制作 带源程序& s$ }& W: B9 F9 u7 N: T$ }
8 s+ E0 t. K0 i4 J6 Y) A: \
0 m J( n0 W( S
ADC5608转换芯片和lcd12864液晶显示器组成的电压示波器设计.
S. p% u! I) R0 z0 G& K 9 b* b4 o* F* e2 r
2 N* ?, v% [7 q" Z/ G, `/ G. o
ADC5608源程序:6 H$ }) L8 S5 ]
/*& ~# b; F/ {+ B$ o
先用Io_init()才能用
. X+ P/ S- d7 g# W, A9 D3 Z adpro()返回电压值0~1023; L& F4 J- o/ g C6 ?
*/# e* I& l6 g9 B
: _9 d9 p7 N8 s9 B* U& N5 T
& ?: K+ Y( i* p# g% D2 d; X
9 w. F( [0 P5 e! z
# t7 R Q2 z2 u$ i% ^6 O V- rvoid Io_init()
4 r0 e$ k L5 u4 [0 } |+ w- ~{
$ i. k( o$ K( L0 w# K E P1M0=0x80; //设置P1.0为高阻输入,以准备AD3 b% c' C/ F9 a2 B
P1M1=0x00;
+ G s8 o; p; M" Z! u! e) {$ R0 R ADC_CONTR = ADC_CONTR|0x87; //1000,0111打开A/D转换电源
/ a% b; Q. p; x \$ { delay1(10);
7 Z) p& m; ~# O" f) b delay1(10);+ q# w z, H6 s- l9 x5 C0 `; K; o
ADC_CONTR = ADC_CONTR&0xe7; //1110,0000 清ADC_FLAG,ADC_START位和低3位}
( E1 \8 k( w% a: t, W}
$ f, B4 E& H- x7 `, Q0 i//=======================================================================================================*/ % t* v" q& s0 L' \( z9 @5 A
// 模数转换函数(8位) */
- _$ h e8 _5 i g1 w( Z/ P3 U//=======================================================================================================*/
+ I0 P. {* {( f- w+ Z& {2 s' Y o
K% _2 Y* q' E5 u8 g9 W& e+ y1 O9 t% ?
unsigned int adpro()
# B( V0 ]' n0 f+ L{4 q) e! Y8 o. s9 ^, i4 L( J+ h
unsigned int adbuf;
, m& I8 _5 M, i ADC_DATA = 0; //清A/D转换结果寄存器; p' z& L! @- t* f) b- Q2 V
ADC_LOW2 = 0;( f' J0 {( @9 l) R$ P* Z
ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,启动转换
6 p& `& c" T5 b/ _1 {, ~3 T delay1(10);
& I# @# t# p4 s do{
4 f2 ?! N* S) b6 S- O ; 0 U: G+ g# Z6 O, f: p6 d1 e
}
. z6 c7 r4 c2 W$ ^+ |5 i: f while((ADC_CONTR&0x10)==0); //0001,0000等待A/D转换结束
8 U' R x( n: j% V+ ]4 A4 m( r ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D转换! V( K9 A) m2 ~1 V1 Q7 h
adbuf=0;
. D7 T5 S) m9 R( S7 _7 ?% j. N adbuf = ((adbuf|ADC_DATA)<<2)|(ADC_LOW2&0x03);
5 A/ L3 T7 E: N, g if(adbuf>1024) adbuf=1024;
4 f$ G7 K' l0 a# W) { return adbuf;
J, @& B* q* Y% N}) }9 W9 k* x* J; I2 ?
. {' o( |: M- ^" d6 |9 C1 B
' q6 q3 d6 Q) ^( }" ]8 g% y
主程序:& z/ f6 w$ \! }0 c+ D
/*
" D7 ~: U/ \ z2 z4 _0 M AP1^7口为波形输入端口 J/ h1 X; z0 W8 i/ J
*/1 d" c& _- h, S( l: g
#include <STC12C5608AD.H>
. h4 P, h& \/ C1 M8 X( F4 M#include <5608_12864.H>
% ~9 ]$ z' s3 \; b P3 ~#include<picture.H>7 l7 p+ i6 u, k# m9 u* N' h1 _% Y k% X
#include<ADC5608.H>6 ~: H- R* u( M1 c, X5 t/ x8 I6 a
//#include<math.h>
; W! r. |+ H9 ~4 `' ?) H0 D+ Z" K9 u' H, r0 N5 E* u
& W) e+ @3 ]$ O4 P9 A5 c
sbit a=P3^3;
+ ]! ~9 H7 }6 e5 Wsbit b=P3^4;
% F1 D( u; T+ O: d1 ?( osbit c=P2^0; % i; t0 ^* W/ e
//#define pi 3.1415926
) F: L" y& R/ x) B Xvoid main()
' h* u. a1 Y9 a{ 6 `/ e' w& }) v
uchar X=15,buf;! q& g U5 i; z( Q, g
uchar Y=32,yy;- A) Z% ^. f7 K: m: I. @* D9 L; @: |
double Vol;
. n1 T% H. S. b% h7 Y a=0;b=0;c=0;5 v G* {$ K0 Q5 v' q
Io_init(); K) u% ^3 y' `" j0 x& d- z
// lcd_init();% G; _% t: C. x3 ~2 V/ l1 n7 a
init_picture();
, v0 g; x, F8 t& j show_Pic(XY);
, a8 T1 H# c& j1 a" ~ //Y=32-yy;" Q% C/ y9 Y# s+ f* p
while(1) // 进入程序主循环' k) A: u8 a. G: L0 E
{
9 X! v$ m6 R: h6 d7 Y# H2 `* g6 { buf=adpro();
1 _4 U, ~' g0 h, I Vol=5000/1024*buf;//电压单位mV
, L1 ^! w* \' D0 N# b if(X<126) X++ ;
8 B+ S s7 u q# K4 D else # J6 Y+ D6 `3 q: t
{
' ~/ ^& b5 j* w H; i! e+ R8 v X=15;0 ^5 z2 {9 W. u5 _* ^2 z J4 p% B
lcd_wcmd(0x01);6 r. m$ a0 T- t% j Z0 U: m
init_picture();8 e- e0 u2 p9 t7 x9 g6 e' y
show_Pic(XY);
, O6 U$ o; h6 Q7 i9 K7 \ }% T- k! `+ I( y$ g$ U4 ^$ y$ Y
yy=buf/5;
, d( s' j" P$ [ Y=56-yy;
?$ t* F. W' e1 [; b: d1 h, l DrawDots(X,Y,1);8 }4 `" ?* a- u9 k# A
// X++;, K: @ C* z% _, O- T
// Y=32-25*sin(3.14/180*X*8);
2 m( \9 K5 Z9 z. [& K9 W/ U, s' C/ g. L
5 k0 M* R* _, N8 W3 Q
" D. U( v7 m x- [- \
4 R2 U4 T9 i9 F! g…………限于本文篇幅 余下代码请下载附件…………
& W5 t3 }$ ^ c* P/ ^1 L/ B, P 7 }- q' g& b3 a+ S
; m( Q* B6 L0 w# J# c4 B+ e) K
! w# V% @2 W! U7 c8 R1 a. s全部资料下载:% { T7 d9 D" `* M; m- g* c# t9 p
; Y) n' G* l) m3 m1 ^
6 N' |8 b, q* V6 J- P
) ?5 ?1 }0 [5 n8 S! S% s1 N( l |
|