📄 test_two.lst
字号:
C51 COMPILER V7.50 TEST_TWO 10/21/2007 15:46:33 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TEST_TWO
OBJECT MODULE PLACED IN test_two.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE test_two.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*12232点阵信利液晶基本驱动程序
2 〖说明〗12232点阵信利液晶基本驱动程序,国内很多122×32的液晶与之完全兼容,
3 该液晶左右分MASTER和SLAVE,上下共分4页,左边列地址从0-61,
4 右边列地址从0-61,由于芯片内部线路的落后,所以使用较麻烦。
5 〖文件〗12232lcd.c ﹫2001/03/23
6 〖作者〗龙啸九天 c51@yeah.net http://mcs51.yeah.net
7 〖修改〗修改建议请到论坛公布 http://c51bbs.yeah.net
8 〖版本〗V1.00A Build 0323*/
9 #include<reg51.h>
10 #include <intrins.h>
11 sbit E2=P1^0;
12 sbit E1=P1^1;
13 sbit A0=P1^3;
14 sbit RW=P1^2;
15 #define DATA P2
16 #define uchar unsigned char
17 unsigned char code bmp[4*122]=
18 {
19 /*-- 调入了一幅图像:C:\Documents and Settings\hex\My Documents\12232.bmp --*/
20 /*-- 宽度x高度=122x32 --*/
21 0x00,0x80,0x90,0x9C,0x8C,0x84,0xF4,0xF5,0xA7,0x86,0x84,0x84,0x84,0x94,0x9C,0x8C,
22 0x84,0x00,0x00,0xF8,0xFC,0x8F,0x8B,0xF8,0xF8,0x70,0xBF,0x8F,0x08,0x08,0x08,0xF8,
23 0xF8,0x00,0x00,0x00,0x20,0x24,0x24,0xE4,0xFC,0xFE,0x22,0x22,0x22,0xF8,0xF8,0x00,
24 0x00,0xFF,0xFF,0x00,0x00,0x40,0x42,0x46,0x5C,0xDC,0xC8,0x7F,0x7F,0xC0,0xD0,0x5E,
25 0x4E,0x64,0x60,0x40,0x00,0x00,0x00,0xF8,0xF8,0x48,0x48,0x48,0xFF,0xFF,0x48,0x48,
26 0x48,0xF8,0xF8,0x00,0x00,0x00,0x10,0x12,0x92,0xF2,0xFE,0xFF,0xD1,0x91,0x22,0xEE,
27 0xCC,0x00,0xFF,0xFF,0x00,0x00,0x00,0x08,0x08,0x88,0xFF,0xFF,0x68,0x28,0xC8,0xC8,
28 0x48,0x7F,0x7F,0xC8,0xC8,0x48,0x08,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0xC0,0x47,
29 0x6F,0x28,0x38,0x38,0x2C,0x67,0xC3,0xC0,0x40,0x00,0x00,0x00,0x00,0x7F,0x7F,0x10,
30 0x10,0x3F,0x3F,0x00,0x00,0x03,0x27,0x66,0x60,0x3F,0x1F,0x00,0x00,0x10,0x18,0x0C,
31 0x07,0x03,0xFF,0xFF,0x0F,0x0E,0x04,0x0F,0x2F,0x60,0xC0,0xFF,0x7F,0x00,0x00,0x80,
32 0xC0,0x60,0x38,0x1F,0x07,0x00,0x00,0x3F,0x7F,0x40,0x40,0x40,0x78,0x78,0x00,0x00,
33 0x00,0x0F,0x0F,0x04,0x04,0x04,0x3F,0x7F,0x44,0x44,0x44,0x4F,0x4F,0x70,0x70,0x00,
34 0x04,0x06,0x03,0x01,0xFF,0xFF,0x04,0x04,0x04,0x06,0x02,0x02,0xFF,0xFF,0x01,0x01,
35 0x00,0x01,0x41,0xC1,0xFF,0x7F,0x40,0x40,0x60,0x33,0x1F,0x0C,0x1E,0x33,0x61,0x60,
36 0x20,0x00,0x00,0x00,0x00,0x00,0x04,0x84,0xC4,0xE4,0xF4,0x3C,0x2F,0x27,0x24,0x24,
37 0xE4,0xE4,0x04,0x04,0x04,0x00,0xFE,0xFE,0x32,0x7E,0xCE,0x82,0xFE,0xFE,0xCA,0xCA,
38 0x4A,0x4A,0x7E,0x7E,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x70,0x3E,0x8E,0x84,0x00,
39 0x0E,0x1E,0x70,0xE0,0xC0,0x80,0x80,0x00,0x00,0x10,0x92,0x92,0x92,0x92,0x92,0x92,
40 0x92,0x92,0x92,0x12,0x02,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
41 0x00,0x00,0x00,0x00,0xC0,0xF8,0xF8,0xE0,0x00,0x00,0x00,0x08,0xF8,0xF8,0xF0,0xC0,
42 0x08,0xF8,0xF8,0x08,0x08,0xF8,0xF8,0x08,0x08,0x18,0xF0,0xE0,0x00,0xE0,0xF0,0x18,
43 0x08,0x08,0x18,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
44 0x03,0x01,0x00,0xFF,0xFF,0x09,0x09,0x29,0x69,0xC9,0xFF,0x7F,0x00,0x00,0x00,0x00,
45 0xFF,0xFF,0x02,0x06,0x07,0x03,0xFF,0xFF,0x60,0x23,0x0F,0x1E,0x33,0x61,0x60,0x20,
46 0x00,0x00,0x01,0x21,0x70,0x78,0x2C,0x27,0x33,0x31,0x10,0x14,0x7C,0x78,0x31,0x01,
47 0x00,0x00,0x00,0x00,0x1F,0x1F,0x04,0x04,0x04,0x04,0x04,0x0F,0x0F,0x20,0x60,0x7F,
48 0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3C,0x3F,0x23,
49 0x02,0x27,0x3F,0x38,0x20,0x20,0x3F,0x3F,0x20,0x07,0x1F,0x3F,0x3F,0x00,0x20,0x3F,
50 0x3F,0x20,0x20,0x30,0x1F,0x0F,0x00,0x0F,0x1F,0x30,0x20,0x20,0x30,0x1F,0x0F,0x00,
51 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
52 };
53
54 void delay(unsigned int nnn)
55 {
C51 COMPILER V7.50 TEST_TWO 10/21/2007 15:46:33 PAGE 2
56 1 unsigned int mmm;
57 1 while(nnn-->0)
58 1 for(mmm=0;mmm<1;mmm++);
59 1 }
60 /*----------------------------------------------------------------------------
61 调用方式:void OutMI(uchar i)
62 函数说明:发指令i到主窗口。(内函数,私有,用户不直接调用)
63 ------------------------------------------------------------------------------*/
64 void OutMI(uchar i)
65 {
66 1 E1=1;
67 1 _nop_();
68 1 _nop_();
69 1 A0=0;
70 1 _nop_();
71 1 _nop_();
72 1 DATA=i;
73 1 _nop_();
74 1 _nop_();
75 1 E1=0;
76 1 _nop_();
77 1 _nop_();
78 1 }
79 /*--------------------------------------------------------------------------------
80 调用方式:void OutMD(uchar i)
81 函数说明:发数据i到主窗口。(内函数,私有,用户不直接调用)
82 ---------------------------------------------------------------------------------*/
83 void OutMD(uchar i)
84 {
85 1 E1=1;_nop_();_nop_();
86 1 A0=1;_nop_();_nop_();
87 1 DATA=i;_nop_();_nop_();
88 1 E1=0;_nop_();_nop_();
89 1 }
90 /*--------------------------------------------------------------------------------
91 调用方式:void OutSI(uchar i)
92 函数说明:发指令i到从窗口。(内函数,私有,用户不直接调用)
93 ---------------------------------------------------------------------------------*/
94 void OutSI(uchar i)
95 {
96 1 A0=0;_nop_();_nop_();
97 1 E2=1;_nop_();_nop_();
98 1 DATA=i;_nop_();_nop_();
99 1 E2=0;_nop_();_nop_();
100 1 }
101 /*--------------------------------------------------------------------------------
102 调用方式:void OutSD(uchar i)
103 函数说明:发数据i到从窗口。(内函数,私有,用户不直接调用)
104 ---------------------------------------------------------------------------------*/
105 void OutSD(uchar i)
106 {
107 1 A0=1;
108 1 _nop_();
109 1 _nop_();
110 1 E2=1;
111 1 _nop_();
112 1 _nop_();
113 1 DATA=i;
114 1 _nop_();
115 1 _nop_();
116 1 E2=0;
117 1 _nop_();
C51 COMPILER V7.50 TEST_TWO 10/21/2007 15:46:33 PAGE 3
118 1 _nop_();
119 1 }
120 /*--------------------------------------------------------------------------------
121 调用方式:void LcdIni(void)
122 函数说明:12232点阵液晶初始化,开机后仅调用一次。
123 ---------------------------------------------------------------------------------*/
124 void LcdIni(void)
125 {
126 1 OutMI(0XE2);OutSI(0XE2);//复位
127 1 OutMI(0XAE);OutSI(0XAE);//POWER SAVE
128 1 OutMI(0XA4);OutSI(0XA4);//动态驱动
129 1 OutMI(0XA9);OutSI(0XA9);//1/32占空比
130 1 OutMI(0XA0);OutSI(0XA0);//时钟线输出
131 1 OutMI(0XEE);OutSI(0XEE);//写模式
132 1 OutMI(0X00);OutMI(0XC0);
133 1 OutSI(0X00);OutSI(0XC0);
134 1 OutMI(0XAF);OutSI(0XAF);
135 1 }
136 /*--------------------------------------------------------------------------------
137 调用方式:void SetPage(uchar page0,uchar page1)
138 函数说明:同时设置主从显示页为0-3页。(内函数,私有,用户不直接调用)
139 ---------------------------------------------------------------------------------*/
140 void SetPage(uchar page0,uchar page1)
141 {
142 1 OutMI(0xB8|page1);
143 1 OutSI(0xB8|page0);
144 1 }
145 /*--------------------------------------------------------------------------------
146 调用方式:void SetAddress(uchar address0,uchar address1)
147 函数说明:同时设置主从列地址为0-121。(内函数,私有,用户不直接调用)
148 ---------------------------------------------------------------------------------*/
149 void SetAddress(uchar address0,uchar address1)
150 {
151 1 OutMI(address1&0x7F);
152 1 OutSI(address0&0x7F);
153 1 }
154 /*--------------------------------------------------------------------------------
155 调用方式:void PutChar0(uchar ch)
156 函数说明:在左页当前地址画一个字节8个点。(内函数,私有,用户不直接调用)
157 ---------------------------------------------------------------------------------*/
158 void PutChar0(uchar ch)
159 {
160 1 OutSD(ch);
161 1 }
162 /*--------------------------------------------------------------------------------
163 调用方式:void PutChar1(uchar ch)
164 函数说明:在右页当前地址画一个字节8个点。(内函数,私有,用户不直接调用)
165 ---------------------------------------------------------------------------------*/
166 void PutChar1(uchar ch)
167 {
168 1 OutMD(ch);
169 1 }
170 /*--------------------------------------------------------------------------------
171 调用方式:void DrawBmp(uchar x,bit layer,uchar width,uchar *bmp)
172 函数说明:画一个图,横坐标是x,layer表示上下层,width是图形的宽,高都是16,bmp是
173 图形指针
174 使用zimo21软件,采用纵向取模得到bmp数据。
175 ---------------------------------------------------------------------------------*/
176 void DrawBmp(uchar x0,bit layer,uchar width,uchar *bmp)
177 {
178 1 uchar x,address,i=0; //address表示显存的物理地址
179 1 uchar page=0;
C51 COMPILER V7.50 TEST_TWO 10/21/2007 15:46:33 PAGE 4
180 1 bit window=0; //page表示上下两页,window表示左右两页
181 1 if (layer) page=2;
182 1 for (x=x0;x<x0+width;x++)
183 1 {
184 2 if (x>60) {window=1;address=x%61;}
185 2 else address=x;
186 2 SetPage(page,page);
187 2 SetAddress(address,address);
188 2 if (window) PutChar1(bmp[i]);
189 2 else PutChar0(bmp[i]);//画上层
190 2 SetPage(page+1,page+1);
191 2 SetAddress(address,address);
192 2 if (window) PutChar1(bmp[i+width]);
193 2 else PutChar0(bmp[i+width]);//画下层
194 2 i++;
195 2 }
196 1 }
197 /*--------------------------------------------------------------------------------
198 调用方式:void clrscr(void)
199 函数说明:清屏
200 ---------------------------------------------------------------------------------*/
201 void clrscr(void)
202 {
203 1 uchar i;
204 1 uchar page;
205 1 for (page=0;page<4;page++)
206 1 {
207 2 SetPage(page,page);
208 2 SetAddress(0,0);
209 2 for (i=0;i<61;i++){PutChar0(0);PutChar1(0);}
210 2 }
211 1 }
212
213 main()
214 {
215 1 RW=0;
216 1 delay(1000);
217 1 LcdIni();
218 1 delay(1000);
219 1 DrawBmp(20,0,10,bmp);
220 1 while(1);
221 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 465 ----
CONSTANT SIZE = 488 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 9
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -