|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ADC5608和LCD12864电压示波器制作 带源程序3 _3 Z- Q5 V% [. U
) ]; c* v* ?! A0 K/ j) ^$ D' |# {
6 I: C1 r$ U6 w8 T& H7 D
ADC5608转换芯片和lcd12864液晶显示器组成的电压示波器设计.# m1 d: r& \7 A$ F4 m2 w
; `1 ?0 }0 r/ a2 c2 z: k% L
% v+ l4 T6 f3 O# U+ s2 _
ADC5608源程序:" O& x! g) k7 G1 n. k8 g
/*3 V& |1 Z5 m* V( a& e
先用Io_init()才能用3 t( h- Z1 f% q; K
adpro()返回电压值0~1023
' w1 C" V6 B; K$ W/ ^*/. W' j9 E7 X, P( E0 e
R: o0 Q& j1 V5 u7 Q8 P% @4 r0 p: ^+ c [+ X% I9 }$ p
! U( p; a2 |) l/ H( i
/ V) b" ?/ |2 t5 pvoid Io_init()
. C4 i* u2 K) U1 s0 }{. N2 _3 J( f) b1 G
P1M0=0x80; //设置P1.0为高阻输入,以准备AD- X2 o# M& M4 v. r* t
P1M1=0x00;) X) [, K& P( O' Z% C) Z
ADC_CONTR = ADC_CONTR|0x87; //1000,0111打开A/D转换电源 / ^& n& {2 T! r7 m. f
delay1(10); D! _8 p2 G; Z4 Y
delay1(10);
. w8 D% e" }: v% X ADC_CONTR = ADC_CONTR&0xe7; //1110,0000 清ADC_FLAG,ADC_START位和低3位}
) l& f- P8 R4 [4 ?6 R. o' m}7 Y& F1 `9 ?$ ^, X9 s( v! y
//=======================================================================================================*/
! Q* e! }6 E* T8 {, X// 模数转换函数(8位) */
, d5 a; O9 M" C//=======================================================================================================*/
. M1 \3 t( _6 N7 G' H0 i4 ~$ t; i% v( R# q: \7 X B# F
2 f/ i! S# J N0 ?' k4 v$ wunsigned int adpro()' B" R$ c4 C0 \1 ]
{- e x- b0 b/ f7 g
unsigned int adbuf;
/ A- u- A+ w3 |7 J2 ^' u8 T& s& ~ ADC_DATA = 0; //清A/D转换结果寄存器
7 H- U3 ]" m. m2 W; f" ?$ Q) f% f ADC_LOW2 = 0;
" }7 H6 a% @* ]! K3 S$ L0 j8 a/ L5 m ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,启动转换
& E. ]* b1 b! `8 ^2 p delay1(10);7 J$ l" b( F, P5 A0 z* Z' j
do{
1 T v6 b7 S, m ;
' l, Z5 I7 P1 |5 V) P } 8 x9 r- K/ c8 L5 n# {2 \. \' e
while((ADC_CONTR&0x10)==0); //0001,0000等待A/D转换结束' t1 a1 e- D+ M) Q
ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D转换9 v: u6 q, Z( f
adbuf=0;
% _& d: H9 J7 c2 j' h/ a. m adbuf = ((adbuf|ADC_DATA)<<2)|(ADC_LOW2&0x03);
( w" v6 Q8 Z3 Y; \& v if(adbuf>1024) adbuf=1024;8 h7 x0 H+ p" ]- B, O" s9 M9 \
return adbuf;
( G# @) G( c3 C8 Z8 U! S}0 q4 p3 V, Q5 W# a
9 X$ o; L2 O& }" Z- v5 {
2 t4 W+ S ]: y2 b$ X
主程序:
& d5 u' L# K# A6 |/ g: A/*
; a. @+ ^2 o p: p J2 b* LP1^7口为波形输入端口 N/ |& N5 R8 @# q& j/ o; l
*/
% p3 m% h; _+ Z/ ^#include <STC12C5608AD.H>- I) a" W- x6 y" j' D( [" L0 p3 T
#include <5608_12864.H>
* p$ }5 }8 Z$ m; ?- H#include<picture.H>$ e2 B3 Q& A0 ^4 o& l
#include<ADC5608.H>; X- W, L: W. O a9 H) T8 ~/ G
//#include<math.h># \7 i- g) r) D' r" [* [2 |8 g, J
/ v$ U& u3 X# d, k8 ~: h) M( n# e
7 T3 g/ R9 i, {& Z7 \9 `% n
sbit a=P3^3;
( {4 b# f3 J- _7 Csbit b=P3^4;8 V. E# N/ V) A" @( g: F
sbit c=P2^0;
- M: q5 D0 W, r: f: S8 c/ g* ^//#define pi 3.1415926
; M; K1 x; a2 ?' J; ? z# C( ]void main(); i; ~: X0 t6 p+ o/ _6 {9 d {" T
{
9 m1 t( H C% l/ _+ [0 j& v) Y" Z uchar X=15,buf;) i+ Y5 @/ I5 p: P' ^% S$ |: ~
uchar Y=32,yy;. }+ L) E. P \! p" b+ O; G L
double Vol; 0 z3 `% R! L! A2 o: Z
a=0;b=0;c=0;: p! i9 }% I: R4 ]) y I
Io_init();
/ f: K1 v3 L& K/ M// lcd_init();% c$ d* y- p2 z& y2 o% c
init_picture();6 y3 m) ~0 v. Q# T* B# j
show_Pic(XY);
9 ~& a9 C& {- S4 O1 x, n //Y=32-yy;
+ m2 g* M4 M4 y/ p9 Z while(1) // 进入程序主循环
& k8 T" X1 U/ M3 k$ }( A { / g1 i* E5 P$ M# M7 M9 I( F; y7 r
buf=adpro();
n: A2 X! x% X) D5 n b! @1 k Vol=5000/1024*buf;//电压单位mV ( f5 R. R2 j. c$ k+ T M
if(X<126) X++ ;" y4 d8 p8 e* P1 s( _
else 0 g, C8 { \4 K+ t( ~) L
{
% V% g4 l7 u! D1 S; u X=15;
5 G6 k& D2 [$ M9 g" C y lcd_wcmd(0x01);
: A/ E; S2 @* c init_picture();+ o; x) b2 f* }% a# B* Z/ R& @' p: h& ~
show_Pic(XY);+ C" N. \* m1 ~, _
}
% |# I) T& V# w9 W yy=buf/5;, C$ w, l n% V @) _/ q
Y=56-yy;. s7 |* S3 l3 b/ n) ~
DrawDots(X,Y,1);- r5 b$ r; w3 T& @* J" f; [
// X++;
0 v# f& W" a @7 Z5 {" X// Y=32-25*sin(3.14/180*X*8);! k0 E7 R! Q' m" E8 J- T
2 Z# K# `/ O1 e$ @6 E3 t, \
s( s% }5 Y9 i; Y3 n" Y p
1 X* y5 [; U2 b8 o& S: e2 a& ^5 Y. c9 @
. X0 v! `% ?% p2 V0 B" D
…………限于本文篇幅 余下代码请下载附件…………; N- M: y1 Y8 |6 s3 Q
- y2 x7 _2 k- R2 y- W# X- [1 y
0 o# [0 K( M% R" v5 i; @, h! E
2 \ N. A' F% v" S! ?2 V R/ J
全部资料下载:: T* }8 N4 G& I3 c, d& l6 h" [
8 x) {- E+ _9 E( ?( I* V$ t3 C
8 k& c$ d& d* {5 x
/ v* O( g! y# v* D4 u9 c |
|