|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于下面的代码 求大神改一个只用两位数码管显示 根据按键显示 01 02 -----一直到15
3 Y) q( b# ~( S# W# G$ b$ O4 c6 \( u; J$ U
5 A2 |# T( o, n+ A#include<at89x52.h> //头文件
0 F1 p% Z* o: e) a% L#define uchar unsigned char //宏定义
3 Y! E. n2 g* c3 W) W#define uint unsigned int
; W" s, G& n4 N7 K' x1 Cuchar key,n,i; //定义变量
6 o: |- U5 K0 n- L9 x& r7 n5 i7 y5 B. Uuchar code table[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77}; //反转法矩阵键盘的各个按键的计算值) P* t4 F4 l4 M, o# L1 [: W
uchar code yin[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴极数码管显示0~F
G7 w _0 B" }void delay(uint i) //延时函数
, `6 }& c6 e" ]' \: i; d{
& s, V& [# Y0 k# }- u while(i--);
9 a) u$ G( g( q+ f}, X2 [ B! { S2 M S& q
void keyscan()9 C. X; O( ^ G% E0 A
{
$ j1 I* Q5 g; p3 c8 e4 ?8 \ uchar l,h,i; //定义局部变量,用l得出低4位的值,用h得出高4位的值1 O, ` Z5 Q1 u1 ~
P3=0x0f; //给P3赋值00001111* I1 U' s# M' A/ l* R+ M
l=P3&0x0f;
2 |; G9 }, }+ ^ H/ c$ s6 _ if(l!=0x0f)3 j0 O# i# s( _* @4 x/ n! b: {
{, W1 M0 u4 c: W6 h- O, e; v
delay(100);
n- L' |9 d# d& I P3=0x0f; 5 t) P: A/ f, |& t# |1 e- k& i
l=P3&0x0f;
/ F& s: j4 ~+ Z2 M! _ if(l!=0x0f)9 L. l9 _# T/ p2 o# ~5 i
h=P3&0xf0;
, g5 K! _) l9 S; s P3=0xf0; //给P3赋值11110000
7 ^1 V: ^; I1 J+ b; c* D; m h=P3&0xf0; //若有键按下,得出低四位的值 @1 J" G/ n, C/ ]8 W
}
; w [0 y0 r9 w# Q& i7 v0 V key=l+h; //高4位的值与低4位的值相加* \+ M9 s+ R5 w0 i/ g' {
for(i=0;i<16;i++)
9 m- o' ]2 O1 @" i' Z5 c& [ {# g6 A/ B! |/ ^$ @ R' x) x& q, Q
if(key==table) //通过查表得出n的值
+ Q0 A% U }' B7 a* s4 c n=i;" {4 u6 x& i8 i; h# P$ t8 a/ H
}
1 |/ `+ M! S6 ^. k8 E9 g: E) V}
6 C" a ^9 g" B- C, h( F( G; b
void main()
: V6 {& y! |5 a$ Q{4 {7 c7 ]# D) Q, u9 d
3 w8 I$ ~- U- R2 q, ?
while(1)
/ P4 u( f; J2 I: r' t4 u {5 N' [: a4 e6 C! x3 v; y% d6 V9 j; U
keyscan(); //扫描按键" O: k$ ]$ k( g0 q1 K2 O5 J E
for(i=0;i<6;i++) //送入位选信号 控制数码管
: ?/ C% W' a4 M# q! ]9 C+ I {
- j; D9 N; G* ^7 Z0 F P2_6=1 2_7=0;
9 l2 T/ j u0 A- l6 h P0=yin[n];
! ~9 Z' z' r( ~ P2_6=0 2_7=1;
, G$ D: m- E3 i8 M$ O! l switch(i). {7 c H: k. o w8 ?) A% M
{
& ]$ z. C- I" s' e! y0 o" l+ o case 0 0=0xfe;break;! { k! v1 W4 \2 V5 z
case 1 0=0xfd;break;
5 Z! F, x, j4 k$ ?: i0 Y; K( }, N# [8 F case 2 0=0xfb;break;
2 U0 F+ F+ j. p ]9 J8 l case 3:P0=0xf7;break;: n# i" H' |6 O
case 4:P0=0xef;break;
; {3 k) L9 O9 n3 |3 p/ A case 5:P0=0xdf;break;
- @8 W( j7 I% J7 x' e$ E; g default:break;+ C" {( F z J7 X. i
}
7 B& u+ N4 N' l0 r [: f' `& {
8 e- x! Z$ S9 \ I! r* r) J P2_6=0 2_7=0;
. b4 P9 \( J( n: O# h delay(100); 0 A' X7 G" u, b$ V2 {4 T
}
+ u5 w. i* {% i/ x' @& @ n }& g, y+ t( x# C3 D3 c- n
} 5 d" q, ?" O" Y- ?7 d' P
, S, | W# }, ?+ _4 f- @ |
|