📄 3208_v4.01.00.lst
字号:
C51 COMPILER V6.12 3208_V4_01_00 11/03/2008 14:44:34 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE 3208_V4_01_00
OBJECT MODULE PLACED IN 3208_V4.01.00.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 3208_V4.01.00.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /********************************************************************************************
2 //3208点阵屏电子钟
3 //作者:杜洋
4 //V4.01.00 2007-5-29
5 //MCS-51 12MHZ C语言
6 //接口说明:DS1302、DS18B20
7 //注意:V4.1适合于V2.0/V3.0的硬件升级到V4.0则请使用V4.1正式版。
8 //源自:http://www.doyoung.net (DoYoung.net 杜洋个人空间)
9
10 修改日志:
11 V2.0 NO.1-20051215 完成LED驱动、显示切换、时钟温度读取
12 V2.1 NO.2-20051216 完成整点报时、填加注释信息
13 V2.2 NO.3-20051220 完成了调时、按键音等所以的功能(没有闹钟)
14 V2.3 NO.3-20051221 增加了十位为0时的消隐功能
15 V3.0 NO.4-20070529 增加闹钟功能并进一步完善系统(1,完成菜单界面)
16 NO.5-20070530 增加闹钟项目,完成基本程序,开始测试功能
17 NO.6-20070602 修改了闹钟小时值=59的一处失误
18 NO.7-20070617 修改了整点报时处的一处错误,该错误使报时不准
19 NO.8-20070617 将MODE最大值由7改为6,设置时7是没有用的,编程的失误
20 NO.9-20070703 修改了手动停止闹钟会再响的一处BUG
21 /*-------------------------------------------------------------------------------------------
22 V4.0 NO.1-20080123 开始进行V4.0的升级。
23 NO.2-20080125 完成流动显示功能及流动速度调整功能。闹钟改为6路。
24 NO.3-20080126 解决了闹铃时不能闪烁显示闹铃时间的问题。
25 NO.4-20080228 继续进行升级。
26 NO.5-20080228 完成时间校准功能及显示模式功能。
27 NO.6-20080303 修改了切换显示模式后可能会有一屏的乱码情况。
28 NO.7-20081103 修改了初始化黑屏现象。
29 NO.8-20081103 将oC改小,加入“周”字显示。
30 NO.9-20081103 重新优化排版和注释。
31 V4.1 NO.1-20081103 驱动改为适合原来V2.0和V3.0版本的硬件电路升级。
32 NO.2-20081103 加入汇编的数据反转程序。
33 NO.3-20081103 修改显示版本号为V4.1
34 -------------------------------------------------------------------------------------------*/
35
36 /*********************************************************************************************/
37 //0- 此闹钟独立关闭,1- 此闹钟鸣响一次后自动关闭,2- 此闹钟常响,3- 此闹钟周一~五鸣响周六、日除外
38 //4- 此闹钟周一~六鸣响,5- 此闹钟周六、日鸣响,6- 此闹钟周日鸣响
39 /*********************************************************************************************/
40
41 /**********************************************************************************************/
42 #include <reg51.h>//定义头文件 MCS-51单片机
43 /**********************************************************************************************/
44 //------------------------------定义缩写字符
45 #define uchar unsigned char
46 #define uint unsigned int
47 //------------------------------定义扬声器接口,低电平使能
48 sbit Bell_Out = P1 ^ 5;//扬声器驱动
49 //------------------------------定义DS18B20温度传感器数据接口
50 sbit DQ = P1 ^ 6;//ds1820data(单总线)
51 //------------------------------定义DS1302时钟接口
52 sbit clock_clk = P3 ^ 5;//ds1302_clk(时钟线)
53 sbit clock_dat = P3 ^ 6;//ds1302_dat(数据线)
54 sbit clock_Rst = P3 ^ 7;//ds1302_Rst(复位线)
55 //-----------------------------定义数据口
C51 COMPILER V6.12 3208_V4_01_00 11/03/2008 14:44:34 PAGE 2
56 #define Led_13 P0 //第1、3屏数据口
57 #define Led_24 P2 //第2、4屏数据口
58 #define Led_E P1 //74HC154的BCD列驱动(P1.0~P1.4)
59 sbit Led_EA = P1 ^ 4;//显示列驱动器(74HC154)使能
60 //-----------------------------独立键盘定义
61 sbit Add_Key = P3 ^ 1;//前位加1键
62 sbit Add2_Key = P3 ^ 0;//后位加1键
63 sbit OK_Key = P3 ^ 2;//确定键
64 sbit int_Key = P3 ^ 3;//中断入口
65 //-----------------------------定义累加器A中的各位
66 sbit a0 = ACC ^ 0;
67 sbit a1 = ACC ^ 1;
68 sbit a2 = ACC ^ 2;
69 sbit a3 = ACC ^ 3;
70 sbit a4 = ACC ^ 4;
71 sbit a5 = ACC ^ 5;
72 sbit a6 = ACC ^ 6;
73 sbit a7 = ACC ^ 7;
74 //------------------------------------定义全局变量
75 uchar DL (uchar);//2和4屏数据反转(用DL的汇编实现)
76 uchar MENU,v;//定义标志位
77 bit BEEP_bit;//闹钟开关标志
78 uchar bn;//扫描映射全局变量
79 uchar hour_renew;//定义静态小时更新用数据变量
80 static uchar timecount = 0;//定义静态软件计数器变量
81
82 uchar disbuf_flag=1;
83 uchar left_move_time=0;
84 uchar ty = 0;//定义温度寄存器变量
85 //-----------------------------定义显示缓冲寄存器(32个字节全局变量)
86 data uchar Ledplay [32];//data和idata用来解决内存溢出的问题!!!!!!
87 //-----------------------------定义待显缓冲寄存器(80个字节全局变量)
88 idata uchar Ledplay_buf [80];//
89 /**********************************************************************************************/
90 uchar code no[][10]={//-定义字符数据表单(二维数组)
91 //-----------------------------------数字字符表
92 {0x7E,0xFF,0x81,0x81,0xFF,0x7E,0},//0
93 {0x82,0xFF,0xFF,0x80,0}, //1
94 {0xC6,0xE7,0xB1,0x99,0x8F,0x86,0},//2
95 {0x42,0xC3,0x89,0x89,0xFF,0x76,0},//3
96 {0x30,0x28,0xA6,0xFF,0xFF,0xA0,0},//4
97 {0x4F,0xCF,0x89,0x89,0xF9,0x71,0},//5
98 {0x7E,0xFF,0x89,0x8B,0xFB,0x70,0},//6
99 {0x03,0x03,0xF9,0xFF,0x07,0},//7
100 {0x76,0xFF,0x89,0x89,0xFF,0x76,0},//8
101 {0x0E,0xDF,0xD1,0x91,0xFF,0x7E,0},//9
102 //-----------------------------------星期字符表
103 {0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x10,0},//一10
104 {0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x40,0},//二
105 {0x82,0x92,0x92,0x92,0x92,0x92,0x82,0x80,0},//三
106 {0xFE,0xA2,0x9E,0x82,0x9E,0xA2,0xFE,0},//四
107 {0x80,0x89,0xFF,0x89,0x89,0x89,0xF9,0x80,0},//五
108 {0x88,0x68,0x38,0x0E,0x38,0x68,0x88,0},//六
109 {0xFE,0x92,0x92,0x92,0xFE,0},//日 10+6
110 //-----------------------------------特殊字符表
111 {0x6C,0x6C,0},//“:” 17
112 {0x18,0x18,0x18,0x18,0},//“-” 18
113 {0x01,0x0E,0x0A,0},//“oC” 19
114 {0x24,0x3b,0x2a,0xfe,0x2a,0x22,0},//“年”(在调时时表示年)20
115 {0x80,0x7E,0x15,0x15,0x95,0xFF,0},//“月”21
116 {0xFE,0x92,0x92,0x92,0xFE,0},//“日”22
117 {0xff,0x75,0x5f,0x75,0xFF,0},//“周”23
C51 COMPILER V6.12 3208_V4_01_00 11/03/2008 14:44:34 PAGE 3
118 {0x7c,0x54,0x7c,0x04,0x94,0xFF,0x04,0},//“时”24
119 {0x08,0x94,0x52,0x30,0x93,0xF4,0x08,0},//“分”25
120 };
121 /**********************************************************************************************/
122 uchar code Mode[]={//”-显示“Mode”
123 0x7F,0x02,0x0C,0x02,0x7F,0, // -M-
124 0x3E,0x41,0x41,0x41,0x3E,0, // -O-
125 0x7F,0x41,0x41,0x41,0x3E,0, // -D-
126 0x7F,0x49,0x49,0x49,0x41,0, // -E-
127 0x99};
128 /**********************************************************************************************/
129 uchar code Time[]={//”-显示“Time”
130 0x01,0x01,0x7F,0x01,0x01,0, // -T-
131 0x41,0x7F,0x41,0x00, // -I-
132 0x7F,0x02,0x0C,0x02,0x7F,0, // -M-
133 0x7F,0x49,0x49,0x49,0x41, // -E-
134 0x99};
135 /**********************************************************************************************/
136 uchar code T[]={//”-显示“T”
137 0x01,0x01,0x7F,0x01,0x01,0, // -T-
138 0x14,0, // -:-
139 0x99};
140 /**********************************************************************************************/
141 uchar code Pp[]={//”--显示“P”
142 0x7F,0x09,0x09,0x06,0, // -P-
143 0x14,0, // -:-
144 0x99};
145 /**********************************************************************************************/
146 uchar code POINT[]={//”-显示“POINT”
147 0x7F,0x09,0x09,0x09,0x06,0, // -P-
148 0x3E,0x41,0x41,0x41,0x3E,0, // -O-
149 0x41,0x7F,0x41,0x00, // -I-
150 0x7F,0x04,0x08,0x10,0x7F,0, // -N-
151 0x01,0x01,0x7F,0x01,0x01, // -T-
152 0x99};
153 /**********************************************************************************************/
154 uchar code V30[]={//”显示“V4.0”
155 0,0,0,0,0,0,
156 0x1F,0x20,0x40,0x20,0x1F,0, // -V-
157 0x18,0x14,0x12,0x7f,0x10,//-4-
158 0x00,0x40,0x00,// -.-
159 0x02,0x7f, // -1-
160 0x99
161 };
162 /**********************************************************************************************/
163 uchar code ALARM[]={//”-显示“ALARM”
164 0xFc,0x22,0x22,0xfc,0,//“A”24
165 0xFe,0x80,0x80,0,//“L”24
166 0xFc,0x22,0x22,0xfc,0,//“A”24
167 0xFe,0x12,0x32,0xcc,0,//“R”25
168 0xFe,0x04,0x08,0x04,0xFe,0,//“M”25
169 0x99
170 };
171 /**********************************************************************************************/
172 uchar code A[]={//”--显示“A:”即ALARM,表示闹钟设置
173 0x7C,0x12,0x11,0x12,0x7C,0, // -A-
174 0x14,0, // -:-
175 0x99
176 };
177 /**********************************************************************************************/
178 uchar code Aoff[]={//-显示“A:off”即闹钟关
179 0x7C,0x12,0x11,0x12,0x7C,0, // -A-
C51 COMPILER V6.12 3208_V4_01_00 11/03/2008 14:44:34 PAGE 4
180 0x14,0, // -:-
181 0x3E,0x41,0x41,0x41,0x3E,0, // -O-
182 0x7F,0x09,0x09,0x09,0x01,0, // -F-
183 0x7F,0x09,0x09,0x09,0x01, // -F-
184 0x99
185 };
186 /**********************************************************************************************/
187 uchar code Aon[]={//”显示“A:on”即闹钟开
188 0x7C,0x12,0x11,0x12,0x7C,0, // -A-
189 0x14,0, // -:-
190 0x3E,0x41,0x41,0x41,0x3E,0, // -O-
191 0x7F,0x04,0x08,0x10,0x7F,// -N-
192 0x99
193 };
194 /**********************************************************************************************/
195 uchar code ONOFF[]={//显示“ON/OFF”是设置项,表示总闹钟的开关设置
196 0x3E,0x41,0x41,0x41,0x3E, // -O-
197 0x7F,0x04,0x08,0x10,0x7F,0, // -N-
198 0x36,0x49,0x56,0x20,0x50,0, // -&-
199 0x3E,0x41,0x41,0x41,0x3E, // -O-
200 0x7F,0x09,0x09,0x09,0x01, // -F-
201 0x7F,0x09,0x09,0x09,0x01, // -F-
202 0x99
203 };
204 /**********************************************************************************************/
205 uchar code SPEED[]=//显示“SPEED”即速度设置字样
206 {
207 0x26,0x49,0x49,0x49,0x32,0,//S
208 0x7F,0x09,0x09,0x09,0x06,0,//P
209 0x7F,0x49,0x49,0x49,0x41,0,//E
210 0x7F,0x49,0x49,0x49,0x41,0,//E
211 0x7F,0x41,0x41,0x41,0x3E,//D
212 0x99
213 };
214 /**********************************************************************************************/
215 uchar code LEVEL[]=//显示"LEVEL"
216 {
217 0xFE,0x80,0x80,0x00,//L
218 0xFE,0x92,0x92,0x82,0x00,//E
219 0x7E,0x80,0x80,0x7E,0x00,//V
220 0xFE,0x92,0x92,0x82,0x00,//E
221 0xFE,0x80,0x80,0,0,//L
222 0x99
223 };
224 /**********************************************************************************************/
225 uchar code TIMEADJ[]=//显示"TIMEADJ"即时钟精度调整
226 {
227 0x01,0x01,0x7F,0x01,0x01,0x00,//T
228 0x7F,0x00,//I
229 0x7F,0x02,0x04,0x02,0x7F,0x00,//M
230 0x7F,0x49,0x49,0x41,0x00,//E
231 0x7E,0x11,0x11,0x7E,0x00,//A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -