?? hongwai.lst
字號:
C51 COMPILER V8.02 HONGWAI 07/31/2008 01:16:42 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE HONGWAI
OBJECT MODULE PLACED IN hongwai.OBJ
COMPILER INVOKED BY: D:\安裝程序\UV3\C51\BIN\C51.EXE hongwai.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /***********************************************************************
2 函數名稱:紅外通信 *
3 函數功能:實現紅外無限溫度傳輸 *
4 說明: *
5 P0_0=D0 P0_1=D1 P0_2=D2 P0_3=D3 *
6 P0_4=D4 P0_5=D5 P0_6=D6 P0_7=D7 *
7 P2_0=RS P2_1=RW P2_2=E *
8 P3_3為溫度數據接收端 *
9 按下P3_2發送讀取的溫度數據,接收端顯示數據,將"1"回送給發送端
10 當溫度超過33攝氏度時,接收方P1_0燈亮,將“0”回送給發送端 *
11 李燦松
12 2008.7.20
13 ***********************************************************************/
14 #include<reg52.h>
15 #include<intrins.h>
16 #include<absacc.h>
17 #define uchar unsigned char
18 //uchar code tab[10]={0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0,} ;
19 uchar data str[5];
20 uchar data dat[5];
21 sbit P3_2=P3^2;
22 sbit P1_0=P1^0;
23
24 #define T_cont 0.0625 //溫度轉換常數
25 #define uchar unsigned char
26 #define uint unsigned int
27 #define L1602_DB0_DB7 P0 //定義1602的數據總線
28 bit T_sign=0; //溫度正負符號
29 float temp1=0;
30 sbit DQ=P3^3; //單口線說明
31 sbit L1602_RS=P2^0; //定義1602得RS控制線
32 sbit L1602_RW=P2^1; //定義1602得RW控制線
33 sbit L1602_E=P2^2; //定義1602的E控制線
34 sbit L1602_Busy=P0^7; //定義1602的測忙線
35 uchar code Welcome[]={"wlecome"};
36 uchar code Welcome1[]={"tempture"};
37 uchar code Welcome2[]={"cansong:"};
38 uchar code Temp[]={"temp"};
39 unsigned char sdata,t_bai,t_shi,t_ge,t_feng,t_miao;
40 typedef bit BOOL ;
41
42 /**********************************************************************************************
43 函數名稱:初始化函數
44 函數功能:串口初始化函數
45 說明:
46 **********************************************************************************************/
47 void init(void)
48 {
49 1 TMOD=0x20; //定時器1工作在方式2
50 1 PCON=0x00; //波特率不增倍
51 1 SCON=0x50; //串行工作方式3
52 1 TH1=0xFD; //SMOD=0時的初值
53 1 TL1=0xFD;
54 1 TR1=1;
55 1 }
C51 COMPILER V8.02 HONGWAI 07/31/2008 01:16:42 PAGE 2
56
57 /**********************************************************************************************
58 函數名稱:存儲函數
59 函數功能:將溫度數據存儲在str[]
60 說明:
61 **********************************************************************************************/
62 void save()
63 {
64 1 str[0]=t_bai;
65 1 str[1]=t_shi;
66 1 str[2]=t_ge;
67 1 str[3]=t_feng;
68 1 str[4]=t_miao;
69 1
70 1 }
71
72 /**********************************************************************************************
73 函數名稱:發送函數
74 函數功能:將數組中的溫度數據通過串口發送
75 說明:
76 **********************************************************************************************/
77 void send_str()
78 // 傳送字串
79 {
80 1 uchar i;
81 1 for(i=0;i<5;i++)
82 1 {
83 2 SBUF = str[i];
84 2 while(!TI); // 等特數據傳送
85 2 TI = 0; // 清除數據傳送
86 2 }
87 1 }
88
89 /**********************************************************************************************
90 函數名稱:主函數
91 函數功能:主函數
92 說明:
93 **********************************************************************************************/
94
95 void main()
96 {
97 1 void print(uchar a,uchar *str);
98 1 void print1(uchar a,uchar t);
99 1 void LCM1602_Init();
100 1 void LCM1602_Delay(uchar count);
101 1 void ReadTemperature();
102 1 void DS18B20_init();
103 1 DS18B20_init();
104 1 LCM1602_Init();
105 1 print(0x80,Welcome);
106 1 print(0xc0,Welcome1);
107 1 LCM1602_Delay(500);
108 1 P2=0xff;
109 1 P0=0xff;
110 1 EA=1;
111 1 ES=1; //串行口中斷開
112 1 init();
113 1 while(1)
114 1 {
115 2 ReadTemperature();
116 2 print(0x80, Welcome2);
117 2 if(T_sign==1)
C51 COMPILER V8.02 HONGWAI 07/31/2008 01:16:42 PAGE 3
118 2 print1(0xc0,0x2d);
119 2 else
120 2 print1(0xc0,0x2b);
121 2 //if(t_bai!=0)
122 2 print1(0xc1,t_bai+0x30);
123 2 // else
124 2 // print1(0xc1,t_shi+0x30); //消隱,不顯示
125 2 // t_shi=3;
126 2 print1(0xc2,t_shi+0x30);
127 2 print1(0xc3,t_ge+0x30);
128 2 print1(0xc4,0x2e); //顯示點
129 2 print1(0xc5,t_feng+0x30);
130 2 print1(0xc6,t_miao+0x30);
131 2 print1(0xc7,0x43); //顯示'C
132 2 save();
133 2 if(P3_2==0)
134 2 {
135 3 // SBUF='L'; //發送
136 3 // while(TI==0); //等待串口發送完畢
137 3 // TI=0;
138 3 send_str();
139 3 while(P3_2==0); //等待按鍵放
140 3 }
141 2
142 2 }
143 1
144 1 }
145 /**********************************************************************************************
146 函數名稱:串口中斷
147 函數功能:串口中斷函數
148 說明:接受和返回主機的數據
149 **********************************************************************************************/
150 serial () interrupt 4 using 1
151 {
152 1 uchar i;
153 1 /* void print1(uchar a,uchar t);
154 1 void LCM1602_Init();
155 1 void LCM1602_Delay(uchar count);
156 1
157 1 LCM1602_Init();
158 1 LCM1602_Delay(5000);
159 1 */
160 1 if(RI==1)
161 1 {
162 2 RI=0;
163 2 for(i=0;i<5;i++)
164 2 {
165 3 dat[i]=SBUF; //接受
166 3 }
167 2 t_bai=dat[0];t_shi=dat[1];t_ge=dat[2];t_feng=dat[3];t_miao=dat[4];
168 2 if(t_shi==0x03&&t_ge>0x04)
169 2 {
170 3 SBUF='0'; //發送
171 3 P1_0=0;
172 3
173 3 }
174 2 else
175 2 SBUF='1';
176 2
177 2 /* print1(0xc1,t_bai+0x30);
178 2 print1(0xc2,t_shi+0x30);
179 2 print1(0xc3,t_ge+0x30);
C51 COMPILER V8.02 HONGWAI 07/31/2008 01:16:42 PAGE 4
180 2 print1(0xc4,0x2e); //顯示點
181 2 print1(0xc5,t_feng+0x30);
182 2 print1(0xc6,t_miao+0x30);
183 2 print1(0xc7,0x43); //顯示'C
184 2 */ while(TI==0);
185 2 TI=0;
186 2 }
187 1 }
188
189
190
191 /**********************************************************************************************
192 函數名稱:讀取溫度函數
193 函數功能:讀取DS18B20的轉換溫度值
194 說明:
195 **********************************************************************************************/
196
197 void ReadTemperature() //獲取溫度源程序
198 {
199 1 void delay(unsigned int delay_time);
200 1 void DS18B20_init();
201 1 void DS18B20_send(unsigned char out_data);
202 1 uchar DS18B20_read(void);
203 1 unsigned int y=0;
204 1 uchar a=0;
205 1 uchar b=0;
206 1 // unsigned char k;
207 1 DS18B20_init(); //初始化DS18B20
208 1 DS18B20_send (0xcc);
209 1 DS18B20_send (0x44); //啟動溫度轉換
210 1 delay(125);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -