|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ADC5608和LCD12864电压示波器制作 带源程序' f! l, _* x2 C9 k) p3 s$ m
: m5 j# F3 s* e( _& A3 ]
3 [( y1 z/ ~7 _3 W# fADC5608转换芯片和lcd12864液晶显示器组成的电压示波器设计.
, L) w2 R9 V" d8 s
* H$ M* j- C0 w) k W" B9 {
1 y! i; T2 C7 u3 z+ I3 J- PADC5608源程序:
8 n1 e( a* H6 `" R' t# u7 W/* T" ^: D6 z- B7 w' o- m+ E
先用Io_init()才能用1 b. Z" g. n: I, s- B* t2 o n
adpro()返回电压值0~1023
2 I7 H! ^* c% r2 {' r. V2 p*/
, P" q+ b" z4 p, V6 o: P
# \! q/ r. ~" n1 b# }, H
7 G# |$ _& Q" K+ a3 C4 q/ m: F' j1 e; V5 `
# }" V' n5 ]2 Z8 ~" A& v
void Io_init()
; r) T0 U6 Z9 U{
. c8 a# W2 }% o0 C, l! s P1M0=0x80; //设置P1.0为高阻输入,以准备AD
) B& X" Y8 I! j) {1 }/ i P1M1=0x00;
; y" ?: w2 J" C: O* @ h! y! t ADC_CONTR = ADC_CONTR|0x87; //1000,0111打开A/D转换电源
4 }7 p Y% ^0 j7 n/ s delay1(10);
! O% K' @' R% j N4 ]& U2 v delay1(10);
8 N9 ~* e: H# `! z7 j% Q S ADC_CONTR = ADC_CONTR&0xe7; //1110,0000 清ADC_FLAG,ADC_START位和低3位} % B8 {# I9 w$ W% Z0 U1 @
}
( ?' f% u" d# g# w* G/ p2 T//=======================================================================================================*/ 3 a% O. T0 D k7 T" q# Q" W. \
// 模数转换函数(8位) */$ t2 Z* M9 ]8 J; t6 P3 R
//=======================================================================================================*/! r( a3 L' [$ K
/ Y# q# E( Y5 {& j |+ x. W9 n- \* ]
unsigned int adpro()
$ W3 X% t! O, I3 F( C{
* N. J5 ]. L0 d8 b7 K" T! [ unsigned int adbuf;5 W4 C; r" }* N9 B2 n t
ADC_DATA = 0; //清A/D转换结果寄存器
; w% }- o. E! B2 |6 f w ADC_LOW2 = 0;
! [2 \6 D* A! f8 u. h) x ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,启动转换% I, k8 t( o$ W5 G( g3 u
delay1(10);
+ ]5 [- B0 a; y" {8 E" p do{
* U1 h( e" H& M. t9 F2 } ;
& `1 ?) _; f9 ^4 [9 g } & O5 N0 r7 f+ t$ @! v! ]
while((ADC_CONTR&0x10)==0); //0001,0000等待A/D转换结束% g( v5 ?& Y% w
ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D转换5 D3 N( \# {4 m& V( o# I
adbuf=0;- ?. t9 ~1 y& q8 @; ~
adbuf = ((adbuf|ADC_DATA)<<2)|(ADC_LOW2&0x03); / z" V) x, [+ S. _
if(adbuf>1024) adbuf=1024;* x+ D1 o' y% _4 s" A- c) k8 x
return adbuf;
% n8 {( V8 g3 d2 ?- V}0 ?' n2 C/ F5 g/ T& _' u
6 \# q! h% M$ c/ ~& V$ u
- P, m5 @+ E0 ?: ~9 B. g主程序:
" i5 E0 e# s( _) p6 J2 q. x/*
6 o' F. N. z, {( `+ bP1^7口为波形输入端口
+ F: S8 Y% L& I*/2 v1 _$ G8 X M, l$ i
#include <STC12C5608AD.H>- @; B& a5 O. a/ r: R: I1 q
#include <5608_12864.H>4 X; W9 L7 J# I& @
#include<picture.H>% x% Q# P7 h* G
#include<ADC5608.H>: } g* ?. i8 O, k! j$ p2 W& P
//#include<math.h>
/ L" b! @ c8 N8 Y, r$ y4 B& A% y' l$ y+ P, ^
, W# R; q3 T$ ?7 F) m
sbit a=P3^3;
1 P9 q$ O+ c/ isbit b=P3^4;
( Y6 \% N K" _$ k; b& O4 ~; Csbit c=P2^0;
& o: F9 ]1 Z _//#define pi 3.1415926
: u$ I- p* e- m7 w, x- Uvoid main()- [ T+ E; w" l% h1 p4 C; ^
{
5 A* u1 Y3 y1 e1 \1 R2 j' f uchar X=15,buf;
# t5 Z1 D0 |; q! H( S8 ]0 }3 p uchar Y=32,yy;# N. f6 u' o6 F+ u
double Vol; 3 l/ J- ]7 l. U# y
a=0;b=0;c=0;/ w7 _: `; ^+ v/ w: V# l; o
Io_init();6 N: d+ [7 N1 W; ^
// lcd_init();, `6 ?0 Z7 G* S' P# u* {( t4 J
init_picture();
' ?& q5 N' o+ w/ U' R$ Z show_Pic(XY);
) q' J+ ^7 m0 H0 v6 ]: [ //Y=32-yy;
_1 x- J3 t# U0 I! g2 t7 ? while(1) // 进入程序主循环2 c/ l- a2 Z' m9 f( \: _7 ~
{
; l' n9 ?- h# s+ K buf=adpro();
8 F" u' n( d- ~1 ? Vol=5000/1024*buf;//电压单位mV / k8 R6 L$ W; V" ~
if(X<126) X++ ;
! P) l: o7 |3 e else
( P$ i i7 U0 Z' O2 z6 V {
+ M9 E, u' q F X=15;
8 B" N# _- s' \ lcd_wcmd(0x01);
9 I* [4 A9 O! K- @ init_picture();
; Z$ M' p' C v7 W% D/ Z2 } show_Pic(XY);
0 p9 L! c& O' d3 J3 g, {0 I }4 U8 c% k( b: ^2 d! d9 z7 u
yy=buf/5;
* {# X2 G# ?" K6 F Y=56-yy;
: `9 r# [# U! @ DrawDots(X,Y,1);
1 x8 w8 Z9 l5 N& c. C% z$ p// X++;$ _ ~. l& z# e0 m0 y o) D
// Y=32-25*sin(3.14/180*X*8); }) U+ x: j/ M
: N" }/ n- z% H2 O9 N& W
7 Z5 G6 j- ~7 s3 f. U. _: Y+ b
3 w$ X/ r6 A( Z' [
. t1 D. V" P q, b% z+ C' E- C…………限于本文篇幅 余下代码请下载附件…………
" B2 @* _# N4 C0 D $ G ^# Q# ~. N
! {; G/ p& P6 k8 B: V; x; j
" K8 l6 j5 V3 ^全部资料下载:
0 w5 `9 p' u" f! D% D/ x) X S3 W# l3 ?
+ W1 Z- T* {; c) [/ w4 y7 B) A
) _3 s4 a) v& U: t% V; w! {9 c |
|