?? 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 + -