|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
8*8点阵和数码管显示proteus仿真原理图与单片机代码
. f. |. o( k. e. L; o8 x* |& W) @7 ?: J8 n
6 _( q; k& P2 R" Q0 z; [
8*8点阵proteus仿真与数码管原理图如下:! w! a& E$ X3 [9 p) y
# K" ~% _- ~; U9 Q& Q
6 w, z/ u5 ?7 B
单片机源程序 | #include <reg52.h>
7 D1 h2 S6 R# n" _: O; z/ z# i0 r. d- I! F! ^
) ?* a% }8 z/ M4 T0 H9 M& w
//此表为 LED 的字模, 共阴数码管 0-9 -
( N/ [; x6 L7 t( [2 A9 ^( G8 Aunsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制
8 P" g- @8 k7 I; u j. K4 }4 f
, Q. N1 R( z5 U9 P//此表为8个数码管位选控制, 共阴数码管 1-8个 -
) {/ E" h9 q- u! l9 l( R0 p5 L6 ~unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位选控制 查表的方法控制) s4 P. B# ~( F \$ g7 w @2 C5 M
3 [. h0 M7 P; m$ L9 x* E0 i
unsigned char led_buffer0[8]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};* E$ ?/ E1 M/ s. Y' J# m4 G5 f
2 [3 @8 U" q2 Y" X7 J/ V8 Uunsigned char code led_buffer[]={+ i# }0 t4 A9 g: A6 F" E- ] Y
/*-- 调入了一幅图像:C:\Users\Administrator\Pictures\numb.bmp --*/' U0 d. ]4 Y# M. ~
/*-- 宽度x高度=80x8 --*/4 m$ f" d: K" s; P. J' k9 J+ r
0x00,0x00,0x3E,0x51,0x49,0x45,0x3E,0x00,
" e* G0 f/ l" ], A5 a* p) d0x00,0x00,0x00,0x42,0x7F,0x40,0x00,0x00,. z* k6 q% f8 O$ j) n3 t! _
0x00,0x00,0x62,0x51,0x49,0x45,0x42,0x00,
& K# j8 P$ ^$ \3 @8 _0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00,6 w6 C% @/ n3 [, D8 k* U
0x00,0x00,0x18,0x14,0x12,0x7F,0x10,0x00,* d# M0 ]* Z$ j
0x00,0x00,0x2F,0x49,0x49,0x49,0x31,0x00,- @2 L) c+ r6 U9 |/ l# ~. n
0x00,0x00,0x3E,0x49,0x49,0x49,0x32,0x00,+ @2 X- O1 a8 ^7 k" ?+ b# ~
0x00,0x00,0x01,0x01,0x79,0x05,0x03,0x00,
; i# Y1 i% a9 _6 q, [0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00,
: ^1 L& }" Z* _- S0x00,0x00,0x26,0x49,0x49,0x49,0x3E,0x00,
6 u$ e7 c m# m* c. j0 Y1 C$ \1 f0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,' _- J- K1 o3 r2 {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,* W S/ Q1 `" [
};
) I8 G8 r8 {2 L% K0 i# @( b- d
) E5 d( Z: y2 q' t$ z4 U/ ?0 Junsigned char disp_count=0,numb=0;1 K8 y. x$ \2 T) }# T. a1 b3 s3 I+ A
unsigned char hour=23,min=45,sec=58;
' Q1 P0 S$ U$ T2 b3 J9 ounsigned int count=0;
- r5 d& {1 O) Q& V5 sbit flash=0;# Q" c- y; b6 S0 T2 V1 Z" n! j
0 u5 D! O& ]+ N5 |7 vvoid delay(long dly)
! L$ f( t* q8 Z: u6 b{* A7 O, s/ q5 T* a
while(dly--);7 m* W; B% z& b* [9 n
}. f% e- C' j# J+ _/ w8 s: C& u' r( k
0 j6 v% t5 B% c: E9 X( H
) `3 ?3 ]/ n% {+ f4 C2 P3 j( J, Q6 J8 y3 B
void main()
3 k7 C; {* v+ j# I. y( V5 @% A{9 n5 k8 U! \5 I# g5 {& H5 m
unsigned char i;
7 L, N+ l9 b% ~# S. t TMOD=0X01;/ G. A0 ?; |' |8 @4 R( o9 u
TH0=(65536-1000)/256;
" ~: A; Z# s) x9 P5 ?/ N2 E0 { TL0=(65536-1000)%256;
" J* B: Q& y9 ]) i; v( `( l TR0=1;( B1 Z. F! i; F5 Q: k: V5 ^
ET0=1;
d" ~% E/ U; G; s) n- X- z EA=1;, n' _# F' b5 J; ^4 ]0 N
' X7 ^$ o+ [* B8 m& J
while(1)9 A2 N* P5 T$ k. T1 H
{0 s3 n6 D. f7 B+ m- ^
// get_clock();/ v( U, N G, r9 D- _" t
delay(3000);
8 j: c. J P2 [' H$ E numb++;" ]9 l( C& i% u( W3 ~
if(numb>79)
5 h8 o( H; u! D/ `# k# g {
- O( z) E" W! Q6 J2 i* M+ j9 b5 T% A numb=0;, n0 J& [, F; b6 w+ t
}
* V/ |2 O$ X4 H }
, @8 E! _0 k0 c# I& _}& T2 H3 s! }* g* p5 ^) B
: c! i5 D( s0 xvoid TIMER0_ISR(void) interrupt 1
5 p. ], s: I& {8 ]: a{
% V% z- s# O. d/ X( N; f P2=0x00;% D3 r) S' q, W. |& Q
TH0=(65536-1000)/256;
. J" @: F7 f4 l" v0 [ TL0=(65536-1000)%256;
6 h8 {) e: e5 G+ m& f
" X$ S7 I& T, W P0=~led_buffer[numb+disp_count];* h( x! U6 j6 d' B4 q N
P3=~led_buffer[numb+8+disp_count];. B) [0 m7 o4 d$ l
P2=~dispbit[disp_count];* F* Y# o3 t$ V
" @' b* N7 ]& \$ L* c disp_count++;
$ o ?9 d. F6 ~' j/ W0 U) ^" T if(disp_count>7)7 r5 H( |* d4 z. P# i: o( P
{
1 M; x1 |+ n, D# w, Z B disp_count=0;$ x2 x+ a3 f# `# E3 G& Q0 x! ]
}
. w$ g9 g ? z$ `# }/ P3 q count++;
% S" z6 r1 G, W0 h/ S8 r if(count>249) h* U! R% d+ a' P9 A" X* e: F
{
* M2 b& N5 B2 k! i count=0; " E. @( Q& w/ w7 E# z
flash=!flash;
4 p: u1 Q* y9 a/ h" L* @ }9 n4 @5 F+ {+ P j
}! h/ F; N+ B) z7 y2 }
4 s0 r) P# E& Q- Q" G' G# I
8 {8 Z2 ^1 @4 [9 V8 B" ` |
|