📄 lcd_tem_clock.lst
字号:
C51 COMPILER V8.05a LCD_TEM_CLOCK 07/31/2008 11:16:13 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE LCD_TEM_CLOCK
OBJECT MODULE PLACED IN LCD_TEM_CLOCK.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE LCD_TEM_CLOCK.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include <DS18B20.H>
3 #include <DS1302.H>
4 #include <LCD12864.H>
5
6 unsigned char j[8];
7 sbit KEY1=P3^2;
8 sbit KEY2=P3^3;
9 sbit KEY3=P3^4;
10 sbit LED1=P3^5;
11 sbit LED2=P3^6;
12 sbit LED3=P3^7;
13
14 uchar time0_count; //time0计数器
15
16 void delay10(void)
17 {
18 1 unsigned char i,j;
19 1 for(i=0;i<255;i++)
20 1 for(j=0;j<200;j++);
21 1 }
22
23 unsigned char conver(unsigned char a,unsigned char b,unsigned char c)
24 {
25 1
26 1 if((a&0x0f)==0x0a) a=a+6;
27 1 if(a==b) a=c;
28 1 return a;
29 1 }
30
31
32
33
34
35 main()
36 {
37 1 bit flag_2=1;
38 1 bit flag_3=1;
39 1 bit flag_4=1;
40 1 int i;
41 1 char a;
42 1 unsigned char choose=0x01;
43 1
44 1 InitLCD(); //初始化LCD12864
45 1 for(i=0;i<9;i++)
46 1 {
47 2 ShowNumber(6,i*8+32,i+14);
48 2 }
49 1 Show32x32(0,0,0);
50 1 ShowChina(4,0,7);
51 1 ShowChina(4,16,8);
52 1 ShowChina(4,32,9);
53 1 ShowChina(4,48,10);
54 1 ShowNumber(4,64,10); //显示温度高位
55 1
C51 COMPILER V8.05a LCD_TEM_CLOCK 07/31/2008 11:16:13 PAGE 2
56 1 read_serial(j); //读取DS1302的时间
57 1
58 1
59 1 ShowNumber(2,32,j[2]>>4&0x03);
60 1 ShowNumber(2,40, j[2]&0x0f);
61 1 ShowChina(2,48,3);
62 1 ShowNumber(2,64,j[1]>>4&0x07);
63 1 ShowNumber(2,72, j[1]&0x0f);
64 1 ShowChina(2,80,4);
65 1 ShowNumber(2,96,j[0]>>4&0x07);
66 1 ShowNumber(2,104, j[0]&0x0f);
67 1 ShowChina(2,112,5);
68 1
69 1
70 1 ShowNumber(0,32,j[6]>>4&0x0f);
71 1 ShowNumber(0,40, j[6]&0x0f);
72 1 ShowChina(0,48,0);
73 1 ShowNumber(0,64,j[4]>>4&0x01);
74 1 ShowNumber(0,72, j[4]&0x0f);
75 1 ShowChina(0,80,1);
76 1 ShowNumber(0,96,j[3]>>4&0x03);
77 1 ShowNumber(0,104, j[3]&0x0f);
78 1 ShowChina(0,112,2);
79 1
80 1 ShowChina(4,104,6);
81 1 ShowNumber(4,120,j[5]-1&0x07);
82 1
83 1
84 1
85 1
86 1
87 1 while(1)
88 1 {
89 2 //send_char_com(0x31);
90 2
91 2 if(flag_2==1)
92 2 read_serial(j); //读取DS1302的时间
93 2 else
94 2 write_date_time(j);
95 2
96 2
97 2
98 2 a=Read_Temperature(); //读取DS18B20的温度
99 2 if(a<0) //处理温度正负
100 2 {
101 3 a = (-1)*a; // 取补
102 3 ShowNumber(4,72,11); //显示温度正负
103 3 }
104 2 else
105 2 {
106 3 ShowNumber(4,72,12); //显示温度正负
107 3 }
108 2
109 2 ShowNumber(4,80,a/100); //显示温度高位
110 2
111 2 ShowNumber(4,88,a/10%10); //显示温度中位
112 2
113 2 ShowNumber(4,96,a%10); //显示温度低位
114 2
115 2 LED3=1;LED2=0;LED1=1;
116 2 if(a>40){LED3=0;LED2=1;LED1=1;}
117 2 if(a<30){LED3=1;LED2=1;LED1=0;}
C51 COMPILER V8.05a LCD_TEM_CLOCK 07/31/2008 11:16:13 PAGE 3
118 2
119 2
120 2
121 2
122 2 if(KEY1==0) //按键1--处理设定时间和返回
123 2 {
124 3 delay10();
125 3 if(KEY1==1)
126 3 {
127 4 delay10();
128 4 flag_2=~flag_2;
129 4 }
130 3 }
131 2
132 2 if(KEY2==0) //按键2--处理选择设定时间的项目
133 2 {
134 3 delay10();
135 3 if(KEY2==1)
136 3 {
137 4 delay10();
138 4 choose++;
139 4 if(choose==8)
140 4 choose=0x01;
141 4 }
142 3 }
143 2
144 2
145 2 if(KEY3==0) //按键3--处理设定时间和返回
146 2 { delay10();
147 3 if(KEY3==1)
148 3 {
149 4 delay10();
150 4 switch(choose)
151 4 {
152 5 case 1: j[6]++; j[6]=conver(j[6],0xa0,0x00);break;//年
153 5 case 2: j[5]++; j[5]=conver(j[5],0x07,0x00);break;//周
154 5 case 3: j[4]++; j[4]=conver(j[4],0x13,0x01);break;//月
155 5 case 4: j[3]++; j[3]=conver(j[3],0x32,0x01);break;//日
156 5 case 5: j[2]++; j[2]=conver(j[2],0x24,0x00);break;//时
157 5 case 6: j[1]++; j[1]=conver(j[1],0x60,0x00);break;//分
158 5 case 7: j[0]++; j[0]=conver(j[0],0x60,0x00);break;//秒
159 5 }
160 4 }
161 3 }
162 2
163 2 if(flag_2==1)
164 2 read_serial(j); //读取DS1302的时间
165 2 else
166 2 write_date_time(j);
167 2
168 2 ShowNumber(2,32,j[2]>>4&0x03);
169 2 ShowNumber(2,40, j[2]&0x0f);
170 2 ShowChina(2,48,3);
171 2 ShowNumber(2,64,j[1]>>4&0x07);
172 2 ShowNumber(2,72, j[1]&0x0f);
173 2 ShowChina(2,80,4);
174 2 ShowNumber(2,96,j[0]>>4&0x07);
175 2 ShowNumber(2,104, j[0]&0x0f);
176 2 ShowChina(2,112,5);
177 2
178 2
179 2 ShowNumber(0,32,j[6]>>4&0x0f);
C51 COMPILER V8.05a LCD_TEM_CLOCK 07/31/2008 11:16:13 PAGE 4
180 2 ShowNumber(0,40, j[6]&0x0f);
181 2 ShowChina(0,48,0);
182 2 ShowNumber(0,64,j[4]>>4&0x01);
183 2 ShowNumber(0,72, j[4]&0x0f);
184 2 ShowChina(0,80,1);
185 2 ShowNumber(0,96,j[3]>>4&0x03);
186 2 ShowNumber(0,104, j[3]&0x0f);
187 2 ShowChina(0,112,2);
188 2
189 2 ShowChina(4,104,6);
190 2 ShowNumber(4,120,j[5]-1&0x07);
191 2 }
192 1 }
193
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2163 ----
CONSTANT SIZE = 912 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 41
IDATA SIZE = ---- ----
BIT SIZE = ---- 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -