⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 单片机主板监控程序.c

📁 系统的最小板程序
💻 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 + -