原程序是本壇下的點焊機程序,只有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;
}
}
}
}
|