📄 lcddev_ra8802.lst
字号:
C51 COMPILER V7.09 LCDDEV_RA8802 02/01/2009 22:38:59 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE LCDDEV_RA8802
OBJECT MODULE PLACED IN LcdDev_Ra8802.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LcdDev_Ra8802.C OPTIMIZE(2,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include <c8051f020.h> // SFR declaratiONs
3 #include "DataTypeDef.H"
4 #include "LcdDev_Ra8802.H"
5
6
7 static void LCD_Delay(INT16U KK)
8 {
9 1 while(KK--) ;
10 1 }
11 /*******************************************************************************************************
12 **
13 ** LCD底层驱动部分代码
14 **
15 ********************************************************************************************************/
16 /*******************************************************************************************************
17 ** 名 称: void LCD_DatWrite(INT8U DatValue)
18 ** 功 能:向LCD中写入指令数据
19 ** 入口参数:DatValue
20 ** 出口参数:无
21 **----------------------------------------------------------------------------------------------------
22 ** 作 者 : 严 俊 生
23 ** 日 期 : 2009-01-26
24 *******************************************************************************************************/
25 void LCD_DatWrite(INT8U DatValue)
26 {
27 1 while( !LcdBusy_PinIN() ) ; // 判断 RA8803 是否忙碌中
28 1 LCD_Delay(10);
29 1 LcdDataPort_OutPut(); // 设置LCD总线的端口状态为输出
30 1 LCD_DataPort = DatValue; // 准备预写入显示内存的数据
31 1 LcdCS_ON(); // 片选LCD信号使能
32 1 LcdWR_ON(); // "写"信号使能
33 1 LcdRD_OFF(); // "读"信号禁能
34 1 LcdRS_DAT(); // 选择写入数据信号
35 1 LCD_Delay(0);
36 1 LCD_DataPort = DatValue; // 准备预写入显示内存的数据
37 1 LcdWR_OFF(); // "写"信号禁能
38 1 LcdCS_OFF(); // 片选LCD信号禁能
39 1 LCD_Delay(0);
40 1 }
41
42 /*******************************************************************************************************
43 **
44 ** LCD控制部分代码
45 **
46 ********************************************************************************************************/
47 /*******************************************************************************************************
48 ** 名 称: void LcdClear(void)
49 ** 功 能:向LCD中写入指令数据
50 ** 入口参数:DatValue
51 ** 出口参数:无
52 **----------------------------------------------------------------------------------------------------
53 ** 作 者 : 严 俊 生
54 ** 日 期 : 2009-01-26
55 *******************************************************************************************************/
C51 COMPILER V7.09 LCDDEV_RA8802 02/01/2009 22:38:59 PAGE 2
56 INT8U ReturnRegDat = 0;
57 void LcdClear(void)
58 {
59 1 LCD_CmdWrite(0xE0,0x00); // 设定将显示内存的数据全部写入”0x00”
60 1 LCD_CmdWrite(0xF0,0xA8); // 当缓存器[0xF0]之位3 设定为”1”时,
61 1 LCD_Delay(100); // 硬件自动将显示内存全部写入缓存器[E0]的资料
62 1 }
63
64 /*******************************************************************************************************
65 ** 名 称: void LcdClear(void)
66 ** 功 能:设定 显示坐标 (内存地址) 子程序
67 ** 入口参数:无
68 ** 出口参数:无
69 **----------------------------------------------------------------------------------------------------
70 ** 作 者 : 严 俊 生
71 ** 日 期 : 2009-01-26
72 *******************************************************************************************************/
73 void GotoXY(unsigned char x1,unsigned char y1)
74 {
75 1 LCD_CmdWrite(0x60,x1); // 设定水平坐标地址
76 1 LCD_CmdWrite(0x70,y1); // 设定垂直坐标地址
77 1 }
78
79 /*******************************************************************************************************
80 ** 名 称: void LCD_Fill(INT8U *lcd_char)
81 ** 功 能:填充整个LCD屏幕
82 ** 入口参数:无
83 ** 出口参数:无
84 **----------------------------------------------------------------------------------------------------
85 ** 作 者 : 严 俊 生
86 ** 日 期 : 2009-01-26
87 *******************************************************************************************************/
88 void LCD_Fill(INT8U *lcd_char)
89 {
90 1 INT16U i;
91 1 LCD_CmdWrite(0x00,0xC9);
92 1 GotoXY(0,0);
93 1 i = lcd_char[i];
94 1 for(i=0; i<3600; i++)
95 1 {
96 2 //LCD_DatWrite(lcd_char[i]);
97 2 LCD_DatWrite(0xA4);
98 2 LCD_DatWrite(0xA4);
99 2 }
100 1 LCD_CmdWrite(0x00,0xCC);
101 1 }
102
103 /*******************************************************************************************************
104 ** 名 称: void LCD_CmdWrite(INT8U CmdReg,INT8U CmdValue)
105 ** 功 能:向LCD中写入指令数据
106 ** 入口参数:CmdReg
107 ** CmdValue
108 ** 出口参数:无
109 **----------------------------------------------------------------------------------------------------
110 ** 作 者 : 严 俊 生
111 ** 日 期 : 2009-01-26
112 *******************************************************************************************************/
113 void LCD_CmdWrite(INT8U CmdReg,INT8U CmdValue)
114 {
115 1 while( !LcdBusy_PinIN() ) ; // 判断 RA8803 是否忙碌中
116 1 LcdDataPort_OutPut(); // 设置LCD总线的端口状态为输出
117 1 //LCD_Delay(10);
C51 COMPILER V7.09 LCDDEV_RA8802 02/01/2009 22:38:59 PAGE 3
118 1 LCD_DataPort = CmdReg; // 准备预写入显示内存的数据
119 1 LcdCS_ON(); // 片选LCD信号使能
120 1 //LcdRS_DAT(); // 选择写入数据信号
121 1 LcdRS_INS(); // 选择写入指令信号
122 1 LcdRD_OFF(); // "读"信号禁能
123 1
124 1 LcdWR_ON(); // "写"信号使能
125 1 LCD_Delay(10);
126 1 //LCD_DataPort = CmdReg; // 准备预写入显示内存的数据
127 1 LcdWR_OFF(); // "写"信号禁能
128 1
129 1 //LcdCS_OFF(); // 片选LCD信号禁能
130 1 //LCD_Delay(0);
131 1
132 1 //------------------------------------------- 对相应寄存器进行写操作
133 1 while( !LcdBusy_PinIN() ) ; // 判断 RA8803 是否忙碌中
134 1 LCD_DataPort = CmdValue; // 准备预写入显示内存的数据
135 1 //LcdCS_ON(); // 片选LCD信号使能
136 1 //LcdRS_DAT(); // 选择写入数据信号
137 1 //LcdRS_INS(); // 选择写入指令信号
138 1 //LcdRD_OFF(); // "读"信号禁能
139 1
140 1 LcdWR_ON(); // "写"信号使能
141 1 LCD_Delay(10);
142 1 //LCD_DataPort = CmdValue; // 准备预写入显示内存的数据
143 1 LcdWR_OFF(); // "写"信号禁能
144 1 LcdRS_OFF(); //
145 1
146 1 LcdCS_OFF(); // 片选LCD信号禁能
147 1 LCD_Delay(0);
148 1 }
149
150 /*******************************************************************************************************
151 ** 名 称: INT8U LCD_CmdRead(INT8U CmdReg)
152 ** 功 能:读取LCD对应地址寄存器中到数据
153 ** 入口参数:CmdReg 寄存器的地址
154 ** 出口参数:寄存器中的内容
155 **----------------------------------------------------------------------------------------------------
156 ** 作 者 : 严 俊 生
157 ** 日 期 : 2009-01-26
158 *******************************************************************************************************/
159 INT8U LCD_CmdRead(INT8U CmdReg)
160 {
161 1 while( !LcdBusy_PinIN() ) ; // 判断 RA8803 是否忙碌中
162 1 LcdDataPort_OutPut(); // 设置LCD总线的端口状态为输出
163 1 LCD_DataPort = CmdReg; // 准备预写入显示内存的数据
164 1 LcdCS_ON(); // 片选LCD信号使能
165 1 LcdRD_OFF(); // "读"信号禁能
166 1 LcdRS_INS(); // 选择写入指令信号
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -