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

📄 ceshi.c

📁 本科毕业设计做的一个小玩意。设计的语音播报记事器系统使用AT89S52单片机为微控制器
💻 C
字号:
     #include <reg51.h>
     #define uint unsigned int
     #define uchar unsigned char
     void dlms(void);
     uchar kbscan(void);

     void delay1ms( uint x)
   {
     uchar j;
     while(x--)
     {
       for(j=0;j<125;j++)
       {;}
     }
   }

    void dlms(void)
   {
     uchar i;
       for(i=200;i>0;i--)
    {  }
   }

   uchar kbscan(void)
   {
      uchar sccode,recode;
      P0=0xf0;                                //p0.0---p0.3发全0,p0.4--p0.7输入
      if((P0&0xf0)!=0xf0)                     //如果p0口高四位不全为1,有键按下
       { dlms();                              //延时去抖动
         if((P0&0xf0)!=0xf0)                  //重读输入值
          {  sccode=0xfe;                     //最底位置0
             while((sccode&0x10)!=0)          //不到最后一行循环
             { P0=sccode;                     //p0口输出扫描码
               if((P0&0xf0)!=0xf0)            //如果p0.4--p0.7不全为1,该行有键按下
                 { recode=P0&0xf0;
                   sccode=sccode&0x0f;        //保留p0口高四位输入值,低四位变为全1,作为列值
                   return(sccode+recode);
                 }
          else
             sccode=(sccode<<1)|0x01;         //如该行无键按下,查下一行,行扫描值左移一位
           }
        }
     }
     return(0);
   }


     main()
   {
     uchar code tab[15]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79 };
     uchar i;
     uchar key;
     uchar l;
     while(1)
     {  P3=0x00;
        key=kbscan();
        if(key!=0)
          l=key;
          dlms();
         // delay1ms(1);
        for(i=0;i<15;i++)
          {
            if(l==0xee)
              P1=0x3f;
            else if(l==0xde)
              P1=0x06;
            else if(l==0xbe)
              P1=0x5b;
            else if(l==0x7e)
              P1=0x4f;
            else if(l==0xed)
              P1=0x66;
            else if(l==0xdd)
              P1=0x6d;
            else if(l==0xbd)
              P1=0x7d;
            else if(l==0x7d)
              P1=0x07;
            else if(l==0xeb)
              P1=0x7f;
            else if(l==0xdb)
              P1=0x6f;
            else
              P1=0xff;
                //P1=tab[i];
            //P1=0x3f;
            delay1ms(1);
            P3+=1;
            //delay1ms(1);

          }
      }
   }


   //0xee 0xde 0xbe 0x7e
   //0xed 0xdd 0xbd 0x7d
   //0xeb 0xdb 0xbb 0x7b
   //0xe7 0xd7 0xb7 0x77

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -