您当前的位置:五五电子网电子知识单片机-工控设备51单片机键盘显示模块调试程序 正文
键盘显示模块调试程序

键盘显示模块调试程序

点击数:7152 次   录入时间:03-04 11:43:36   整理:http://www.55dianzi.com   51单片机
键盘显示模块调试
其程序框图如下图所示:
 #include <reg51.h>
#include <absaCC.h>
#define com XBYTE[0X9FFF]     ;8279命令入口地址
#define dat XBYTE[0x9eff]     ;8279数据入口地址
#define uchar unsigned char
#define uint unsigned int
sbit cflag=ACC^7;
uchar j=0,sq;
uchar code keytab[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
                       0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};  ;键码表
uchar code tab[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
                    0x7c,0x39,0x5e,0x79,0x71};           ;字形表
void delay(uint t);   ;延时函数
void clr();           ;清除8279RAM数据
void serve();         ;8279中断服务函数

void main (void)       ;主函数
     {uint i;
      com=0xd1;        ;送清除指令
      do{ACC=com;}
      while(cflag!=0);  ;查状态寄存器DU,直到DU为零
      com=0x34;         ;定标值20
      com=0x10;         ;写8279工作模式:左端送入,8字符显示
      delay(200);       ;延时
      com=0x90;         ;写入8279显示RAM起始0单元,自动加1
      EA=1;             ;开中断
      EX0=1;
IT0=1;
     do{}
     while(1);          ;等待按键中断
   }
void serve() interrupt 0        ;中断服务函数
  {
       uint i;
       com=0x40;         ;读FIFO中的键值
       sq=dat&0x3f;      ;保留键编码部分
       for(i=0;i<16;i++)
           {if(sq==keytab[i]) break;   ;查键码表
                 }
                    dat=tab[i];            ;查字形表,将按键值送显示
  }
void delay(uint t)                     ;延时函数
    {uint i,j;
      for(i=0;i<t;i++);
         for(j=0;j<100;j++);
    }
void clr(void)         ;清除8279显示RAM数据函数 
  {com=0xd1;
   do{ACC=com;}
     while(cflag!=0);
     j=0;
     com=0x90;
     dat=0x40;
   }
测试过程中,每按一键,数码管显示相应的值,即调试成功。



本文关键字:程序  键盘  51单片机单片机-工控设备 - 51单片机