|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
制作出来的实物图如下:0 V, W+ k* H0 q
0 L, H$ \& C/ w# x c
altium Designer画的PCB图如下:
- U" t `$ a$ s9 c* A+ K B- u: R5 m7 V' a5 h& B$ M
![]()
! x2 P6 b' i: h2 T: O7 G3 Q& }: r0 h- n3 ?/ F& U' q/ ^
单片机源程序如下:2 Z, C) m# d! i* ~0 v
include "reg51.h": G* l3 ^2 a) r0 _7 G! ^3 X* j
#include "intrins.h"0 g1 l, p) f; X- ^ ~
* i( ~# n2 |3 \sfr P5 = 0xC8;5 H, w9 C0 B s0 d' [
sfr P1M0 = 0X92;
' Z: H8 Q. X: C msfr P1M1 = 0x91;& R& V5 e& ?+ F' Y" w1 M
sfr P3M0 = 0XB2;' S2 v1 T! j! l2 @1 j
sfr P3M1 = 0xB1;2 P9 F) k! W" a/ K
sfr P5M0 = 0XCA;
" ^9 C7 R( G+ H H N$ c/ N d* q! Wsfr P5M1 = 0xC9;. m8 N: _$ o0 u" o: q- \
- Z1 R! ?9 C7 I8 Y' }# Msbit S_RCLK = P1^7;//位移动信号& `- x( b" p5 t) O n/ |4 ~, i; ]
sbit L_RCLK = P1^6;//平行输出信号
: o" [3 Z& T8 E# ~# H% |sbit S_BIT = P1^5;//位输入
$ K% @6 v5 |: y; _6 o R) x4 ]/ T& f. a% _3 v& D2 M3 q
//bit ; //标志位,虚拟的按键
O9 _6 `6 }2 b+ c1 Tunsigned char ct;0 @% c) _# u- d5 Z. {6 ~. Y* \
//unsigned int //255 65536. G4 a! s) l- j4 O0 F( i4 m
unsigned char code SEG_tab[]={0x3f,0x06,0x5b,0x4f,
/ ^+ H3 a% ~/ B: B' P 0x66,0x6d,0x7d,0x07,
% }( Z1 z7 u% m k 0x7f,0x6f,0x77,0x7c,. ]* i, ^. z, I) N
0x39,0x5e,0x79,0x71,0x40,0x80};1 O6 X3 [2 U# @' X
/ G3 b, E- L( ovoid Send_595(unsigned char x);
% m1 P' e. c; d: Hvoid Delay1ms();! A; x% w3 I. w& s' P- ?1 W; X
0 d" X& R' s" @7 X3 _7 F1 u H/ M+ M& J( {1 ?" [% n: ?4 ?: _
main(void)( }0 F6 J m0 ]- Q. B8 ^
{
- v' R. t/ l4 t P1M0 = 0X00;: U4 K8 X% k9 _; O" G) _7 E$ Z9 Q. B
P1M1 = 0X00; //0000 0000- f3 Q# }4 B, u; `9 v" r, U
P3M0 = 0X00; //0000 1000! w- D1 s% U9 K/ S+ ]8 e
P3M1 = 0X00;
8 \1 ]+ u8 G; ?! P( ~; ?! ? P5M0 = 0X00;
0 z; q" D x9 C# W, S+ n' r P5M1 = 0X00;2 x7 r: b3 O; p; A1 ]1 R
L_RCLK = 0;, Y, \4 X- Y- d! |0 I2 i9 f
S_RCLK = 0;
/ C0 g! {; {4 R* X x8 h3 n9 O6 X S_BIT = 0;//位输入
: y& i/ w. P9 s% F7 L4 o+ p while(1)
3 h0 C' D- P. p* k* [ { 6 J- f" t4 n5 J" U/ f5 o
static unsigned char ct=0;% `9 ]& _8 L, a5 ^
unsigned int j=0;
$ a" ]/ P6 E/ S! X4 K+ f/ ? j=~(0x01<<ct);
" ]- o/ @* T* u, f2 V6 g% Q$ B Send_595(j>>8);//片选相数码管 位码高8位 & `1 S0 n/ V! O$ f- ^& i
Send_595(j);//片选相数码管 位码低8位
: P$ ]: _8 \. Q+ y Send_595(SEG_tab[ct]);//数码管数据- Y1 Z+ f8 \) n4 K1 f3 U
L_RCLK = 1;
; n+ A+ _1 Q/ i$ a5 s9 k- k! E: \1 ] L_RCLK = 0;
5 r; l# p7 D4 {# M, k' d Delay1ms();) A' H+ H/ w* c! R
if(ct<16)0 {5 V, k4 B+ G2 B3 e
{
8 n& g& n7 {, r0 K8 L; N$ F+ M! Q- d2 B ct++;* |0 M8 [# \3 R) @7 x, r
}; V2 x1 n, | E1 O2 n7 D
else ct=0;, b/ c6 h# y7 A, A8 m
}, }+ u2 r+ h+ `. a2 ^' s
}1 R( @: k) u) B U
3 T$ ]$ w$ I( I6 T
; _, j3 v, c o$ tvoid Send_595(unsigned char x)
; D4 ^8 i- ~* S{: L: a P% n E" P
unsigned char i;" e: B$ N6 l( j! o+ W* s, X: u
for(i=0;i<8;i++): h/ J! C2 e% c
{
: M; p9 S6 V; K U1 F if(x&0x80) S_BIT = 1;) d8 M+ t% Y( s, `9 S& a3 V% [
else S_BIT = 0;
' y1 N1 f7 J% }5 X S_RCLK = 1; + K$ g, a; q1 L' y( F4 ]8 E
S_RCLK = 0;
! B8 F$ H; U. X; O8 u x = x<<1;
5 w7 z- ^8 T$ P }
4 x7 k- y% M3 a2 B1 L1 ?# J}
# o4 @$ [; B/ ~ c" x" h
& C u3 K6 `3 N1 y1 |) Mvoid Delay1ms() //@11.0592MHz2 \' }/ [: v) c& o3 R2 s; F- d
{- {: Y! _0 F: f* k; M
unsigned char i, j;
; K- ^ q* D, r+ H$ L, Q- D% N: F
# z# {4 b! O. r i = 15;
5 t7 k5 o j1 f# U0 T/ ?$ Z j = 90;0 @! d4 S* a: u6 Q1 _0 G' K2 z: }
do+ C* Z/ P& e* [" y9 Q& |
{
# e' {$ v, }$ j- f' S9 x! x while (--j);
1 X; Q' J2 G( S1 t) A/ w } while (--i);
% R' y, [- R: O; F/ d}
/ E( N, y" Q! t4 F/ B7 e' Z |
|