独立按键控制数码管
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*独立键盘控制数码管*/
#include
//#include "intrins.h"
sbit P34=P3^4; // LCDEN
sbit P35=P3^5; // RS
sbit P36=P3^6; //WR
sbit P37=P3^7; //RD
sbit dula=P2^6; //段选
sbit wela=P2^7; //位选
#define uint unsigned int
#define uchar unsigned char
uchar display_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x00}; //0、1、2、3、4、关闭数码管段选uchar display_data[]={0x3d,0x3b,0x37,0x2f,0x1f,0xff}; //第1、2、3、4位数码管、关闭位选
void delay(uint k) //延时程序
{
uchar i,j;
for(j=k;j>0;j--)
for(i=250;i>0;i--);
}
void display(uchar i) //显示函数程序
{
uchar j;
for(j=0;j<5;j++)
{
P0=display_data[i]; /*位值送入位寄存器*/
wela=1;
// _nop_();
// _nop_();
wela=0;
P0=display_code[i]; /*段值送入段寄存器*/
dula=1;
// _nop_();
// _nop_();
dula=0;
delay(1);
}
}
void main()
{
while(1)
{
P2=0x00;
if(P34==0) //按键LCDEN按下
{
delay(20);
if(P34==0)
{
display(1); //在第四位显示1
while(P34==0) ;
}
}
if(P35==0) //按键LCDEN按下
{
delay(20);
if(P35==0)
{
display(2); //在第三位显示2
while(P35==0) ;
}
}
if(P36==0) //按键LCDEN按下
{
delay(20);
if(P36==0)
{
display(3); //在第二位显示3
while(P36==0) ;
}
}
if(P37==0) //按键LCDEN按下
{
delay(20);
if(P37==0)
{
display(4); //在第一位显示4
while(P37==0) ;
}
}
display(5); //放开按键时不显示}
}