📄 lcd_driver_user.lst
字号:
C51 COMPILER V7.50 LCD_DRIVER_USER 10/14/2008 23:00:14 PAGE 1
C51 COMPILER V7.50, 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_User.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //========================================================================
2 // 文件名: LCD_Driver_User.c
3 // 作 者: Xinqiang Zhang(email: Xinqiang@Mzdesign.com.cn)
4 // www.Mzdesign.com.cn
5 // 日 期: 2007/05/17
6 // 描 述: 底层接口驱动扩展程序集
7 //
8 // 参 考: 请参考具体显示器的硬件描述说明书或者是DataSheet,并以此来编写底
9 // 层接口驱动程序,以及LCD的初始化代码
10 // 版 本:
11 // 2007/05/17 First version Mz Design
12 // 注 意:
13 // 该驱动程序是由通用版LCD驱动程序修改而来,主要为了适应类似于MzL05
14 // 这样的仅能写入不能读出数据的LCD而做的
15 //========================================================================
16 #include "LCD_Config.h"
17 #include "LCD_PortConfig.h"
18
19 //========================================================================
20 // 函数: void LCD_DataWrite(unsigned int Data)
21 // 描述: 写一个字节的显示数据至LCD中的显示缓冲RAM当中
22 // 参数: Data 写入的数据
23 // 返回: 无
24 // 备注: 无
25 // 版本:
26 // 2007/01/09 First version
27 //========================================================================
28 void LCD_DataWrite(unsigned char Dat)//,_Fill_Dot_LCD
29 {
30 1 unsigned char Num;
31 1 LCD_CS = 0;
32 1 LCD_A0 = 1;
33 1 for(Num=0;Num<8;Num++)
34 1 {
35 2 if((Dat&0x80) == 0) LCD_SDI = 0;
36 2 else LCD_SDI = 1;
37 2 Dat = Dat << 1;
38 2 LCD_CLK = 0;
39 2 LCD_CLK = 1;
40 2 }
41 1 LCD_CS = 1;
42 1 }
43 //========================================================================
44 // 函数: void LCD_RegWrite(unsigned char Command)
45 // 描述: 写一个字节的数据至LCD中的控制寄存器当中
46 // 参数: Command 写入的数据,低八位有效(byte)
47 // 返回: 无
48 // 备注:
49 // 版本:
50 // 2007/01/09 First version
51 //========================================================================
52 void LCD_RegWrite(unsigned char Command)
53 {
54 1 unsigned char Num;
55 1 LCD_CS = 0;
C51 COMPILER V7.50 LCD_DRIVER_USER 10/14/2008 23:00:14 PAGE 2
56 1 LCD_A0 = 0;
57 1 for(Num=0;Num<8;Num++)
58 1 {
59 2 if((Command&0x80) == 0) LCD_SDI = 0;
60 2 else LCD_SDI = 1;
61 2 Command = Command << 1;
62 2 LCD_CLK = 0;
63 2 LCD_CLK = 1;
64 2 }
65 1 LCD_CS = 1;
66 1 }
67 //========================================================================
68 // 函数: void LCD_Fill(unsigned int Data)
69 // 描述: 会屏填充以Data的数据至各点中
70 // 参数: Data 要填充的颜色数据
71 // 返回: 无
72 // 备注: 仅在LCD初始化程序当中调用
73 // 版本:
74 // 2006/10/15 First version
75 // 2007/01/09 V1.2
76 //========================================================================
77 void LCD_Fill(unsigned char Data)
78 {
79 1 unsigned char i,j;
80 1 unsigned char uiTemp;
81 1 uiTemp = Dis_Y_MAX;
82 1 uiTemp = uiTemp>>3;
83 1 for(i=0;i<=uiTemp;i++) //往LCD中填充初始化的显示数据
84 1 {
85 2 LCD_RegWrite(0xb0+i);
86 2 LCD_RegWrite(0x01);
87 2 LCD_RegWrite(0x10);
88 2 for(j=0;j<=Dis_X_MAX;j++)
89 2 {
90 3 LCD_DataWrite(Data);
91 3 }
92 2 }
93 1 }
94 //========================================================================
95 // 函数: void LCD_Init(void)
96 // 描述: LCD初始化程序,在里面会完成LCD初始所需要设置的许多寄存器,具体如果
97 // 用户想了解,建议查看DataSheet当中各个寄存器的意义
98 // 参数: 无
99 // 返回: 无
100 // 备注:
101 // 版本:
102 // 2006/10/15 First version
103 // 2007/01/09 V1.2
104 // 2007/06/27 V1.21
105 //========================================================================
106 //延时程序
107
108 void TimeDelay(int Time)
109 {
110 1 int i;
111 1 while(Time > 0)
112 1 {
113 2 for(i = 0;i < 800;i++)
114 2 {
115 3 _nop_();
116 3 }
117 2 Time --;
C51 COMPILER V7.50 LCD_DRIVER_USER 10/14/2008 23:00:14 PAGE 3
118 2 }
119 1 }
120 void LCD_Init(void)
121 {
122 1 //LCD驱动所使用到的端口的初始化(如果有必要的话)
123 1 TimeDelay(200);
124 1 LCD_RES = 0;
125 1 TimeDelay(200);
126 1 LCD_RES = 1;
127 1 TimeDelay(20);
128 1
129 1 LCD_RegWrite(M_LCD_ON); //LCD On
130 1 LCD_RegWrite(M_LCD_POWER_ALL); //设置上电控制模式
131 1
132 1 LCD_RegWrite(M_LCD_ELE_VOL); //电量设置模式(显示亮度)
133 1 LCD_RegWrite(0x1f); //指令数据0x0000~0x003f
134 1
135 1 LCD_RegWrite(M_LCD_VDD_SET); //V5内部电压调节电阻设置
136 1 LCD_RegWrite(M_LCD_VDD); //LCD偏压设置,V3时选
137 1
138 1 LCD_RegWrite(M_LCD_COM_REV); //Com 扫描方式设置
139 1 LCD_RegWrite(M_LCD_SEG_NOR); //Segment方向选择
140 1 LCD_RegWrite(M_LCD_ALL_LOW); //全屏点亮/变暗指令
141 1 LCD_RegWrite(M_LCD_ALL_NOR); //正向反向显示控制指令
142 1
143 1 LCD_RegWrite(M_LCD_STATIC_OFF); //关闭静态指示器
144 1 LCD_RegWrite(0x00); //指令数据
145 1
146 1 LCD_RegWrite(M_LCD_BEGIN_LINE); //设置显示起始行对应RAM
147 1 LCD_Fill(LCD_INITIAL_COLOR);
148 1 }
149
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 244 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -