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

📄 7279.lst

📁 这是一个ha7279键盘显示的C语言源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 163                  NOSELECT7279;           //置CS高电平 
 164          }
 165          */
 166          
 167          void MoveLeft(void)
 168          {
 169   1              Send7279Byte(0xA1);     //发左移指令 
 170   1              NOSELECT7279;           //置CS高电平 
 171   1      }
 172          
 173          void MoveRight(void)
 174          {
 175   1              Send7279Byte(0xA0);     //发右移指令 
 176   1              NOSELECT7279;           //置CS高电平 
 177   1      }
 178          
 179          unsigned char code BdSeg[]={
C51 COMPILER V7.06   7279                                                                  01/24/2005 10:04:57 PAGE 4   

 180                                                  0x7e,0x30,0x6d,0x79, // 0 1 2 3 
 181                                  0x33,0x5b,0x5f,0x70, // 4 5 6 7
 182                                  0x7f,0x7b,0x77,0x1f, // 8 9 a b
 183                                  0x4e,0x3d,0x4f,0x47, // c d e f
 184                                  0x00,0x01}; 
 185          
 186          void DispLED(char *DispBuf,char ShowDot)//ShowDot 显示小数点位 
 187          {
 188   1      char i,ch;
 189   1              ShowDot--;
 190   1              for (i=0;i<6;i++)
 191   1              {
 192   2                      ch=DispBuf[i];
 193   2                      if ((ch>='a') && (ch<='f'))
 194   2                      {
 195   3                         ch-='a';ch+=0xa;
 196   3                      }
 197   2                      if ((ch>='A') && (ch<='F'))
 198   2                      {
 199   3                         ch-='A';ch+=0xa;
 200   3                      }
 201   2                      Send7279Byte(0x90+5-i); //不译码
 202   2                      if (ch==' ')
 203   2                              Send7279Byte(0x00); 
 204   2                      else
 205   2                              if (ch=='-')
 206   2                                      Send7279Byte(0x01); 
 207   2                              else 
 208   2                              {
 209   3                                      if (ShowDot==i)
 210   3                                              Send7279Byte(0x80|BdSeg[ch&0x0f]); 
 211   3                                      else
 212   3                                              Send7279Byte(BdSeg[ch&0x0f]); 
 213   3                              }
 214   2              }
 215   1              NOSELECT7279;           //置CS高电平 
 216   1      }
 217          
 218          char GetKeyValue(void)
 219          {
 220   1              char KeyValue;
 221   1              if (CPT1CN&0x40) return -1;     //无键按下 
 222   1              Send7279Byte(0x15);             //发读键盘指令 
 223   1              KeyValue=Receive7279Byte();
 224   1              NOSELECT7279;                   //置CS高电平 
 225   1              return KeyValue; 
 226   1      }
 227          
 228          void WaitKeyOff(void)
 229          {
 230   1              while  (!(CPT1CN&0x40));
 231   1      }
 232          
 233          void Test7279(bit LoopFlag)                                 
 234          {
 235   1              char i,KeyValue;         
 236   1              Delay1ms(25);               //等待25ms复位时间 
 237   1              Send7279Byte(0xA4);     //发复位指令 
 238   1              NOSELECT7279;           //置CS高电平 
 239   1              if (LoopFlag==0) return;
 240   1              DispLED("123456",0);    //显示123456
 241   1              for (i=0;i<8;i++)
C51 COMPILER V7.06   7279                                                                  01/24/2005 10:04:57 PAGE 5   

 242   1              {       
 243   2                      Delay1s(1);
 244   2                      MoveLeft();
 245   2              }
 246   1      
 247   1              DispLED("123456",0);    //显示123456
 248   1          Delay1s(1);
 249   1      
 250   1              DispLED("7890AB",2);    //显示7890ab
 251   1          Delay1s(1);
 252   1      
 253   1              DispLED("CDEF -",3);    //显示cdef -
 254   1      
 255   1              for (i=0;i<6;i++)
 256   1              {
 257   2                      Delay1s(1);
 258   2                      MoveRight();
 259   2              }
 260   1      
 261   1              DispLED("F    1",1);    //显示123456
 262   1      
 263   1              FlashLED(0);    //第一位闪烁
 264   1              Delay1s(10);
 265   1              FlashLED(1);    //第二位闪烁
 266   1              Delay1s(10);
 267   1              FlashLED(8);    //关闪烁
 268   1      
 269   1              //BlankLED(0x23); //注意:执行消隐后,键盘输入中断口不能恢复.
 270   1      
 271   1              for (;;)
 272   1              {       
 273   2                      KeyValue=GetKeyValue(); 
 274   2               if(KeyValue!=-1)
 275   2                {
 276   3                          Send7279Byte(0xC8); //发送键码值,按方式1译码下载显示 
 277   3                          Send7279Byte(KeyValue%16);
 278   3                          NOSELECT7279;       //置CS高电平 
 279   3                          WaitKeyOff();
 280   3                 }
 281   2              }
 282   1      }
 283           
 284           
 285          
 286            void Delay1us(unsigned char us)
 287          {
 288   1              while (us)
 289   1              {
 290   2                _nop_(); 
 291   2                _nop_(); 
 292   2                _nop_(); 
 293   2                _nop_(); 
 294   2                _nop_();
 295   2                --us;
 296   2              }
 297   1      }
 298          
 299          void Delay1ms(unsigned char T)
 300          {
 301   1              Count1ms=T;
 302   1              while (Count1ms);
 303   1      }
C51 COMPILER V7.06   7279                                                                  01/24/2005 10:04:57 PAGE 6   

 304          
 305          void Delay1s(unsigned char T)
 306          {
 307   1              while (T)
 308   1              {
 309   2                      Delay1ms(200);
 310   2                      Delay1ms(200);
 311   2                      Delay1ms(200);
 312   2                      Delay1ms(200);
 313   2                      Delay1ms(200);
 314   2                      T--;
 315   2              }
 316   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    710    ----
   CONSTANT SIZE    =     46    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1      13
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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