📄 24m点阵时钟.lst
字号:
C51 COMPILER V8.05a 24M点阵时钟 09/28/2010 07:26:18 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 24M点阵时钟
OBJECT MODULE PLACED IN 24M点阵时钟.OBJ
COMPILER INVOKED BY: F:\Program Files\Keil\C51\BIN\C51.EXE 24M点阵时钟.c BROWSE DEBUG OBJECTEXTEND
line level source
1 // A B C D 对应P1.0; P1.1 ; P1.2; P1.3
2 //--------------------------------
3 #include "reg52.h"
4
5 #define uchar unsigned char
6 #define uint unsigned int
7 //========================
8 //****滚屏事件定义****
9 #define MSG_MV_L 1 //左移
10 #define MSG_MV_R 2 //右移
11 #define MSG_MV_U 3 //上移
12 #define MSG_MV_D 4 //下移
13 #define MSG_NONE 0 //无
14 uchar MSG_MV = 0;
15 //========================
16 //****显示状态定义****
17 #define STA_gTIME 1 //滚动显示时间
18 #define STA_gTEMP 2 //滚动显示温度
19 #define STA_gWORD 3 //滚动显示文字
20 #define STA_sTIME 4 //静态显示时间
21 #define STA_sWEEK 5 //静态显示星期
22 #define STA_sDATE 6 //静态显示日期
23 #define STA_sYEAR 7 //静态显示年份
24 #define STA_sTEMP 8 //静态显示温度
25 #define STA_sWORD 9 //静态显示文字
26 #define STA_CHG 10 //校时模式
27 #define STA_SONG 11 //滚动显示诗歌
28 #define STA_COPYRIGHT 12 //开机显示
29 uchar STATE = 1;
30 //=========================
31 //****校时状态定义****
32 #define CHG_HOUR 1 //调整小时
33 #define CHG_MIN 2 //调整分
34 #define CHG_SEC 3 //调整秒
35 #define CHG_MON 4 //调整月
36 #define CHG_DAY 5 //调整日
37 #define CHG_WEEK 6 //调整星期
38 #define CHG_YEAR 7 //调整年
39 uchar CHANGE = 1;
40 uchar hide_times = 0; //校时闪烁时间变量
41 uchar HIDE = 0; //隐藏显示标志位
42 uchar TMP_TIME = 0;
43 //=========================
44 //****按键定义****
45 sbit key0 = P1^0;
46 sbit key1 = P1^1;
47 sbit key2 = P1^2;
48 sbit key3 = P1^3;
49
50 #define KEY0 0x0e
51 #define KEY1 0x0d
52 #define KEY2 0x0b
53 #define KEY3 0x07
54
55 #define KEY0_S 0x0e //KEY0短按下
C51 COMPILER V8.05a 24M点阵时钟 09/28/2010 07:26:18 PAGE 2
56 #define KEY1_S 0x0d //KEY1短按下
57 #define KEY2_S 0x0b //KEY2短按下
58 #define KEY3_S 0x07 //KEY3短按下
59 #define KEY0_L 0x1e //KEY0长按下
60 #define KEY1_L 0x1d //KEY1长按下
61 #define KEY2_L 0x1b //KEY2长按下
62 #define KEY3_L 0x17 //KEY3长按下
63 #define KEY_NONE 0 //无按键
64 uchar MSG_KEY = KEY_NONE;
65 uchar key_times = 0; //持续时间
66 uchar key_keep_times = 0;
67 uchar cur_key_val = 0;
68 uchar key_done = 0; //按键事件有无做好
69 uchar exit = 0; //校时状态下长时间无按键退出
70 //=========================
71 //uchar time_read_times = 0; //读时间
72 //uchar tem_read_times = 0; //读温度
73 //=========================
74 //****引脚定义****
75 sbit CLK =P2^5 ; //74HC595移时钟
76 sbit STB =P2^4 ; // 74HC595锁存信号
77 sbit Red=P2^7 ; //红色数据输出引脚低电平有效
78 sbit Greed=P2^6; //全屏控制使能0,低电平有效
79 sbit OE = P0^7; //全屏使能
80 //========================
81 //****DS1302****
82 sbit SCLK=P0^5; //位定义1302芯片的接口,时钟输出端口定义在P2.4引脚
83 sbit DATA=P0^6; //位定义1302芯片的接口,数据输出端定义在P2.5引脚
84 sbit RST=P0^7; //位定义1302芯片的接口,复位端口定义在P2.6引脚
85
86 typedef struct __SYSTEMTIME__
87 {
88 uchar Second;
89 uchar Minute;
90 uchar Hour;
91 uchar Day;
92 uchar Month;
93 uchar Week;
94 uchar Year;
95 }SYSTEMTIME; //定义的时间类型
96 SYSTEMTIME Time;
97
98
99 //=========================================
100 //****18B20****
101 sbit DQ = P0^4
102 ; //定义DS18B20端口DQ
103
104 unsigned char data temp_data[2] = {0x00,0x00} ;
105 unsigned char data temp_ram[5] = {0x00,0x00,0x00,0x00,0x00} ;
106 unsigned char code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,
107 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
108 //==========================================
109 bit presence ;
110 uchar SendData; //要发送的数据变量
111 uchar hang; //行扫描变量 (半屏只有16行,所以hang=0到15)
112 uchar move_times = 0; //左右移动位数
113 uchar start_word = 0;
114
115
116 uchar data h_dispram[10]; //显示缓存
117 uchar code *disword[26]; //显示文字指针
C51 COMPILER V8.05a 24M点阵时钟 09/28/2010 07:26:18 PAGE 3
118
119
120 void Keyscan (void); //修改参数按键扫描子程序
121 void Sendping(); //发送半屏子程序
122 void Put_Wdispram(uchar first_word);//
123 void Put_Hdispram(); //把显示文字放入显示缓存
124 void Move_Left(); //左移
125 void Move_Right(); //右移
126 void RL_Move();
127 void UD_Move();
128 void Show_Line();
129 void Show_Move_Word(uchar code *WORDS[][8]);
130 void delay();
131 void SendByte(void);
132 void RowsCan(void);
133 void Disp_Temperature();
134 void Put_gTEMP();
135 void Change_obj();
136
137 uchar ReadKey1();
138
139
140
141 uchar code MY_WORDS[][16]=
142 {
143 {0x21,0x11,0x11,0x02,0x97,0x52,0x52,0x12,0x2F,0x22,0xE2,0x22,0x23,0x20,0x20,0x20},
144 {0x00,0x00,0xFE,0x00,0xF8,0x88,0x48,0x08,0xFE,0x88,0x48,0x08,0xFE,0x08,0x28,0x10},/*"海",2*/
145 {0x22,0x11,0x11,0x07,0x80,0x50,0x57,0x10,0x20,0x2F,0xE0,0x20,0x20,0x20,0x20,0x20},
146 {0x10,0x10,0x20,0xFC,0x40,0x40,0xFC,0x40,0x40,0xFE,0x40,0x40,0x40,0x40,0x40,0x40},/*"洋",3*/
147 {0x01,0x10,0x0C,0x08,0x7F,0x40,0x8F,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x02,0x01},
148 {0x08,0x8C,0xC8,0x90,0xFE,0x04,0xE8,0x40,0x80,0xFE,0x80,0x80,0x80,0x80,0x80,0x00},/*"学",4*/
149 {0x00,0xF8,0x8F,0x94,0xA0,0xA3,0x90,0x88,0x8F,0xA9,0x91,0x81,0x82,0x82,0x84,0x88},
150 {0x80,0x40,0xFE,0x04,0x00,0xF8,0x00,0x00,0xFE,0x20,0x20,0x20,0x22,0x22,0x22,0x1E},/*"院",5*/
151 {0x04,0x0C,0x11,0x3F,0x02,0xFF,0x04,0x09,0x32,0xCC,0x31,0x06,0x18,0x03,0x7C,0x00},
152 {0x00,0x20,0xF0,0x10,0x00,0xFC,0x40,0x20,0x18,0x6E,0x84,0x18,0x60,0x80,0x00,0x00},/*"参",6*/
153 {0x01,0x7F,0x44,0xBF,0x04,0x3F,0x04,0x7F,0x08,0x3F,0xC9,0x09,0x09,0x02,0x0C,0x30},
154 {0x00,0xFE,0x44,0xF0,0x40,0xF8,0x40,0xFC,0x30,0xEE,0x24,0x20,0x20,0xC0,0x38,0x10},/*"赛",7*/
155 {0x08,0x0C,0x09,0x13,0x12,0x34,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10},
156 {0x80,0x80,0x00,0xFE,0x80,0x88,0xFC,0x80,0x80,0x84,0xFE,0x80,0x80,0x80,0x80,0x80},/*"作",8*/
157 {0x00,0x0F,0x08,0x08,0x08,0x0F,0x08,0x00,0x7E,0x42,0x42,0x42,0x42,0x7E,0x42,0x00},
158 {0x00,0xF0,0x10,0x10,0x10,0xF0,0x10,0x00,0xFC,0x84,0x84,0x84,0x84,0xFC,0x84,0x00},/*"品",9*/
159
160
161
162
163
164
165 };
166
167 uchar code NO_WORDS[][16]={
168
169 {0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"0",0*/
170 {0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00},/*"1",1*/
171 {0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00},/*"2",2*/
172 {0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00},/*"3",3*/
173 {0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00},/*"4",4*/
174 {0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00},/*"5",5*/
175 {0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"6",6*/
176 {0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00},/*"7",7*/
177 {0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00},/*"8",8*/
178 {0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00},/*"9",9*/
179 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",10*/
C51 COMPILER V8.05a 24M点阵时钟 09/28/2010 07:26:18 PAGE 4
180 {0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00},/*":",11*/
181 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"空格",12*/
182 };
183 uchar code TMP_WORDS[][16]={
184
185
186 {0x02,0x01,0x3F,0x20,0x40,0x3F,0x04,0x08,0x1F,0x01,0x01,0x3F,0x01,0x01,0xFF,0x00},
187 {0x00,0x00,0xFE,0x04,0x08,0xFC,0x00,0x20,0xF0,0x10,0x00,0xF8,0x00,0x00,0xFE,0x00},/*"室",3*/
188 {0x40,0x27,0x24,0x07,0x94,0x54,0x17,0x20,0x2F,0xC9,0x49,0x49,0x49,0x49,0x5F,0x40},
189 {0x00,0xF0,0x10,0xF0,0x10,0x10,0xF0,0x00,0xFC,0x24,0x24,0x24,0x24,0x24,0xFE,0x00},/*"温",4*/
190 {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00},/*":",5*/
191 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",6*/
192 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",7*/
193 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",8*/
194 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00},/*".",9*/
195 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",10*/
196 {0x00,0xC0,0xC0,0x3E,0x42,0x42,0x80,0x80,0x80,0x80,0x80,0x42,0x44,0x38,0x00,0x00},/*"C",11*/
197 };
198 uchar code TIME_WORDS[][16]={
199
200 {0x01,0x01,0x02,0x04,0x08,0x12,0x21,0xC0,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x01},
201 {0x00,0x00,0x80,0x40,0x20,0x18,0x8E,0x84,0x00,0xF0,0x20,0x20,0x40,0x40,0x80,0x00},/*"今",0*/
202 {0x00,0x3F,0x01,0x01,0x01,0x01,0x7F,0x01,0x01,0x02,0x02,0x04,0x08,0x10,0x20,0x40},
203 {0x00,0xFC,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x80,0x40,0x20,0x18,0x0E,0x04,0x00},/*"天",1*/
204 {0x00,0x0F,0x08,0x0F,0x08,0x0F,0x00,0xFF,0x01,0x09,0x09,0x09,0x15,0x23,0x40,0x00},
205 {0x00,0xF0,0x10,0xF0,0x10,0xF0,0x00,0xFE,0x00,0x00,0xF8,0x00,0x00,0x00,0xFE,0x00},/*"是",2*/
206
207 {0x08,0x0F,0x10,0x10,0x20,0x4F,0x88,0x08,0x08,0x08,0xFF,0x00,0x00,0x00,0x00,0x00},
208 {0x00,0xFC,0x80,0x80,0x80,0xF8,0x80,0x80,0x80,0x80,0xFE,0x80,0x80,0x80,0x80,0x80},/*"年",1*/
209 {0x07,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x07,0x04,0x08,0x08,0x10,0x20,0x40,0x00},
210 {0xF0,0x10,0x10,0x10,0xF0,0x10,0x10,0x10,0xF0,0x10,0x10,0x10,0x10,0x50,0x20,0x00},/*"月",2*/
211 {0x00,0x1F,0x10,0x10,0x10,0x10,0x1F,0x10,0x10,0x10,0x10,0x10,0x1F,0x10,0x00,0x00},
212 {0x00,0xF0,0x10,0x10,0x10,0x10,0xF0,0x10,0x10,0x10,0x10,0x10,0xF0,0x10,0x00,0x00},/*"日",3*/
213 {0x00,0x1F,0x10,0x1F,0x10,0x1F,0x01,0x11,0x1F,0x21,0x21,0x4F,0x01,0x01,0x7F,0x00},
214 {0x00,0xF8,0x08,0xF8,0x08,0xF8,0x00,0x00,0xFC,0x00,0x00,0xF8,0x00,0x00,0xFE,0x00},/*"星",4*/
215 {0x22,0x22,0x7F,0x22,0x3E,0x22,0x3E,0x22,0x22,0xFF,0x00,0x24,0x22,0x43,0x81,0x00},
216 {0x00,0x7C,0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x7C,0x44,0x84,0x84,0x14,0x08,0x00},/*"期",5*/
217 };
218 uchar code WEEK_WORDS[][16]={
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -