按键控制数字累加,每次按下k1,数码管上显示的数字加一,到达数字9置顶。
#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
u16 n=0;
u8 sumaguan[17]={0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d,0x7d , 0x07 , 0x7f ,
0x6f , 0x77 , 0x7c, 0x39 , 0x5e , 0x79 , 0x71,0x00};
sbit k1=P3^1;
sbit q=P2^2;
sbit w=P2^3;
sbit e=P2^4;
void delay(u16 s)
{ unsigned int x,y;
for(x=s;x>0;x--)
for(y=110;y>0;y--);
}
void display()
{
switch(1)
{
case(1):
q=0;w=0;e=0;break;
case(2):
q=1;w=0;e=0;break;
case(3):
q=0;w=1;e=0;break;
case(4):
q=1;w=1;e=0;break;
case(5):
q=0;w=0;e=1;break;
case(6):
q=1;w=0;e=1;break;
case(7):
q=0;w=1;e=1;break;
case(8):
q=1;w=1;e=1;break;
}
P0=sumaguan[n];
delay(5);
P0=0x00;
}
void key()
{
if(k1==0&&n<10)
{
delay(5);
if(k1==0)
{
n++;
while(1)
{ if(n==10)
{
n=0;
}
display();
if(k1==1)
{
break;
}
}
}
while(!k1);
}
}
void main()
{
while(1)
{
key();
}
}
8*8LED显示自己设定的文字和数字。(列程)
#include"reg51.h"
#include"intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit RCLK=P3^5;
sbit SRCLK=P3^6;
sbit SER=P3^4;
void send(u8 date)
{ u8 i;
SRCLK=0;
RCLK=0;
for(i=0;i<8;i++)
{ SER=date>>7;
date<<=1;
SRCLK=1;
_nop_();
_nop_();
SRCLK=0;
}
RCLK=1;
_nop_();
_nop_();
RCLK=0;
}
void diaplay()
{ u16 j;
for(j=0;j<8;j++)
{ switch(j)
{case 0:send(0x08);P0=0x7f;break;
case 1:send(0x10);P0=0xbf;break;
case 2:send(0x3e);P0=0xdf;break;
case 3:send(0x6a);P0=0xef;break;
case 4:send(0x2a);P0=0xf7;break;
case 5:send(0x7e);P0=0xfb;break;
case 6:send(0x2a);P0=0xfd;break;
case 7:send(0x2a);P0=0xfe;break;
}
send(0x00);
}
}
void delay(u16 z)
{ u16 n,m;
for(n=z;n<0;n--)
for(m=110;m<0;m--);
}
void main()
{ diaplay();
while(1);
}
|