|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
8*8点阵和数码管显示proteus仿真原理图与单片机代码/ v8 _ G2 k7 ]
$ F2 P" B5 ^# n* b- ]% J
' R, N- x/ `5 ?; M, F6 w1 F8*8点阵proteus仿真与数码管原理图如下:
& i0 y" `- @" W1 p& K0 p- G 7 ?2 x$ z# i% d f" \ m' y' H
/ U3 z9 p' U- X X* H单片机源程序 | #include <reg52.h> , b- @- u/ R# V! k
, ^( d* T/ _6 Q; E$ v* s
" J. ~; |2 k- f# _5 ^, }' F
//此表为 LED 的字模, 共阴数码管 0-9 - 7 G5 D# k/ h' i. r' O2 P" F( V' z
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制
2 \8 B7 ?& y' v( G5 h9 q8 c) j1 [
" v+ G# D3 ?4 y, @//此表为8个数码管位选控制, 共阴数码管 1-8个 - 1 d+ u$ g2 w; H/ C% F
unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位选控制 查表的方法控制% Q; j5 l# f u% T
* V l4 a/ _- g( x- h1 ^
unsigned char led_buffer0[8]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
: n# B4 L5 k, v2 K7 ?% r0 S- a4 W* i
% ^# x; d5 }3 R3 i" U. |- @unsigned char code led_buffer[]={
) X( ~$ ~3 A6 m; _% ]# R/*-- 调入了一幅图像:C:\Users\Administrator\Pictures\numb.bmp --*/% h7 w4 ^1 C2 R$ k2 z U- A a
/*-- 宽度x高度=80x8 --*/
$ y# f" E5 l. V, {: L- i0x00,0x00,0x3E,0x51,0x49,0x45,0x3E,0x00,
7 }& S* }$ P# h P& ? B: k: t0x00,0x00,0x00,0x42,0x7F,0x40,0x00,0x00,
+ ]9 \# A/ \- P! n% m+ m& i2 T( P7 j0x00,0x00,0x62,0x51,0x49,0x45,0x42,0x00,
0 z- N+ b. B n* }1 t E0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00,
. Q2 `# c/ o! R$ t8 H0x00,0x00,0x18,0x14,0x12,0x7F,0x10,0x00,8 d5 v$ e5 d5 k, }8 a
0x00,0x00,0x2F,0x49,0x49,0x49,0x31,0x00,( B1 b! G5 P. C8 O
0x00,0x00,0x3E,0x49,0x49,0x49,0x32,0x00,
: Q5 N& m4 X) d# r8 v. {$ w0x00,0x00,0x01,0x01,0x79,0x05,0x03,0x00,. y* [+ K& {9 p, b
0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00,
1 T! c v% H! X9 D! D# J# r2 O- R3 j0x00,0x00,0x26,0x49,0x49,0x49,0x3E,0x00,
) Y2 V1 \0 h8 ~* R9 J3 I0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
; X7 _5 _; K3 b+ Y( G$ v$ y5 {' y0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,1 u, }+ I3 B* q# N/ x D
};' h! m9 _0 z# ^4 k3 R) W8 ~
. `+ `3 a. M. J! _2 Ounsigned char disp_count=0,numb=0;- d5 I: w/ x( V" \. ^! W8 l
unsigned char hour=23,min=45,sec=58;
7 j2 K0 w! v+ s/ Nunsigned int count=0;
/ i( m( Z/ E$ Ubit flash=0;6 d- n u6 }9 p! @$ b8 K# z- R
( Z2 k+ f3 ` |* T7 u
void delay(long dly)4 K# B J+ o9 b
{2 V" C$ g% m9 M$ V& S7 }8 @+ |$ |/ W
while(dly--);
/ m( h% w7 u- E4 ~4 x; o2 h5 ~# ^}
' \( n9 ~) E9 n- D- _
8 G) j$ Z( Z$ }, L+ U1 {* Z7 {/ b- r7 T% ], Z2 a8 O% V
% C, g6 t% ~3 T9 z, K
void main()
* `/ ~% w* I/ R; {8 S y2 R% x* m{
* k( Y+ d+ r, W& ^; T: g t unsigned char i;, H, B: F7 C" b! [
TMOD=0X01;& G, i6 n$ Y5 d; K- z7 Q* T& i) Z
TH0=(65536-1000)/256;9 D* m6 A2 t3 N& b
TL0=(65536-1000)%256;
$ \. m8 u- r0 j+ p: h0 `$ E TR0=1;
3 q5 \2 {; y2 q/ a# t ET0=1;! x9 P& R7 u& X4 @
EA=1;
0 q1 b1 ~! k" i4 y% Z! @+ a
# b+ X& Z- g. X& s2 H+ h5 g while(1)- z% O3 b2 A3 A, e' m& ]# q' T5 |
{5 f5 ~5 m5 h$ ^/ f1 w
// get_clock();' G$ O% Y5 T& d/ X f
delay(3000);
8 U5 h* T5 d6 u1 j h$ v numb++;# {2 i+ |" Z$ T
if(numb>79)) t0 N8 Q w: }+ m; X
{
7 K- h8 ^( \3 V' S! o numb=0;( t' e, d% z4 L
}& R# P1 a4 Q+ J
}2 ]- R' F" Q _3 e
}- c, v2 x7 z1 m3 G& p1 m+ r
5 W2 e. a) Z; R# J, s5 m! o: C
void TIMER0_ISR(void) interrupt 1
2 y/ d6 u3 S& y# u/ U4 I& Z{, A0 j( h! U8 e1 P
P2=0x00;; i. ?8 r8 Y) h- x
TH0=(65536-1000)/256;; u: U& H$ r8 M7 F: G* ^
TL0=(65536-1000)%256;
$ L1 g, v9 s. E" I
3 l, o D0 } |! Z) z) | P0=~led_buffer[numb+disp_count];- T7 y& d. p$ e. U( k) \
P3=~led_buffer[numb+8+disp_count];
% D; o+ `/ Y. V, _: B: D P2=~dispbit[disp_count];* A" M/ O* D* V* m+ u* t
2 n+ G0 `; a9 r" }
disp_count++;, ^ \- W5 U; f0 B
if(disp_count>7)4 E+ G8 N8 l6 W$ b9 x$ L. h
{" t4 `1 @- z& o* } s2 {5 g
disp_count=0;. F% e ]8 ?8 o6 n- j* l/ n
}
# d5 o5 ^/ ]9 F3 m! y count++;
- `/ ?: {$ }$ P. l# F if(count>249)
2 r! W l0 ^8 c6 i9 F {
5 q1 ]' g% \$ A) U count=0; $ {# o. h2 a# t0 J+ U1 i
flash=!flash;6 K* h3 I ?. Y! H
}
% L4 X$ Y, _8 X* P6 o' K. U}
6 X+ _3 _) ^5 _1 z2 d3 Z& [# c! n) I% z4 b; U; ~7 K' y
& {0 G4 b# w( f( F |
|