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

📄 123.lst

📁 这是用192*64液晶实现的波形液晶显示。用的液晶型号是OCMJ4*12B
💻 LST
字号:
C51 COMPILER V8.12   123                                                                   04/11/2009 13:46:01 PAGE 1   


C51 COMPILER V8.12, COMPILATION OF MODULE 123
OBJECT MODULE PLACED IN 123.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 123.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include<math.h>
   3          
   4          #define uchar unsigned char
   5          #define uint unsigned int
   6          #define DATA_PORT P0    //定义数据端口
   7          #define PI 3.1415
   8          
   9          sbit BUSY=P3^4;
  10          sbit REQ=P3^5;
  11          sbit RESET=P3^6;
  12          sbit P10=P1^0;
  13          
  14          uchar i=0x08;
  15          uchar n=2,A=1;
  16          
  17          /******LCD初始化***********/
  18          void lcd_init()
  19          {
  20   1              BUSY=1;
  21   1              REQ=0;
  22   1              RESET=1;
  23   1      }
  24          
  25          /********写数据************/
  26          void wr_lcd(uchar dat)
  27          {
  28   1              while(BUSY);
  29   1              DATA_PORT=dat;
  30   1              REQ=1;
  31   1              while(BUSY);
  32   1              REQ=0;
  33   1      }
  34          
  35          /******写指令与地址*******/
  36          void wr_zhiling(uchar com,uchar addr_x,uchar addr_y)
  37          {
  38   1              wr_lcd(com);
  39   1              wr_lcd(addr_x);
  40   1              wr_lcd(addr_y);
  41   1      }
  42          void delay(uint z)
  43          {
  44   1               uint x;
  45   1               uchar y;
  46   1               for(x=z;x>0;x--)
  47   1                      for(y=110;y>0;y--);
  48   1      }
  49          
  50          
  51          void display_biankuang()
  52          {
  53   1              uchar i,j,k,l;                          
  54   1              for(i=0x90;i<0xc0;i++)          //边框横
  55   1                      {
C51 COMPILER V8.12   123                                                                   04/11/2009 13:46:01 PAGE 2   

  56   2                              wr_zhiling(0xf2,i,0x00);
  57   2                              wr_zhiling(0xf2,i,0x3f);
  58   2                      }
  59   1              for(j=0x01;j<0x3f;j++)        //边框竖
  60   1                      {
  61   2                              wr_zhiling(0xf2,0x90,j);
  62   2                              wr_zhiling(0xf2,0xbf,j);
  63   2                      }
  64   1      
  65   1              for(k=0x08;k<0x3c;k++)     //坐标纵轴
  66   1                      {
  67   2                              wr_zhiling(0xf2,0x08,k);
  68   2                      }
  69   1              for(l=0x09;l<0x89;l++)    //坐标横轴
  70   1                      {
  71   2                              wr_zhiling(0xf2,l,0x1f);
  72   2                      }
  73   1      
  74   1      
  75   1      
  76   1              
  77   1      }
  78          void zuobiao_data(uchar k)        //在液晶上绘点 ,绘上半部分
  79          {
  80   1              uchar a;
  81   1              a=k;
  82   1              wr_zhiling(0xf2,i,0x1f-a);
  83   1      }
  84          void zuobiao_data1(uchar k)       //绘下半部分
  85          {
  86   1              uchar b;
  87   1              b=k;
  88   1              wr_zhiling(0xf2,i,0x20+b);      //0x20的正确设置,下半部分终于出了波形
  89   1      }
  90          
  91          void display_data()
  92          {
  93   1              uchar c,k;
  94   1              uint j;
  95   1              float a;
  96   1              while(1)
  97   1                      {               P10=~P10;                                //小灯亮
  98   2                              for(j=0;j<=1;)
  99   2                                      {
 100   3                                              a=A*sin(n*2*PI*j/360);          
 101   3                                              if(a>=0)                                         //当sinx为正时,绘上半部分点
 102   3                                                      {
 103   4                                                              c=(uchar)(100*a);
 104   4                                                              k=c/5;                          //纵坐标每个格,值为0.05
 105   4                                                              zuobiao_data(k);
 106   4                                                              j=j+3;
 107   4                                                              i=i+0x01;
 108   4                                                      //      delay(100);
 109   4                                                      
 110   4                                                      }
 111   3                                              if (a<0)                                        //当sinx为负时,绘下半部分点
 112   3                                                      {
 113   4                                                      
 114   4                                                              a=-a;                           //转换为正数,好运算
 115   4                                                              c=(uchar)(100*a);
 116   4                                                              k=c/5;
 117   4                                                              zuobiao_data1(k);
C51 COMPILER V8.12   123                                                                   04/11/2009 13:46:01 PAGE 3   

 118   4                                                              j=j+3;
 119   4                                                              i=i+0x01;
 120   4                                                              //delay(100);
 121   4                                                              
 122   4                                                      
 123   4                                                      }
 124   3                                      }
 125   2                              i=0x08;                                                         //一个大循环后,x置回起始点
 126   2                              wr_lcd(0xf4);                                           //清屏
 127   2                              display_biankuang();                            //边框
 128   2              
 129   2              }
 130   1      }
 131          
 132          
 133          
 134          void main()
 135          {
 136   1              
 137   1              lcd_init();
 138   1              wr_lcd(0xf4);
 139   1              display_biankuang();
 140   1              display_data();
 141   1              while(1);
 142   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    458    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3       8
   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 + -