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

📄 12232.lst

📁 12232显示器驱动程序, 可用于各类嵌入式单片机
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.14  12232                                                                  08/25/2006 08:15:20 PAGE 1   


C51 COMPILER V6.14, COMPILATION OF MODULE 12232
OBJECT MODULE PLACED IN C:\DOCUME~1\YXM\桌面\12232\12232.OBJ
COMPILER INVOKED BY: E:\Program files\Keil\C51\BIN\C51.EXE C:\DOCUME~1\YXM\桌面\12232\12232.C DB SB OE

stmt level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          #include <absacc.h>
   4          #include <stdio.h>
   5          
   6              #define W_CM XBYTE[0x8000];  //;写指令代码地址A,CSA CSB高电平有效!
   7              #define R_SM XBYTE[0x8200];  //;读状态字地址A
   8              #define W_DM XBYTE[0x8100];  //;写显示数据地A
   9              #define R_DM XBYTE[0x8300];  //;读显示数据地址A
  10              #define W_CS XBYTE[0x9000];   // ;写指令代码地址B
  11              #define R_SS XBYTE[0x9200];   // ;读状态字地址B
  12              #define W_DS XBYTE[0x9100];   //;写显示数据地址B
  13              #define R_DS XBYTE[0x9300];   //;读显示数据地址B
  14          
  15          #define disp_on 0xaf   //显示关闭
  16          #define disp_off 0xae   //显示打开
  17          #define disp_start_line 0xc0   //显示起始地址
  18          #define page_addr_set 0xb8   //页地址
  19          #define col_addr_set 0x00   //列地址
  20          #define status_busy 0x80   //0=ready
  21          #define moderwite 0xee   //写模式
  22          #define dynamic_driver 0xa4  //动态驱动
  23          #define adc_select 0xa0   //clockwise
  24          #define clk32 0xa9   //刷新时钟设置1/32
  25          #define clk16 0xa8   //刷新时钟设置1/16
  26          #define reset 0xe2   //软件复位
  27          #define uchar unsigned char
  28          #define uint unsigned int
  29          
  30          
  31          //设汉字的数据
  32          uchar code num[11][16]=
  33            {
  34              0x00,0xe0,0x10,0x08,0x08,0x10,0xe0,0x00,0x00,0x0f,0x10,0x20,0x20,0x10,0x0f,0x00,   //0
  35              0x00,0x10,0x10,0xfb,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3f,0x20,0x20,0x00,0x00,    //1
  36              0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,    //2
  37              0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0e,0x00,    //3
  38              0x00,0x00,0xc0,0x20,0x10,0xf8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3f,0x24,0x00,    //4
  39              0x00,0xf8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0e,0x00,     //5
  40              0x00,0xe0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0f,0x11,0x20,0x20,0x11,0x0e,0x00,     //6
  41              0x00,0x38,0x08,0x08,0xc8,0x38,0x08,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,     //7
  42              0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1c,0x22,0x21,0x21,0x22,0x1c,0x00,     //8
  43              0x00,0xe0,0x10,0x08,0x08,0x10,0xe0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0f,0x00,     //9
  44              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,      //.
  45              };
  46          
  47          
  48          
  49          //判断主窗口忙
  50           void wait_readym(void)
  51            {
  52   1          data uchar status;
  53   1      	status=R_SM;
  54   1      	_nop_();
  55   1      	while (status&status_busy);
C51 COMPILER V6.14  12232                                                                  08/25/2006 08:15:20 PAGE 2   

  56   1        }
  57          
  58          
  59          //判断从窗口忙
  60            void wait_readys(void)
  61             {
  62   1           data uchar status;
  63   1      	 status=R_SS;
  64   1      	 _nop_();
  65   1      	 while (status&status_busy);
  66   1         }
  67          
  68          
  69          
  70          //发指令instruction到主窗口
  71            void send_mi(uchar instruction)
  72             {
  73   1           wait_readym();//判断忙
  74   1      	XBYTE[0x8000]=instruction;   // 写指令
  75   1         }
  76          
  77          
  78            //发数据到主窗口
  79            void send_md(uchar c)
  80             {
  81   1           wait_readym();   //判断忙
  82   1      	 XBYTE[0x8100]=c;     //写数据
  83   1         }
  84          
  85          
  86           //发指令到从窗口
  87           void send_si (uchar instruction)
  88            {
  89   1          wait_readys();  //判断忙
  90   1      	XBYTE[0x9000]=instruction;//写指令
  91   1        }
  92          
  93          //发数据到从窗口
  94            void send_sd (uchar c)
  95             {
  96   1           wait_readys();   //判断忙
  97   1      	 XBYTE[0x9100]=c;
  98   1         }
  99          
 100          //12232lcd初始化
 101           void lcd_init(void)
 102            {
 103   1         send_mi(reset);     //复位
 104   1         send_si(reset);
 105   1      
 106   1         send_mi(disp_off);     //关闭显示
 107   1         send_si(disp_off);
 108   1      
 109   1         send_mi(dynamic_driver);     //动态驱动
 110   1         send_si(dynamic_driver);
 111   1      
 112   1         send_mi(adc_select);     //clockwise
 113   1         send_si(adc_select);
 114   1      
 115   1         send_mi(moderwite);      //写模式结束
 116   1         send_si(moderwite);
 117   1      
C51 COMPILER V6.14  12232                                                                  08/25/2006 08:15:20 PAGE 3   

 118   1         send_mi(col_addr_set);        //归回零列,设定起始行首
 119   1         send_mi(disp_start_line);
 120   1         send_si(col_addr_set);
 121   1         send_si(disp_start_line);
 122   1      
 123   1         send_mi(disp_on);      //开显示
 124   1         send_si(disp_on);
 125   1        }
 126          
 127          
 128          //清屏函数
 129           void lcd_clr(void)
 130            {
 131   1          uchar i,page;
 132   1      	for (page=0;page<4;page++)
 133   1      	  {
 134   2      	    send_mi(page_addr_set|page);
 135   2      		send_si(page_addr_set|page);
 136   2      		send_mi(0X00);
 137   2      		send_si(0X00);
 138   2      		for (i=0;i<62;i++)
 139   2      		  {
 140   3      		    send_md(0x00);
 141   3      			send_sd(0x00);
 142   3      		   }
 143   2      	   }
 144   1      	}
 145          
 146          
 147          //同时设置主(右)从(左)显示页为0-3页
 148           void set_page(uchar page)
 149             {
 150   1           send_mi(page_addr_set|page);
 151   1      	 send_si(page_addr_set|page);
 152   1         }
 153          
 154          //同时设置主(右)从(左)显示列为0-61列
 155           void set_address(uchar address)
 156            {
 157   1          send_mi(address&0x7f);
 158   1          send_si(address&0x7f);
 159   1        }
 160          
 161          
 162            void putchar_l(uchar c)
 163             {
 164   1           send_md(c);
 165   1          }
 166          
 167          
 168            void putchar_r(uchar c)
 169             {
 170   1           send_sd(c);
 171   1          }
 172          
 173          
 174          //画图函数, col横坐标,layer,表示上下层,width是图形的可宽度,高固定为16 bmp图形指针
 175           void draw_bmp(uchar col,uchar layer,uchar width,uchar *bmp)
 176             {
 177   1           uchar x;
 178   1      	 uchar address;
 179   1      	 uchar p=0;
C51 COMPILER V6.14  12232                                                                  08/25/2006 08:15:20 PAGE 4   

 180   1           uchar page=0;
 181   1      	 uchar window=0;
 182   1               uchar wid=width;
 183   1      	 if(layer) page=2;
 184   1      	 for(x=col;x<col+width;x++)
 185   1      	   {
 186   2      
 187   2      

⌨️ 快捷键说明

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