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

📄 vterminal_bus_wave.lst

📁 wq_vga.rar,系列C51列程
💻 LST
字号:
C51 COMPILER V7.20   VTERMINAL_BUS_WAVE                                                    07/29/2006 15:52:17 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE VTERMINAL_BUS_WAVE
OBJECT MODULE PLACED IN VTerminal_bus_wave.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE VTerminal_bus_wave.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //智能显示终端并行接口通信演示程序之一总线方式。
   2          //仿真器需选择:"总线设置(Bus Option)"的"仅使用数据总线(Use XBus Only)"。
   3          //
   4          
   5          #include <reg51.h>
   6          #include <stdio.h>
   7          #include <string.h>
   8          #define uchar unsigned char
   9          
  10          //定义P0口为数据线,P3.1, P3.2为控制线。
  11          sbit    CS0         =P3^1;      //片选信号 
  12          sbit    PINT    =P3^2;      //触摸屏中断信号
  13          uchar  Fcolor;                 //背景色
  14          uchar  Bcolor;                 //前景色
  15          
  16          //写一个数据子程序:
  17          Write_Byte(uchar dc_data)
  18          {
  19   1          uchar xdata DC;   //定义一个外部RAM变量
  20   1          uchar i;
  21   1          CS0 = 0;
  22   1              DC = dc_data;   //数据dc_data写到外部RAM(即LCD控制板)。
  23   1          CS0 = 1;
  24   1          //加入适当的空操作延时
  25   1              //当采用更高速的单片机时应加入更多的空操作延时
  26   1              //这里加上8个空操作延时,在AT89C51,22MHz下是完全没问题的。
  27   1          for(i=0;i<8;i++){}  
  28   1      }
  29          
  30          Lcd_Clr();
  31          dis_wave(unsigned short x0,unsigned short y0,uchar con,unsigned short *p_data);
  32          
  33          /********************************************
  34          定义数据常量,这些数据在实际应用中一般由A/D转换器采样所得到。
  35          这里的每一个字节代表一个Y轴坐标的大小即幅度。
  36          最后一个一定是0x84结束码.
  37          **********************************************/
  38          unsigned short code y_data1[110] = {
  39            0x0b,0x0b,0x0b,0x0b,0x0b,
  40            0x0b,0x0b,0x0b,0x0b,0x0b,
  41            0x0b,0x0b,0x0b,0x0b,0x0b,
  42            0x1c,0x1c,0x1c,0x1c,0x1c,
  43            0x1c,0x1c,0x1c,0x1c,0x1c,
  44            0x1c,0x1c,0x1c,0x1c,0x1c,
  45            0x1c,0x1c,0x1c,0x1c,0x1c,
  46            0x00,0x00,0x00,0x00,0x00,
  47            0x00,0x00,0x00,0x00,0x00,
  48            0x00,0x00,0x00,0x00,0x00,
  49            0x00,0x00,0x00,0x00,0x00,
  50            0x50,0x50,0x50,0x50,0x50,
  51            0x50,0x50,0x50,0x50,0x50,
  52            0x50,0x50,0x50,0x50,0x50,
  53            0x50,0x50,0x50,0x50,0x50,
  54            0x50,0x50,0x50,0x50,0x50,
  55            0x48,0x46,0x44,0x42,0x40,
C51 COMPILER V7.20   VTERMINAL_BUS_WAVE                                                    07/29/2006 15:52:17 PAGE 2   

  56            0x3e,0x3c,0x3a,0x38,0x36,
  57            0x34,0x32,0x30,0x2e,0x2c,
  58            0x2a,0x28,0x26,0x24,0x22,
  59            0x20,0x1e,0x1c,0x1a,0x18,
  60            0x16,0x14,0x12,0x10,0x84
  61            };
  62          
  63          unsigned short code y_data2[110] = {
  64            0x015e,0x015e,0x015e,0x015e,0x015e,
  65            0x015e,0x015e,0x015e,0x015e,0x015e,
  66            0x015e,0x015e,0x015e,0x015e,0x015e,
  67            0x015e,0x015e,0x015e,0x015e,0x015e,
  68            0x015e,0x015e,0x015e,0x015e,0x015e,
  69            0x015e,0x015e,0x015e,0x015e,0x015e,
  70            0x015e,0x015e,0x015e,0x015e,0x015e,
  71            0x00,0x00,0x00,0x00,0x00,
  72            0x00,0x00,0x00,0x00,0x00,
  73            0x00,0x00,0x00,0x00,0x00,
  74            0x00,0x00,0x00,0x00,0x00,
  75            0x0084,0x0084,0x0084,0x0084,0x0084,
  76            0x0084,0x0084,0x0084,0x0084,0x0084,
  77            0x0084,0x0084,0x0084,0x0084,0x0084,
  78            0x0084,0x0084,0x0084,0x0084,0x0084,
  79            0x0084,0x0084,0x0084,0x0084,0x0084,
  80            0x48,0x46,0x44,0x42,0x40,
  81            0x3e,0x3c,0x3a,0x38,0x36,
  82            0x34,0x32,0x30,0x2e,0x2c,
  83            0x2a,0x28,0x26,0x24,0x22,
  84            0x20,0x1e,0x1c,0x1a,0x18,
  85            0x16,0x14,0x12,0x10,0xffff
  86            };
  87          
  88          main(void)
  89          {
  90   1        unsigned int i;
  91   1      
  92   1        CS0 = 0;
  93   1        PINT = 1;
  94   1        Fcolor = 0x0;
  95   1        Bcolor = 0xff;
  96   1        i = 0;
  97   1      
  98   1        //显示终端在上电就绪时发送F0.用仿真器时不要检测F0.
  99   1        //当把程序烧写到单片机上时,显示终端和单片机同时上电,所以一定
 100   1        //要检测是否收到F0。以判断显示终端是否上电就绪
 101   1        //while(!(i == 0xF0))
 102   1        //{i = Read_Byte();} 
 103   1      
 104   1        IT1 = 0;         //外部中断1为电平触发方式。    
 105   1        EA=1;            //全局中断使能,(EA=0,关全局中断;EA=1,开全局中断)
 106   1        EX1 = 1;          //外部中断使能置1,允许外部中断
 107   1      
 108   1        Lcd_Clr();     //清除全屏。
 109   1        Fcolor = 0xe0;
 110   1        dis_wave(0,0,1,y_data1);     //以 (0,0) 为坐标原点显示波形。幅度为单字节
 111   1        Fcolor = 0x1c;
 112   1        dis_wave(100,100,2,y_data2);    //以 (80,80) 为坐标原点显示波形。幅度为双字节。
 113   1        Fcolor = 0xff;
 114   1        while(1)
 115   1        {
 116   2        }
 117   1      }
C51 COMPILER V7.20   VTERMINAL_BUS_WAVE                                                    07/29/2006 15:52:17 PAGE 3   

 118          
 119          //指令头,每一条指令都规定为"0x81, command1,command2,Fcolor,Bcolor"
 120          command_head(unsigned char command1,unsigned char command2)
 121          {
 122   1         Write_Byte(0x81);
 123   1         Write_Byte(command1);
 124   1         Write_Byte(command2);
 125   1         Write_Byte(Fcolor);
 126   1         Write_Byte(Bcolor);
 127   1      }
 128          
 129          //清屏子程序
 130          Lcd_Clr()
 131          {
 132   1         command_head(0x43,0x4c);
 133   1         Write_Byte(0x84);
 134   1      }
 135          //显示波形子程序。
 136          //显示波形的原理是:x轴从坐标原点开始自动加一,y轴(幅度)是*p_data。
 137          //x0, y0是坐标原点。
 138          //con=1 y轴(幅度)的大小用一个字节表示。con = 2:y轴(幅度)的大小用二个字节表示
 139          dis_wave(unsigned short x0,unsigned short y0,uchar con,unsigned short *p_data)
 140          {
 141   1         unsigned int i;
 142   1         command_head(0x53,0x53);
 143   1         Write_Byte(x0/100);
 144   1         Write_Byte(x0%100);
 145   1         Write_Byte(y0/100);
 146   1         Write_Byte(y0%100);
 147   1         Write_Byte(con);
 148   1       switch(con)
 149   1            {case 1:
 150   2                         do
 151   2                         {
 152   3                  Write_Byte(*p_data%100);    //因为*p_data定义为short类型指针,所以这里要先取模运算
 153   3                              p_data++;
 154   3                         }
 155   2                         while(*p_data !=0x84);
 156   2                  break;
 157   2      
 158   2                      case 2:
 159   2                          do
 160   2                              {
 161   3                               Write_Byte(*p_data/100);
 162   3                               Write_Byte(*p_data%100);
 163   3                               p_data++;
 164   3                              }
 165   2                              while(*p_data !=0xffff);   //这里不能定义为Ox84,因为p_data[x]有可能为0x84
 166   2                      break;
 167   2      
 168   2                      default: break;
 169   2                }
 170   1         Write_Byte(0x84);
 171   1         for(i= 0;i<50;i++){}                       //特别注意:执行完这条指令后一定要延时至少0.1秒
 172   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    326    ----
   CONSTANT SIZE    =    440    ----
   XDATA SIZE       =   ----       1
   PDATA SIZE       =   ----    ----
C51 COMPILER V7.20   VTERMINAL_BUS_WAVE                                                    07/29/2006 15:52:17 PAGE 4   

   DATA SIZE        =      2      10
   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 + -