📄 clock12-01_1.lst
字号:
C51 COMPILER V8.02 CLOCK12_01_1 12/01/2008 19:14:39 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE CLOCK12_01_1
OBJECT MODULE PLACED IN clock12-01_1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE clock12-01_1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 以写内容:初始化液晶后读时钟将时钟写入液晶,按键中断中setupint=1时读取
3 年数据然后写向0x80+0x40;读取液晶值已经完成。08-11-29
4
5
6 */
7 #include <reg52.h>
8 #define uchar unsigned char
9 #define uint unsigned int
10 sbit rs=P1^0;
11 sbit lcde=P1^1;
12 sbit lcdrw=P1^6;
13 sbit dscs=P1^2;
14 sbit dsas=P1^3;
15 sbit dsrw=P1^4;
16 sbit dsds=P1^5;
17 sbit complete=P3^4;
18 sbit cancle=P3^5;
19 sbit setweek=P3^6;
20 sbit up=P3^0;
21 sbit down=P3^1;
22 sbit DQ=P3^7;//ds18b20与单片机连接口
23 uchar code nyr[]=" 20 - -";
24 uchar code sfm[]=" : : . C";
25 uchar code addnyr[]={0x83,0x86,0x89,0x8c,0xc0,0xc3,0xc6};
26 uchar code addc[]={0x09,0x08,0x07,0x06,0x04,0x02,0x00};
27 uchar code week[]="SunMonTueWedThuFriSta";
28 uchar data clockdata[5];
29 uchar setupint,readc;
30 uchar data disdata[5];
31 uint tvalue;//温度值
32 uchar tflag;//温度正负标志
33 void delay(uchar x)
34 {
35 1 uchar j,i;
36 1 for(i=x;i>0;i--)
37 1 for(j=110;j>0;j--);
38 1 }
39 /***********************液晶程序*******************************/
40 void write_com(uchar command)
41 {
42 1 lcdrw=0;
43 1 rs=0;
44 1 lcde=0;
45 1 P0=command;
46 1 delay(5);
47 1 lcde=1;
48 1 delay(5);
49 1 lcde=0;
50 1 }
51 uchar read_date(uchar radd)
52 {
53 1 uchar rclock,rclock1,rclock2;
54 1 write_com(radd);
55 1 rs=1;
C51 COMPILER V8.02 CLOCK12_01_1 12/01/2008 19:14:39 PAGE 2
56 1 lcdrw=1;
57 1 lcde=1;
58 1 P0=0xff;
59 1 delay(5);
60 1 rclock1=P0;
61 1 delay(5);
62 1
63 1 write_com(radd+1);
64 1 rs=1;
65 1 lcdrw=1;
66 1 lcde=1;
67 1 P0=0xff;
68 1 delay(5);
69 1 rclock2=P0;
70 1 delay(5);
71 1 rclock=(rclock1-0x30)*10+(rclock2-0x30);
72 1 return rclock;
73 1 }
74 void write_date(uchar date)
75 {
76 1 lcdrw=0;
77 1 rs=1;
78 1 lcde=0;
79 1 P0=date;
80 1 delay(5);
81 1 lcde=1;
82 1 delay(5);
83 1 lcde=0;
84 1 }
85 void init()
86 {
87 1 uchar i;
88 1 EA=1;
89 1 EX0=1;
90 1 IT0=1;
91 1 write_com(0x38);
92 1 write_com(0x08);
93 1 write_com(0x01);
94 1 write_com(0x06);
95 1 write_com(0x0c);
96 1 write_com(0x80);
97 1 for(i=0;i<9;i++)
98 1 {
99 2 write_date(nyr[i]);
100 2 }
101 1 write_com(0x80+0x40);
102 1 for(i=0;i<16;i++)
103 1 {
104 2 write_date(sfm[i]);
105 2 }
106 1 }
107 uchar read_ds(uchar add)
108 {
109 1 uchar dsdate;
110 1 dsas=1;
111 1 dsds=1;
112 1 dsrw=1;
113 1 dscs=0;
114 1 P2=add;
115 1 dsas=0;
116 1 dsds=0;
117 1 P2=0xff;
C51 COMPILER V8.02 CLOCK12_01_1 12/01/2008 19:14:39 PAGE 3
118 1 dsdate=P2;
119 1 dsds=1;
120 1 dsas=1;
121 1 dscs=1;
122 1 return dsdate;
123 1 }
124 void wc_lcd()
125 {
126 1 uchar temp,si,ge,i,j;
127 1 for(i=0;i<7;i++)
128 1 {
129 2 temp=read_ds(addc[i]);
130 2 si=temp/10;
131 2 ge=temp%10;
132 2 write_com(addnyr[i]);
133 2 if(i==3)
134 2 {
135 3 for(j=0;j<3;j++)
136 3 {
137 4 write_date(week[ge*3+j]);
138 4 }
139 3 }
140 2 else
141 2 {
142 3 write_date(0x30+si);
143 3 write_date(0x30+ge);
144 3 }
145 2 }
146 1
147 1 }
148 void setclock_num(uchar cadd,uchar num)
149 {
150 1 uchar r1,r2;
151 1 r1=num/10;
152 1 r2=num%10;
153 1 write_com(cadd);
154 1 write_date(0x30+r1);
155 1 write_date(0x30+r2);
156 1 write_com(cadd+1);
157 1 }
158 void write_clock()
159 {
160 1 uchar i,j;
161 1 j=0;
162 1 /////////////
163 1 dscs=0;
164 1 dsas=1;
165 1 dsds=1;
166 1 dsrw=1;
167 1 P2=0x0b;
168 1 dsas=0;
169 1 dsrw=0;
170 1 P2=0x82;
171 1 dsrw=1;
172 1 dsas=1;
173 1 dscs=1;
174 1
175 1 dscs=0;
176 1 dsas=1;
177 1 dsds=1;
178 1 dsrw=1;
179 1 P2=0x0b;
C51 COMPILER V8.02 CLOCK12_01_1 12/01/2008 19:14:39 PAGE 4
180 1 dsas=0;
181 1 dsrw=0;
182 1 P2=0x02;
183 1 dsrw=1;
184 1 dsas=1;
185 1 dscs=1;
186 1 /////////////
187 1 // for(i=0;i<6;i++)
188 1 // {
189 1 // dsas=1;
190 1 // dsds=1;
191 1 // dsrw=1;
192 1 // dscs=0;
193 1 // P2=addc[j];
194 1 // dsas=0;
195 1 // dsrw=0;
196 1 // P2=clockdata[i];
197 1 // dsrw=1;
198 1 // dsas=1;
199 1 // dscs=1;
200 1 // j++;
201 1 // if(j==3)j=4;
202 1 // }
203 1 write_com(0x0c);//关闭光标
204 1 setupint=0;
205 1 }
*** WARNING C280 IN LINE 160 OF CLOCK12-01_1.C: 'i': unreferenced local variable
206 void write_week()
207 {
208 1 dsas=1;
209 1 dsds=1;
210 1 dsrw=1;
211 1 dscs=0;
212 1 P2=0x0b;
213 1 dsas=0;
214 1 dsrw=0;
215 1 P2=0x20;
216 1 dsrw=1;
217 1 dsas=1;
218 1 dscs=1;
219 1 }
220 void setclock()
221 {
222 1 write_com(0x0d);
223 1 switch(setupint)
224 1 {
225 2 case 1:
226 2 clockdata[0]=read_date(addnyr[0]);
227 2 while(setupint==1)
228 2 {
229 3 if(up==0)
230 3 {
231 4 delay(50);
232 4 clockdata[0]++;
233 4 setclock_num(addnyr[0],clockdata[0]);
234 4 while(up==0);
235 4 delay(50);
236 4 }
237 3 if(down==0)
238 3 {
239 4 delay(50);
240 4 clockdata[0]--;
C51 COMPILER V8.02 CLOCK12_01_1 12/01/2008 19:14:39 PAGE 5
241 4 setclock_num(addnyr[0],clockdata[0]);
242 4 while(down==0);
243 4 delay(50);
244 4 }
245 3 if(cancle==0)setupint=0;
246 3 if(complete==0)
247 3 {write_clock();while(complete==0);}
248 3 }
249 2 break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -