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

📄 xqdz.lst

📁 点阵实物程序仿真(左移显示毕业设计)
💻 LST
字号:
C51 COMPILER V9.00   XQDZ                                                                  05/06/2012 14:23:38 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE XQDZ
OBJECT MODULE PLACED IN xqdz.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE xqdz.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          
   3          /*头文件*/
   4          #include <reg52.h>      
   5          #include <intrins.h>
   6          #define uint unsigned int
   7          #define uchar unsigned char
   8          #define NOP() _nop_()
   9          
  10          /*端口定义*/
  11          
  12          sbit EN_port = P1^3;
  13          sbit DA_in_port = P1^2;
  14          sbit CLK_port = P1^1;
  15          sbit Latch_port = P1^0;
  16          
  17          #define ABCD_port P1  //HC138 ABCD端口定义
  18          //sbit D_port = P1^7;
  19          //sbit C_port = P1^6;
  20          //sbit B_port = P1^5;
  21          //sbit A_port = P1^4;
  22          
  23          uchar code ziku_table[]={
  24          
  25          0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*显示8行空白*/
  26          0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  27          
  28          0xF3,0xFC,0xF3,0xCC,0x83,0xC4,0x83,0xF0,0xF3,0xFC,0x93,0x9C,0x83,0x80,0xE3,0xC1,
  29          0x7F,0xFE,0x7F,0xFE,0x00,0x80,0x00,0x80,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0xFF,0xFF,/*"毕",0*/
  30          
  31          0x9F,0xFC,0x9F,0xFC,0x9F,0xFC,0x9F,0xFC,0x99,0xCC,0x99,0xCC,0x99,0xCC,0x93,0xE4,
  32          0x93,0xE4,0x93,0xE4,0x9F,0xFC,0x9F,0xFC,0x9F,0xFC,0x00,0x80,0x00,0x80,0xFF,0xFF,/*"业",0*/
  33          
  34          
  35          0x3B,0xF0,0x33,0xF0,0x27,0xF3,0x37,0xF3,0x1F,0x83,0x90,0x87,0x10,0xE0,0x13,0xE0,
  36          0x33,0xE7,0x33,0xF3,0x73,0xF2,0xC3,0xF8,0x63,0xF0,0x13,0x86,0x9F,0xCF,0xFF,0xFF,/*"设",0*/
  37          
  38          0xFF,0xFF,0xFB,0xF9,0xF3,0xF9,0xE7,0xF9,0xFF,0xF9,0x10,0x80,0x10,0x80,0xF3,0xF9,
  39          0xF3,0xF9,0xF3,0xF9,0xF3,0xF9,0xD3,0xF9,0xC3,0xF9,0xE3,0xF9,0xF3,0xF9,0xFF,0xFF,/*"计",0*/
  40          
  41          
  42          
  43          0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*显示8行空白*/
  44          0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  45          
  46          };
  47          
  48          
  49          uchar data disp_buff[32]; //32 个显示数据缓存
  50          //数据格式为 第1级第1行高八位,低八位,第1级第2行高八位。。。。。。
  51          uchar data disp_han;   //目前显示到第几行
  52          
  53          
  54          void T0_Set() /*定义中断方式,中断时间*/
  55          {
C51 COMPILER V9.00   XQDZ                                                                  05/06/2012 14:23:38 PAGE 2   

  56   1          TMOD = 0x01;  //定时0,工作在方式1
  57   1          TH0  = (65536-1000)/256;
  58   1          TL0  = (65536-1000)/256;
  59   1          TR0  = 1;     //启动计数
  60   1          EA   = 1;     //开总中断
  61   1          ET0  = 1;     //开定时器0中断
  62   1              return;
  63   1      }
  64          
  65          void delay_1ms(uchar x)
  66          {
  67   1          uchar j;
  68   1          while(x--){
  69   2              for(j=0;j<125;j++)
  70   2                  {;}
  71   2              }   
  72   1      }
  73          
  74          
  75          void main()
  76          {
  77   1              uchar i;
  78   1              uint data_temp[2];
  79   1              uint temp,temp1;
  80   1              uchar hanzi;
  81   1              uchar han;
  82   1              uchar shift=1;
  83   1              for(i=0;i<32;i++) disp_buff[i]=0xff;
  84   1              T0_Set();
  85   1              while(1){
  86   2                      for(hanzi=0;hanzi<4;hanzi++){   //最多显示多少个字
  87   3                              for(shift=0;shift<16;shift++){  //一个字移位16位
  88   4                                      for(han=0;han<16;han++){   //一个字有16行数据
  89   5                                              //取字库里面数据                        
  90   5                                              data_temp[0]=ziku_table[(hanzi*32)+(han*2)+1]*0x100 + ziku_table[(hanzi*32)+(han*2)];
  91   5                                              data_temp[1]=ziku_table[((hanzi+1)*32)+(han*2)+1]*0x100 + ziku_table[((hanzi+1)*32)+(han*2)];
  92   5      
  93   5                                              //右往左移动
  94   5                                              temp = data_temp[0];
  95   5                                              temp1 = data_temp[1];
  96   5                                              for(i=shift;i>0;i--){
  97   6                                                      temp = (temp>>1) ;
  98   6                                                      if((temp1&0x0001)!=0) temp = temp + 0x8000;  //将TMEP1的最低位移位到TMEP的最高位
  99   6                                                      temp1 = (temp1>>1);
 100   6                                                      } 
 101   5                                              disp_buff[han*2+1]=temp/0x100;
 102   5                                              disp_buff[han*2+0]=temp%0x100;
 103   5                                              //------------------------------
 104   5                                              }
 105   4                                      delay_1ms(100); //移位速度
 106   4                                      }
 107   3                              }
 108   2                      }
 109   1      }
 110          
 111          
 112          
 113          
 114          void SLED_Disp() interrupt 1 using 3
 115          {
 116   1              uchar i;
 117   1              uchar data_buff;
C51 COMPILER V9.00   XQDZ                                                                  05/06/2012 14:23:38 PAGE 3   

 118   1              uchar temp;
 119   1              uchar han;      
 120   1          TH0  = (65536-1000)/256;
 121   1          TL0  = (65536-1000)/256;
 122   1              Latch_port = 0;  //HC595锁定输出,避免数据传输过程中,屏数据变化从而显示闪烁
 123   1              CLK_port = 0;
 124   1              han=disp_han;
 125   1              //74HC595输出数据
 126   1              temp = disp_han*2+1; 
 127   1              data_buff = disp_buff[temp];
 128   1              for(i=0;i<8;i++){
 129   2                      if((data_buff&0x80)!=0) DA_in_port = 1;
 130   2                      else DA_in_port = 0;
 131   2                      CLK_port = 1;
 132   2                      CLK_port = 0;
 133   2                      data_buff <<= 1;
 134   2                      }
 135   1              temp = disp_han*2;
 136   1              data_buff = disp_buff[temp];
 137   1              for(i=0;i<8;i++){
 138   2                      if((data_buff&0x80)!=0) DA_in_port = 1;
 139   2                      else DA_in_port = 0;
 140   2                      CLK_port = 1;
 141   2                      CLK_port = 0;
 142   2                      data_buff <<= 1;
 143   2                      }
 144   1              //74HC138输出控制        
 145   1              EN_port = 1;    //关屏显示,原理为使HC138输出全为1,从而三极管截止,点阵不显示
 146   1              ABCD_port = (ABCD_port & 0x0f)|(han<<4);  //HC138译码输出
 147   1              Latch_port = 1; //允许HC595数据输出到Q1-Q8端口
 148   1              EN_port = 0;    //HC138输出有效,打开显示
 149   1              Latch_port = 0; //锁定HC595数据输出
 150   1      
 151   1              disp_han++;     //显示下一行数据
 152   1              if(disp_han>=16) disp_han=0;
 153   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    445    ----
   CONSTANT SIZE    =    192    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     33       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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