📄 lcd_dis.lst
字号:
C51 COMPILER V8.08 LCD_DIS 04/26/2008 14:04:56 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE LCD_DIS
OBJECT MODULE PLACED IN LCD_Dis.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE LCD_Dis.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //========================================================================
2 // 文件名: LCD_Dis.c
3 // 作 者: Xinqiang Zhang(email: Xinqiang@Mzdesign.com.cn)
4 // www.Mzdesign.com.cn
5 // 日 期: 2007/05/17
6 // 描 述: 串行接口版LCD用户接口层程序集
7 //
8 // 参 考: 请参考具体显示器的硬件描述说明书或者是DataSheet,并以此来编写加速
9 // 版接口程序;适用于MCS51系列MCU驱动串行的只写入无法读出的LCD
10 // 版 本:
11 // 2007/05/17 First version Mz Design
12 //========================================================================
13 #include "LCD_Driver_User.h" //LCD底层驱动声明头文件
14 #include "LCD_Config.h" //LCD的配置文件,比如坐标轴是否倒置等的定义
*** WARNING C318 IN LINE 14 OF LCD_Dis.c: can't open file 'LCD_Config.h'
15
16
17 extern code unsigned char Asii0608[]; //6X8的ASII字符库
18 extern code unsigned char Asii0816[]; //8X16的ASII字符库
19 extern code unsigned char GB1616[]; //16*16自定义的汉字库
20
21 unsigned char X_Witch; //字符写入时的宽度
22 unsigned char Y_Witch; //字符写入时的高度
23 unsigned char Font_Wrod; //字体的每个字模占用多少个存储单元数
24 unsigned char *Char_TAB; //字库指针
25 //unsigned char Plot_Mode; //绘图模式
26 unsigned char BMP_Color;
27 unsigned char Char_Color;
28
29 //========================================================================
30 // 函数: void FontSet(int Font_NUM,unsigned int Color)
31 // 描述: 文本字体设置
32 // 参数: Font_NUM 字体选择,以驱动所带的字库为准
33 // Color 文本颜色,仅作用于自带字库
34 // 返回: 无
35 // 备注:
36 // 版本:
37 // 2006/10/15 First version
38 //========================================================================
39 void FontSet(unsigned char Font_NUM,unsigned char Color)
40 {
41 1 switch(Font_NUM)
42 1 {
43 2 case 0: Font_Wrod = 16; //ASII字符A
44 2 X_Witch = 8;
45 2 Y_Witch = 2;
46 2 Char_Color = Color;
47 2 Char_TAB = (unsigned char *)(Asii0816 - 32*16);
48 2 break;
49 2 case 1: Font_Wrod = 6; //ASII字符B
50 2 X_Witch = 6;
51 2 Y_Witch = 1;
52 2 Char_Color = Color;
53 2 Char_TAB = (unsigned char *)(Asii0608 - (32*6));
54 2 break;
C51 COMPILER V8.08 LCD_DIS 04/26/2008 14:04:56 PAGE 2
55 2 case 2: Font_Wrod = 32; //汉字A
56 2 X_Witch = 16;
57 2 Y_Witch = 2;
58 2 Char_Color = Color;
59 2 Char_TAB = (unsigned char *)GB1616;
60 2 break;
61 2 /* case 3: Font_Wrod = 16; //汉字B
62 2 X_Witch = 16;
63 2 Y_Witch = 2;
64 2 Char_Color = Color;
65 2 Char_TAB = GB16;
66 2 break;*/
67 2 default: break;
68 2 }
69 1 }
70 //========================================================================
71 // 函数: void PutChar(unsigned char x,unsigned char y,char a)
72 // 描述: 写入一个标准字符
73 // 参数: x X轴坐标 y Y轴坐标(0~7页)
74 // a 要显示的字符在字库中的偏移量
75 // 返回: 无
76 // 备注: ASCII字符可直接输入ASCII码即可
77 // 版本:
78 // 2006/10/15 First version
79 // 2007/05/17 V2.1 for seriea port LCD
80 //========================================================================
81 void PutChar(unsigned char x,unsigned char y,char a)
82 {
83 1 unsigned char i,j;
84 1 unsigned char code *p_data;
85 1 p_data = Char_TAB + a*Font_Wrod; //要写字符的首地址
86 1 x = x+1; //Edit by xinqiang
87 1 for(j=0;j<Y_Witch;j++)
88 1 {
89 2 if((y+j) < (Dis_Y_MAX/8))
*** ERROR C202 IN LINE 89 OF LCD_DIS.C: 'Dis_Y_MAX': undefined identifier
90 2 LCD_RegWrite(y+j+0xb0);
91 2 LCD_RegWrite(((x&0xf0) >> 4)|0x10); //设置初始地址
92 2 LCD_RegWrite(x&0x0f);
93 2 for(i=0;i<X_Witch;i++)
94 2 {
95 3 if(((x+i) < Dis_X_MAX)&&((y+j) < (Dis_Y_MAX/8)))
*** ERROR C202 IN LINE 95 OF LCD_DIS.C: 'Dis_X_MAX': undefined identifier
96 3 LCD_DataWrite(*p_data++);
97 3 }
98 2 }
99 1 }
100
101 //========================================================================
102 // 函数: void PutString(unsigned char x,unsigned char y,char *p)
103 // 描述: 在x、y为起始坐标处写入一串标准字符
104 // 参数: x X轴坐标 y Y轴坐标(0~7页)
105 // p 要显示的字符串
106 // 返回: 无
107 // 备注: 仅能用于自带的ASCII字符串显示
108 // 版本:
109 // 2006/10/15 First version
110 //========================================================================
111 void PutString(unsigned char x,unsigned char y,char *p)
112 {
113 1 while(*p!=0)
114 1 {
C51 COMPILER V8.08 LCD_DIS 04/26/2008 14:04:56 PAGE 3
115 2 PutChar(x,y,*p);
116 2 x += X_Witch;
117 2 if((x + X_Witch) > Dis_X_MAX)
*** ERROR C202 IN LINE 117 OF LCD_DIS.C: 'Dis_X_MAX': undefined identifier
118 2 {
119 3 x = 0;
120 3 if((Dis_Y_MAX - y) < Y_Witch) break;
*** ERROR C202 IN LINE 120 OF LCD_DIS.C: 'Dis_Y_MAX': undefined identifier
121 3 else y += Y_Witch;
122 3 }
123 2 p++;
124 2 }
125 1 }
126 //========================================================================
127 // 函数: void SetPaintMode(int Mode,unsigned int Color)
128 // 描述: 绘图模式设置
129 // 参数: Mode 绘图模式 Color 像素点的颜色,相当于前景色
130 // 返回: 无
131 // 备注: Mode无效
132 // 版本:
133 // 2006/10/15 First version
134 //========================================================================
135 void SetPaintMode(unsigned char Mode,unsigned char Color)
136 {
137 1 Mode = Mode;//Plot_Mode = Mode; //仅仅是为了保持与其它驱动的一至性,绘图模式在该版驱动中未用
138 1 BMP_Color = Color;
139 1 }
140 //========================================================================
141 // 函数: void Rectangle(unsigned char left, unsigned char top, unsigned char right,
142 // unsigned char bottom, unsigned char Mode)
143 // 描述: 以x,y为圆心R为半径画一个圆(mode = 0) or 圆面(mode = 1)
144 // 参数: left - 矩形的左上角横坐标,范围0到126
145 // top - 矩形的左上角纵坐标(0~7页),范围0到6
146 // right - 矩形的右下角横坐标,范围1到127
147 // bottom - 矩形的右下角纵坐标(0~7页),范围0到7
148 // 返回: 无
149 // 备注: 画圆函数执行较慢,如果MCU有看门狗,请作好清狗的操作
150 // 版本:
151 // 2005/05/21 First version
152 // 2007/05/17 V2.1 for seriea port LCD
153 //========================================================================
154 void Rectangle(unsigned char left, unsigned char top, unsigned char right, unsigned char bottom)
155 {
156 1 unsigned char uiTemp,ucTemp2;
157 1 if(left>right)
158 1 {
159 2 uiTemp = left;
160 2 left = right;
161 2 right = uiTemp;
162 2 }
163 1 if(top>bottom)
164 1 {
165 2 uiTemp = top;
166 2 top = bottom;
167 2 bottom = uiTemp;
168 2 }
169 1 for(uiTemp=top;uiTemp<=bottom;uiTemp++)
170 1 {
171 2 LCD_RegWrite(uiTemp+0xb0);
172 2 LCD_RegWrite(((left&0xf0) >> 4)|0x10); //设置初始地址
173 2 LCD_RegWrite(left&0x0f);
174 2 for(ucTemp2=left;ucTemp2<=right;ucTemp2++)
C51 COMPILER V8.08 LCD_DIS 04/26/2008 14:04:56 PAGE 4
175 2 {
176 3 LCD_DataWrite(BMP_Color);
177 3 }
178 2 }
179 1 }
180 //========================================================================
181 // 函数: void ClrScreen(unsigned int Mode)
182 // 描述: 清屏函数,执行全屏幕清除或填充前景色
183 // 参数: Mode 0:全屏除屏
184 // 1:全屏填充前景色
185 // 返回: 无
186 // 备注:
187 // 版本:
188 // 2007/01/11 First version
189 //========================================================================
190 void ClrScreen(unsigned char Mode)
191 {
192 1 if(Mode==0)
193 1 LCD_Fill(LCD_INITIAL_COLOR);
*** ERROR C202 IN LINE 193 OF LCD_DIS.C: 'LCD_INITIAL_COLOR': undefined identifier
194 1 else
195 1 LCD_Fill(BMP_Color);
196 1 }
C51 COMPILATION COMPLETE. 1 WARNING(S), 5 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -