📄 yejin.lst
字号:
C51 COMPILER V7.50 YEJIN 08/26/2008 11:19:59 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE YEJIN
OBJECT MODULE PLACED IN yejin.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE yejin.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #define uint unsigned int
3 #define uchar unsigned char
4 sbit dula=P2^6;
5 sbit wela=P2^7;
6 sbit rs=P3^5;
7 sbit lcden=P3^4;
8 sbit rd=P3^7; //把rd口置0,扫描P3^0,1,2,3,同独立键盘功能
9 sbit s1=P3^0; //功能键
10 sbit s2=P3^1; //调日期,时间增加
11 sbit s3=P3^2; //调日期,时间减少
12 uchar code table[]=" 2000-01-01"; //初始化液晶显示
13 uchar code table1[]=" 00:00:00";
14 uchar count,s1num;
15 char second,minute,hour,day,month,year;
16 //uchar code dis_week[]={"Sun,Mon,Tue,Wed,Thu,Fri,Sat"};
17 //uchar code para_month[13]={0,0,3,3,6,1,4,6,2,5,0,3,5}; //星期月参变数
18
19 //------------延时---------------------
20 void delay(uint z)
21 {
22 1 uint x,y;
23 1 for(x=z;x>0;x--)
24 1 for(y=110;y>0;y--);
25 1 }
26
27 //----------写命令--------------------
28 void write_com(uchar com)
29 {
30 1 rs=0;
31 1 lcden=0;
32 1 P0=com;
33 1 delay(5);
34 1 lcden=1;
35 1 delay(5);
36 1 lcden=0;
37 1 }
38
39 //----------写数据--------------------
40 void write_date(uchar date)
41 {
42 1 rs=1;
43 1 lcden=0;
44 1 P0=date;
45 1 delay(5);
46 1 lcden=1;
47 1 delay(5);
48 1 lcden=0;
49 1 }
50
51 //-------------初始化----------------
52 void init()
53 {
54 1 uchar num;
55 1 dula=0;
C51 COMPILER V7.50 YEJIN 08/26/2008 11:19:59 PAGE 2
56 1 wela=0;
57 1 lcden=0;
58 1 write_com(0x38);
59 1 write_com(0x0c);
60 1 write_com(0x06);
61 1 write_com(0x01);
62 1 write_com(0x80);
63 1 for(num=0;num<13;num++) //让液晶显示日期
64 1 {
65 2 write_date(table[num]);
66 2 delay(5);
67 2 }
68 1 write_com(0x80+0x40);
69 1 for(num=0;num<12;num++) //让液晶显示时间
70 1 {
71 2 write_date(table1[num]);
72 2 delay(5);
73 2 }
74 1 TMOD=0x01; //定时器中断初始化
75 1 TH0=(65536-50000)/256;
76 1 TL0=(65536-50000)%256;
77 1 EA=1;
78 1 ET0=1;
79 1 TR0=1;
80 1 }
81
82 //-------写年月日---------------
83 void write_lyr(uchar add,uchar date)
84 {
85 1 uchar shi,ge;
86 1 shi=date/10;
87 1 ge=date%10;
88 1 write_com(0x80+add);
89 1 write_date(0x30+shi);
90 1 write_date(0x30+ge);
91 1 }
92
93 //--------写时分秒----------------------
94 void write_sfm(uchar add,uchar date)
95 {
96 1 uchar shi,ge;
97 1 shi=date/10;
98 1 ge=date%10;
99 1 write_com(0x80+0x40+add);
100 1 write_date(0x30+shi);
101 1 write_date(0x30+ge);
102 1 }
103
104 //---------该年是否是闰年--------------------------
105 bit leap_year()
106 {
107 1 int leap;
108 1 if((year%4==0&&year%100!=0)||year%400==0)
109 1 leap=1;
110 1 else
111 1 leap=0;
112 1 return leap;
113 1 }
114
115 //星期的自动运算和处理
116 /*uchar week_proc()
117 { uchar num_leap;
C51 COMPILER V7.50 YEJIN 08/26/2008 11:19:59 PAGE 3
118 uchar b;
119 num_leap=year/4-year/100+year/400;//自00年起到year所经历的闰年次数
120 if( leap_year()&& month<=2 ) //既是闰年且是1月和2月
121 b=5;
122 else
123 b=6;
124 week=(year+para_month[month]+day+num_leap+b)%7;//计算对应的星期
125 return week;
126 }*/
127
128 //-------写星期-----------------------------
129 /*void write_week(week)
130 {
131 switch(week)
132 {
133 case 1:write_com(0x80+12);write_date(dis_week[0]);break;
134 case 2:write_com(0x80+12);write_date(dis_week[1]);break;
135 case 3:write_com(0x80+12);write_date(dis_week[2]);break;
136 case 4:write_com(0x80+12);write_date(dis_week[3]);break;
137 case 5:write_com(0x80+12);write_date(dis_week[4]);break;
138 case 6:write_com(0x80+12);write_date(dis_week[5]);break;
139 case 7:write_com(0x80+12);write_date(dis_week[6]);break;
140 default:write_com(0x80+12);write_date();break;
141 }
142 }*/
143
144 //----------键盘扫描--------------------
145 void keyscan()
146 {
147 1 rd=0; //把rd口置0,准备扫描
148 1 if(s1==0) //第一个键是否按下
149 1 {
150 2 delay(5);
151 2 if(s1==0)
152 2 {
153 3 while(!s1);
154 3 s1num++;
155 3 if(s1num==1) //第一个键被按一次
156 3 {
157 4 TR0=0;
158 4 write_com(0x80+0x40+10);
159 4 write_com(0x0f);
160 4 }
161 3 if(s1num==2)
162 3 {
163 4 write_com(0x80+0x40+7);
164 4 }
165 3 if(s1num==3)
166 3 {
167 4 write_com(0x80+0x40+4);
168 4 }
169 3 if(s1num==4)
170 3 {
171 4 write_com(0x80+11);
172 4 }
173 3 if(s1num==5)
174 3 {
175 4 write_com(0x80+8);
176 4 }
177 3 if(s1num==6)
178 3 {
179 4 write_com(0x80+5);
C51 COMPILER V7.50 YEJIN 08/26/2008 11:19:59 PAGE 4
180 4 }
181 3 /*if(s1num==7)
182 3 {
183 3 write_com(0x80+12);
184 3 }*/
185 3 if(s1num==7)
186 3 {
187 4 s1num=0;
188 4 write_com(0x0c);
189 4 TR0=1;
190 4 }
191 3 }
192 2 }
193 1 if(s1num!=0) //如果功能键被按下
194 1 {
195 2 if(s2==0) //第二个按下
196 2 {
197 3 delay(5);
198 3 if(s2==0)
199 3 {
200 4 while(!s2);
201 4 if(s1num==1) //第二个键被按一次,秒钟加一
202 4 {
203 5 second++;
204 5 if(second==60)
205 5 second=0;
206 5 write_sfm(10,second);
207 5 write_com(0x80+0x40+10);
208 5 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -