📄 1602时钟.lst
字号:
C51 COMPILER V7.06 1602蔩钟 12/29/2008 20:43:40 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 1602蔩钟
OBJECT MODULE PLACED IN 1602时钟.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1602时钟.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg52.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 uchar code table[]="ME-400-A clock";
5 uchar code table1[]=" --:--:-- ";
6 uchar clk_time[3]; //秒,分,时寄存器初始值
7 sbit T_RST=P2^2;//ds1302-5
8 sbit T_IO=P2^3;//ds1302-6
9 sbit T_CLK=P2^4;//ds1302-7
10 sbit en=P2^5;
11 sbit rw=P2^6;
12 sbit rs=P2^7;
13 sbit led=P1^0;
14 sbit dula=P1^1;
15 sbit wela=P1^2;
16 sbit ACC0=ACC^0;
17 sbit ACC7=ACC^7;
18 sbit up=P3^3;
19 sbit down=P3^4;
20 sbit set=P3^2;
21 sbit did=P1^4;
22 uchar num,clock_ss,clock_sg,clock_fs,clock_fg,clock_ms,clock_mg,b;
23 char hour,mie,sei,c;
24 /******************DS1302:写入操作(上升沿)*********************/
25 void write_byte(uchar da)
26 {
27 1 uchar i;
28 1 ACC=da;
29 1 for(i=8;i>0;i--)
30 1 {
31 2 T_IO=ACC0;
32 2 T_CLK=0;
33 2 T_CLK=1;
34 2 ACC=ACC>>1;
35 2 }
36 1 }
37
38 /******************DS1302:读取操作(下降沿)*****************/
39 uchar read_byte(void)
40 {
41 1 uchar i;
42 1 for(i=0;i<8;i++)
43 1 {
44 2 ACC=ACC>>1;
45 2 T_CLK = 1;
46 2 T_CLK = 0;
47 2 ACC7 = T_IO;
48 2 }
49 1 return(ACC);
50 1
51 1 }
52
53 /******************DS1302:写入数据(先送地址,再写数据)***************************/
54 void write_1302(uchar addr,uchar da)
55 {
C51 COMPILER V7.06 1602蔩钟 12/29/2008 20:43:40 PAGE 2
56 1 T_RST=0; //停止工作
57 1 T_CLK=0;
58 1 T_RST=1; //重新工作
59 1 write_byte(addr); //写入地址
60 1
61 1 write_byte(da);
62 1 T_RST=0;
63 1 T_CLK=1;
64 1 }
65
66 /******************DS1302:读取数据(先送地址,再读数据)**************************/
67 uchar read_1302(uchar addr)
68 {
69 1 uchar temp;
70 1 T_RST=0; //停止工作
71 1 T_CLK=0;
72 1 T_RST=1; //重新工作
73 1 write_byte(addr); //写入地址
74 1 temp=read_byte();
75 1 T_RST=0;
76 1 T_CLK=1; //停止工作
77 1 return(temp);
78 1 }
79
80
81
82
83
84 /***********************延时程序=a*1ms**************************************/
85 void delay(uint z)
86 {
87 1 uint x,y;
88 1 for(x=z;x>0;x--)
89 1 for(y=110;y>0;y--);
90 1 }
91 void write_com(uchar com)
92 {
93 1 led=1;
94 1 wela=1;
95 1 P0=0xff;
96 1 delay(1);
97 1 led=0;
98 1 wela=0;
99 1 P0=0x00;
100 1 dula=1;
101 1 delay(1);
102 1 dula=0;
103 1 rs=0;
104 1 P0=com;
105 1 delay(5);
106 1 en=1;
107 1 delay(5);
108 1 en=0;
109 1 }
110
111 void write_data(uchar date)
112 {
113 1 led=1;
114 1 wela=1;
115 1 P0=0xff;
116 1 delay(1);
117 1 led=0;
C51 COMPILER V7.06 1602蔩钟 12/29/2008 20:43:40 PAGE 3
118 1 wela=0;
119 1 P0=0x00;
120 1 dula=1;
121 1 delay(1);
122 1 dula=0;
123 1 rs=1;
124 1 P0=date;
125 1 delay(5);
126 1 en=1;
127 1 delay(5);
128 1 en=0;
129 1 }
130 void init()
131 {
132 1 b=0;
133 1 P0=0xff;
134 1 delay(5);
135 1 led=1;
136 1 delay(5);
137 1 P0=0xff;
138 1 led=0;
139 1 dula=0;
140 1 wela=1;
141 1 delay(5);
142 1 wela=0;//关ME-400开发板数码管
143 1 rw=0;
144 1 en=0;
145 1 write_com(0x38);//设置液晶
146 1 write_com(0x0c);//设光标等
147 1 write_com(0x06);//写一个字符地址指针加1且光标加1
148 1 write_com(0x01);//清屏
149 1 write_com(0x80);//设置s地址指针
150 1 }
151 void display(uchar add,date)
152 {
153 1 if(b==0)
154 1 {
155 2 clock_ms=clk_time[0]/ 16; clock_mg=clk_time[0]%16;
156 2 led=0;
157 2 clock_fs=clk_time[1]/ 16; clock_fg=clk_time[1]%16;
158 2 led=0;
159 2 clock_ss=clk_time[2]/ 16; clock_sg=clk_time[2]%16;
160 2 write_com(0x80+0x44);
161 2 write_data(0x30+clock_ss);
162 2 write_com(0x80+0x45);
163 2 write_data(0x30+clock_sg);
164 2 write_com(0x80+0x47);
165 2 write_data(0x30+clock_fs);
166 2 write_com(0x80+0x48);
167 2 write_data(0x30+clock_fg);
168 2 write_com(0x80+0x4a);
169 2 write_data(0x30+clock_ms);
170 2 write_com(0x80+0x4b);
171 2 write_data(0x30+clock_mg);
172 2
173 2 }
174 1 if(b!=0)
175 1 {
176 2 clock_ss=date/ 10; clock_sg=date%10;
177 2 write_com(0x80+0x40+add);
178 2 write_data(0x30+clock_ss);
179 2 write_data(0x30+clock_sg);
C51 COMPILER V7.06 1602蔩钟 12/29/2008 20:43:40 PAGE 4
180 2
181 2
182 2 }
183 1
184 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -