|
#include"reg51.h"//头文件
#include "absacc.h"
#define uint unsigned int//宏定义
#define uchar unsigned char
uint nov;
uint key();
void jianpan();
uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void display();
uchar Chu_shi();
sbit cs1=P3^5;
sbit cs2=P3^6;
sbit wr=P3^7;
uint shuzi;
void delay(uint z)//延时程序
{
uint s,j;
for(s=100;s>0;s--)
for(j=z;j>0;j--);
}
void main()//主程序
{
P0=0xff;
while(1)
{
display();
jianpan();
}
}
uchar Chu_shi()//子程序 返回值
{
uchar e1,e2;
P3=0x0f;
e1=P3&0x0f;
if(e1!=0x0f)
{
delay(2);
if(e1!=0x0f)
{
e1=P3&0x0f;
P3=0xf0;
e2=P3&0xf0;
}
return(e1+e2);
}
return 0xff;
}
uint key()//子程序
{
switch(Chu_shi())
{
case 0xee:nov=0;break;
case 0xde:nov=1;break;
//case 0xbe:nov=2;break;
//case 0x7e:nov=3;break;
//case 0xed:nov=4;break;
//case 0xdd:nov=5;break;
//case 0xbd:nov=6;break;
//case 0x7d:nov=7;break;
//case 0xeb:nov=8;break;
//case 0xdb:nov=9;break;
//default :flag=0;break;
}
return nov;
}
void display()
{
key();
P0=0xfd;
wr=0;
cs2=0;
wr=1;
cs2=1;
P0=seg[nov];
wr=0;
cs1=0;
wr=1;
cs1=1;
delay(2);
}
、这个程序怎么用switch语句改数码管显示
比如 按下点阵的0按键 数码管0xfe那一个数码管显示0
按下点阵1按键 数码管的0xfd那一个数码管显示1
不重叠的 独立显示 按什么显示在特定位置 |
|