51单片机:利用8位数码管动态显示,实现按几次显示几的计数功能
实验要求:增加1个按键,按一下增加1次,按下几次,显示几,例如按下10次,显示10。
源代码
#include <reg52.h>
#include <stdlib.h>
#define uint unsigned long
#define uchar unsigned char
sbit D1 = P2^0;
sbit D2 = P2^1;
sbit D3 = P2^2;
sbit D4 = P2^3;
sbit D5 = P2^4;
sbit D6 = P2^5;
sbit D7 = P2^6;
sbit D8 = P2^7;
sbit S1 = P1^7;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint num;
void delayms(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=10;j>0;j--);
}
void display(unsigned long num)
{
D1=1;
P0=table[(num/10000000)];
delayms(1);
P0=0XFF;
D1=0;
D2=1;
P0=table[(num%10000000)/1000000];
delayms(1);
P0=0XFF;
D2=0;
D3=1;
P0=table[(num%1000000)/100000];
delayms(1);
P0=0XFF;
D3=0;
D4=1;
P0=table[(num%100000)/10000];
delayms(1);
P0=0XFF;
D4=0;
D5=1;
P0=table[(num%10000)/1000]