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

📄 12864字库.lst

📁 带字库的12864显示程序加上打印机打印
💻 LST
📖 第 1 页 / 共 2 页
字号:
 154   2                      X = 0x98;
 155   2              }
 156   1              else;
 157   1               Y= X + Y;
 158   1              lcdWriteCommand(Y);
 159   1              while (*msg)
 160   1              {
 161   2                      lcdWriteData(*msg++);
 162   2                      delayMs(speed);
 163   2              }
 164   1      }
 165          
 166          /*===================================================*/
 167          void DisplayOneChar(unsigned char X,unsigned char Y,unsigned int speed,unsigned char ddata1)
 168          {       if (X==0)
 169   1              {
 170   2                      X = 0x80;
 171   2                              lcdWriteCommand(X);
 172   2              }
 173   1              else if (X==16)
 174   1              {
 175   2                      X = 0x90;
 176   2                              lcdWriteCommand(X);
 177   2              }
 178   1              else if (X == 32)
C51 COMPILER V8.02   12864字库                                                             08/10/2007 02:44:31 PAGE 4   

 179   1              {
 180   2                      X = 0x88;
 181   2                              lcdWriteCommand(X);
 182   2              }
 183   1              else if (X == 48)
 184   1              {
 185   2                      X = 0x98;
 186   2                              lcdWriteCommand(X);
 187   2              }
 188   1              else;
 189   1               Y= X + Y;
 190   1      
 191   1              delayMs(speed);
 192   1              lcdWriteData(ddata1);
 193   1              
 194   1      }
 195          //===============================================
 196          /*===================================================*/
 197          void backspace(void)
 198           { 
 199   1       
 200   1          if(DisNum>=0&&DisNum<16)
 201   1            
 202   1                 { 
 203   2                   if(DisNum%2!=0)
 204   2                     {
 205   3                           prindata[prnum]=0x20;
 206   3                       lcdWriteCommand(0x80+DisNum/2);
 207   3                           lcdWriteData(prindata[prnum-1]);
 208   3                           lcdWriteData(prindata[prnum]);
 209   3                               DisNum--;
 210   3                              }
 211   2                         else
 212   2                          { 
 213   3                               prindata[prnum]=0x20;
 214   3                               lcdWriteCommand(0x80+DisNum/2);
 215   3                               lcdWriteData(prindata[prnum]);
 216   3                               prnum=prnum-1;
 217   3                               DisNum--;
 218   3                               }
 219   2                       }      
 220   1               else 
 221   1                          if(DisNum>=16&&DisNum<32)
 222   1                               {                                  
 223   2                                  if(DisNum%2!=0)
 224   2                         {
 225   3                               prindata[prnum]=0x20;
 226   3                           lcdWriteCommand(0x90+DisNum/2);
 227   3                               lcdWriteData(prindata[prnum-1]);
 228   3                               lcdWriteData(prindata[prnum]);
 229   3                                   prnum=prnum-1;
 230   3                                       DisNum--;
 231   3                                  }
 232   2                               else
 233   2                              { 
 234   3                                    prindata[prnum]=0x20;
 235   3                                    lcdWriteCommand(0x90+DisNum/2);
 236   3                                    lcdWriteData(prindata[prnum]);
 237   3                                     prnum=prnum-1;
 238   3                                         DisNum--;
 239   3                                   }
 240   2                                }
C51 COMPILER V8.02   12864字库                                                             08/10/2007 02:44:31 PAGE 5   

 241   1                              
 242   1                      
 243   1                               
 244   1       
 245   1       
 246   1              
 247   1      }
 248          //===============================================
 249          void lcdClear (void)
 250          {
 251   1          lcdWriteCommand(0x01);
 252   1      }                                                           
 253          //===============================================
 254          void lcdInit (void)
 255          {
 256   1              delayMs(40);
 257   1              delayMs(1);
 258   1              lcdWriteCommand(0x01);//清除显示
 259   1              lcdWriteCommand(0x30);//30H--基本指令操作
 260   1              lcdWriteCommand(0x0d);//开显示,关光标,不闪烁
 261   1              lcdWriteCommand(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。
 262   1      
 263   1      }
 264          //===============================================
 265          void delaySec (uchar sec)
 266          {       
 267   1              uchar i;
 268   1              while (--sec)
 269   1              {
 270   2                      for (i = 0; i < 200; i++)
 271   2                      {
 272   3                              delayMs (6);
 273   3                      }
 274   2              }
 275   1      }
 276          
 277          void main(void)
 278          {   init();//打印机初始化
 279   1          lcdInit ();
 280   1              DisplayListChar(0, 0, 1,   "                ");
 281   1              DisplayListChar(1, 0, 1,   "  海军工程大学  ");
 282   1              DisplayListChar(2, 0, 100, "系统初始化 .....");
 283   1              DisplayListChar(3, 0, 100, "................");
 284   1              delaySec(6);
 285   1              lcdClear();
 286   1              IT1 = 0; //设外部中断1为低电平触发
 287   1              EA = 1;
 288   1              EX1 = 1; //开中断
 289   1      
 290   1              do
 291   1                      {
 292   2                              if (BF)                                 //bf0=0
 293   2                                      Decode(KeyV);
 294   2                              else
 295   2                                      EA = 1; //开中断
 296   2                      }
 297   1              while(1);
 298   1      }
 299          
 300          void Keyboard_out(void) interrupt 2
 301          {
 302   1              if ((IntNum > 0) && (IntNum < 9))                                //intnum0=0
C51 COMPILER V8.02   12864字库                                                             08/10/2007 02:44:31 PAGE 6   

 303   1                      {                       
 304   2                              KeyV = KeyV >> 1; //因键盘数据是低>>高,结合上一句所以右移一位
 305   2                              if (Key_Data) KeyV = KeyV | 0x80; //当键盘数据线为1时为1到最高位
 306   2                      }
 307   1              IntNum++;
 308   1              while (!Key_CLK); //等待PS/2CLK拉高
 309   1      
 310   1              if (IntNum > 10)
 311   1                      {
 312   2                              IntNum = 0; //当中断11次后表示一帧数据收完,清变量准备下一次接收
 313   2                              BF = 1; //标识有字符输入完了
 314   2                              EA = 0; //关中断等显示完后再开中断 (注:如这里不用BF和关中断直接调Decode()则所Decode中所调用的所有函数

⌨️ 快捷键说明

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