📄 pcf8576d.lst
字号:
C51 COMPILER V7.06 PCF8576D 11/09/2004 16:39:45 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE PCF8576D
OBJECT MODULE PLACED IN pcf8576d.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE pcf8576d.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //***********************************************************************
2 //FILE: pcf8576d.c
3 //功能: 不同模式下,LCD的显示
4 //***********************************************************************
5 #include"main.h"
6 #include"time.h"
7 #include"HI2C_C51.H"
8 #include"temperature.h"
9 #include"pcf8576d.h"
10 #include"key.h"
11 #include"ctime.h"
12 //***********************************************************************
13 uchar code DecodeTab[10]= //LCD上的8段译码表
14 {
15 0xeb,0x60,0xc7,0xe5,0x6c, //"0"到"4"
16 0xad,0xaf,0xe0,0xef,0xed //"5"到"9"
17 };
18 //***********************************************************************
19 uchar DispBuff[6]={0,0,0,0,0,0}; //显示缓冲区
20 //***********************************************************************
21 void PCF8576Disp() //显示函数
22 {
23 1 ISendByte(PCF8576,0x60); //选中PCF8576D
24 1 ISendStr(PCF8576,0,DispBuff,6); //将缓冲区的数据发送到8576
25 1 }
26 //***********************************************************************
27 void PCF8576Clock(bit dot) //时间显示函数
28 { //dot参数决定是否同时显示":"
29 1 DispBuff[0]=DecodeTab[Hour/10]; //将小时译码写到显示缓冲
30 1 DispBuff[1]=DecodeTab[Hour%10];
31 1 DispBuff[2]=DecodeTab[Minute/10]; //将分钟译码写到显示缓冲
32 1 DispBuff[3]=DecodeTab[Minute%10];
33 1 if(!Ampm) DispBuff[4]=AMPic; //如果Ampm为0则显示"AM"
34 1 else DispBuff[4]=PMPic; //否则显示"PM"
35 1 if(dot) DispBuff[4]+=DOTPic; //如果dot为1,则显示":"
36 1 DispBuff[5]=0; //第六个字节为"0",不显示
37 1 PCF8576Disp(); //调用显示函数
38 1 }
39 //***********************************************************************
40 void PCF8576Date() //日期显示函数
41 {
42 1 DispBuff[0]=DecodeTab[Month/10]; //将月译码写到显示缓冲
43 1 DispBuff[1]=DecodeTab[Month%10]|DPPic; //并且第二个8段显示"."(DP)
44 1 DispBuff[2]=DecodeTab[Day/10]; //将天译码写到显示缓冲
45 1 DispBuff[3]=DecodeTab[Day%10];
46 1 DispBuff[4]=MONTHPic+DAYPic; //显示"month""day"
47 1 DispBuff[5]=0; //第六个字节为"0",不显示
48 1 PCF8576Disp(); //调用显示函数
49 1 }
50
51 //***********************************************************************
52 void PCF8576Year() //年显示函数
53 {
54 1 DispBuff[0]=DecodeTab[2]; //将年译码写到显示缓冲
55 1 DispBuff[1]=DecodeTab[0];
C51 COMPILER V7.06 PCF8576D 11/09/2004 16:39:45 PAGE 2
56 1 DispBuff[2]=DecodeTab[Year/10];
57 1 DispBuff[3]=DecodeTab[Year%10];
58 1 DispBuff[4]=YEARPic; //显示"Year"
59 1 DispBuff[5]=0; //第六个字节为"0",不显示
60 1 PCF8576Disp(); //调用显示函数
61 1 }
62 //***********************************************************************
63 void PCF8576Cdate() //日期显示函数
64 {
65 1 DispBuff[0]=DecodeTab[Cmonth/10]; //将月译码写到显示缓冲
66 1 DispBuff[1]=DecodeTab[Cmonth%10]|DPPic; //并且第二个8段显示"."(DP)
67 1 DispBuff[2]=DecodeTab[Cday/10]; //将天译码写到显示缓冲
68 1 DispBuff[3]=DecodeTab[Cday%10];
69 1 DispBuff[4]=MONTHPic+DAYPic; //显示"month""day"
70 1 DispBuff[5]=0; //第六个字节为"0",不显示
71 1 PCF8576Disp(); //调用显示函数
72 1 }
73 //***********************************************************************
74 void PCF8576Cyear() //年显示函数
75 {
76 1 if(Cyear==99&&Year==0) //如果是农历1999年
77 1 {
78 2 DispBuff[0]=DecodeTab[1]; //直接译码
79 2 DispBuff[1]=DecodeTab[9];
80 2 DispBuff[2]=DecodeTab[9];
81 2 DispBuff[3]=DecodeTab[9];
82 2 }
83 1 else
84 1 {
85 2 DispBuff[0]=DecodeTab[2]; //前两个显示为"2""0"
86 2 DispBuff[1]=DecodeTab[0];
87 2 DispBuff[2]=DecodeTab[Cyear/10]; //将农历年译码写到显示缓冲
88 2 DispBuff[3]=DecodeTab[Cyear%10];
89 2 }
90 1 DispBuff[4]=YEARPic; //显示"Year"
91 1 DispBuff[5]=0; //第六个字节为"0",不显示
92 1 PCF8576Disp(); //调用显示函数
93 1 }
94 //***********************************************************************
95 void PCF8576Weekday() //星期显示函数
96 {
97 1 DispBuff[0]=0; //第一个8段不显示
98 1 DispBuff[1]=0; //第二个8段不显示
99 1 DispBuff[2]=0; //第三个8段不显示
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -