📄 demo.lst
字号:
C51 COMPILER V7.07 DEMO 01/12/2007 17:28:05 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE DEMO
OBJECT MODULE PLACED IN demo.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE demo.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 // CEEBACK.GAO. 2006-05-09
2 // 目标器件: LCM: AG_320240,SED1335
3 // MCU: STC89C58RD+
4 // 实现功能: 可以写 ASCII 码字符,写汉字(文本层,图形层)
5 // 画直线,画圆;
6 // 说明:对320*240点阵屏幕坐标定位如下
7 // 左上角为原点(0,0),水平向右为X轴正方向,垂直向下为Y轴正方向
8 // X 轴坐标取值范围: 0~319;
9 // Y 轴坐标取值范围: 0~239;
10 // 字模提取方法:采zimo221软件,纵向取模,再修改图像->旋转90度->图像上下调换。
11 // 这样依次得到左上部, 左下部, 右上部和右下部四部分分配代码
12
13 #include <mcs51.h>
14 #include <absacc.h>
15 //#include <math.h>
16
17 #define uchar unsigned char
18 #define uint unsigned int
19 #define ulong unsigned long
20
21 // 直接访问方式地址定义,根据用户平台接口修改
22 #define LCD_CMD_ADR XBYTE[0xBF02] // 写指令代码地址 读参数及显示数据地址
23 #define LCD_DAT_ADR XBYTE[0xBF00] // 写参数及显示数据地址 读忙状态地址
24 //#define rdadd1 XBYTE[0xBF02]
25 //#define rbadd1 XBYTE[0xBF00]
26
27 // 程序参数定义,根据用户选择的LCM型号修改
28 #define PARA 0x28
29 #define SAD2 0X04B0
30
31 // 定义调用函数
32 void CCW1_PR(uchar O_X,uchar O_Y,uint num); // 汉字写入函数(文本方式)
33 void CCW2_PR(uchar O_X,uchar O_Y,uint num); // 汉字写入函数(图形方式)
34 void CGRAM(uint num);
35 void clear_lcd(void);
36 void initial_lcd(void);
37 void draw_dot(int O_X,uchar O_Y); // 绘点函数
38 void w_ASCII(uchar O_X,uchar O_Y,uchar num); // 写ASCII码函数
39 void w_string(uchar O_X,uchar O_Y,const uchar *STRING);
40 void draw_vertical(uchar y1,uchar y2,int x);
41 void draw_horizontal(int x1,int x2,uchar y);
42 void draw_bias(int x1,uchar y1,int x2,uchar y2);
43 void draw_circle(int x0,uchar y0,uchar radius);
44
45 //-------------------240128的SYSTEM SET 参数-------------------------------
46 //code unsigned char SYSTAB[8]={0x30,0x87,0x07,0x1e,0x47,0x80,0x1f,0x00};
47 unsigned char SYSTAB[8]={0x30,0x87,0x07,0x27,0x47,0xef,0x28,0x00}; // 自己修改的
48 //code unsigned char SCRTAB[10]={0x00,0x00,0x80,0xf0,0x01,0x80,0x00,0x00,0x00,0x00};
49 unsigned char SCRTAB[8]={0x00,0x00,0xf0,0xb0,0x04,0xf0,0x2F,0x2A}; // 自己修改的
50
51 // 在此可以观察文本方式下的字符及光标的显示效果(写入内容为"Sevicer tel:")
52 code unsigned char CTAB1[]={"TIETONG ELECTRONICS CO.LTD"};
53 // 文本方式下的汉字显示方法
54 /*在文本方式下显示汉字, 需要在SED1335 等显示RAM 内建立一个自定义字符库
55 CGRAM,然后通过在相应的单元写入相应的字符代码来实现汉字的显示.
C51 COMPILER V7.07 DEMO 01/12/2007 17:28:05 PAGE 2
56 SED1335 等的字符代码对应的是8x8 点阵的字符块, 而一个汉字需要四个8x8
57 点阵的字符块组合显示, 所以在建立汉字的CGRAM 时, 需要四个字符代码管理一个
58 汉字, 一般是按左上部, 左下部, 右上部和右下部四部分分配代码. 比如在演示程
59 序中建立 "清华" 两个汉字的CGRAM,那么这两个汉字的代码为80H(81H,82H,83H)和
60 84H(85H,86H,87H).*/
61
62 code uchar CGTAB[][32]={
63 /*-- 文字: 泉 --*/
64 0x03,0x3F,0x3F,0x30,0x3F,0x30,0x3F,0x3F,0x01,0x7D,0x7D,0x0D,0x19,0x77,0xC3,0x00,
65 0x00,0xF8,0xF8,0x18,0xF8,0x18,0xF8,0xF8,0x80,0x8C,0xD8,0xE0,0xB0,0x9E,0x0C,0x00,
66
67 /*-- 文字: 州 --*/
68 0x18,0x19,0x19,0x19,0x59,0x5D,0x5D,0xDB,0x9B,0x99,0x19,0x31,0x31,0x61,0x60,0x00,
69 0x0C,0x8C,0x8C,0x8C,0x8C,0xCC,0xCC,0xAC,0xAC,0x8C,0x8C,0x8C,0x8C,0x8C,0x0C,0x00,
70
71 /*-- 文字: 铁 --*/
72 0x30,0x30,0x3D,0x7D,0xC1,0xFB,0x78,0x33,0x7B,0x78,0x30,0x3C,0x39,0x33,0x02,0x00,
73 0x30,0x30,0xB0,0xFC,0xFC,0x30,0x30,0xFE,0xFE,0x30,0x70,0xD8,0x8C,0x06,0x02,0x00,
74
75 /*-- 文字: 通 --*/
76 0x07,0x67,0x31,0x10,0x07,0xF7,0xF6,0x37,0x36,0x37,0x36,0x36,0x38,0x6F,0xC7,0x00,
77 0xFC,0xF8,0xB0,0xE0,0xFC,0xFC,0x6C,0xFC,0x6C,0xFC,0x6C,0x6C,0x00,0xFE,0xFE,0x00,
78
79 /*-- 文字: 电 --*/
80 0x03,0x03,0x3F,0x3F,0x33,0x33,0x3F,0x33,0x33,0x3F,0x3F,0x33,0x03,0x03,0x01,0x00,
81 0x00,0x00,0xF8,0xF8,0x18,0x18,0xF8,0x18,0x18,0xF8,0xF8,0x06,0x06,0xFE,0xFC,0x00,
82
83 /*-- 文字: 子 --*/
84 0x3F,0x3F,0x00,0x00,0x01,0x01,0xFF,0xFF,0x01,0x01,0x01,0x01,0x01,0x07,0x03,0x00,
85 0xF8,0xF8,0x30,0x60,0xC0,0x80,0xFE,0xFE,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,
86
87 /*-- 文字: 设 --*/
88 0x23,0x33,0x1B,0x13,0x07,0xF6,0xF7,0x37,0x33,0x33,0x31,0x3C,0x39,0x37,0x06,0x00,
89 0xF0,0xF0,0x30,0x30,0x3E,0x1E,0xF8,0xF8,0x18,0x30,0xB0,0xE0,0xF0,0x9E,0x0C,0x00,
90
91 /*-- 文字: 备 --*/
92 0x06,0x07,0x0F,0x1C,0x36,0x03,0x0F,0x78,0x1F,0x1F,0x19,0x1F,0x19,0x1F,0x1F,0x00,
93 0x00,0xF0,0xF0,0x30,0x60,0xC0,0xF0,0x1E,0xF8,0xF8,0x98,0xF8,0x98,0xF8,0xF8,0x00,
94
95 /*-- 文字: 有 --*/
96 0x03,0x03,0x7F,0x7F,0x06,0x0F,0x1F,0x3C,0x6F,0xCC,0x0C,0x0F,0x0C,0x0C,0x0C,0x00,
97 0x00,0x00,0xFE,0xFE,0x00,0xF8,0xF8,0x18,0xF8,0x18,0x18,0xF8,0x18,0x38,0x30,0x00,
98
99 /*-- 文字: 限 --*/
100 0x00,0x7D,0x7D,0x6D,0x6D,0x79,0x79,0x6D,0x6D,0x6D,0x7D,0x79,0x61,0x61,0x61,0x00,
101 0x00,0xFC,0xFC,0x8C,0xFC,0x8C,0xFC,0xFC,0xA0,0xAC,0xB8,0xB0,0xD8,0xCE,0x84,0x00,
102
103 /*-- 文字: 公 --*/
104 0x00,0x0C,0x0C,0x0C,0x18,0x10,0x33,0x63,0x46,0x06,0x0C,0x18,0x3F,0x3F,0x00,0x00,
105 0x00,0x60,0x60,0x60,0x30,0x18,0x0C,0x06,0x00,0x60,0x60,0x30,0xF8,0x18,0x00,0x00,
106
107 /*-- 文字: 司 --*/
108 0x00,0x3F,0x3F,0x00,0x7F,0x7F,0x00,0x3F,0x3F,0x30,0x30,0x3F,0x3F,0x00,0x00,0x00,
109 0x00,0xFC,0xFC,0x0C,0xEC,0xEC,0x0C,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x3C,0x38,0x00,
110
111 /*-- 文字: 高 --*/
112 0x01,0x7F,0x7F,0x00,0x1F,0x18,0x1F,0x00,0x7F,0x60,0x6F,0x6C,0x6F,0x60,0x60,0x00,
113 0x80,0xFC,0xFC,0x00,0xF0,0x30,0xF0,0x00,0xFC,0x0C,0xEC,0x6C,0xEC,0x1C,0x18,0x00,
114
115 /*-- 文字: 时 --*/
116 0x00,0xFC,0xFC,0xCD,0xCD,0xCC,0xFC,0xFD,0xCC,0xCC,0xFC,0xFC,0xCC,0x00,0x00,0x00,
117 0x18,0x18,0x18,0xFE,0xFE,0x18,0x18,0x98,0xD8,0xD8,0x18,0x18,0x18,0x38,0x30,0x00,
C51 COMPILER V7.07 DEMO 01/12/2007 17:28:05 PAGE 3
118
119 /*-- 文字: 兵 --*/
120 0x00,0x1F,0x1F,0x18,0x18,0x1F,0x1F,0x18,0x18,0xFF,0xFF,0x04,0x0C,0x38,0x70,0x00,
121 0x30,0xF8,0x80,0x00,0x00,0xF8,0xF8,0x60,0x60,0xFE,0xFE,0x60,0x30,0x18,0x0C,0x00
122
123 };
124
125 /*code unsigned char CGTAB[4][32]={0x00,0x40,0x37,0x10,0x83,0x60,0x2F,0x08, // 清
126 0x13,0x22,0xE3,0x22,0x23,0x22,0x22,0x22,
127 0x40,0x48,0xFC,0x40,0xF8,0x40,0xFE,0x08,
128 0xFC,0x08,0xF8,0x08,0xF8,0x08,0x28,0x10,
129 0x04,0x04,0x08,0x08,0x18,0x29,0x4A,0x08, // 华
130 0x09,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,
131 0x40,0x48,0x58,0x60,0xC0,0x40,0x44,0x44,
132 0x3C,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,
133 0x04,0xFF,0x05,0x41,0x33,0x14,0x01,0xF6, // 蓬
134 0x1B,0x10,0x13,0x10,0x17,0x10,0x28,0x47,
135 0x44,0xFE,0x40,0xF8,0x10,0xE0,0x18,0x46,
136 0xF8,0x40,0xF8,0x40,0xFC,0x40,0x46,0xFC,
137 0x00,0x43,0x30,0x10,0x00,0x07,0xF1,0x11, // 远
138 0x11,0x11,0x12,0x12,0x14,0x28,0x47,0x00,
139 0x10,0xF8,0x00,0x00,0x08,0xFC,0x20,0x20,
140 0x20,0x24,0x24,0x1C,0x00,0x06,0xFC,0x00 };
141
142 */
143 ///*******************
144 // 演示主程序
145 //*******************
146
147 void main()
148 {
149 1 uchar idata i;
150 1 uint idata O_X,O_Y;
151 1 uint idata j;
152 1
153 1 P23=0;
154 1 P25=1;
155 1 P24=1;
156 1
157 1 initial_lcd(); // 调初始化函数
158 1
159 1 // 中文显示(图形方式)
160 1 for(i=0;i<12;i++)
161 1 CCW2_PR(0x08+i*2,0x02,i); // 调中文显示函数(图形方式)
162 1 for(i=0;i<3;i++)
163 1 CCW2_PR(0x1b+i*2,0x16,12+i);
164 1
165 1 draw_vertical(9,239,4); // y轴 坐标系原点坐标为 (4,235)
166 1 draw_bias(4,9,0,13); // 画箭头
167 1 draw_bias(4,9,8,13);
168 1 for(i=0;i<21;i++) // 画刻度
169 1 { j=225-i*10;
170 2 draw_horizontal(4,6,j);
171 2 }
172 1
173 1 draw_horizontal(0,299,235); // x轴
174 1 draw_bias(299,235,295,231); // 画箭头
175 1 draw_bias(299,235,295,239);
176 1 for(i=0;i<28;i++) // 画刻度
177 1 { j=14+i*10;
178 2 draw_vertical(233,235,j);
179 2 }
C51 COMPILER V7.07 DEMO 01/12/2007 17:28:05 PAGE 4
180 1
181 1 w_ASCII(2,1,'Y');
182 1 w_ASCII(38,29,'X');
183 1
184 1 draw_bias(4,235,160,120);
185 1 for(i=0;i<6;i++)
186 1 draw_circle(160,120,20+i*10);
187 1
188 1 //------------西文显示-------------
189 1 LCD_CMD_ADR=0x5d; // 设光标形状
190 1 LCD_DAT_ADR=0x01;
191 1 LCD_DAT_ADR=0x87;
192 1
193 1 LCD_CMD_ADR=0x5b; // OVLAY代码
194 1 LCD_DAT_ADR=0x01;
195 1
196 1 LCD_CMD_ADR=0x59; // DISP ON\OFF代码
197 1 LCD_DAT_ADR=0x57; // 开光标闪动 2Hz
198 1 O_X=0; //X轴方向取值0~39(十进制)
199 1 O_Y=0; //Y轴方向取值0~29(十进制)
200 1
201 1 w_string(0x08,0x05,"TIETONG ELECTRONICS CO.LTD");
202 1 w_string(0x1b,0x19,"Ceeback.GAO");
203 1 //------- 中文显示(文本方式)-----------
204 1 //CGRAM(); // 调CGRAM子程序
205 1 /* num=0x00; // 取字模
206 1 O_X=0x10;
207 1 O_Y=0x03;
208 1 CCW1_PR(O_X,O_Y,num); // 调中文显示函数(文本方式)
209 1 num=0x01; // 取字模
210 1 O_X=0x12;
211 1 O_Y=0x03;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -