幕布链接
https://www.mubucm.com/doc/M9OgAKgaRG
参考《零基础学51单片机(C语言版)》
两个按键控制多位数字增、减并用8位数码管显示
#include<reg51.h>
sbit KeyAdd=P3^0;
sbit KeyDec=P3^1;
#define WDM P0
sbit DuanSuo=P2^2;
sbit WeiSuo =P2^3;
unsigned char code DMtable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char code WMtable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char TData[8];
void DelayUs(unsigned char tu);
void DelayMs(unsigned char tm);
void Display(unsigned char ShiWei,unsigned char WeiShu);
void main (void)
{
unsigned char num=0;
KeyAdd=1;
KeyDec=1;
while(1)
{
if(!KeyAdd)
{
Display(0,8);
if(!KeyAdd)
{
while(!KeyAdd)
{
Display(0,8);
}
if(num<99)
{
num++;
}
}
}
if(!KeyDec)
{
Display(0,8);
if(!KeyDec)
{
while(!KeyDec)
{
Display(0,8);
}
if(num>0)
{
num--;
}
}
}
TData[0]=DMtable[num/10];
TData[1]=DMtable[num%10];
Display(0,8);
}
}
void DelayUs (unsigned char tu)
{
while (--tu);
}
void DelayMs (unsigned char tm)
{
while (tm--);
}
void Display(unsigned char ShiWei,unsigned char WeiShu);
{
unsigned char i;
for(i=0;i<WeiShu;i++)
{
//WDM=0;
//DuanSuo=1;
//DuanSuo=0;
WDM=WMtable[i+ShiWei];
WeiSuo=1;
WeiSuo=0;
WDM=TData;
DuanSuo=1;
DuanSuo=0;
DelayMs(2);
}
}
|