📄 单片机主板监控程序.c
字号:
/*******************/
/* 键盘显示程序 */
/* */
/*******************/
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define tim 65536-5000
sbit dis0 =P2^6;
sbit dis1 =P2^5;
sbit dis2 =P2^4;
sbit dis3 =P2^3;
sbit dis4 =P2^2;
sbit key1 =P2^1;
sbit key0 =P2^0;
uchar disp[5],dis;
uchar key,keyx,ts;
int para[5],ptr;
uchar code numtab[5]={0x40,0x20,0x10,0x04,0x08};
uchar code distab[16]={0x28,0xee,0x32,0xa2,0xe4,0xa1,0x21,0xea,
0x20,0xa0,0x60,0x25,0x39,0x26,0x31,0x71};
uchar code ledtab[5]={0x08,0x10,0x20,0x40,0x80};
void time(uint t)
{
uint i;
for(i=0;i<t;i++);
}
void distran()
{
disp[4]=distab[para[ptr]%10];
disp[0]=distab[(para[ptr]/10)%10];
disp[1]=distab[(para[ptr]/100)%10];
disp[2]=distab[(para[ptr]/1000)%10];
disp[3]=~ledtab[ptr];
}
void display()
{
dis=(dis+1)%5;
P2=0xff;
P0=disp[dis];
P2=~numtab[dis];
key0=1; key1=1;
if(!key0) keyx=dis+1;
if(!key1) keyx=dis+5;
}
void keyproc()
{
if(key>0)
{
switch(key)
{
case 1: para[ptr]--; break;
case 5: para[ptr]++; break;
case 2: para[ptr]-=10; break;
case 6: para[ptr]+=10; break;
case 3: para[ptr]-=100; break;
case 7: para[ptr]+=100; break;
case 4: ptr--; break;
case 8: ptr++; break;
}
if(ptr>4) ptr=0;
if(ptr<0) ptr=4;
if(para[ptr]<0) para[ptr]=0;
if(para[ptr]>9999) para[ptr]=9999;
distran();
}
key=0;
}
void timer0() interrupt 1
{
TH0=tim>>8; TL0=tim; display();
}
void main()
{ char i;
TMOD=0X11;IE=0x82;
TH0=tim>>8; TL0=tim; TR0=1;
dis=0;ptr=0;
for(i=0;i<5;i++) para[i]=i;
distran();
for(;;)
{
if(keyx>0)
{
key=keyx;
while(keyx!=0) {keyx=0; time(3000);}
keyproc();
}
time(1000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -