现在的情况是上电显示00,按键无动作,无法运行,本人新手,请大神教下。
电路原理图如下:
#include<a51.h>
#include<tm1650.h>
#define u8 unsigned char
#define u16 unsigned int
u8 b1,ss1,ss2,i,js;
bit dd;
sbit out=P3^5; ///输出控制口
sbit s0=P3^0; ///启动键
sbit s1=P3^3; ///设置键
sbit s2=P3^4; ///减
sbit s3=P3^2; ///加
sbit ge=P3^7;
sbit shi=P3^1;
//uchar CODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~9显示代码
char code shu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; //数码管段码
void delay(u16 q) //普通延时函数
{
char d;
while(q--)
for(d=123;d>0;d--);
}
void ZD_Init() //中断初始化子函数
{
EA=1; //打开总中断开关
ET0=1; //打开定是器0开关
TR0=0; //定时器0开始工作
TMOD=0X01; //选择定时器0工作模式1 16位定时器
TH0=(65536-30000)/256; //定时器高8位装初值 定时50MS
TL0=(65536-30000)%256; //定时器低8位装初值
}
void xianshi(u8 ss,u8 gg) //显示函数
{
if(b1==2) //判断各十位数闪烁标志位
{
if(dd)
{
ss=10;
}
}
if(b1==1) //判断各位数闪烁标志位
{
if(dd)
{
gg=10;
}
}
P1=shu[ss]+0x80;
shi=1;
delay(2);
shi=0;
P1=shu[gg];
ge=1;
delay(2);
ge=0;
}
void jianpan() //键盘扫描子程序
{
if(s3==0) ///设置建
{
delay(5);
if(s3==0)
{
while(s3==0)xianshi(ss1,ss2); //松手检测
b1++;
TR0=1;
if(b1>=3)
{
b1=0;
TR0=0;
}
}
}
if(b1!=0) ///判断是否按下设置健
{
if(s2==0) ///加建
{
delay(5);
if(s2==0)
{
while(s2==0)xianshi(ss1,ss2); //松手检测
if(b1==1) ////判断各位数加
{
ss2++;
if(ss2==10)ss2=0;
}
if(b1==2) ///判断十位数加
{
ss1++;
if(ss1==10)ss1=0;
}
}
}
if(s1==0) //减键
{
delay(5);
if(s1==0)
{
while(s1==0)xianshi(ss1,ss2); ///松手检测
if(b1==1) ///判断各位数减
{
ss2--;
if(ss2==255)ss2=9;
}
if(b1==2) ////判断十位数减
{
ss1--;
if(ss1==255)ss1=9;
}
}
}
}
if(b1==0) ///启动电焊键
{
if(s0==0)
{
delay(5);
if(s0==0)
{
while(s0==0);
js=ss1*10+ss2;
if(js!=0)
{
TR0=1;
out=0;
}
}
}
}
}
void main()
{
ZD_Init(); //中断初始化
while(1)
{//TM1650_Set(0x48,0x51);//为5级亮度,开显示八段显示方式,后一个字节中高位用于亮度,低位用于七段或八段显示方式和开关显示
//如:0x71为七级亮度,八段显示方式,开显示;0x79为为七级亮度,七段显示方式,开显示
//TM1650_Set(0x68,shu[xianshi(ss1)]);
//TM1650_Set(0x6A,shu[(xianshi(ss2)]);
TM1650_Set(0x6C,shu[ss2]);
TM1650_Set(0x6E,shu[ss1]);
//xianshi(ss1,ss2); //显示子函数
jianpan(); //键盘子程序
}
}
void Time0() interrupt 1 using 0 //中断函数
{
TH0=(65536-30000)/256; //定时器高8位装初值 重装初值
TL0=(65536-30000)%256; //定时器低8位装初值 重装初值
if(b1!=0)
{
i++;
if(i==10) //数码管的闪烁
{
i=0;
dd=~dd;
}
out=1;
}
else
{
js--;
if(js==0) //点焊延时输出
{
TR0=0;
out=1;
}
}
}
点焊机.rar
(190.66 KB, 下载次数: 30)
|