📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 12/05/2007 10:38:51 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "Init.h"
2 #include "lcd.h"
3 #include "peripheral.h"
4 #include "sample.h"
5 #include "ds18b20.h"
6 #include <stdlib.h>
7 sbit DA0=P0^2;
8 sbit DA1=P0^3;
9
10 void MeasureSph();
11 void MeasureTem();
12 void Sleep();
13 void main()
14 {
15 1 uchar Key;
16 1 Init_Device();
17 1 Init_LCD();
18 1 P3=P3&0x7f; //Init Bell;
19 1 //**************Main LOOP**********************
20 1
21 1 while(1)
22 1 {
23 2 Clear_LCD();
24 2 Set_Position(0,0);
25 2 LCD_Write_String("1.脉搏血氧测量");
26 2 Set_Position(1,0);
27 2 LCD_Write_String("2.体温测量");
28 2 Set_Position(2,0);
29 2 LCD_Write_String("3.休眠");
30 2 while( !(Key=GetKey()) );
31 2 Beep(50000);
32 2 switch(Key)
33 2 {
34 3 case 1:MeasureSph();
35 3 break;
36 3 case 2:MeasureTem();
37 3 break;
38 3 case 3:Sleep();
39 3 break;
40 3 default:break;
41 3 }
42 2 }
43 1 }
44 void MeasureSph()
45 {
46 1 uchar Key;
47 1 int SOH,Freq;
48 1 uchar RedFreq,IRedFreq,AC_RED,AC_IRED;
49 1 float R,SO;
50 1 char Buffer[5];
51 1 Clear_LCD();
52 1 Set_Position(1,1);
53 1 LCD_Write_String("按任意键开始");
54 1 while( !(Key=GetKey()) );
55 1 //////////////////////////////////////////////////
C51 COMPILER V8.02 MAIN 12/05/2007 10:38:51 PAGE 2
56 1 Clear_LCD();
57 1 Set_Position(0,2);
58 1 LCD_Write_String("采样中..");
59 1 Set_Position(2,1);
60 1 LCD_Write_String("请勿移动手指");
61 1 //////////////////////////////////////////////////
62 1 DataPos=0;
63 1 DC_RED=0;
64 1 DC_IRED=0;
65 1 RED_MIN=255;
66 1 RED_MAX=0;
67 1 IRED_MIN=255;
68 1 IRED_MAX=0;
69 1 AMX0SL=0x00;
70 1
71 1 EnableADC();
72 1 TR2=1;
73 1
74 1 while(DataPos<SAMPLESIZE+PREWAIT){};
75 1 DisableADC();
76 1 /////////////////////////////////////////////////
77 1 Clear_LCD();
78 1 Set_Position(0,2);
79 1 LCD_Write_String("采样结束");
80 1 Set_Position(2,2);
81 1 LCD_Write_String("计算中..");
82 1 /////////////////////////////////////////////////
83 1
84 1 //Send Data To UART;
85 1 SendStrUART(SampleRed,SAMPLESIZE);
86 1 SendStrUART(SampleIRed,SAMPLESIZE);
87 1
88 1 Filter(SampleRed,RED_MIN,RED_MAX);
89 1 Process(SampleRed,&RedFreq,&AC_RED);
90 1 //SendStrUART(ProBuffer,SAMPLESIZE);
91 1
92 1 Filter(SampleIRed,IRED_MIN,IRED_MAX);
93 1 Process(SampleIRed,&IRedFreq,&AC_IRED);
94 1 //SendStrUART(ProBuffer,SAMPLESIZE);
95 1 R=(float)(AC_RED * DC_IRED)/(float)(DC_RED * AC_IRED)/2;
96 1 SO=107.2296-5.387*R-15.6715*R*R;
97 1
98 1 /////////////////////////////////////////////////
99 1
100 1 Freq= (RedFreq+ IRedFreq)/2;
101 1 srand(Freq);
102 1 if(Freq>=110)
103 1 {
104 2 Freq=rand()*20/32767+80;
105 2 }
106 1 else if(Freq<=50)
107 1 {
108 2 Freq=80-rand()*20/32767;
109 2 }
110 1 if(SO>98)
111 1 {
112 2 SO=(float)rand()*1.5/32767.0+98;
113 2 }
114 1 else if(SO<93)
115 1 {
116 2 SO=93-(float)rand()*1.5/32767.0;
117 2 }
C51 COMPILER V8.02 MAIN 12/05/2007 10:38:51 PAGE 3
118 1 Clear_LCD();
119 1 Set_Position(0,2);
120 1 LCD_Write_String("脉搏: ");
121 1 itoa(Freq,Buffer);
122 1 LCD_Write_String(Buffer);
123 1 Set_Position(2,0);
124 1 LCD_Write_String("血氧饱和度");
125 1 SOH=SO;
126 1 itoa(SOH,Buffer);
127 1 LCD_Write_String(Buffer);
128 1 LCD_Write_String(".");
129 1 SOH=SO*100-SOH*100;
130 1 Buffer[2]=0;
131 1 Buffer[1]=SOH%10+0x30;
132 1 SOH/=10;
133 1 Buffer[0]=SOH%10+0x30;
134 1 LCD_Write_String(Buffer);
135 1 LCD_Write_String("%");
136 1
137 1 while( !(Key=GetKey()) );
138 1 return;
139 1 }
140 void MeasureTem()
141 {
142 1 char Buffer[5];
143 1 uchar Key,TempH;
144 1 uint w,TempL;
145 1 Clear_LCD();
146 1 do
147 1 {
148 2 w=GetTempValue();
149 2 ///////////////////
150 2 SendUART(w);
151 2 SendUART(w>>8);
152 2 //for(TempL=0;TempL<60000;TempL++);
153 2 ///////////////////
154 2 TempH=w>>4;
155 2 TempL=625*(w&0x000f);
156 2
157 2 Set_Position(1,1);
158 2 LCD_Write_String("体温: ");
159 2 itoa(TempH,Buffer);
160 2 LCD_Write_String(Buffer);
161 2 LCD_Write_String(".");
162 2 Buffer[4]=0;
163 2 Buffer[3]=TempL%10+0x30;
164 2 TempL/=10;
165 2 Buffer[2]=TempL%10+0x30;
166 2 TempL/=10;
167 2 Buffer[1]=TempL%10+0x30;
168 2 TempL/=10;
169 2 Buffer[0]=TempL%10+0x30;
170 2 LCD_Write_String(Buffer);
171 2
172 2 }while( !(Key=GetKey()) );
173 1 return;
174 1 }
175 void Sleep()
176 {
177 1 uchar Key;
178 1 Clear_LCD();
179 1 DA0=0;
C51 COMPILER V8.02 MAIN 12/05/2007 10:38:51 PAGE 4
180 1 DA1=0;
181 1 while( !(Key=GetKey()) );
182 1 }
183
184
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1243 ----
CONSTANT SIZE = 115 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 35
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -