📄 shukongdianyuanyuandaima.txt
字号:
http://blog.21ic.com/user1/2695/archives/2006/18469.html
#i nclude<reg52.h>
#i nclude<absacc.h>
#i nclude<math.h>
#i nclude<stdio.h>
#define DAC0832 XBYTE[0X7FFF]
unsigned char code table0[]={0xfd,0x61,0xdb,0xf3, 0x67,0xb7,0xbf,0xe1,
0xff,0xf7};
unsigned char code table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,
0xfe,0xf6,0x80,0x40,0x20,0x10,0x08};
unsigned char k;
unsigned char t;
unsigned char s[3];
void delay1200ms(void) //延时模块
{
unsigned char m,n,k;
for(k=20;k>0;k--)
for(m=120;m>0;m--)
for(n=248;n>0;n--);
}
void delay10ms(void)
{
unsigned char m,n;
for(m=20;m>0;m--)
for(n=248;n>0;n--);
}
void output(void)//输出模块
{
t=s[2]*100+s[1]*10+s[0];
if(t<=179)
DAC0832=t;
}
void clear(void)//清零模块
{
SCON=0x00;
TI=0;
s[2]=0;
SBUF=table[0];
while(!TI);
TI=0;
s[1]=0;
SBUF=table0[0];
while(!TI);
TI=0;
s[0]=0;
SBUF=table[0];
while(!TI);
output();
}
void getch(void)//键盘模块
{ unsigned char X,Y,Z;
unsigned char h;
h=1;
while(h)
{
P1=0xff;
P1=0x0f;
if(P1!=0x0f)
{delay10ms();
if(P1!=0x0f)
{
h=0;
X=P1;
P1=0xf0;
Y=P1;
Z=X|Y;
switch ( Z )
{
case 0x7e: k=0; break;
case 0x7d: k=1; break;
case 0x7b: k=2; break;
case 0x77: k=3; break;
case 0xbe: k=4; break;
case 0xbd: k=5; break;
case 0xbb: k=6; break;
case 0xb7: k=7; break;
case 0xde: k=8; break;
case 0xdd: k=9; break;
case 0xdb: k=10;break;
case 0xd7: k=11;break;
case 0xee: k=12;break;
case 0xed: k=13;break;
case 0xeb: k=14;break;
case 0xe7: k=15;break;
}
}
}
}
}
void increase(void)//步进加模块
{
if(t==179)
t=179;
else
t++;
DAC0832=t;
SCON=0x00;
TI=0;
SBUF=table[t/100];
while(!TI);
s[2]=t/100;
TI=0;
SBUF=table0[t%100/10];
while(!TI);
s[1]=t%100/10;
TI=0;
s[0]=0;
SBUF=table[t%10];
while(!TI);
s[0]=t%10;
output();
}
void decrease(void)//步进减模块
{
if(t==0)
t=0;
else
t--;
DAC0832=t;
SCON=0x00;
TI=0;
SBUF=table[t/100];
while(!TI);
s[2]=t/100;
TI=0;
SBUF=table0[t%100/10];
while(!TI);
s[1]=t%100/10;
TI=0;
s[0]=0;
SBUF=table[t%10];
while(!TI);
s[0]=t%10;
output();
}
void set(void)//置数模块
{
clear();
SCON=0x00;
TI=0;
delay1200ms();
getch();
s[2]=k;
SBUF=table[k];
while(!TI);
delay1200ms();
TI=0;
getch();
s[1]=k;
SBUF=table0[k];
while(!TI);
delay1200ms();
TI=0;
getch();
s[0]=k;
SBUF=table[k];
while(!TI);
}
void main(void)//主函数
{
clear();
while(1)
{
getch();
switch(k)
{
case 10: clear();break;
case 11: set();break;
case 12: increase();break;
case 13: decrease();break;
case 15: output();break;
default: break;
}
delay1200ms();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -