|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
制作出来的实物图如下: H6 k6 _. N. l0 [1 A0 f
* G( u3 @ j# Y/ P# M8 C
altium Designer画的PCB图如下:
- @& h( A% b0 F4 W, i1 ^. a! o. ?8 }$ z0 M! r
2 Q3 l/ @, u; {+ c, p0 U% |7 U& Z" W
6 [! r( _/ z, [0 M/ I
单片机源程序如下:; x0 S _3 y% X! R, @- O8 j
include "reg51.h"$ s$ g" m$ u) v4 ?# r' w+ h: J
#include "intrins.h"2 R$ O/ }" \/ Q0 X* q
3 R" F) x8 a( W* z! N0 m
sfr P5 = 0xC8;
% A; E- L. V% q9 n2 @# h% A; Vsfr P1M0 = 0X92;
0 R+ m4 o+ Q/ I) ksfr P1M1 = 0x91;2 q+ [5 P/ `4 Y/ Y
sfr P3M0 = 0XB2;& ^! z7 w7 m0 w5 p! e! R
sfr P3M1 = 0xB1;+ g# z) Z" ^6 s( a: i
sfr P5M0 = 0XCA;! H% J, A/ `) W+ N! K7 D0 D z
sfr P5M1 = 0xC9;
! B" o5 M$ k6 d9 V- F6 E' H* i( J/ d9 \" @5 t8 X7 \& |
sbit S_RCLK = P1^7;//位移动信号) G. r( K ^: q+ I' q2 G
sbit L_RCLK = P1^6;//平行输出信号
: O4 n. Q' D- qsbit S_BIT = P1^5;//位输入
# H# i% h, l- n7 H3 W+ g) b. [ k& y9 [5 v% G- b9 k
//bit ; //标志位,虚拟的按键
' z$ W9 k) n* K. Y. xunsigned char ct;
) Q7 L! x) V- O+ O7 s//unsigned int //255 65536/ _7 t0 F8 X$ j4 B0 W" o# W2 W
unsigned char code SEG_tab[]={0x3f,0x06,0x5b,0x4f,
/ I. _7 O# B$ E6 D 0x66,0x6d,0x7d,0x07,
/ p0 ~: L; \& O- b) ^" h% C! E- Z 0x7f,0x6f,0x77,0x7c,
& [) h- _! x* V 0x39,0x5e,0x79,0x71,0x40,0x80};
. G5 y) O; u7 m! H% c Q! [9 g! J2 b
void Send_595(unsigned char x);
% O" e1 D2 o4 Uvoid Delay1ms();
5 o C; |4 u) I2 G1 M, Z3 Y
' |4 z! ^9 p( W8 N! ?$ U( H. U3 \9 k) b% m. O3 p6 r$ Q
main(void)7 c; y0 b0 `* S3 F1 S4 z
{
9 n% [" j0 m( p0 }/ {2 F' e P1M0 = 0X00;4 q8 N# ]' l b6 f6 d6 U7 Y
P1M1 = 0X00; //0000 0000
$ r, B9 h* V" v. F. @ K) i& U P3M0 = 0X00; //0000 10006 f5 K! v* F! f6 [
P3M1 = 0X00;
% X2 P$ P8 }- ~' Q; o& D P5M0 = 0X00;2 P9 R% }' E) K2 x9 x, m2 d8 Z
P5M1 = 0X00;
, ^" z) ?$ i) r; [* c L_RCLK = 0;- E j$ L& y. R0 H
S_RCLK = 0;# K1 v- T; ? Q* M, A
S_BIT = 0;//位输入
& f$ v I* @# e- F% c9 s while(1)0 t* e* S* H: e) ~
{
7 h% V8 ~ z. }; P Q( _, l7 _ static unsigned char ct=0;; Z- }2 }4 x6 O2 e$ A
unsigned int j=0;; W7 j4 X/ ~! z9 u& M
j=~(0x01<<ct);
* B$ K, W* A* Q Send_595(j>>8);//片选相数码管 位码高8位
. G2 a0 t" O" |& y( o4 v Send_595(j);//片选相数码管 位码低8位 + S4 K4 n4 O! K6 D2 b
Send_595(SEG_tab[ct]);//数码管数据. U8 f- X+ |( t0 h: v* c
L_RCLK = 1;
2 k% ]) b: q. A) }1 y2 d$ O( V, \ L_RCLK = 0;6 U8 l" u1 v0 h5 e4 v
Delay1ms();
; C- t! O9 x) r if(ct<16)
?4 L/ q. G p7 {# e7 Q1 H {
* l& R1 M8 R; f% I; U" ] ct++;' o( Q, f: ~. |/ ]
}
8 Z$ u3 Z$ f, c7 ] else ct=0;
' @3 I& f9 o; I }
! s: X/ e1 h; k/ C1 u}
; S8 U* _+ O; |; p* I1 \5 p W6 t. d4 N# D6 A# n$ }, N5 w& G) G5 I2 q
$ w3 ^2 _4 x3 r1 l1 `; G) Z" f) T7 lvoid Send_595(unsigned char x)
7 S' |8 g/ h* N# g; {) {; c" ?' h{
+ M/ f5 `& ^, E1 T unsigned char i;& s5 }: x* E1 a# {6 ]. u
for(i=0;i<8;i++)) j7 a( Y# x; Q+ i
{9 @4 t7 M) {; I# C7 L* m1 B
if(x&0x80) S_BIT = 1;
5 N/ T2 J; _4 ^6 v& o% |' ? else S_BIT = 0;
% i& u5 B. u& }$ l: n- T S_RCLK = 1;
5 d( A( j- V% j) K S_RCLK = 0;
# C" r2 c: ~( _7 g' N* F* c4 R x = x<<1;
, i: }, T9 }% s5 l# m1 t' t }8 j( j5 O/ W) @+ J" a
}( N3 m0 `5 ^/ B" W( X
: T; R0 ?) M* {: U8 u* Y
void Delay1ms() //@11.0592MHz3 j& ^- ?: H9 S/ ^ a* U$ m- y
{
" K3 s) l9 }% m. f7 e, J unsigned char i, j;
& l' z8 \2 @% M5 Z; J2 B; J. f
T$ `# s+ {" U7 v! E, o i = 15;& d# m0 s) Z) ]; x- V) S1 e) ?
j = 90;5 j2 Q X# Z' ~6 a2 F2 s7 m2 W' j
do% ?. \. t2 x8 r1 N5 I
{
+ f2 j4 L8 {6 u% d! K while (--j);# r% f$ H4 x- F% y' h
} while (--i);1 k% r- n/ |/ R: T; ~1 h5 \* ]
}5 C6 M' G( Y' [0 c, ^$ U9 t! I+ j- L
|
|