📄 wannianli.lst
字号:
C51 COMPILER V6.12 WANNIANLI 07/04/2007 21:12:52 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE WANNIANLI
OBJECT MODULE PLACED IN wannianli.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE wannianli.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /********************************************************************************************
2 //3208点阵屏电子钟
3 //应用程序 C
4 //杜洋
5 //V3.0 2007-5-29
6 //MCS-51 12MHZ C语言
7 //接口说明: DS1302、DS18B20
8 //源自:http://www.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 *********************************************************************************************/
23
24
25 /**********************************************************************************************/
26 #include <reg51.h>//定义头文件 MCS-51单片机
27 /**********************************************************************************************/
28 //------------------------------定义缩写字符
29 #define uchar unsigned char
30 #define uint unsigned int
31 //------------------------------定义扬声器接口,低电平使能
32 sbit Bell_Out = P1 ^ 5;//扬声器驱动
33 //------------------------------定义DS18B20音
34 sbit DQ = P1 ^ 6;//ds1820data(单总线)
35 //------------------------------定义DS1302时钟接口
36 sbit clock_clk = P3 ^ 5;//ds1302_clk(时钟线)
37 sbit clock_dat = P3 ^ 6;//ds1302_dat(数据线)
38 sbit clock_Rst = P3 ^ 7;//ds1302_Rst(复位线)
39 //-----------------------------定义数据口
40 #define Led_13 P0 //第1、3屏数据口
41 #define Led_24 P2 //第2、4屏数据口
42 #define Led_E P1 //74HC154的BCD列驱动(P1.0~P1.4)
43 sbit Led_EA = P1 ^ 4;//显示列驱动器(74HC154)使能
44 //-----------------------------独立键盘定义
45 sbit Add_Key = P3 ^ 1;//前位加1键
46 sbit Add2_Key = P3 ^ 0;//后位加1键
47 sbit OK_Key = P3 ^ 2;//确定键
48 sbit int_Key = P3 ^ 3;//中断入口
49 //-----------------------------定义累加器A中的各位
50 sbit a0 = ACC ^ 0;
51 sbit a1 = ACC ^ 1;
52 sbit a2 = ACC ^ 2;
53 sbit a3 = ACC ^ 3;
54 sbit a4 = ACC ^ 4;
55 sbit a5 = ACC ^ 5;
C51 COMPILER V6.12 WANNIANLI 07/04/2007 21:12:52 PAGE 2
56 sbit a6 = ACC ^ 6;
57 sbit a7 = ACC ^ 7;
58 //------------------------------------定义全局变量
59 uchar MENU,v;//定义标志位
60 bit BEEP_bit;//闹钟开关标志
61 uchar bn;//扫描映射全局变量
62 static uchar timecount = 0;//定义静态软件计数器变量
63 //------------------------------------函数声明(按字母顺序排列)
64 uchar DL (uchar);
65 //-----------------------------定义显示缓冲寄存器(32个字节全局变量)
66 uchar Ledplay [35];//
67 /**********************************************************************************************/
68 uchar code no[][10]={//-定义字符数据表单(二维数组)
69 //-----------------------------------数字字符表
70 {0x7E,0xFF,0x81,0x81,0xFF,0x7E,0},//0
71 {0x82,0xFF,0xFF,0x80,0}, //1
72 {0xC6,0xE7,0xB1,0x99,0x8F,0x86,0},//2
73 {0x42,0xC3,0x89,0x89,0xFF,0x76,0},//3
74 {0x30,0x28,0xA6,0xFF,0xFF,0xA0,0},//4
75 {0x4F,0xCF,0x89,0x89,0xF9,0x71,0},//5
76 {0x7E,0xFF,0x89,0x8B,0xFB,0x70,0},//6
77 {0x03,0x03,0xF9,0xFF,0x07,0},//7
78 {0x76,0xFF,0x89,0x89,0xFF,0x76,0},//8
79 {0x0E,0xDF,0xD1,0x91,0xFF,0x7E,0},//9
80 //-----------------------------------星期字符表
81 {0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x10,0},//一10
82 {0x40,0x44,0x44,0x44,0x44,0x44,0x44,0x40,0},//二
83 {0x82,0x92,0x92,0x92,0x92,0x92,0x82,0x80,0},//三
84 {0xFE,0xA2,0x9E,0x82,0x9E,0xA2,0xFE,0},//四
85 {0x80,0x89,0xFF,0x89,0x89,0x89,0xF9,0x80,0},//五
86 {0x88,0x68,0x38,0x0E,0x38,0x68,0x88,0},//六
87 {0xFE,0x92,0x92,0x92,0x92,0xFE,0},//日 10+6
88 //-----------------------------------特殊字符表
89 {0x6C,0x6C,0},//“:” 17
90 {0x18,0x18,0x18,0x18,0},//“-” 18
91 {0x06,0x06,0x78,0xFC,0x84,0x84,0x84,0x80,0},//“oC” 19
92 {0x24,0x3b,0x2a,0xfe,0x2a,0x22,0},//“年”(在调时时表示年)20
93 {0x80,0x7E,0x15,0x15,0x95,0xFF,0},//“月”21
94 {0xFE,0x92,0x92,0x92,0x92,0xFE,0},//“日”22
95 {0x80,0x7f,0x75,0x5f,0x75,0xFF,0},//“周”23
96 {0x7c,0x54,0x7c,0x04,0x94,0xFF,0x04,0},//“时”24
97 {0x08,0x94,0x52,0x30,0x93,0xF4,0x08,0},//“分”25
98 };
99 /**********************************************************************************************/
100 uchar code Mode[]={//”-显示“Mode”
101 0x7F,0x02,0x0C,0x02,0x7F,0, // -M-
102 0x3E,0x41,0x41,0x41,0x3E,0, // -O-
103 0x7F,0x41,0x41,0x41,0x3E,0, // -D-
104 0x7F,0x49,0x49,0x49,0x41,0, // -E-
105 0x99};
106 /**********************************************************************************************/
107 uchar code Time[]={//”-显示“Time”
108 0x01,0x01,0x7F,0x01,0x01,0, // -T-
109 0x41,0x7F,0x41,0x00, // -I-
110 0x7F,0x02,0x0C,0x02,0x7F,0, // -M-
111 0x7F,0x49,0x49,0x49,0x41, // -E-
112 0x99};
113 /**********************************************************************************************/
114 uchar code T[]={//”-显示“T”
115 0x01,0x01,0x7F,0x01,0x01,0, // -T-
116 0x14,0, // -:-
117 0x99};
C51 COMPILER V6.12 WANNIANLI 07/04/2007 21:12:52 PAGE 3
118 /**********************************************************************************************/
119 uchar code Pp[]={//”--显示“P”
120 0x7F,0x09,0x09,0x06,0, // -P-
121 0x14,0, // -:-
122 0x99};
123 /**********************************************************************************************/
124 uchar code POINT[]={//”-显示“POINT”
125 0x7F,0x09,0x09,0x09,0x06,0, // -P-
126 0x3E,0x41,0x41,0x41,0x3E,0, // -O-
127 0x41,0x7F,0x41,0x00, // -I-
128 0x7F,0x04,0x08,0x10,0x7F,0, // -N-
129 0x01,0x01,0x7F,0x01,0x01, // -T-
130 0x99};
131 /**********************************************************************************************/
132 uchar code V30[]={//”显示“V30”
133 4,0,0,0,0,0, //更新的BUG次数在版本信息第一列用8421表示
134 0x1F,0x20,0x40,0x20,0x1F,0, // -V-
135 0x21,0x41,0x49,0x4D,0x33,// -3-
136 0x00,0x60,0x60,0x00,// -.-
137 0x3E,0x51,0x49,0x45,0x3E, // -0-
138 0x99
139 };
140 /**********************************************************************************************/
141 uchar code ALARM[]={//”-显示“ALARM”
142 0xFc,0x22,0x22,0xfc,0,//“A”24
143 0xFe,0x80,0x80,0,//“L”24
144 0xFc,0x22,0x22,0xfc,0,//“A”24
145 0xFe,0x12,0x32,0xcc,0,//“R”25
146 0xFe,0x04,0x08,0x04,0xFe,0,//“M”25
147 0x99
148 };
149 /**********************************************************************************************/
150 uchar code A[]={//”--显示“A:”
151 0x7C,0x12,0x11,0x12,0x7C,0, // -A-
152 0x14,0, // -:-
153 0x99
154 };
155 /**********************************************************************************************/
156 uchar code Aoff[]={//-显示“A:off””
157 0x7C,0x12,0x11,0x12,0x7C,0, // -A-
158 0x14,0, // -:-
159 0x3E,0x41,0x41,0x41,0x3E,0, // -O-
160 0x7F,0x09,0x09,0x09,0x01,0, // -F-
161 0x7F,0x09,0x09,0x09,0x01, // -F-
162 0x99
163 };
164 /**********************************************************************************************/
165 uchar code Aon[]={//”显示“A:on”
166 0x7C,0x12,0x11,0x12,0x7C,0, // -A-
167 0x14,0, // -:-
168 0x3E,0x41,0x41,0x41,0x3E,0, // -O-
169 0x7F,0x04,0x08,0x10,0x7F,// -N-
170 0x99
171 };
172 /**********************************************************************************************/
173 uchar code ONOFF[]={//显示“ON/OFF“
174 0x3E,0x41,0x41,0x41,0x3E, // -O-
175 0x7F,0x04,0x08,0x10,0x7F,0, // -N-
176 0x36,0x49,0x56,0x20,0x50,0, // -&-
177 0x3E,0x41,0x41,0x41,0x3E, // -O-
178 0x7F,0x09,0x09,0x09,0x01, // -F-
179 0x7F,0x09,0x09,0x09,0x01, // -F-
C51 COMPILER V6.12 WANNIANLI 07/04/2007 21:12:52 PAGE 4
180 0x99
181 };
182 /**********************************************************************************************/
183 uchar code DoYoung[]={//-开机画面,显示“DoYoung”
184 0xfe,0x82,0x82,0x7c,0,//D
185 0x78,0x84,0x78,0,//o
186 0x02,0x0c,0xF0,0x0c,0x02,//Y
187 0x78,0x84,0x78,0,//o
188 0x7c,0x80,0x80,0x7c,0,//u
189 0xf8,0x04,0x04,0xf8,0,//n
190 0x98,0xa4,0xa4,0x78,//g
191 0x99
192 };
193 /**********************************************************************************************/
194 void key_off (void){//-等待所有键放开(通用)
195 1 while(OK_Key == 0 || int_Key == 0 || Add_Key == 0 || Add2_Key == 0);//等待键放开
196 1 }
197 /**********************************************************************************************/
198 void Delay(int num){//--延时函数 2uS/次
199 1 for (;num>0;num--);
200 1 }
201 /**********************************************************************************************/
202 void DelayM(unsigned int a){//-延时函数 1MS/次
203 1 unsigned char i;
204 1 while( --a != 0){
205 2 for(i = 0; i < 125; i++); //一个 ; 表示空语句,CPU空转。
206 2 } //i 从0加到125,CPU大概就耗时1毫秒
207 1 }
208 /******************************************************************************/
209 void Init_DS18B20(void)//初始化ds1820
210 {
211 1 unsigned char x=0;
212 1 DQ = 1; //DQ复位
213 1 Delay(8); //稍做延时
214 1 DQ = 0; //单片机将DQ拉低
215 1 Delay(80); //精确延时 大于 480us
216 1 DQ = 1; //拉高总线
217 1 Delay(14);
218 1 x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
219 1 Delay(20);
220 1 }
221 /******************************************************************************/
222 unsigned char ReadOneChar(void)//读一个字节
223 {
224 1 unsigned char i=0;
225 1 unsigned char dat = 0;
226 1 for (i=8;i>0;i--)
227 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -