📄 lcd.lst
字号:
C51 COMPILER V7.50 LCD 07/24/2007 01:28:04 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD.C LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REGX52.H>
2 #include "LCD1602.h"
3 #include "Key2.h"
4 #include "CeLiang.h"
5 #include "delay.h"
6
7 void IntToStr(uint t, uchar *str, uchar n)
8 { uchar a[5]; uchar i2, j;
9 1 a[0]=(t/10000)%10; //取得整数值到数组
10 1 a[1]=(t/1000)%10;
11 1 a[2]=(t/100)%10;
12 1 a[3]=(t/10)%10;
13 1 a[4]=(t/1)%10;
14 1
15 1 for(i2=0; i2<5; i2++) //转成ASCII码
16 1 a[i2]=a[i2]+'0';
17 1 for(i2=0; a[i2]=='0' && i2<=3; i2++);
18 1 for(j=5-n; j<i2; j++) //填充空格
19 1 { *str=' '; str++; }
20 1 for(; i2<5; i2++)
21 1 { *str=a[i2]; str++; } //加入有效的数字
22 1 *str='\0';
23 1 }
24
25
26 main()
27 { data uchar i,j,k,key;
28 1 data uchar TempBuffer[10]; //LCD字符显示缓存
29 1
30 1 max=0;
31 1 LCD_Initial(); //LCD初始化
32 1
33 1 /*延时2s*/
34 1 for(i=100;i>0;--i)
35 1 delay_1ms(20);
36 1
37 1 /*提示输入脉冲的测量次数*/
38 1 GotoXY(0,0);
39 1 Print(" Input Measure ");
40 1 GotoXY(0,1);
41 1 Print(" Number(10-64): ");
42 1
43 1 /*此while循环为测量次数输入模块*/
44 1 while(1)
45 1 { key=keyScan();
46 2 switch(key)
47 2 { case(11):
48 3 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
49 3 max=max*10+1;
50 3 IntToStr(max,&TempBuffer[0],3);
51 3 GotoXY(0,0);
52 3 Print(&TempBuffer[0]);
53 3 break;
54 3
55 3 case(12):
C51 COMPILER V7.50 LCD 07/24/2007 01:28:04 PAGE 2
56 3 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
57 3 max=max*10+2;
58 3 IntToStr(max,&TempBuffer[0],3);
59 3 GotoXY(0,0);
60 3 Print(&TempBuffer[0]);
61 3 break;
62 3
63 3 case(13):
64 3 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
65 3 max=max*10+3;
66 3 IntToStr(max,&TempBuffer[0],3);
67 3 GotoXY(0,0);
68 3 Print(&TempBuffer[0]);
69 3 break;
70 3
71 3 case(21):
72 3 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
73 3 max=max*10+4;
74 3 IntToStr(max,&TempBuffer[0],3);
75 3 GotoXY(0,0);
76 3 Print(&TempBuffer[0]);
77 3 break;
78 3
79 3 case(22):
80 3 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
81 3 max=max*10+5;
82 3 IntToStr(max,&TempBuffer[0],3);
83 3 GotoXY(0,0);
84 3 Print(&TempBuffer[0]);
85 3 break;
86 3
87 3 case(23):
88 3 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
89 3 max=max*10+6;
90 3 IntToStr(max,&TempBuffer[0],3);
91 3 GotoXY(0,0);
92 3 Print(&TempBuffer[0]);
93 3 break;
94 3
95 3 case(31):
96 3 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
97 3 max=max*10+7;
98 3 IntToStr(max,&TempBuffer[0],3);
99 3 GotoXY(0,0);
100 3 Print(&TempBuffer[0]);
101 3 break;
102 3
103 3 case(32):
104 3 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
105 3 max=max*10+8;
106 3 IntToStr(max,&TempBuffer[0],3);
107 3 GotoXY(0,0);
108 3 Print(&TempBuffer[0]);
109 3 break;
110 3
111 3 case(33):
112 3 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
113 3 max=max*10+9;
114 3 IntToStr(max,&TempBuffer[0],3);
115 3 GotoXY(0,0);
116 3 Print(&TempBuffer[0]);
117 3 break;
C51 COMPILER V7.50 LCD 07/24/2007 01:28:04 PAGE 3
118 3
119 3 case(42):
120 3 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
121 3 max=max*10+0;
122 3 IntToStr(max,&TempBuffer[0],3);
123 3 GotoXY(0,0);
124 3 Print(&TempBuffer[0]);
125 3 break;
126 3 }//switch
127 2 if(max>64)
128 2 { max=64;
129 3 IntToStr(max,&TempBuffer[0],3);
130 3 GotoXY(0,0);
131 3 Print(&TempBuffer[0]);
132 3 }
133 2 if(max>9)break;
134 2 }//while
135 1 /*输入测量次数模块结束*/
136 1
137 1 /*显示输入的数2s*/
138 1 for(i=100;i>0;--i)
139 1 delay_1ms(20);
140 1
141 1
142 1 for(i=0;i<=max;++i)
143 1 { time[i].second=0;
144 2 time[i].m_second=0;
145 2 }
146 1
147 1 GotoXY(0,0);
148 1 Print(" Please press 1 ");
149 1 GotoXY(0,1);
150 1 Print(" to start ");
151 1 key=0;
152 1
153 1 /*下面为测量脉冲过程*/
154 1 while(keyScan()!=11);
155 1 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
156 1 GotoXY(0,0);
157 1 Print(" LOADING..... ");
158 1 int0_initial();
159 1 while(puls_num<max);//测量结束
160 1 /*测量脉冲结束,下面为结果计算和显示*/
161 1
162 1 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
163 1 GotoXY(0,1);
164 1 Print(" Measrue end! ");
165 1
166 1 /*显示输入的数2s*/
167 1 for(i=100;i>0;i--)
168 1 delay_1ms(20);
169 1
170 1 GotoXY(0,0);
171 1 Print(" Please press 2 ");
172 1 GotoXY(0,1);
173 1 Print(" To show ");
174 1 while(keyScan()!=12);
175 1
176 1 /*显示模块,按"->"键增加,按"<-"键减少*/
177 1 i=max-1;
178 1 while(1)
179 1 { LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
C51 COMPILER V7.50 LCD 07/24/2007 01:28:04 PAGE 4
180 2
181 2 if(time[i].m_second/100>0)k=3; //三位数
182 2 else if(time[i].m_second/10>0)k=2; //二位数
183 2 else k=1; //一位数
184 2 if(time[i].second/100>0)j=3; //三位数
185 2 else if(time[i].second/10>0)j=2; //二位数
186 2 else j=1; //一位数
187 2
188 2 GotoXY(0,0);
189 2 Print(" Times:");
190 2 IntToStr(i,&TempBuffer[0],j);
191 2 GotoXY(7,0);
192 2 Print(&TempBuffer[0]);
193 2
194 2 GotoXY(2,1);
195 2 Print("Data:");
196 2 GotoXY(7+j,1);
197 2 Print(".");
198 2
199 2 IntToStr(time[i].second,&TempBuffer[0],j);
200 2 GotoXY(7,1);
201 2 Print(&TempBuffer[0]);
202 2
203 2 IntToStr(time[i].m_second,&TempBuffer[0],k);
204 2 GotoXY(8+j,1);
205 2 Print(&TempBuffer[0]);
206 2
207 2 GotoXY(8+j+k,1);
208 2 Print("ms");
209 2
210 2 while(1)
211 2 { key=keyScan();
212 3 if(key==41&&i>1)
213 3 { i=i-1;break;}
214 3 if(key==43&&i<max-1)
215 3 { i=i+1;break;}
216 3 }
217 2 }//while
218 1 while(1);
219 1 }
220
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1722 ----
CONSTANT SIZE = 155 ----
XDATA SIZE = 195 13
PDATA SIZE = ---- ----
DATA SIZE = 3 14
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -