📄 lcddrivers.lst
字号:
C51 COMPILER V8.08 LCDDRIVERS 06/18/2007 18:45:10 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE LCDDRIVERS
OBJECT MODULE PLACED IN LCDDrivers.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCDDrivers.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /**********************************************************
2 *YM12864R-3 液晶驱动(3线串行方式) LCD Module
3 *控制芯片:ST7920
4 *版本:V1.3
5 *日期:2007-6-6
6 *创建人:飞扬
7 **********************************************************/
8 #include <AT89x52.H>
9 /************* 用累加器操作速度比较快 *******************/
10 sbit B_0 = B^0;
11 sbit B_7 = B^7;
12
13 /****************** 液晶模块引脚定义 *******************/
14
15 sbit LCD_CS = P1^0;//LCD模块片选端,高电平有效
16 sbit LCD_SID = P1^1;//LCD串行数据输入端
17 sbit LCD_CLK = P1^2;//LCD串行同步时钟,上升沿读取SID数据
18
19 /**************** 常用操作命令和参数定义 *****************/
20
21 #define DisplayClear 0x01 //清屏指令(00000001)
22 #define ReturnHome 0x02 //光标回到"00H"(0000001X)
23 #define EntryMode 0x06 //进入点设定,光标右移,AC加1(00000110)
24 #define DisplayOn 0x0c //整体显示开,光标关,反白关
25 #define DisplayOff 0x08 //整体显示关
26 #define CursorOn 0x0e //光标显示开
27 #define Reverse 0x0d //反白显示开
28 #define Basic 0x30 //基本指令
29 /************************************************/
30 #define Extend 0x34 //扩充指令
31 #define SleepOn 0x08 //进入睡眠模式
32 #define SleepOff 0x0c //脱离睡眠模式
33 #define PlotOn 0x36 //绘图开
34 #define PlotOff 0x34 //绘图关
35
36 #define uchar unsigned char //定义下方便使用
37
38 /**********************************************************
39 *函数名:SendData
40 *功能:发送数据
41 *说明:向LCD发送一个字节数据
42 *输入:ucDat
43 *返回:无
44 **********************************************************/
45 void SendData(uchar ucDat)
46 {
47 1 uchar i;
48 1 B = ucDat;
49 1 for (i=8;i>0;i--)
50 1 {
51 2 LCD_CLK = 0;
52 2 LCD_SID = B_7;
53 2 LCD_CLK = 1;
54 2 B <<= 1;
55 2 }
C51 COMPILER V8.08 LCDDRIVERS 06/18/2007 18:45:10 PAGE 2
56 1 }
57
58 /**********************************************************
59 *函数名:ReceiveData
60 *功能:接收数据
61 *说明:接收来自LCD的一个字节的数据
62 *输入:无
63 *返回:B
64 **********************************************************/
65 uchar ReceiveData()
66 {
67 1 uchar i;
68 1 for (i=8;i>0;i--)
69 1 {
70 2 LCD_CLK = 0;
71 2 B <<= 1;
72 2 LCD_CLK = 1;
73 2 B_0 = LCD_SID;
74 2 }
75 1 return (B);
76 1 }
77
78 /**********************************************************
79 *函数名:ReadBusyFlag
80 *功能:读忙碌标志和AC
81 *说明:
82 *输入:
83 *返回:B
84 **********************************************************/
85 uchar ReadBusyFlag()
86 {
87 1 uchar ucDat1,ucDat2;
88 1 LCD_CS = 1;
89 1 SendData(0xfc); //发送读忙碌标志指令
90 1 ucDat1 = ReceiveData();//
91 1 ucDat2 = ReceiveData();
92 1 LCD_CS = 0;
93 1 B = (ucDat2>>4)|(ucDat1&0xf0);
94 1 return (B);
95 1 }
96
97 /**********************************************************
98 *函数名:LCDWriteData
99 *功能:写数据到LCD
100 *说明:
101 *输入: Dat
102 *返回: 无
103 **********************************************************/
104 void LCDWriteData(uchar Dat)
105 {
106 1 uchar ucDat;
107 1 LCD_CS = 0;
108 1 do {
109 2 ucDat = ReadBusyFlag(); //忙碌判断
110 2 } while (ucDat&0x80);
111 1 LCD_CS = 1;
112 1 SendData(0xfa); //发送写数据指令
113 1 SendData(Dat&0xf0);//发送高4位
114 1 SendData(Dat<<4); //发送低4位
115 1 LCD_CS = 0;
116 1 }
117
C51 COMPILER V8.08 LCDDRIVERS 06/18/2007 18:45:10 PAGE 3
118 /**********************************************************
119 *函数名:LCDWriteCommand
120 *功能:写指令到LCD
121 *说明:
122 *输入: Dat
123 *返回: 无
124 **********************************************************/
125 void LCDWriteCommand (uchar Dat)
126 {
127 1 uchar ucDat;
128 1 LCD_CS = 0;
129 1 do {
130 2 ucDat = ReadBusyFlag();//忙碌标志
131 2 } while (ucDat&0x80);
132 1 LCD_CS = 1;
133 1 SendData(0xf8); //发送写指令到LCD
134 1 SendData(Dat&0xf0);//发送高4位
135 1 SendData(Dat<<4); //发送低4位
136 1 LCD_CS = 0;
137 1 }
138
139 /**********************************************************
140 *函数名: LCDInit
141 *功能:初始化
142 *说明:液晶初始化函数
143 *输入:无
144 *返回:无
145 **********************************************************/
146 void LCDInit()
147 {
148 1 LCDWriteCommand(Basic); //基本指令集
149 1 LCDWriteCommand(DisplayOn); //显示开,光标关,发白关
150 1 LCDWriteCommand(DisplayClear);//清屏
151 1 LCDWriteCommand(EntryMode); //进入点设定,光标右移,AC加1
152 1 }
153 /**********************************************************
154 *函数名:
155 *功能:
156 *说明:
157 *输入:
158 *返回:
159 **********************************************************/
160
161
162 /**********************************************************
163 *函数名:
164 *功能:
165 *说明:
166 *输入:
167 *返回:
168 **********************************************************/
169
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 149 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V8.08 LCDDRIVERS 06/18/2007 18:45:10 PAGE 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -