📄 万年日历.lst
字号:
C51 COMPILER V7.06 万年日繽 07/15/2012 20:15:16 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 万年日繽
OBJECT MODULE PLACED IN .\obj\万年日历.obj
COMPILER INVOKED BY: D:\单片机相关软件\51单片机软件大全\Keil uVision2 软件\安装\C51\BIN\C51.EXE 万年日历.c BROWSE DEBUG
-OBJECTEXTEND OBJECT(.\obj\万年日历.obj)
stmt level source
1 #include"init.h"
2 #include"delay.h"
3 #include"12864.h"
4 #include"ds1302.h"
5 #include"ds18b20.h"
6
7 uchar code weektable[14]="一二叁四五六日";
8
9 uchar code table1[]="2012年12月31日";
10
11 uchar code table2[]="23时59分45秒";
12
13 uchar code table3[]="星期:叁 ";
14
15 uchar code table4[]="温度:+25.8 ℃";
16
17 /**********************************************************
18
19 //BCD编码转换成十进制
20
21 **********************************************************/
22 uchar transform0(uchar time)
23 {
24 1 return((time/16)*10+(time%16));
25 1 }
26 /**********************************************************
27
28 ds1302时钟读取的值分离后写入数组中
29
30 **********************************************************/
31 void time_in()
32 {
33 1 clock_reda();
34 1
35 1 clock[0]=transform0(year)/10; //年十位
36 1 clock[1]=transform0(year)%10; //年个位
37 1
38 1 clock[2]=transform0(mouth)/10;//月个位
39 1 clock[3]=transform0(mouth)%10;//月个位
40 1
41 1 clock[4]=transform0(day)/10; //日个位
42 1 clock[5]=transform0(day)%10; //日个位
43 1
44 1 clock[6]=weektable[(week-1)*2];//星期位
45 1 clock[7]=weektable[(week)*2-1];
46 1
47 1 clock[8]=transform0(hour)/10; //时个位
48 1 clock[9]=transform0(hour)%10; //时个位
49 1
50 1 clock[10]=transform0(minute)/10;//分个位
51 1 clock[11]=transform0(minute)%10;//分个位
52 1
53 1 clock[12]=transform0(sec)/10; //秒个位
54 1 clock[13]=transform0(sec)%10; //秒个位
C51 COMPILER V7.06 万年日繽 07/15/2012 20:15:16 PAGE 2
55 1 }
56 /**********************************************************
57
58 ds18b20读取温度值存入数组中
59
60 **********************************************************/
61 void temperture()
62 {
63 1 int temp;
64 1 uint TempH,TempL;
65 1 delay_nms(1);
66 1 temp =readtemperture();
67 1 if(temp&0x8000)
68 1 {
69 2 TempData[0]='-';//负号标志
70 2 temp=~temp; // 取反加1
71 2 temp +=1;
72 2 }
73 1 else
74 1 TempData[0]='+';
75 1 TempH=temp>>4;
76 1 TempL=temp&0x0F;
77 1 TempL=TempL*6; //小数近似处理
78 1 if((TempH/100==0)&&((TempH%100)/10==0)) //消隐
79 1 TempData[1]='H';
80 1 else
81 1 TempData[1]=(TempH%100)/10+0x30; //十位温度
82 1 TempData[2]=(TempH%100)%10+0x30; //个位温度
83 1 TempData[3]='.';
84 1 TempData[4]=TempL/10+0x30; //小数十位温度
85 1 TempData[5]=TempL%10+0x30; //小数个位温度
86 1 }
87 /**********************************************************
88
89 ds1302时钟显示
90
91 **********************************************************/
92 void display()
93 {
94 1 time_in(); //ds1302时钟读取的值分离后写入数组中
95 1 temperture(); //ds18b20读取温度值存入数组中
96 1
97 1 char2_12864(1,2,0); //年
98 1 char2_12864(1,4,2); //月
99 1 char2_12864(1,6,4); //日
100 1
101 1 char2_12864(2,1,8); //时
102 1 char2_12864(2,3,10); //分
103 1 char2_12864(2,5,12); //秒
104 1
105 1 char2_12864(3,5,6); //星期
106 1 char2_12864(4,4,0); //温度
107 1 }
108
109 void main(void)
110 {
111 1 init_ds1302(); //ds1302初始化
112 1 init_12864(); //12864初始化
113 1 char_12864(1,0,0x02); //笑脸
114 1 string_12864(1,1,table1);
115 1 string_12864(2,1,table2);
116 1 string_12864(3,2,table3);
C51 COMPILER V7.06 万年日繽 07/15/2012 20:15:16 PAGE 3
117 1 string_12864(4,1,table4);
118 1 while(1)
119 1 {
120 2 display(); //显示
121 2 }
122 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 565 ----
CONSTANT SIZE = 67 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -