幕布链接
https://www.mubucm.com/doc/x2PqLc54Ha
参考《零基础学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,0x6f,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 WeiSshu);
void main (void)
{
unsigned char num=0;
KeyAdd=1;
KeyDec=1;
while(1)
{
if (!KeyAdd)
{
DelayMs(10);
if(!KeyAdd)
{
while(!KeyAdd);
if(num<9>)
{
num++;
}
}
}
if(!KeyDec)
{
DelayMs(10);
if(!KeyDec)
{
while(!KeyDec);
if(num>0)
{
num--;
}
}
}
TData[0]=DMtable[num%10];
Display (0,1);
}
}
void DelayUs(unsigned char tu)
{
while(--tu);
}
void DelayMs(unsigned char tm)
{
while(tm--)
{
DelayUs(248);
DelayUs(248);
}
}
void Display(unsigned char ShiWei,unsigned char WeiSshu);
{
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=1;
DelayMs(2);
}
}
|