📄 925+.lst
字号:
C51 COMPILER V7.50 925_ 10/06/2007 14:02:24 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 925_
OBJECT MODULE PLACED IN .\925+.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE D:\Documents and Settings\hp\桌面\925+.C BROWSE DEBUG OBJECTEXTEND PRINT(.\
-925+.lst) OBJECT(.\925+.obj)
line level source
1 #include <c8051f410.H>
2
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define LCD_PORT P2
6 #define Left 2
7 #define Right 1
8
9
10 ////////////////////12864
11 sbit LCD_Busy=P2^7;
12 sbit LCD_EN = P1^7;
13 sbit LCD_RW = P1^6;
14 sbit LCD_RS = P1^5;
15 sbit LCD_CS1= P1^4;
16 sbit LCD_CS2= P1^3;
17 sbit LCD_RST= P1^1;
18
19 uchar Page_Num,Clm_Num,tempdata,page,clum,pagestart,clmstart,clmsum,pageend,i,j,k,dataout,digih2,digih,dig
-il2,digil,digitalin,clockrecog;
20 uchar swd,symbolin,symbolout,con,ab,keysetsymbol,keyud,keylr,keyset,keysetin,dir,enterkeynumber=0,keyclr,x
-,y;
21 uint v5,v15,vm15,v151,v152,v153,v154,v24,v24h;
22 uchar count,dafig=0;
23 uchar serial,accidentrecog=0;
24 uchar dt[7];
25 uchar datacenter[3][9];
26 code uchar digital[19][14]={{0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,0x03,0x04,0x08,0x08,0x04,0x03,0x00},/*"0",
-0*/
27 {0x00,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x08,0x08,0x0F,0x08,0x08,0x00},/*"1",1
-*/
28 {0x00,0x18,0x04,0x04,0xC4,0x38,0x00,0x00,0x0C,0x0A,0x09,0x08,0x0C,0x00},/*"2",2
-*/
29 {0x00,0x18,0x04,0x44,0x44,0xB8,0x00,0x00,0x06,0x08,0x08,0x08,0x07,0x00},/*"3",3
-*/
30 {0x80,0x40,0x30,0x08,0xFC,0x00,0x00,0x01,0x01,0x01,0x09,0x0F,0x09,0x01},/*"4",4
-*/
31 {0x00,0x7C,0x24,0x24,0x64,0xC4,0x00,0x00,0x06,0x08,0x08,0x0C,0x07,0x00},/*"5",5
-*/
32 {0xF0,0x88,0x44,0x44,0x44,0x8C,0x00,0x07,0x08,0x08,0x08,0x08,0x07,0x00},/*"6",6
-*/
33 {0x00,0x1C,0x04,0xC4,0x34,0x0C,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00},/*"7",7
-*/
34 {0x38,0xE4,0x44,0x44,0xC4,0x38,0x00,0x07,0x08,0x08,0x08,0x08,0x07,0x00},/*"8",8
-*/
35 {0x78,0x84,0x84,0x84,0x4C,0xF0,0x00,0x0C,0x08,0x08,0x0C,0x06,0x01,0x00},/*"9",9
-*/
36 {0x20,0xE0,0x40,0x20,0x20,0xC0,0x00,0x20,0x3F,0x28,0x08,0x0C,0x07,0x00},/*"p",1
-0*/
37 {0x00,0x40,0x20,0xA0,0xA0,0xC0,0x00,0x00,0x06,0x09,0x08,0x08,0x0F,0x08},/*"a",1
-1*/
38 {0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00},//: 12
-
39 {0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",1
C51 COMPILER V7.50 925_ 10/06/2007 14:02:24 PAGE 2
-3*/
40 {0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0x00,0x00,0x00,0x07,0x00,0x00,0x00},/*"+",1
-4*/
41 {0x00,0x38,0x44,0xFE,0x84,0x18,0x00,0x00,0x06,0x08,0x3F,0x08,0x07,0x00},/*"$",1
-5*/
42 {0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00},/*"=",16*/
43 {0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x07,0x38,0x0E,0x01,0x00,0x00},/*"V",1
-7*/
44 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00}};/*".",18*/
45
46 void Delay_us(unsigned int DelayTime)
47 {
48 1 while(DelayTime) DelayTime--;
49 1 }
50
51 void Delay_x10ms(unsigned char DelayTime) //***************10ms延时**********//
52 {
53 1 unsigned char iq,jq,kq;
54 1 for(iq=0;iq<DelayTime;iq++)
55 1 for(jq=0;jq<50;jq++)
56 1 for(kq=0;kq<120;kq++) {;}
57 1 }
58
59
60 /*----------------------------------------------------------------------------
61 下面这个函数用于液晶模块的忙信号检测。
62 ----------------------------------------------------------------------------*/
63 void LCD_Check_Busy(void)
64 {
65 1 while(1)
66 1 {
67 2 LCD_EN = 0;
68 2 LCD_RS = 0;
69 2 //Delay_us(10);
70 2 LCD_RW = 1;
71 2 LCD_PORT = 0xff;
72 2 LCD_EN = 1;
73 2 if(!LCD_Busy) break;
74 2 }
75 1 LCD_EN = 0;
76 1 }
77 /*----------------------------------------------------------------------------
78 下面这个函数用于向液晶模块写入控制指令代码。
79 函数入口参数:Command ------ 向液晶模块写入的控制指令代码 。
80 CS_Num ------ 左右半屏的选数值
81 ----------------------------------------------------------------------------*/
82 void LCD_WriteCommand(uchar Command, uchar CS_Num)
83 {
84 1 if(CS_Num==1) /*选择左半屏*/
85 1 {
86 2 LCD_CS1 = 0;
87 2 LCD_CS2 = 1;
88 2 }
89 1 else if(CS_Num==2) /*选择右半屏*/
90 1 {
91 2 LCD_CS1 = 1;
92 2 LCD_CS2 = 0;
93 2 }
94 1 LCD_Check_Busy(); /* 使能信号为L */
95 1 LCD_RS = 0; /* 置寄存器选择为L */
96 1 LCD_RW = 0; /* 置读/写选择为L */
97 1 LCD_PORT = Command; /* 将控制指令代码输出到的数据端口 */
C51 COMPILER V7.50 925_ 10/06/2007 14:02:24 PAGE 3
98 1 LCD_EN = 1; /* 使能信号为H */
99 1 Delay_us(10); /* 延时2us */
100 1 LCD_EN = 0; /* 使能信号为L */
101 1 LCD_CS1 = 1; /* 置片选1为L */
102 1 LCD_CS2 = 1; /* 置片选2为L */
103 1 }
104
105
106 /*----------------------------------------------------------------------------
107 下面这个函数用于向液晶模块写入显示数据。
108 函数入口参数:Data------ 向液晶模块写入的显示数据 。
109 CS_Num-------左右半屏的选数值
110 ----------------------------------------------------------------------------*/
111 void LCD_WriteData(uchar Data,uchar CS_Num)
112 {
113 1 if(CS_Num==1) /*选择左半屏*/
114 1 {
115 2 LCD_CS1 = 0;
116 2 LCD_CS2 = 1;
117 2 }
118 1 else if(CS_Num==2) /*选择右半屏*/
119 1 {
120 2 LCD_CS1 = 1;
121 2 LCD_CS2 = 0;
122 2 }
123 1 LCD_Check_Busy();
124 1 LCD_EN = 0;
125 1 LCD_RS = 1; /* 置寄存器选择为H */
126 1 LCD_RW = 0; /* 置读/写选择为L */
127 1 LCD_PORT = Data; /* 将显示数据输出到的数据端口 */
128 1 LCD_EN = 1; /* 使能信号为H */
129 1 Delay_us(10); /* 延时2us */
130 1 LCD_EN = 0; /* 使能信号为L */
131 1 LCD_CS1= 1; /* 置片选1为L */
132 1 LCD_CS2= 1; /* 置片选2为L */
133 1 }
134
135 /*---------------------------------------------------------------------------
136 下面这个函数用于液晶模块的清屏。
137 ---------------------------------------------------------------------------*/
138 void LCD_keyclr(uchar Side_Num)
139 {
140 1 uchar i,k,COM;
141 1
142 1 for(i=0;i<8;i++)
143 1 {
144 2 COM=0xB8+i;
145 2 LCD_WriteCommand(COM,Side_Num);
146 2 COM=0x40;
147 2 LCD_WriteCommand(COM,Side_Num);
148 2
149 2 for(k=0;k<64;k++)
150 2 {
151 3 LCD_WriteData(0x00,Side_Num);
152 3 }
153 2 }
154 1 Delay_us(2);
155 1 }
156
157
158 /*---------------------------------------------------------------------------
159 下面这个函数用于向液晶模块初始化。
C51 COMPILER V7.50 925_ 10/06/2007 14:02:24 PAGE 4
160 如果没有写完一个半屏的数据就要充分结合此函数来达到要显示的效果
161 ---------------------------------------------------------------------------*/
162 void LCD_Initial(void)
163 {
164 1 LCD_RST = 0; /* 置复位信号为低电平 */
165 1 // Delay_us(2);
166 1 LCD_RST = 1; /* 置复位信号为高电平 */
167 1 LCD_WriteCommand(0x3F,Left); /*显示开*/
168 1 LCD_WriteCommand(0x3F,Right);
169 1 LCD_WriteCommand(0xC0,Left); /*起始行*/
170 1 LCD_WriteCommand(0xC0,Right);
171 1 LCD_WriteCommand(0xB8,Left); /*起始页*/
172 1 LCD_WriteCommand(0xB8,Right);
173 1 LCD_WriteCommand(0x40,Left); /*起始列*/
174 1 LCD_WriteCommand(0x40,Right);
175 1 }
176
177
178 /*---------------------------------------------------------------------------
179 下面这个函数用于数字数组例坐标选择,对应相应数值的点阵
180 ---------------------------------------------------------------------------*/
181 swi()
182 {
183 1 switch (swd)
184 1 {
185 2 case 0: k=0; break;
186 2 case 1: k=1; break;
187 2 case 2: k=2; break;
188 2 case 3: k=3; break;
189 2 case 4: k=4; break;
190 2 case 5: k=5; break;
191 2 case 6: k=6; break;
192 2 case 7: k=7; break;
193 2 case 8: k=8; break;
194 2 case 9: k=9; break;
195 2 case 10: k=10; break;
196 2 case 11: k=11; break;
197 2 case 12: k=12; break;
198 2 case 13: k=13; break;
199 2 case 14: k=14; break;
200 2 case 15: k=15; break;
201 2 case 16: k=16; break;
202 2 case 17: k=17; break;
203 2 case 18: k=18; break;
204 2
205 2 }
206 1 }
207
208 /*---------------------------------------------------------------------------
209 下面这个函数用于左半屏数字位的显示示,只需给定页地址,起始例
210 ---------------------------------------------------------------------------*/
211 digitaloutleft()
212 {
213 1 for(j=0;j<2;j++)
214 1 {
215 2 LCD_WriteCommand((page+j),Left);
216 2 LCD_WriteCommand(clmstart,Left);
217 2 for(i=0;i<7;i++)
218 2 {
219 3 digitalin=digital[k][7*j+i];
220 3 if(keysetin==1){digitalin=~digital[k][7*j+i];};
221 3
C51 COMPILER V7.50 925_ 10/06/2007 14:02:24 PAGE 5
222 3 LCD_WriteData(digitalin,Left);
223 3 }}
224 1 keysetin=0;
225 1 }
226
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -