|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
制作出来的实物图如下:
; r+ e: Q, Y( L7 i6 I2 O![]()
; J" j" v* r [( U5 C$ }altium Designer画的PCB图如下:( S' F, Z9 y3 _, s
4 t! P3 z# _" J/ [ U% d $ a" n" w O9 L ]
' }0 Y3 i) h( Q) z; a' K( ~
单片机源程序如下:8 S3 `4 l, t: v5 t$ p
include "reg51.h"* {9 H8 D5 }, r7 L2 w b
#include "intrins.h"
. K {: M$ x' Q, G" p
( @- ?( J: ^) E8 e1 S1 L, f, Jsfr P5 = 0xC8;/ d& _! q. j+ |( Q( Z& B9 ]6 r; s$ G
sfr P1M0 = 0X92;& h# o! b3 e; p% x$ M
sfr P1M1 = 0x91;
4 E( ]: |$ Z1 N# ?( k1 X& usfr P3M0 = 0XB2;" |& b0 o+ j2 y0 [/ \5 H
sfr P3M1 = 0xB1;2 p, ~4 c1 i0 u# U3 ]" |) w s% u
sfr P5M0 = 0XCA;' r9 F7 @$ A4 V" k: `
sfr P5M1 = 0xC9;0 X; s( [- U& \
* [' Z0 G# T, d3 R4 q
sbit S_RCLK = P1^7;//位移动信号
. V6 [8 w' f# O0 z% P1 rsbit L_RCLK = P1^6;//平行输出信号
9 R( L5 G% Y7 _* @: n& Bsbit S_BIT = P1^5;//位输入
+ D" r$ K' m$ A$ ~ S
/ V) F( |/ u) s* j. ^//bit ; //标志位,虚拟的按键
; o( H, [, K! Xunsigned char ct;1 ]2 k' v* Y# h7 i- d
//unsigned int //255 65536
. K1 w, o; r0 m q6 {unsigned char code SEG_tab[]={0x3f,0x06,0x5b,0x4f,
l3 S/ B, w( j: Z 0x66,0x6d,0x7d,0x07,
4 r2 E; A: v1 ` 0x7f,0x6f,0x77,0x7c,
8 w2 R0 M- C4 a! A9 F- x 0x39,0x5e,0x79,0x71,0x40,0x80};3 A1 b7 p4 `4 w9 ^8 x
) Z' i( J3 O# o9 M
void Send_595(unsigned char x);
: r$ x9 k8 C2 r6 ]void Delay1ms();- G* A) b- ?9 i! U+ F
+ _2 H6 W* { E& K% U' ~! k. |: t
main(void)
6 [; h( g4 E. Y2 O{$ t, Q( ]0 f4 k8 |* y1 Q7 T
P1M0 = 0X00;
* F& E0 c. y+ S. q: l, ~ P1M1 = 0X00; //0000 0000
! d& |, W0 P) | P3M0 = 0X00; //0000 1000
7 Q; A: j9 _. K9 h; `' y P3M1 = 0X00;
0 @/ `. J9 ^& b" j* C P5M0 = 0X00;
+ [# Q' F( p5 d0 X% v4 z. X& h# v8 D P5M1 = 0X00;
# W7 v8 `4 f- g# R% o% a, o L_RCLK = 0;
2 j1 f4 T {; s: r$ r3 j9 I S_RCLK = 0;
) @+ M3 c; D$ E, P' m. B) _ S_BIT = 0;//位输入
* J" g: y' a; ]+ t while(1)
; B6 }+ G+ G2 x2 M0 M# X s% V" @' \% x { % t6 }1 J- r" E& K; b- j
static unsigned char ct=0;6 M' V# B+ x: b$ D: r
unsigned int j=0;) E' L4 C! U" A. t
j=~(0x01<<ct);
8 v% C/ A h! e' k6 k: o Send_595(j>>8);//片选相数码管 位码高8位 , n7 R, w& S+ [: j+ R
Send_595(j);//片选相数码管 位码低8位 $ D+ n9 j; c8 I5 C$ o* T
Send_595(SEG_tab[ct]);//数码管数据$ F. J I# D: W( U+ q8 R; x8 `
L_RCLK = 1;
W2 ^, V6 W" D. b1 P } L_RCLK = 0;
- q4 x% \3 }+ M& g/ k( x0 \ Delay1ms();6 h0 x' S ?" l& U4 }' K8 H' c9 i) }
if(ct<16)
5 T* X- |0 `+ T" @ Q2 O {- l6 I! P+ V9 v+ q5 Q" B
ct++;
' V7 A7 c' b7 n: l& }- k9 s2 Y }
# b: c% @# z' n3 X2 ~ else ct=0;7 ?4 l3 k; X& c5 c
}6 x% P3 c7 \+ H4 p8 C9 }
}
6 B/ E s5 _# E0 C! `& n! E& E ^5 g1 J+ Y
) m* b' F+ u% D1 Tvoid Send_595(unsigned char x)
5 U0 p" o7 O; g# n) c{, X3 A. P/ r2 i. L ]8 F# ^0 V
unsigned char i;
+ u! \( p* _; J& ? for(i=0;i<8;i++)
: x; U8 v4 l. x* P9 t {3 f" x8 S" W: n. V( a& H
if(x&0x80) S_BIT = 1;9 F3 \. }$ G( S9 d9 R) L
else S_BIT = 0;& Z8 S4 G3 o7 }' o
S_RCLK = 1; 3 N% e3 w/ q0 S) I' @ h6 {
S_RCLK = 0;
6 F" p0 @- J* ]( [ x = x<<1;* n# a: n8 S: K* c9 }) I4 X: ~' B9 s
}( z! u$ C0 \8 p3 M2 O3 ] h
}
0 U9 o* {. A: M5 K. ~3 m& O, K) r
$ z, N& A5 q) D. i& Pvoid Delay1ms() //@11.0592MHz( a8 T2 C# m1 L. E0 o" D
{
7 t J0 Q! o4 T. I* e- i unsigned char i, j;, D6 [6 q, z' @' W: L; P
1 \3 ~0 u) ^, r. v# _ i = 15;' E1 C( j+ v D
j = 90;+ Y- N/ a4 I" u( x
do, e1 [9 T: z+ S& v
{% L( R# x2 o: Z3 `! i ~/ J% Z( Z
while (--j);
7 o0 |# d d- i$ b* d9 Q! M } while (--i);' A* {: _" H7 L$ Y/ x- u0 }
}% W# }6 N) K4 S7 o2 M6 N; a/ Y
|
|