|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ADC0809模数转换与显示仿真
* Z' G2 _7 `/ O$ v. ^$ j7 z1 n0 ^; {$ e' \2 R1 Y# _; `0 c
( H: U# ^5 |4 v( a( U- @+ R
6 V* e/ B" j) L4 v* A+ m' t/ |
/*************** writer:shopping.w ******************/& O5 k+ t4 X$ U) _/ Z
#include <reg52.h>
' d" Y+ m. {: b9 ~6 f! c! Y#define uint unsigned int. Z+ E' I9 c8 L+ Y7 o
#define uchar unsigned char7 B7 c: F( n g1 U- i& C, H
* Y! @2 }9 H" w8 p& I& suchar code LEDData[]=# q) O- k( Y+ k/ J8 T5 \: I4 r
{' ~- x$ y3 Q7 \& n+ e6 `0 X8 \
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f! I% [% z3 _2 S$ }
};
1 I! e& @& c% Y9 B) X5 ^sbit OE = P1^0;
& Q9 I8 T( s" W0 l( T0 |4 Psbit EOC = P1^1;# d6 Z$ N" w1 w7 I
sbit ST = P1^2; L9 `6 j2 n5 C! ~
sbit CLK = P1^3;+ b( i. S9 I* @5 U% B6 Y) T
$ h d+ }- Q$ I& | ]* K9 s( uvoid DelayMS(uint ms)3 t. @* E- y3 w- _6 B
{& P7 ]3 `5 p1 ^5 W: I) ^! p
uchar i;- k) |; V5 u) S' ]$ c s
while(ms--): o2 |! n& x* @( k3 T7 ^8 U
{
$ H) U A @: M8 J for(i=0;i<120;i++);
2 D: {4 u; R6 ?/ t8 _5 K }1 x& C, {' P" S8 M2 G) O
}+ f- r) }# ^: K( E9 B
- B6 }( r' T. @9 l; T. @void Display_Result(uchar d)
; i& |/ V" ]# ^4 @{
9 b+ x+ a: C) z$ f$ V P2 = 0xf7;% M6 U$ P' Q* c0 w
P0 = LEDData[d%10];
# |# ^& Z$ V( j6 N6 [& D0 A& j5 ^ DelayMS(5);% K1 [2 W0 Z1 h* H: {
P2 = 0xfb;1 Y4 N( e/ e* B( R
P0 = LEDData[d%100/10];) X4 ^) C4 U/ ~7 h. l; K; T
DelayMS(5);
' t4 l8 Q$ X, e, m* s7 ~. Z4 d9 y P2 = 0xfd;
5 N, v9 r; R( d: L0 N P0 = LEDData[d/100];
& v+ W9 Z9 ^( A! R* v DelayMS(5);
9 h/ j& ^1 b D$ H( g+ \% x}
/ n* Z8 n$ ~1 M$ C) Q% L1 i; m- }7 \8 }0 ?$ k" ~% ]
void main()
) z. [" S H5 \ _# W{
8 ?; G" l9 b0 y i; @ TMOD = 0x02; //设定定时器0为工作方式21 Z* L" t+ O" S* J9 v$ _
TH0 = 0x14; //给定时器装载初值! N8 G; ?# O' e8 P, N2 Q# T5 B
TL0 = 0x00;
' _$ [& a8 T2 q( t IE = 0x82; //中断控制寄存器,开总中断,开定时器0中断源
n- p& O3 K; S) O& a& ?( @ TR0 = 1; //打开计时器0
5 m+ Z/ i6 F; v+ u8 C. e8 O% V P1 = 0x3f; //初始控制信号
/ {4 c7 u+ l n* v* K+ \0 S while(1)
7 D$ k3 q) g; [! _+ T {* G$ v8 K( Y- M' L7 E7 q6 T
ST = 0;( S2 B+ b& T+ M. k/ z- E' p4 i
ST = 1;
3 X/ r8 a5 F: E% E k. ]3 R ST = 0;/ q$ Z5 a+ r8 T" m, Z( h
while(EOC == 0); s# Q3 L q |9 _
OE = 1;
3 W9 {( o0 u9 Q5 o2 p" G Display_Result(P3);
% S s1 [! L" B- B! l OE = 0;% C0 y! A& }3 w+ }' b& U' I8 w2 e
}* `# X& d3 w, t6 e% A2 X
}$ q# D/ ` [9 z& s/ y3 A" `
+ m0 {" t; C% u* n6 H
void Timer0_INT() interrupt 12 H% C4 w7 C5 g j1 d/ W5 ?
{; \; a0 _) z5 g' J
CLK = !CLK;
5 B0 Y- ` c* i) {! g# `}/ B# J; ]& ^, M3 p8 ?
$ x" E2 v4 D, D: n w, [ |
|