📄 demo.lst
字号:
C51 COMPILER V7.06 DEMO 08/11/2005 09:54:20 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DEMO
OBJECT MODULE PLACED IN E:\新文档\SOFT\C\CSED1335\DEMO.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE E:\新文档\SOFT\C\CSED1335\DEMO.C DB SB OE
stmt level source
1 #include <reg51.h>
2 #include <math.h>
3 #include <absacc.h>
4 #include <string.h>
5 /* 直接访问方式地址定义,根据用户平台接口修改 */
6 #define wcadd1 XBYTE[0x8100] /* 写指令代码地址 */
7 #define wdadd1 XBYTE[0x8000] /* 写参数及显示数据地址 */
8 #define rdadd1 XBYTE[0x8100] /* 读参数及显示数据地址 */
9 #define rbadd1 XBYTE[0x8000] /* 读忙状态地址 */
10 /* 程序参数定义,根据用户选择的LCM型号修改 */
11 #define PARA 0x30; /*同SYSTEM SET中的P6设置,用来计算光标地址的*/
12 /* 定义调用子程序 */
13 CCW1_PR(char O_X,char O_Y,char code_1); /* 汉字写入子程序(文本方式) */
14 CCW2_PR(char O_X,char O_Y,char code_1); /* 汉字写入子程序(图形方式) */
15 W_DOT(int O_X,int O_Y ); /* 绘点子程序 */
16 CW_PR(O_X,O_Y); /* 西文写入子程序 */
17 /*-------------------240128的SYSTEM SET 参数-------------------------------*/
18 unsigned char SYSTAB[8]={0x30,0x87,0x07,0x27,0x2c,0xf0,0x30,0x00};
19 unsigned char SCRTAB[10]={0x00,0x00,0xf0,0x00,0x40,0xf0,0x00,0x80,0x00,0x00};
20 /*-------------------320240的SYSTEM SET 参数-------------------------------*/
21 /*unsigned char SYSTAB[8]={0x30,0x87,0x07,0x28,0x42,0xf0,0x29,0x00};
22 unsigned char SCRTAB[10]={0x00,0x00,0xf0,0xce,0x04,0xf0,0x80,0x00,0x00,0x00};*/
23
24 /* 在此可以观察文本方式下的字符及光标的显示效果(写入内容为"Support tel:0571-85121742") */
25 unsigned char CTAB1[25]={0x53,0x75,0x50,0x50,0x6f,0x72,0x74,0x20,0x54,0x45,0x4c,0x3a,0x30,0x35,0x37,0x31,0
-x2d,0x38,0x35,0x31,0x32,0x31,0x37,0x34,0x32};
26
27 /*图形方式下显示汉字*/
28 code unsigned char CGTAB[9][72]={0x00,0x20,0x18,0x0C,0x06,0x04,0x41,0x21, // 清
29 0x32,0x1A,0x12,0x04,0x04,0x04,0x0C,0x7C,
30 0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x04,0x00,
31 0x02,0x03,0x03,0xFF,0x03,0x03,0x7F,0x03,
32 0x03,0xFF,0x00,0x20,0x3F,0x30,0x30,0x3F,
33 0x30,0x30,0x3F,0x30,0x30,0x31,0x30,0x20,
34 0x00,0x80,0x18,0xFC,0x00,0x30,0xF8,0x00,
35 0x0C,0xFE,0x00,0x30,0xF8,0x30,0x30,0xF0,
36 0x30,0x30,0xF0,0x30,0x30,0xF0,0x60,0x40,
37
38 0x00,0x00,0x18,0x0C,0x06,0x06,0x02,0x00, // 达
39 0x00,0x00,0x06,0x7F,0x06,0x06,0x06,0x06,
40 0x06,0x06,0x06,0x0E,0x7A,0x31,0x20,0x00,
41 0x04,0x07,0x06,0x06,0x06,0x06,0x06,0xFF,
42 0x06,0x06,0x06,0x06,0x07,0x0C,0x0C,0x18,
43 0x30,0x60,0x80,0x00,0x00,0xFF,0xFF,0x00,
44 0x00,0x00,0x00,0x00,0x00,0x10,0x38,0xFC,
45 0x00,0x00,0x00,0x00,0x00,0xC0,0x70,0x38,
46 0x1C,0x0C,0x00,0x00,0x00,0xFE,0xF8,0x00,
47
48 0x00,0x00,0x08,0x04,0x06,0x03,0x03,0x01, // 光
49 0x01,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,
50 0x00,0x01,0x01,0x03,0x06,0x18,0x60,0x00,
51 0x10,0x1C,0x18,0x18,0x18,0x18,0x98,0x99,
52 0x19,0x1A,0xFF,0xC6,0xC6,0xC6,0xC6,0xC6,
53 0xC6,0x86,0x86,0x06,0x06,0x07,0x03,0x00,
54 0x00,0x00,0x40,0x70,0x60,0xC0,0xC0,0x80,
C51 COMPILER V7.06 DEMO 08/11/2005 09:54:20 PAGE 2
55 0x00,0x0C,0xFE,0x00,0x00,0x00,0x00,0x04,
56 0x04,0x04,0x04,0x04,0x06,0xFE,0xFC,0x00,
57
58 0x00,0x00,0x00,0x00,0x10,0x1F,0x18,0x18, // 电
59 0x18,0x18,0x1F,0x18,0x18,0x18,0x18,0x1F,
60 0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
61 0x20,0x38,0x30,0x30,0x30,0xFF,0x30,0x30,
62 0x30,0x30,0xFF,0x30,0x30,0x30,0x30,0xFF,
63 0x30,0x30,0x30,0x30,0x30,0x3F,0x1F,0x00,
64 0x00,0x00,0x00,0x00,0x60,0xF0,0x60,0x60,
65 0x60,0x60,0xE0,0x60,0x60,0x60,0x60,0xE0,
66 0x40,0x04,0x04,0x04,0x06,0xFE,0xFC,0x00};
67 /* 文本方式下的汉字显示方法
68 在文本方式下显示汉字, 需要在SED1335 等显示RAM 内建立一个自定义字符库
69 CGRAM,然后通过在相应的单元写入相应的字符代码来实现汉字的显示.
70 SED1335 等的字符代码对应的是8x8 点阵的字符块, 而一个汉字需要四个8x8
71 点阵的字符块组合显示, 所以在建立汉字的CGRAM 时, 需要四个字符代码管理一个
72 汉字, 一般是按左上部, 左下部, 右上部和右下部四部分分配代码. 比如在演示程
73 序中建立 "清华" 两个汉字的CGRAM,那么这两个汉字的代码为80H(81H,82H,83H)和
74 84H(85H,86H,87H). */
75 code unsigned char CGTABB[4][32]={0x00,0x40,0x37,0x10,0x83,0x60,0x2F,0x08, /* 清*/
76 0x13,0x12,0x63,0x22,0x23,0x22,0x22,0x22,
77 0x40,0x48,0xFC,0x40,0xF8,0x40,0xFE,0x00,
78 0xF8,0x08,0xF8,0x08,0xF8,0x08,0x28,0x10,
79 0x01,0x41,0x27,0x21,0x1F,0x04,0xE2,0x2F, /* 达*/
80 0x21,0x2F,0x21,0x3F,0x21,0x51,0x8F,0x00,
81 0x00,0x00,0xE0,0x00,0xF0,0x20,0x40,0xF0,
82 0x00,0xE0,0x00,0xF8,0x00,0x00,0xFE,0x00,
83 0x01,0x21,0x11,0x09,0x09,0x01,0xFF,0x04, /* 光*/
84 0x04,0x04,0x04,0x08,0x08,0x10,0x20,0x40,
85 0x00,0x08,0x0C,0x10,0x20,0x04,0xFE,0x40,
86 0x40,0x40,0x40,0x40,0x42,0x42,0x3E,0x00,
87 0x1F,0x41,0x7F,0x81,0x3D,0x01,0x3D,0x01, /* 电*/
88 0x3F,0x21,0x3F,0x21,0x3F,0x01,0x01,0x01,
89 0xF0,0x04,0xFE,0x02,0x74,0x00,0x70,0x00,
90 0xF8,0x08,0xF8,0x08,0xF8,0x02,0x02,0xFE };
91 /*********************/
92 /* 演示主程序 */
93 /*********************/
94 void main()
95 {
96 1 unsigned char i,j,code_1;
97 1 unsigned int k,O_X,O_Y;
98 1 INT_1(); /* 调初始化子程序 */
*** WARNING C206 IN LINE 98 OF E:\新文档\SOFT\C\CSED1335\DEMO.C: 'INT_1': missing function-prototype
99 1 CLEAR(); /* 调清屏子程序 */
*** WARNING C206 IN LINE 99 OF E:\新文档\SOFT\C\CSED1335\DEMO.C: 'CLEAR': missing function-prototype
100 1 DELAY();
*** WARNING C206 IN LINE 100 OF E:\新文档\SOFT\C\CSED1335\DEMO.C: 'DELAY': missing function-prototype
101 1 /*--------- 绘点显示演示---------*/
102 1 k=0;
103 1 for(j=0;j<240;j++) /*画一条直线,横坐标是O_X ,纵坐标是O_Y */
104 1 {
105 2 O_X=k;
106 2 O_Y=j+0x00;
107 2 W_DOT(O_X,O_Y); /* 调绘点子程序 */
108 2 k++;
109 2 if(k>320)break; /*如果横坐标大于屏的列宽240,则停止*/
110 2 }
111 1 for(j=241;j>0;j--)
112 1 {
113 2 O_X=k;
C51 COMPILER V7.06 DEMO 08/11/2005 09:54:20 PAGE 3
114 2 O_Y=j+0x00;
115 2 W_DOT(O_X,O_Y); /*调绘点子程序 */
116 2 k++;
117 2 if(k>320)break;
118 2 }
119 1
120 1 DELAY();
121 1
122 1 /*-------中文显示(图形方式)-------*/
123 1 code_1=0x00; /*确定写入汉字的代码*/
124 1 O_X=0x00; /*写入汉字的低位地址*/
125 1 O_Y=0x00; /*写入汉字的高位地址*/
126 1 CCW2_PR(O_X,O_Y,code_1); /* 调中文显示子程序(图形方式) */
127 1 code_1=0x01; /*确定写入汉字的地址*/
128 1 O_X=0x03;
129 1 O_Y=0x00;
130 1 CCW2_PR(O_X,O_Y,code_1); /* 调中文显示子程序(图形方式) */
131 1 code_1=0x02; /*确定写入汉字的地址*/
132 1 O_X=0x06;
133 1 O_Y=0x00;
134 1 CCW2_PR(O_X,O_Y,code_1); /* 调中文显示子程序(图形方式) */
135 1 code_1=0x03; /*确定写入汉字的地址*/
136 1 O_X=0x09;
137 1 O_Y=0x00;
138 1 CCW2_PR(O_X,O_Y,code_1); /* 调中文显示子程序(图形方式) */
139 1
140 1 DELAY();
141 1 CLEAR();
142 1 /*------- 中文显示(文本方式)----------- */
143 1 CGRAM(); /* 调CGRAM子程序 */
*** WARNING C206 IN LINE 143 OF E:\新文档\SOFT\C\CSED1335\DEMO.C: 'CGRAM': missing function-prototype
144 1 code_1=0x80; /* 取字模 */
145 1 O_X=0x00;
146 1 O_Y=0x01;
147 1 CCW1_PR(O_X,O_Y,code_1); /* 调中文显示子程序(文本方式) */
148 1 code_1=0x84; /* 取字模 */
149 1 O_X=0x02;
150 1 O_Y=0x01;
151 1 CCW1_PR(O_X,O_Y,code_1); /* 调中文显示子程序(文本方式) */
152 1 code_1=0x88; /* 取字模 */
153 1 O_X=0x04;
154 1 O_Y=0x01;
155 1 CCW1_PR(O_X,O_Y,code_1); /* 调中文显示子程序(文本方式) */
156 1 code_1=0x8C; /* 取字模 */
157 1 O_X=0x06;
158 1 O_Y=0x01;
159 1 CCW1_PR(O_X,O_Y,code_1); /* 调中文显示子程序(文本方式) */
160 1 DELAY();
161 1 CLEAR();
162 1 /*------------西文显示-------------*/
163 1 wcadd1=0x5d; /* 设光标形状 */
164 1 wdadd1=0x07;
165 1 wdadd1=0x03;
166 1 wcadd1=0x5b; /* OVLAY代码 */
167 1 wdadd1=0x01;
168 1 wcadd1=0x59; /* DISP ON\OFF代码 */
169 1 wdadd1=0x56;
170 1 O_X=0; /*X轴方向取值0~29(十进制)*/
171 1 O_Y=0; /*Y轴方向取值0~15(十进制)*/
172 1 CW_PR(O_X,O_Y); /* 调西文写入子程序 */
173 1 delay();
*** WARNING C206 IN LINE 173 OF E:\新文档\SOFT\C\CSED1335\DEMO.C: 'delay': missing function-prototype
C51 COMPILER V7.06 DEMO 08/11/2005 09:54:20 PAGE 4
174 1 }
*** WARNING C280 IN LINE 96 OF E:\新文档\SOFT\C\CSED1335\DEMO.C: 'i': unreferenced local variable
175 /************************/
176 /* 初始化子程序函数 */
177 /************************/
178 INT_1()
179 {
180 1 unsigned char i;
181 1 wcadd1=0x40; /* SYSTEM SET代码 */
182 1 for(i=0;i<8;i++)
183 1 {
184 2 wdadd1=SYSTAB[i]; /* 写入参数 */
185 2 }
186 1 wcadd1=0x44; /* SCROLL代码 */
187 1 for(i=0;i<10;i++)
188 1 {
189 2 wdadd1=SCRTAB[i]; /* 写入参数 */
190 2 }
191 1 wcadd1=0x5a; /* HDOT SCR 代码 */
192 1 wdadd1=0x00; /* 设置参数P1 */
193 1 wcadd1=0x5b; /* OVLAY 代码 */
194 1 wdadd1=0x00; /* 设置参数:显示一,三区为文本属性 */
195 1
196 1 wcadd1=0x59; /* 显示状态设置 */
197 1 wdadd1=0x54; /* 设置参数:显示一~四区开显示 */
198 1 }
199 /*************************/
200 /* 清屏子程序函数 */
201 /*************************/
202 CLEAR()
203 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -