📄 lcd.lst
字号:
C51 COMPILER V7.06 LCD 10/12/2007 19:38:40 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /***************************************************************
2 Copyright(c) Vitro Light All Rights Reserved.
3 Author: Tenghan
4 Filename: LCD.c
5
6 Description:
7 This file define the main function of a 12864 LCD.
8
9 *****************************************************************
10 $File: //LCD.c $
11 $Revision: #1 $
12 $Date: 2007/09/15 $
13 ****************************************************************/
14
15 #include <reg51.h>
16 #include "type_51.h"
17 #include "delay.h"
18 #include "LCD.h"
19
20 // Define
21 sbit CS = P2^0 ;
22 sbit SID = P2^1 ; //Serial data
23 sbit SCLK = P2^2 ; //Serial clock
24 sbit PSB = P2^3 ; // Set PSB 0 is serial control
25
26 /*=============================================================================
27 Function Name: LCDInitial
28 Description: Initial LCD.
29 Input: None
30 Return: None
31 Note:
32 =============================================================================*/
33 void LCDInitial(void)
34 {
35 1 delaynms(10); // Wait to power on, LCM
36 1 PSB=0; //Serial control mode
37 1 CS=1; // Chip enable in serial mode
38 1
39 1 WriteCommand(BITBUS8 | BASICSET); // 0011 8 bit interface, 0000 basic instruction
40 1 WriteCommand(DISPLAYON); // 1100 display on, cursor off, blink off
41 1 WriteCommand(RESETAC); // Clear screen, set DDRAM AC to 0
42 1 }
43
44 /*=============================================================================
45 Function Name: WriteCommand
46 Description: write command.
47 Input: command
48 Return: None
49 Note: Send the sync control firs, then send the highest 4 bits, lowest 4 bits
50 =============================================================================*/
51 void WriteCommand(UINT8 Command)
52 {
53 1 UINT8 HCom,LCom;
54 1
55 1 HCom=Command & 0xf0; //get the high 4 bits
C51 COMPILER V7.06 LCD 10/12/2007 19:38:40 PAGE 2
56 1 LCom=(Command<<4) & 0xf0; // Low 4 bits
57 1 sendbyte(SERIALWCOM); //Write command sync control
58 1 delaynms(2); //Delay here is must
59 1 sendbyte(HCom); //send the highest 4 bits
60 1 delaynms(1);
61 1 sendbyte(LCom);
62 1 delaynms(1);
63 1 }
64
65 /*=============================================================================
66 Function Name: WriteData
67 Description: write Data.
68 Input: Data
69 Return: None
70 Note:
71 =============================================================================*/
72 void WriteData(UINT8 Data)
73 {
74 1 UINT8 Hdata,Ldata;
75 1
76 1 Hdata=Data&0xf0;
77 1 Ldata=(Data<<4)&0xf0;
78 1 sendbyte(SERIALWDATA); //Write Data
79 1 delaynms(1); //Delay here is must
80 1 sendbyte(Hdata);
81 1 //delaynms(1);
82 1 sendbyte(Ldata);
83 1 //delaynms(1);
84 1 }
85
86 /*=============================================================================
87 Function Name: sendbyte
88 Description: send byte.
89 Input: byte to be sent
90 Return: None
91 Note: send bit one by one
92 =============================================================================*/
93 void sendbyte(UINT8 bbyte)
94 {
95 1 UINT8 i;
96 1 for(i=0;i<8;i++)
97 1 {
98 2 SID=bbyte & 0x80; //Get the highest bit
99 2 SCLK=1;
100 2 SCLK=0;
101 2 bbyte<<=1; //Shift left
102 2 }
103 1 }
104
105 /*=============================================================================
106 Function Name: LCDBlack
107 Description: lcd test, screen set to black at graph mode.
108 Input: None
109 Return: None
110 Note:
111 =============================================================================*/
112 void LCDBlack(void)
113 {
114 1 UINT8 i,j;
115 1 for(i=0;i<32;i++)
116 1 {
117 2 WriteCommand(0x80 + i); //Set Vertical point
C51 COMPILER V7.06 LCD 10/12/2007 19:38:40 PAGE 3
118 2 WriteCommand(0x80); // Set Horizon point, horizon will automatic increase 1 after write it.
119 2 for(j=0;j<16;j++)
120 2 WriteData(0xff);
121 2 }
122 1
123 1 for(i=0;i<32;i++)
124 1 {
125 2 WriteCommand(0x80 + i);
126 2 WriteCommand(0x88);
127 2 for(j=0;j<16;j++)
128 2 WriteData(0xff);
129 2 }
130 1 }
131
132 /*=============================================================================
133 Function Name: LCDClear
134 Description: LCD Clear, clear screen at graph mode.
135 Input: None
136 Return: None
137 Note:
138 =============================================================================*/
139 void LCDClear(void)
140 {
141 1 UINT8 i,j;
142 1 for(i=0;i<32;i++)
143 1 {
144 2 WriteCommand(0x80 + i); //Set Vertical point
145 2 WriteCommand(0x80); // Set Horizon point, horizon will automatic increase 1 after write it.
-
146 2 for(j=0;j<16;j++)
147 2 WriteData(0x00);
148 2 }
149 1
150 1 for(i=0;i<32;i++)
151 1 {
152 2 WriteCommand(0x80+i);
153 2 WriteCommand(0x88);
154 2 for(j=0;j<16;j++)
155 2 WriteData(0x00);
156 2 }
157 1 }
158
159
160 /*=============================================================================
161 Function Name: Disp_Img
162 Description: Display Image.
163 Input: None
164 Return: None
165 Note:
166 =============================================================================*/
167 void Disp_Img(UINT8 *Img)
168 {
169 1 UINT8 i, j;
170 1 UINT16 k =0 ;
171 1 for(i=0;i<32;i++)
172 1 {
173 2 WriteCommand(0x80+i);
174 2 WriteCommand(0x80);
175 2 for(j=0;j<16;j++)
176 2 {
177 3 WriteData(Img[k++]);
178 3 }
C51 COMPILER V7.06 LCD 10/12/2007 19:38:40 PAGE 4
179 2 }
180 1
181 1 for(i=0;i<32;i++)
182 1 {
183 2 WriteCommand(0x80+i);
184 2 WriteCommand(0x88);
185 2 for(j=0;j<16;j++)
186 2 {
187 3 WriteData(Img[k++]);
188 3 }
189 2 }
190 1 }
191
192
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 422 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 15
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 + -