📄 anyposition.lst
字号:
C51 COMPILER V8.08 ANYPOSITION 04/04/2008 10:44:15 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE ANYPOSITION
OBJECT MODULE PLACED IN AnyPosition.OBJ
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE AnyPosition.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<stdio.h>
3
4 unsigned data i;
5 unsigned char q;
6 unsigned char *p2,*pp; //建立数组指针
7 unsigned char wbyte;
8 unsigned char Column; //定义列
9 unsigned char Page; //定义页
10
11 sbit E=P3^2; //读写使能信号,1有效
12 sbit R_W=P3^1; //读写选择信号;1为读选通,0为写选通
13 sbit RS=P3^0;
14 sbit D_I=P3^0; //数据指令选择信号;1为数据操作,0为写指令或读状态
15
16 unsigned char data j;
17 unsigned char data k;
18
19 /********************扩充指令集画图********************/
20 unsigned char data z;//图形数组的页,为实际点阵行数
21 unsigned char data y;//图形数组的列,为实际点阵列数除以8
22 unsigned char data Column;//起始点设定:为在液晶中显示的实际起始列
23 unsigned char data Page;//起始点设定:为在液晶中显示的实际起始行
24
25
26 char code MyTu2[32][4]= /*图形数组,演示图形的任意位置显示*/
27 {
28 0xAA,0x8A,0xE8,0xAA,0x00,0x5D,0xFC,0x00,0x2A,0xFB,0xBF,0xAA,0x01,0x51,0x15,0x40,
29 0xAF,0xBF,0xFA,0xEA,0x05,0xDD,0x5D,0xD0,0x2E,0xF8,0x0F,0xBA,0x15,0x40,0x01,0x14,
30 0xBF,0x8E,0x00,0xFE,0x75,0x05,0x00,0x54,0x3A,0x03,0x00,0x6E,0x74,0x00,0x00,0x17,
31 0xFE,0x02,0xBE,0x3F,0x44,0x01,0xC4,0x15,0xEC,0x0F,0x82,0x3B,0x74,0x01,0x07,0x17,
32 0xFC,0x3B,0x8E,0x3F,0x54,0x41,0x5C,0x15,0xEC,0x63,0xA8,0x3B,0x54,0x11,0x00,0x17,
33 0xEE,0x0A,0x00,0x2F,0x54,0x01,0x00,0x57,0x3B,0x03,0x02,0x7E,0x11,0x01,0x00,0x54,
34 0xBB,0xC3,0x81,0xFE,0x1D,0xC0,0x05,0xDC,0x2E,0xFA,0x2F,0xBA,0x07,0x77,0x75,0x70,
35 0xAB,0xEB,0xFB,0xEA,0x01,0xD7,0x55,0xC0,0x2A,0xBF,0xFF,0xAA,0x00,0x17,0x74,0x00,
36 };
37
38 void WCOM(unsigned char d) //写指令程序
39 {
40 1 R_W=1;
41 1 D_I=0; //设置状态
42 1 Loop:
43 1 P1=0xFF;
44 1 E=1; //使能有效
45 1 q=P1; //将p1口状态读入
46 1 E=0; //关闭使能信号
47 1 if(q&0x80) //判断屏幕是否忙
48 1 {
49 2 goto Loop; //若忙,循环等待
50 2 }
51 1 R_W=0;
52 1 D_I=0; //写数据指令
53 1 P1=d; //将数据送入p1口
54 1 E=1; //使能信号开
55 1 E=0; //使能信号关
C51 COMPILER V8.08 ANYPOSITION 04/04/2008 10:44:15 PAGE 2
56 1 }
57
58 void Dat(unsigned char d)
59 {
60 1 R_W=1;
61 1 D_I=0; //读状态指令
62 1 Loop:
63 1 P1=0xFF;
64 1 E=1; //使能
65 1 q=P1;
66 1 E=0;
67 1 if(q&0x80)
68 1 {
69 2 goto Loop;
70 2 } //判忙
71 1 D_I=1; //送数据指令
72 1 R_W=0;
73 1 P1=d;
74 1 E=1; //使能信号开
75 1 E=0; //使能信号关
76 1 }
77
78 void Clearlcd()
79 {
80 1 D_I=0;
81 1 R_W=0;
82 1 P1=0x01;
83 1 WCOM(0x01); //清除显示
84 1 }
85
86 void Imim()
87 {
88 1 P0=0xff;
89 1 P1=0xff;
90 1 P2=0xff;
91 1 P3=0xff;
92 1 E=0;
93 1 WCOM(0x38); //功能设定
94 1 WCOM(0x08); //关显示指令
95 1 WCOM(0x06); //游标右移
96 1 Clearlcd(); //清屏
97 1 WCOM(0x0c); //开显示指令
98 1 }
99
100
101
102 void Tuxing()
103 {
104 1 unsigned char data v;
105 1 unsigned char data w;
106 1 unsigned char data x;
107 1 unsigned char data h;
108 1 WCOM(0x34); //功能设定
109 1 WCOM(0x36); //扩充功能设定
110 1 pp=p2;
111 1 pp=pp+16*y*2;
112 1 for(h=0;h<z/2;h++) //页循环
113 1 {
114 2 v=Column|0x80;
115 2 w=Page|0x80;
116 2 WCOM(w); //送入起始页地址
117 2 WCOM(v); //送入起始列地址
C51 COMPILER V8.08 ANYPOSITION 04/04/2008 10:44:15 PAGE 3
118 2 Page++; //准备对下一页进行操作
119 2 for(x=0;x<2*y;x++) //列循环
120 2 {
121 3 if(x<y)
122 3 {
123 4 wbyte=*p2;
124 4 Dat(wbyte); //循环送入图形数据
125 4 p2=p2+1;
126 4 }
127 3 else
128 3 {
129 4 wbyte=*pp;
130 4 Dat(wbyte); //循环送入图形数据
131 4 pp=pp+1;
132 4 }
133 3 }
134 2 }
135 1 }
136
137 void OneTuxing()
138 {
139 1 unsigned char data v;
140 1 unsigned char data w;
141 1 unsigned char data x;
142 1 unsigned char data h;
143 1 WCOM(0x34); //功能设定
144 1 WCOM(0x36); //扩充功能设定
145 1 for(h=0;h<z;h++) //页循环
146 1 {
147 2 v=Column|0x80;
148 2 w=Page|0x80;
149 2 WCOM(w); //送入起始页地址
150 2 WCOM(v); //送入起始列地址
151 2 Page++; //准备对下一页进行操作
152 2 for(x=0;x<y;x++) //列循环
153 2 {
154 3 wbyte=*p2;
155 3 Dat(wbyte); //循环送入图形数据
156 3 p2++;
157 3 }
158 2 }
159 1 }
160
161
162 void Clearlcd1()
163 {
164 1 unsigned char data Disp_Page;
165 1 unsigned char data i;
166 1 unsigned char data j;
167 1 for(i=0;i<64;i++) //共32页
168 1 {
169 2 Disp_Page=i|0x80; //设置页地址
170 2 WCOM(Disp_Page); //送入页地址
171 2 WCOM(0x80); //送入起始列地址
172 2 for(j=0;j<32;j++)
173 2 {
174 3 Dat(0x00); //清屏
175 3 }
176 2 }
177 1 }
178
179
C51 COMPILER V8.08 ANYPOSITION 04/04/2008 10:44:15 PAGE 4
180 /********************主程序********************/
181 void main()
182 {
183 1 Imim(); //初始化
184 1 Clearlcd1(); //扩充指令集清屏
185 1
186 1 z=32; //图形数组的页,为实际点阵行数
187 1 y=4; //图形数组的列,为实际点阵列数除以8
188 1 Column=5; //起始点设定:为在液晶中显示的实际起始列,一列占一个汉字
189 1 Page=0; //起始点设定:为在液晶中显示的实际起始行
190 1 p2=MyTu2;
*** WARNING C182 IN LINE 190 OF ANYPOSITION.C: pointer to different objects
191 1 OneTuxing(); //显示一个小的图标
192 1 while(1)
193 1 {
194 2 }
195 1 }
196
197
198
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 391 ----
CONSTANT SIZE = 128 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -