?? fyd.lst
字號:
C51 COMPILER V7.50 FYD 08/01/2008 14:37:53 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE FYD
OBJECT MODULE PLACED IN FYD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE FYD.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include <intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5
6 sbit CS = P2^0;//指令數(shù)據(jù)控制端
7 sbit SID = P2^1;//R/W讀寫控制端
8 sbit CLK = P2^2;//使能端
9
10 //sbit DQ = P3^7;//DS18B20數(shù)據(jù)總線
11 sbit DQ = P3^0;//DS18B20數(shù)據(jù)總線
12 sbit buzzer= P1^5;//報警器接口
13 sbit set = P2^3;//時間調(diào)整鍵
14 sbit ret = P2^4;//定時按鍵
15 sbit add = P2^5;//加一鍵
16 sbit dec = P2^6;//減一鍵
17 sbit led1 = P1^2;//指示燈
18
19 uchar ms50=0,second=0,minite=0,hour=12;//實際時間存放變量
20 uchar hh =0,ff=0,KT=0;//設(shè)定時間變量
21 uint tvalue;//溫度值
22 bit tflag;//溫度正負標志
23 uint n=0;
24 uchar T[8]={0x3a,0,0,0,0,0x2e,0,0x43};//溫度存放緩沖區(qū)
25 uchar sheding[8]={0x3a,0,0,0x3a,0,0,0x20,0x20};//設(shè)定時間存放數(shù)組
26 /*************************************************************************************************/
27
28 /*****************************初始化子程序******************************/
29 uchar code huanyinghuamian[]={"歡迎來到誠信院@"};
30 uchar code word[] ={"時鐘溫度顯示系統(tǒng)"};
31 uchar code guanggao[] ={"嵌入式愛好者協(xié)會"};
32 uchar code tegong[] ={"嵌協(xié)特工隊制作!!"};
33 //uchar code huanyinghuamian2[]={"Welcome to here!"};
34 //uchar code huanyinghuamian3[]={"We'll be friend!"};
35 /***********************************************************************/
36 uchar code numble[16]={"當(dāng)前時間 "};
37 uchar code name[16] ={"當(dāng)前溫度 "};
38 //uchar code zhifu[]={"女人只能呵護與愛"};
39 uchar code zhifu[] ={"設(shè)定時間 "};
40 /************************溫度測試模塊***********************/
41 /***********ds18b20延遲子函數(shù)(晶振12MHz )*******/
42
43 /******************************ds1820程序***************************************/
44 void delay_18B20(unsigned int i)//延時1微秒
45 {
46 1 while(i--);
47 1 }
48
49
50 void ds1820rst()/*ds1820復(fù)位*/
51 { unsigned char x=0;
52 1 DQ = 1; //DQ復(fù)位
53 1 delay_18B20(4); //延時
54 1 DQ = 0; //DQ拉低
55 1 delay_18B20(100); //精確延時大于480us
C51 COMPILER V7.50 FYD 08/01/2008 14:37:53 PAGE 2
56 1 DQ = 1; //拉高
57 1 delay_18B20(40);
58 1 }
59
60
61 uchar ds1820rd()/*讀數(shù)據(jù)*/
62 { unsigned char i=0;
63 1 unsigned char dat = 0;
64 1 for (i=8;i>0;i--)
65 1 { DQ = 0; //給脈沖信號
66 2 dat>>=1;
67 2 DQ = 1; //給脈沖信號
68 2 if(DQ)
69 2 dat|=0x80;
70 2 delay_18B20(10);
71 2 }
72 1 return(dat);
73 1 }
74
75
76 void ds1820wr(uchar wdata)/*寫數(shù)據(jù)*/
77 {
78 1 unsigned char i=0;
79 1 for (i=8; i>0; i--)
80 1 { DQ = 0;
81 2 DQ = wdata&0x01;
82 2 delay_18B20(10);
83 2 DQ = 1;
84 2 wdata>>=1;
85 2 }
86 1 }
87
88
89
90 read_temp()/*讀取溫度值并轉(zhuǎn)換*/
91 {
92 1 uchar a,b;
93 1 ds1820rst();
94 1 ds1820wr(0xcc);//*跳過讀序列號*/
95 1 ds1820wr(0x44);//*啟動溫度轉(zhuǎn)換*/
96 1 ds1820rst();
97 1 ds1820wr(0xcc);//*跳過讀序列號*/
98 1 ds1820wr(0xbe);//*讀取溫度*/
99 1 a=ds1820rd();
100 1 b=ds1820rd();
101 1 tvalue=b;
102 1 tvalue<<=8;
103 1 tvalue=tvalue|a;
104 1 if(tvalue<0x0fff)
105 1 tflag=0;
106 1 else
107 1 {tvalue=~tvalue+1;
108 2 tflag=1;}
109 1
110 1 tvalue=tvalue*(0.625);//溫度值擴大10倍,精確到1位小數(shù)
111 1 return(tvalue);
112 1 }
113 /*****************************************************************/
114 /***************************液晶顯示模塊**************************/
115 /*****************************延時子程序**************************/
116 void delay( uint t )
117 {
C51 COMPILER V7.50 FYD 08/01/2008 14:37:53 PAGE 3
118 1 uint i;
119 1 while( t-- )
120 1 for(i=0;i<120;i++);
121 1 }
122
123 /*****************************寫液晶子程序******************************/
124 /************************************************************************
125 說明:word:要寫的內(nèi)容 dat:1為數(shù)據(jù) 0為指令
126 *************************************************************************/
127 void Writelcd(uchar word,uchar dat)
128 {
129 1 uchar lcddat[3];
130 1 uchar i,j,k;
131 1 lcddat[0] = ( 0xf8+(dat<<1) );//第一個字節(jié)
132 1 lcddat[1] = ( word&0xf0 ) ; //第二個字節(jié) 內(nèi)容的高四位+0000
133 1 lcddat[2] = ( (word<<4)&0xf0 ) ;//第三個字節(jié) 內(nèi)容的第四位+0000
134 1 CS = 0;
135 1 CS = 1;
136 1 CLK = 0;
137 1 for(i=0;i<3;i++)
138 1 {
139 2 j = lcddat[i];
140 2 for(k=0;k<8;k++)
141 2 {
142 3 if( (j<<k)&0x80 )
143 3 SID = 1;
144 3 else
145 3 SID = 0;
146 3 /**時鐘下降沿寫入數(shù)據(jù)**/
147 3 CLK = 1;
148 3 CLK = 0;
149 3 }
150 2 }
151 1 }
152
153 void Serial_int(void)
154 {
155 1 CS =1;
156 1 SID =0;
157 1 CLK =0;
158 1 Writelcd( 0x30,0 );//功能設(shè)置,一次送8位數(shù)據(jù),基本指令集
159 1 // delay( 50 );
160 1 Writelcd( 0x30,0 );//功能設(shè)置,一次送8位數(shù)據(jù),基本指令集
161 1 // delay( 40 );
162 1 Writelcd( 0x0c,0 );//0000,1100 整體顯示,游標off,游標位置off
163 1 // delay( 50 );
164 1 Writelcd( 0x01,0 );//0000,0001 清DDRAM
165 1 // delay( 10000 );
166 1 Writelcd( 0x02,0 );//0000,0010 DDRAM地址歸位
167 1 // delay( 50 );
168 1
169 1 // delay( 50 );
170 1 Writelcd( 0x80,0 );//1000,0000 設(shè)定DDRAM 7位地址000,0000到地址計數(shù)器AC//
171 1 // delay( 150 );
172 1 Writelcd( 0x06,0 );
173 1 }
174
175 /***********************按鍵處理程序模塊****************************/
176 void key_set()
177 {
178 1 if(set==0)
179 1 {
C51 COMPILER V7.50 FYD 08/01/2008 14:37:53 PAGE 4
180 2 delay(10);
181 2 if(set==0)
182 2 n++;
183 2 if(n>=6)
184 2 n=0;
185 2 }
186 1 while(set==0);
187 1 if((n>=1)&&(n<=5))
188 1 KT=1;
189 1 else
190 1 KT=0;
191 1 }
192
193
194 void key_ret()
195 {
196 1 if(ret==0)
197 1 {
198 2 hh=0;
199 2 ff=0;
200 2 //ss=0;
201 2 }
202 1 while(ret==0);
203 1 }
204
205 void key_add()
206 {
207 1 if(add==0)
208 1 {
209 2 delay(10);
210 2 switch(n)
211 2 {
212 3 //case 0:break;
213 3 case 1:hour++;if(hour>=24)hour=0;break;
214 3 case 2:minite++;if(minite>=60)minite=0;break;
215 3 case 3:second++;if(second>=60)second=0;break;
216 3 case 4:hh++;if(hh>=24)hh=0;break;
217 3 case 5:ff++;if(ff>=60)ff=0;break;
218 3 //case 6:ss++;if(ss>=60)ss=0;break;
219 3 default:break;
220 3 }
221 2 }
222 1 while(add==0);
223 1 }
224
225 void key_dec()
226 {
227 1 if(dec==0)
228 1 {
229 2 delay(10);
230 2 switch(n)
231 2 {
232 3 //case 0:break;
233 3 case 1:hour--; if(hour<=0) hour=23;break;
234 3 case 2:minite--;if(minite<=0)minite=59;break;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -