原程序是本坛下的点焊机程序,只有1个数码管10个挡,自己用2个数码管
改为20个挡,想改为99个挡,不会了,求大家指导将程序改为99个挡,
2个数码管静态的动态的都可以,共阴共阳都行。/
#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u20; //对数据类型进行声明定义
typedef unsigned char u10; //对数据类型进行声明定义
sbit P31=P3^0;//数码管第1位
sbit P30=P3^1;//数码管第2位
sbit k1=P3^2; //将单片机的P3.2端口定义为档位上
sbit k2=P3^3; //将单片机的P3.3端口定义为档位下
sbit k3=P3^4; //将单片机的P3.4端口定义为手控
sbit k4=P3^5; //将单片机的P3.5端口定义为脚踏
sbit out=P3^7; //继电器输出
//数码管真值表//
u10 code LED_CODE[20]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};//显示0~20的值
//延时函数 //
void delay(u20 x)
{
u20 i,j;
for(i = x; i > 0; i --)
for(j = 110; j > 0; j --);
}
//主函数//
void main()
{
u10 i = 1;
out=1;
while(1)
{
P2 = LED_CODE[ i];
P31=0;
if(i>=10)
P30=0;
P1 =0x06;
if(i<10)
P30=1;
if(i<0)
i=19;
if(k1==0)
{
delay(5);
if(k1==0)
{
while(!k1) //档位功能0-9
delay(5);
P2 = LED_CODE;
i = (i + 1) % 20;
delay(10);
}
}
if(k2==0)
{
delay(5);
if(k2==0)
{
while(!k2) //档位功能0-9
delay(5);
P2 = LED_CODE;
i = (i - 1) % 20;
delay(10);
}
}
if(k3==0)
{
delay(5);
if(k3==0)
{
while(!k3)
delay(5);
out=0;
delay(i*200);//手控输出延时
out=1;
}
}
if(k4==0)
{
delay(5);
if(k4==0)
{
while(!k4)
delay(5);
out=0;
delay(i*300);//脚蹋输出延时
out=1;
}
}
}
}
//这是原程序
#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8; //对数据类型进行声明定义
sbit k1=P3^2; //将单片机的P3.2端口定义为档位上
sbit k2=P3^3; //将单片机的P3.3端口定义为档位下
sbit k3=P3^4; //将单片机的P3.4端口定义为手控
sbit k4=P3^5; //将单片机的P3.5端口定义为脚踏
sbit out=P3^7; //继电器输出
//数码管真值表//
u8 code LED_CODE[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
//延时函数 //
void delay(u16 x)
{
u16 i,j;
for(i = x; i > 0; i --)
for(j = 110; j > 0; j --);
}
//主函数//
void main()
{
u8 i = 1;
out=0;
while(1)
{
P1 = LED_CODE;
if(k1==0)
{
delay(5);
if(k1==0)
{
while(!k1) //档位功能0-9
delay(5);
P1 = LED_CODE;
i = (i + 1) % 10;
delay(10);
}
}
if(k2==0)
{
delay(5);
if(k2==0)
{
while(!k2) //档位功能0-9
delay(5);
P1 = LED_CODE;
i = (i - 1) % 10;
delay(10);
}
}
if(k3==0)
{
delay(5);
if(k3==0)
{
while(!k3)
delay(5);
out=1;
delay(i*200);//手控输出延时
out=0;
}
}
if(k4==0)
{
delay(5);
if(k4==0)
{
while(!k4)
delay(5);
out=1;
delay(i*300);//脚蹋输出延时
out=0;
}
}
}
}
|