📄 lcd_driver_user.lst
字号:
C51 COMPILER V8.12 LCD_DRIVER_USER 06/13/2008 15:12:12 PAGE 1
C51 COMPILER V8.12, COMPILATION OF MODULE LCD_DRIVER_USER
OBJECT MODULE PLACED IN .\LCD_Driver_User.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\LCD_Driver\LCD_Driver_User.c BROWSE INCDIR(..\LCD_Driver) DEBUG OBJECTEX
-TEND PRINT(.\LCD_Driver_User.lst) OBJECT(.\LCD_Driver_User.obj)
line level source
1 //========================================================================
2 // 文件名: LCD_Driver_User.c
3 // 作 者: Xinqiang Zhang(email: Xinqiang@Mzdesign.com.cn)
4 // www.Mzdesign.com.cn
5 // 日 期: 2008/06/11
6 // 描 述: 底层接口驱动扩展程序集
7 //
8 // 参 考: 请参考具体显示器的硬件描述说明书或者是DataSheet,并以此来编写底
9 // 层接口驱动程序,以及LCD的初始化代码
10 // 版 本:
11 // 2007/02/25 First version Mz Design
12 // 2008/06/11 V2.0 Mzdesign
13 // 注 意:
14 // 该驱动程序当中有很多已经被屏蔽掉的子程序,用户可根据自己的应用
15 // 取消屏障并作一定的修改(如果可能的话)
16 // 该文件与LCD的特性有关,为MzDesign通用版LCD驱动的V2.0版本,内含的
17 // 函数是标准的函数,每款LCD对应的通用版LCD驱动程序包都是一样的,只
18 // 是会针对不同的LCD模块会有一些区别,用户可以参考我们介绍V1.0版本
19 // 驱动的书<LCD驱动显控原理>.
20 // 相 关: 本例为针对MzDesign的240X128点阵LCD屏作的移植改去,适用于Keil C51
21 // MCS-51系列MCU
22 //========================================================================
23 #include "LCD_Config.h"
24 #include "LCD_PortConfig.h"
25
26
27 //========================================================================
28 // 函数: void LCD_DataWrite(unsigned int Data)
29 // 描述: 写一个字节的显示数据至LCD中的显示缓冲RAM当中
30 // 参数: Data 写入的数据
31 // 返回: 无
32 // 备注: Mz 通用版LCD驱动程序 标准子函数
33 // 版本:
34 // 2007/01/09 First version
35 //========================================================================
36 void LCD_DataWrite(LCDBYTE Dat)
37 {
38 1 LCD_A0 = 0;
39 1 LCD_CS = 0;
40 1
41 1 LCD_Data_BUS_Out = Dat;
42 1 LCD_WR = 0;
43 1 LCD_WR = 1;
44 1 LCD_CS = 1;
45 1 }
46 //========================================================================
47 // 函数: LCDBYTE LCD_DataRead(void)
48 // 描述: 从LCD中的显示缓冲RAM当中读一个字节的显示数据
49 // 参数: 无
50 // 返回: 读出的数据,
51 // 备注: Mz 通用版LCD驱动程序 标准子函数
52 // 版本:
53 // 2007/01/09 First version
54 // 注意:
C51 COMPILER V8.12 LCD_DRIVER_USER 06/13/2008 15:12:12 PAGE 2
55 //========================================================================
56 LCDBYTE LCD_DataRead(void)
57 {
58 1 LCDBYTE Read_Data;
59 1 LCD_Data_BUS_Out = 0xff; //
60 1 LCD_A0 = 0;
61 1 LCD_CS = 0;
62 1 LCD_RD = 0;
63 1 Read_Data = LCD_Data_BUS_In;
64 1
65 1 LCD_RD = 1;
66 1 LCD_CS = 1;
67 1 return Read_Data;
68 1 }
69 //========================================================================
70 // 函数: void LCD_RegWrite(LCDBYTE Command)
71 // 描述: 写一个字节的数据至LCD中的控制寄存器当中
72 // 参数: Command 写入的数据,低八位有效(byte)
73 // 返回: 无
74 // 备注: Mz 通用版LCD驱动程序 标准子函数
75 // 版本:
76 // 2007/01/09 First version
77 //========================================================================
78 void LCD_RegWrite(LCDBYTE Command)
79 {
80 1 LCD_A0 = 1;
81 1 LCD_CS = 0;
82 1 LCD_Data_BUS_Out = Command;
83 1 LCD_WR = 0;
84 1 LCD_WR = 1;
85 1 LCD_CS = 1;
86 1 }
87 //========================================================================
88 // 函数: LCDBYTE LCD_ReadStatus(void)
89 // 描述: 读取LCD模块的指定状态位
90 // 参数: 无
91 // 返回: 读取到的状态位
92 // 备注: Mz 通用版LCD驱动程序 标准子函数
93 // 版本:
94 // 2007/01/09 First version
95 //========================================================================
96 LCDBYTE LCD_ReadStatus(void)
97 {
98 1 LCDBYTE Status=0;
99 1 LCD_Data_BUS_Out = 0xff; //
100 1 LCD_A0 = 1;
101 1 LCD_CS = 0;
102 1 LCD_RD = 0;
103 1 Status = LCD_Data_BUS_In;
104 1 LCD_RD = 1;
105 1 LCD_CS = 1;
106 1 return Status;
107 1 }
108 //========================================================================
109 // 函数: void LCD_TestStatus(LCDBYTE bitMatch)
110 // 描述: 测试LCD模块的指定状态位
111 // 参数: bitMatch
112 // 返回: 如测试有效则返回1 如超时则返回0
113 // 备注: Mz 通用版LCD驱动程序 标准子函数
114 // 版本:
115 // 2007/01/09 First version
116 //========================================================================
C51 COMPILER V8.12 LCD_DRIVER_USER 06/13/2008 15:12:12 PAGE 3
117 LCDBYTE LCD_TestStatus(LCDBYTE bitMatch)
118 {
119 1 WORD Error_Counter=0;
120 1 while((LCD_ReadStatus()&bitMatch)!=bitMatch)
121 1 {
122 2 Error_Counter++;
123 2 if(Error_Counter>=1000) return 0; //return 0 if test status bit fail
124 2 }
125 1 return 1; //return 1 as test status bit ok
126 1 }
127 //========================================================================
128 // 函数: void Write_Dot_LCD(int x,int y,unsigned int i)
129 // 描述: 在LCD的真实坐标系上的X、Y点绘制填充色为i的点
130 // 参数: x X轴坐标
131 // y Y轴坐标
132 // i 要填充的点的颜色
133 // 返回: 无
134 // 备注: Mz 通用版LCD驱动程序 标准子函数
135 // 版本:
136 // 2006/10/15 First version
137 // 2007/01/09 V1.2
138 //========================================================================
139 void Write_Dot_LCD(DOTBYTE x,DOTBYTE y,LCDBYTE i)
140 {
141 1 WORD Dot_Addr; //定义列地址的高低位指令
142 1 Dot_Addr = (x>>3)+0x0800;
143 1 Dot_Addr += (((WORD)y)<<5);//*0x0020;
144 1 if(LCD_TestStatus(0x03))
145 1 LCD_DataWrite((LCDBYTE)(Dot_Addr&0x00ff));
146 1 if(LCD_TestStatus(0x03))
147 1 LCD_DataWrite((LCDBYTE)(Dot_Addr>>8));
148 1 if(LCD_TestStatus(0x03))
149 1 LCD_RegWrite(0x24);
150 1 if(i!=0)
151 1 i = 0xf8;
152 1 else
153 1 i = 0xf0;
154 1 i = i+((~x)&0x07);
155 1 if(LCD_TestStatus(0x03))
156 1 LCD_RegWrite(i);
157 1 }
158 /*
159 //========================================================================
160 // 函数: void Clear_Dot_LCD(WORD x,WORD y)
161 // 描述: 清除在LCD的真实坐标系上的X、Y点
162 // 参数: x X轴坐标
163 // y Y轴坐标
164 // 返回: 无
165 // 备注: 暂不使用该函数
166 // 版本:
167 // 2006/10/15 First version
168 //========================================================================
169 void Clear_Dot_LCD(WORD x,WORD y)
170 {
171 //可根据自己的需要填写代码
172 x = y; //无意义,仅为了让系统不提示警告
173 }
174 //========================================================================
175 // 函数: unsigned int Get_Dot_LCD(int x,int y)
176 // 描述: 获取在LCD的真实坐标系上的X、Y点上的当前填充色数据
177 // 参数: x X轴坐标
178 // y Y轴坐标
C51 COMPILER V8.12 LCD_DRIVER_USER 06/13/2008 15:12:12 PAGE 4
179 // 返回: 该点的颜色
180 // 备注: 暂不使用该函数
181 // 版本:
182 // 2006/10/15 First version
183 //========================================================================
184 LCDBYTE Get_Dot_LCD(DOTBYTE x,DOTBYTE y)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -