📄 1.lst
字号:
C51 COMPILER V8.01 1 05/17/2008 12:11:54 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE 1
OBJECT MODULE PLACED IN 1.OBJ
COMPILER INVOKED BY: C:\Program Files\keil3\C51\BIN\C51.EXE 1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG52.H>
2 #include <ABSACC.H>
3 #define uchar unsigned char
4 #define uint unsigned int
5 /*******12864液晶配置************/
6 sbit RS=P2^4;
7 sbit RW=P2^5;
8 sbit E=P2^6;
9 sbit RST=P2^3;
10 /*******1302配置*************/
11 sbit T_RST=P1^2;
12 sbit T_IO=P1^1;
13 sbit T_SCLK=P1^0;
14 uchar bdata AB;
15 uchar bdata AD;
16 sbit AB0=AB^0;
17 sbit AB7=AB^7;
18 sbit AD0=AD^0;
19 sbit AD7=AD^7;
20 /************************
21 定义全局变量
22 *************************/
23 sbit key1=P3^0;
24 sbit key2=P3^1;
25 sbit key3=P3^2;
26 sbit key4=P3^3;
27 sbit beep=P3^0;
28
29 uchar key; //按键值
30 uchar set=0; // 功能键值
31 /**************************
32 定义1302时间数据部分
33 ***************************/ //秒 分 时 日 月 星期 年
34 //用于保存从1302中取得的时间数据
35 uchar data time[7]={0x00,0x50,0x18,0x23,0x04,0x03,0x08};
36 uchar code shuzi[15]={0x30,0x31,0x32,0x33,0x34,0x35,
37 0x36,0x37,0x38,0x39,0x20,0x2e,
38 0x2b,0x2d,0x3a}; //空格 . + - :
39 uchar data alarm[2]; //用于存储闹钟时间: 时 分
40 /********************************
41 模块数据定义部分
42 ********************************/
43 uchar code Address[]=
44 {
45 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, /*第一行汉字位置*/
46 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, /*第二行汉字位置*/
47 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, /*第三行汉字位置*/
48 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, /*第四行汉字位置*/
49 };
50
51 uchar code Chinese01[]={"日期:"};
52 uchar code Chinese02[]={"时间:"};
53 uchar code Chinese03[]={"星期:"};
54 uchar code Chinese04[]={"时钟"};
55 uchar code Chinese05[]={"调时"};
C51 COMPILER V8.01 1 05/17/2008 12:11:54 PAGE 2
56 uchar code Chinese06[]={"闹钟"};
57 /************ 延时n*1ms ******************/
58 void delay(uint k)
59 { uint i,j;
60 1 for(i=0;i<k;i++)
61 1 { for(j=0;j<0x60;j++)
62 2 {;}
63 2 }
64 1 }
65
66 /******数据转换***********
67 BCD转换为十进制
68 **************************/
69 turnbcd(unsigned char bcd)
70 {
71 1 unsigned char n_n;
72 1 n_n=(bcd&0xf0)/16*10+(bcd&0x0f);
73 1 return(n_n);
74 1 }
75
76 /*--------------------------------------RT-12864 --------------------------------------------*/
77 void write_com(unsigned char com_byte) //写命令到LCD 0000 RST E RW RS
78 { // 1 1 0 0
79 1 delay(1);
80 1 RS=0; RW=0;
81 1 E=1; RST=1;
82 1 P0=com_byte;
83 1 E=0;
84 1 }
85 void write_data(unsigned char dat_byte) //写数据到LCD 0000 // 1 1 0 1
86 {
87 1 delay(1);
88 1 RS=1; RW=0;
89 1 E=1; RST=1;
90 1 P0=dat_byte;
91 1 E=0;
92 1 }
93 /**********************
94 写汉字功能a地址和要写
95 第c个数字就可以连续写完 b个数
96 ***********************/
97 void Inhanzi(uchar *str,uchar a,uchar b,uchar c)
98 {
99 1 delay(1);
100 1 write_com(0x30);
101 1 while(c)
102 1 {
103 2 delay(1);
104 2 write_com(Address[a]);
105 2 write_data(str[b]);
106 2 b++;
107 2 write_data(str[b]);
108 2 b++;
109 2 a++;
110 2 c--;
111 2 }
112 1 }
113
114 /***********************
115 a写数据的地址
116 b 、c为要写的数据数字(0-9)
117 显示0-9功能
C51 COMPILER V8.01 1 05/17/2008 12:11:54 PAGE 3
118 ***********************/
119 void xianshi(unsigned char a,unsigned char b,unsigned char c)
120 {
121 1 write_com(Address[a]);
122 1 write_data(shuzi[b]);
123 1 write_data(shuzi[c]);
124 1 }
125
126 /*----------------------------------------------------1302程序--------------------------------------------
-----*/
127 /*********************
128 写数据 低位开始
129 **********************/
130 void inputbyte(unsigned char a_a)
131 {
132 1 unsigned char b_b;
133 1 AB=a_a;
134 1 for(b_b=8; b_b>0; b_b--)
135 1 {
136 2 T_IO = AB0;
137 2 T_SCLK = 1;
138 2 T_SCLK = 0;
139 2 AB = AB >> 1;
140 2 }
141 1 }
142 /********************
143 读取字节有返回值
144 *********************/
145 outputbyte()
146 {
147 1 unsigned char b_b;
148 1 for(b_b=7; b_b>0; b_b--)
149 1 {
150 2 AD7=T_IO;
151 2 T_SCLK = 1;
152 2 T_SCLK = 0;
153 2 AD = AD>>1;
154 2 }
155 1 return(AD);
156 1 }
157 /*********************
158 往1302里写数据参数分别为
159 地址 和 数据
160 **********************/
161 void w1302(unsigned char add,unsigned char dat)
162 {
163 1 T_RST=0;
164 1 T_SCLK=0;
165 1 T_RST=1;
166 1 inputbyte(add);
167 1 inputbyte(dat);
168 1 T_SCLK = 1;
169 1 T_RST = 0;
170 1 }
171 /**********************
172 读取1302某地址的数据
173 返回值为该地址的数据
174 **********************/
175 unsigned char r1302(unsigned char add)
176 {
177 1 unsigned char ucdata;
178 1 T_RST=0;
C51 COMPILER V8.01 1 05/17/2008 12:11:54 PAGE 4
179 1 T_SCLK=0;
180 1 T_RST=1;
181 1 inputbyte(add);
182 1 ucdata = outputbyte();
183 1 T_SCLK = 1;
184 1 T_RST = 0;
185 1 return(ucdata);
186 1 }
187 /********************
188 设置初始时间 秒 分 时
189 日 月 星期 年
190 **********************/
191 void set1302()
192 {
193 1 unsigned char q_q=0;
194 1 unsigned char b_b;
195 1 unsigned char add = 0x80;
196 1 w1302(0x8e,0x00);
197 1 for(b_b =7; b_b>0; b_b--)
198 1 {
199 2 w1302(add,time[q_q]);
200 2 add +=2;
201 2 q_q++;
202 2 }
203 1 }
204 /********************
205 保存当前时间格式为:
206 秒 分 时 日 月 星期 年
207 ********************/
208 void get1302()
209 {
210 1 unsigned char b_b;
211 1 unsigned char ducaddr = 0x81;//读数据 连续读数 放到数组里
212 1 for (b_b=0; b_b<7; b_b++)
213 1 {
214 2 time[b_b]=turnbcd(r1302(ducaddr)); //格式为: 秒 分 时 日 月 星期 年
215 2 ducaddr += 2;
216 2 }
217 1 }
218 /*-------------------------------------------------调时间部分---------------------------------------------
-----*/
219
220 void timexianshi(void) //显示时间
221 {
222 1 get1302();
223 1 xianshi(11,time[6]/10,time[6]%10); //年
224 1 xianshi(12,13,time[4]/10); //月
225 1 xianshi(13,time[4]%10,13); //月
226 1 xianshi(14,time[3]/10,time[3]%10); //日
227 1 xianshi(19,time[2]/10,time[2]%10);//时
228 1 xianshi(20,14,time[1]/10); //分
229 1 xianshi(21,time[1]%10,14); //分
230 1 xianshi(22,time[0]/10,time[0]%10);//秒
231 1 xianshi(27,10,time[5]);
232 1 }
233 /******************************
234 调时间函数
235 *******************************/
236 void tiaoshi_year(void) //对年的调整
237 {
238 1 Inhanzi(Chinese05,3,0,2); //调时界面
239 1 Inhanzi(Chinese01,8,0,3);
C51 COMPILER V8.01 1 05/17/2008 12:11:54 PAGE 5
240 1 Inhanzi(Chinese02,16,0,3);
241 1 Inhanzi(Chinese03,24,0,3);
242 1 Inhanzi(Chinese03,24,0,3);
243 1 xianshi(11,time[6]/10,time[6]%10);
244 1 key=time[6];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -