📄 复件 12864.lst
字号:
C51 COMPILER V7.50 复件_12864 10/05/2007 14:13:54 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 复件_12864
OBJECT MODULE PLACED IN .\复件 12864.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE D:\Documents and Settings\hp\桌面\复件 12864.c BROWSE DEBUG OBJECTEXTEND PR
-INT(.\复件 12864.lst) OBJECT(.\复件 12864.obj)
line level source
1 #include <c8051f410.H>
2 #include<intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5
6 #define LCD_PORT P2
7 #define Left 2
8 #define Right 1
9 sbit LCD_Busy=P2^7;
10 sbit LCD_EN = P1^7;
11 sbit LCD_RW = P1^6;
12 sbit LCD_RS = P1^5;
13 sbit LCD_CS1= P1^4;
14 sbit LCD_CS2= P1^3;
15 sbit LCD_RST= P1^1;
16 uchar DisBuf[32],Page_Num,Clm_Num,keysetin,digitalin,i,k,clmstart,digital,j,page;
17 /*---------------------------------------------------------------------------
18 下面这个函数用于左半屏数字位的显示示,只需给定页地址,起始例
19 ---------------------------------------------------------------------------*/
20 digitaloutleft()
21 {
22 1 for(j=0;j<2;j++)
23 1 {
24 2 LCD_WriteCommand((page+j),Left);
*** WARNING C206 IN LINE 24 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\复件 12864.C: 'LCD_WriteCommand': missing function-prot
-otype
*** ERROR C267 IN LINE 24 OF D:\DOCUMENTS AND SETTINGS\HP\桌面\复件 12864.C: 'LCD_WriteCommand': requires ANSI-style pro
-totype
25 2 LCD_WriteCommand(clmstart,Left);
26 2 for(i=0;i<7;i++)
27 2 {
28 3 digitalin=digital[k][7*j+i];
29 3 if(keysetin==1){digitalin=~digital[k][7*j+i];};
30 3
31 3 LCD_WriteData(digitalin,Left);
32 3 }}
33 1 keysetin=0;
34 1 }
35
36 /*---------------------------------------------------------------------------
37 下面这个函数用于右半屏数字位的显示,只需给定页地址,起始例
38 ---------------------------------------------------------------------------*/
39 digitaloutright(void)
40 {
41 1 for(j=0;j<2;j++)
42 1 {
43 2 LCD_WriteCommand((page+j),Right);
44 2 LCD_WriteCommand(clmstart,Right);
45 2 for(i=0;i<7;i++)
46 2 {
47 3 digitalin=digital[k][7*j+i];
48 3 if(keysetin==1){digitalin=~digital[k][7*j+i];};
49 3
50 3 LCD_WriteData(digitalin,Right);
C51 COMPILER V7.50 复件_12864 10/05/2007 14:13:54 PAGE 2
51 3 }}
52 1 keysetin=0;
53 1 }
54
55
56 void Delay_us(unsigned int DelayTime)
57 {
58 1 while(DelayTime) DelayTime--;
59 1 }
60
61 void Delay_x10ms(unsigned char DelayTime) //***************10ms延时**********//
62 {
63 1 unsigned char i,j,k;
64 1 for(i=0;i<DelayTime;i++)
65 1 for(j=0;j<10;j++)
66 1 for(k=0;k<120;k++) {;}
67 1 }
68 /*----------------------------------------------------------------------------
69 下面这个函数用于液晶模块的忙信号检测。
70 ----------------------------------------------------------------------------*/
71 void LCD_Check_Busy(void)
72 {
73 1 while(1)
74 1 {
75 2 LCD_EN = 0;
76 2 LCD_RS = 0;
77 2 Delay_us(2);
78 2 LCD_RW = 1;
79 2 LCD_PORT = 0xff;
80 2 LCD_EN = 1;
81 2 if(!LCD_Busy) break;
82 2 }
83 1 LCD_EN = 0;
84 1 }
85
86 /*----------------------------------------------------------------------------
87 下面这个函数用于向液晶模块写入控制指令代码。
88 函数入口参数:Command ------ 向液晶模块写入的控制指令代码 。
89 CS_Num ------ 左右半屏的选数值
90 ----------------------------------------------------------------------------*/
91 void LCD_WriteCommand(uchar Command, uchar CS_Num)
92 {
93 1 LCD_Check_Busy();
94 1 if(CS_Num==1) /*选择左半屏*/
95 1 {
96 2 LCD_CS1 = 0;
97 2 LCD_CS2 = 1;
98 2 }
99 1 else if(CS_Num==2) /*选择右半屏*/
100 1 {
101 2 LCD_CS1 = 1;
102 2 LCD_CS2 = 0;
103 2 }
104 1 LCD_EN = 0; /* 使能信号为L */
105 1 LCD_RS = 0; /* 置寄存器选择为L */
106 1 LCD_RW = 0; /* 置读/写选择为L */
107 1 LCD_PORT = Command; /* 将控制指令代码输出到的数据端口 */
108 1 LCD_EN = 1; /* 使能信号为H */
109 1 Delay_us(5); /* 延时2us */
110 1 LCD_EN = 0; /* 使能信号为L */
111 1 // LCD_CS1 = 0; /* 置片选1为L */
112 1 // LCD_CS2 = 0; /* 置片选2为L */
C51 COMPILER V7.50 复件_12864 10/05/2007 14:13:54 PAGE 3
113 1
114 1 }
115
116
117 /*----------------------------------------------------------------------------
118 下面这个函数用于向液晶模块写入显示数据。
119 函数入口参数:Data------ 向液晶模块写入的显示数据 。
120 CS_Num-------左右半屏的选数值
121 ----------------------------------------------------------------------------*/
122 void LCD_WriteData(uchar Data,uchar CS_Num)
123 {
124 1 LCD_Check_Busy();
125 1 if(CS_Num==1) /*选择左半屏*/
126 1 {
127 2 LCD_CS1 = 0;
128 2 LCD_CS2 = 1;
129 2 }
130 1 else if(CS_Num==2) /*选择右半屏*/
131 1 {
132 2 LCD_CS1 = 1;
133 2 LCD_CS2 = 0;
134 2 }
135 1 LCD_EN = 0;
136 1 LCD_RS = 1; /* 置寄存器选择为H */
137 1 LCD_RW = 0; /* 置读/写选择为L */
138 1 LCD_PORT = Data; /* 将显示数据输出到的数据端口 */
139 1 LCD_EN = 1; /* 使能信号为H */
140 1 Delay_us(5); /* 延时2us */
141 1 LCD_EN = 0; /* 使能信号为L */
142 1 //LCD_CS1= 0; /* 置片选1为L */
143 1 // LCD_CS2= 0; /* 置片选2为L */
144 1
145 1 }
146
147 /*---------------------------------------------------------------------------
148 下面这个函数用于液晶模块的清屏。
149 ---------------------------------------------------------------------------*/
150 void LCD_CLR(uchar Side_Num)
151 {
152 1 uchar i,k,COM;
153 1
154 1 for(i=0;i<8;i++)
155 1 {
156 2 COM=0xB8+i;
157 2 LCD_WriteCommand(COM,Side_Num);
158 2 COM=0x40;
159 2 LCD_WriteCommand(COM,Side_Num);
160 2
161 2 for(k=0;k<64;k++)
162 2 {
163 3 LCD_WriteData(0xf0,Side_Num);
164 3 }
165 2 }
166 1 Delay_us(2);
167 1 }
168
169
170 /*---------------------------------------------------------------------------
171 下面这个函数用于向液晶模块初始化。
172 如果没有写完一个半屏的数据就要充分结合此函数来达到要显示的效果
173 ---------------------------------------------------------------------------*/
174 void LCD_Initial(void)
C51 COMPILER V7.50 复件_12864 10/05/2007 14:13:54 PAGE 4
175 {
176 1 LCD_RST = 0; /* 置复位信号为低电平 */
177 1 Delay_us(2);
178 1 LCD_RST = 1; /* 置复位信号为高电平 */
179 1 LCD_WriteCommand(0x3F,Left); /*显示开*/
180 1
181 1 LCD_WriteCommand(0x3F,Right);
182 1 LCD_WriteCommand(0xC0,Left); /*起始行*/
183 1 LCD_WriteCommand(0xC0,Right);
184 1 LCD_WriteCommand(0xB8,Left); /*起始页*/
185 1 LCD_WriteCommand(0xB8,Right);
186 1 LCD_WriteCommand(0x40,Left); /*起始列*/
187 1 LCD_WriteCommand(0x40,Right);
188 1 }
189
190
191
192 /*---------------------------------------------------------------------------
193 下面这个函数为主函数,根据程序要实现的功能写相应的应用程序
194 ---------------------------------------------------------------------------*/
195 void main(void)
196 {
197 1 uchar tempdata,page,clum,i,j,k;
198 1 XBR1=0X40;
199 1 PCA0MD=0X00;
200 1
201 1 LCD_Initial();
202 1
203 1 LCD_CLR(Left);
204 1 LCD_CLR(Right);
205 1 for(;;)
206 1 {
207 2 digitaloutleft();digitaloutright();
208 2 }
209 1 }
210
211
212
213
C51 COMPILATION COMPLETE. 1 WARNING(S), 1 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -