現在的情況是上電顯示00,按鍵無動作,無法運行,本人新手,請大神教下。
電路原理圖如下:
20190511130816.png (113.62 KB, 下載次數: 36)
下載附件
2019-5-11 13:09 上傳
#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, 下載次數: 32)
2019-5-11 13:03 上傳
點擊文件名下載附件
這是程序和電路
|