?? 控制系統(tǒng).lst
字號:
C51 COMPILER V8.02 縚制系統(tǒng) 08/08/2008 18:31:54 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 縚制系統(tǒng)
OBJECT MODULE PLACED IN 控制系統(tǒng).OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 控制系統(tǒng).c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE DEBUG OBJECTEXTEND
line level source
1 /**************************************************************************************
2 程序名稱:
3 時間 溫度控制系統(tǒng)(128*64LCD+ds1302+ds18b20)
4 主要功能:
5 溫度計 時鐘 鬧鈴 密碼鎖 籃球器 計算器 溫度控制 鍵盤鎖 系統(tǒng)設(shè)置等。
6 主要說明:
7 程序全部定義在一個C文件中。
8 作者:
9 LiJH
10 時間:
11 2008.6.20
12 版本:
13 LiJH-V1.0
14 **************************************************************************************/
15
16
17 #include <at89s53.h>
18 #include <intrins.h>
19 #define uchar unsigned char
20 #define uint unsigned int
21 #define time_count 0x3cb0
22 #define close 1
23 #define open 0
24
25 /*============ 狀態(tài)控制及溫感器總線定義 ==============*/
26
27 #define b20_io P0_0 // DS18B20總線
28 #define pw_oc P3_7 // 密碼鎖開啟控制(黃燈)
29 #define buzzer P0_5 // 蜂鳴器
30 #define lcd_bl P0_6 // 背光控制口
31 #define als_th P0_4 // 上限溫度警報(紅燈)
32 #define als_tl P3_6 // 下限溫度警報(綠燈)
33 #define keyboard P1 // 鍵盤數(shù)據(jù)口
34
35
36 /*================= ST7920LCD 定義 ===================*/
37
38 #define comm 0 // lcd指令
39 #define dat 1 // lcd數(shù)據(jù)
40 #define lcd_rst P0_7 // lcd復(fù)位
41 #define lcd_e P3_0 // lcd使能
42 #define lcd_rw P3_1 // lcd讀寫
43 #define lcd_rs P3_2 // lcd數(shù)據(jù)命令
44 #define busy P2_7 // 忙碌位
45 #define lcd_data P2 // lcd(8bit)數(shù)據(jù)傳輸
46
47
48 /*=============== DS1302 寄存器地址定義 ===============*/
49
50 #define d02_rst P0_1 // DS1302使能
51 #define d02_data P0_2 // DS1302數(shù)據(jù)線
52 #define d02_sclk P0_3 // DS1302脈沖
53 #define d02_wrc 0x8e // 1302讀寫RAM控制(1允許 0禁止)
54 #define d02_year 0x8c // 年
55 #define d02_weeks 0x8a // 星期
C51 COMPILER V8.02 縚制系統(tǒng) 08/08/2008 18:31:54 PAGE 2
56 #define d02_month 0x88 // 月
57 #define d02_day 0x86 // 日
58 #define d02_hour 0x84 // 時
59 #define d02_minute 0x82 // 分
60 #define d02_second 0x80 // 秒
61 #define d02_signs 0xc0 // 系統(tǒng)狀態(tài)(記錄設(shè)置標記)
62 #define d02_passw 0xc2 // 密碼寄存器首位(有3位下位地址加2,初始值為:741456)
63 #define d02_alm 0xc8 // 鬧鈴時間小時位(下位為分鐘位加2)
64 #define d02_temp 0xcc // 溫度上限警報(有兩位下位位下限加2)
65 #define d02_initsi 0xd4 // 1302初始化標記(為0xb4時,說明已經(jīng)初始化)
66 #define ret_ds1302() d02_rst=0;d02_sclk=0;d02_rst=1 // 1302讀寫復(fù)位
67 #define end_ds1302() d02_sclk=1;d02_rst=0 // 1302讀寫結(jié)束
68
69
70
71 /*================================= 全局變量定義 ==================================*/
72
73
74 typedef struct // 定義時間類型
75 {
76 uchar hour;
77 uchar minute;
78 uchar second;
79 }time;
80
81 typedef struct // 定義日期類型
82 {
83 uchar year;
84 uchar month;
85 uchar day;
86 uchar week;
87 }date;
88
89 typedef union // 定義溫度類型
90 {
91 int temp_data;
92 uchar t_data[2];
93 }trdata;
94
95 trdata bdata temp; // 溫度警報值暫存
96 date idata today={'8',1,1,1}; // 日期暫存
97 time idata now={0x12,0,0} , save_time={0x12,0,0};
98 // 時間暫存(now是讀出時間暫存 save_time上一時間暫存)
99 uchar idata time_tick=20,time_tick1=20,alarm_time[2],als_temp[2],
100 // T0中斷數(shù), T1中斷數(shù), 鬧鈴時間, 警報溫度
101 bl_delay=15,temp_delay=5,opera[2][12],resu[12],
102 // 背光時間, 溫度更新時間, 計算器數(shù)據(jù)寄存, 結(jié)果寄存
103 i,j,save1,temp_min=0;
104 // 計算器i/j下標,中間暫存,溫度更新(分)
105
106
107
108 uchar bdata signs=0; // 系統(tǒng)標記寄存器
109 sbit bl1=signs^7; // bl1,bl0背光選擇位(00 延時,01 常開,10 關(guān)閉)
110 sbit bl0=signs^6;
111 sbit di1=signs^5; // di1,di0顯示模式(00模式1,01模式2,10模式3)
112 sbit di0=signs^4;
113 sbit meu=signs^3; // 菜單顯示方式(0 圖片,1 文字)
114 sbit keb=signs^2; // 鍵盤鎖(0 無鎖,1加鎖)
115 sbit alm=signs^1; // 鬧鐘啟動位(0 關(guān)閉,1開啟)
116 sbit als=signs^0; // 報警啟動位(0 啟動,1關(guān)閉)
117
C51 COMPILER V8.02 縚制系統(tǒng) 08/08/2008 18:31:54 PAGE 3
118
119
120 uint bdata run_signs=0; // 運行標記寄存器
121 sbit ds18b20=run_signs^0; // 溫感器存在標記(0不存在,1存在)
122 sbit temp_pn=run_signs^1; // 溫度正負號標記(0正,1負)
123 sbit temprun=run_signs^2; // 溫感器運行標記(0否,1啟動)
124 sbit nba_tim=run_signs^3; // 籃球計時器標記(0關(guān)閉,1啟動)
125 sbit adju_si=run_signs^4; // 數(shù)字更改連續(xù)標記(1連續(xù))
126 sbit cal_del=run_signs^5; // 計算器顯示點標記(0沒有顯示)
127 sbit cal_run=run_signs^6; // 計算完畢標記(1有效)
128 sbit oth_run=run_signs^7; // 其他標記
129 sbit alm_run=run_signs^8; // 鬧鐘時間到達標記(1有效)
130 sbit dis_sig=run_signs^9; // 顯示時間標記(1有效)
131 sbit lock_op=run_signs^10; // 關(guān)鎖時間到標記(1有效)
132 sbit b20time=run_signs^11; // 溫感器重新讀溫度標記(1有效)
133 sbit t0_isr =run_signs^12; // TO中斷標記(1有效(1s)
134 sbit thl_als=run_signs^13; // 溫度警報標記
135 sbit init_d2=run_signs^14; // 模式2初始顯示
136 sbit buzstop=run_signs^15; // 蜂鳴器停止標記
137
138
139
140
141 /*================================= 字體顯示代碼 ==================================*/
142
143 uchar code weeks[7][2]={"一","二","三","四","五","六","日"}; // 星期 //圖片中文
144 uchar code menu_cn[6][8]={"調(diào) 整","工 具","設(shè) 置","保 密","版 本","退 出"};
145 uchar code menu_cn_2[6][6]={"調(diào) 整","工 具","設(shè) 置","保 密","版 本","退 出"};// 菜單文字
146 uchar code selected[2][16]={{"進入【 】\x04 "},{"設(shè)置【 】\x10 \x04 "}}; // 選框
147 uchar code secrets_menu[4][6]={"開 鎖","更 改","初始化","退 出"}; // 保密菜單中文
148 uchar code tool_menu[5][6]={"計算器","溫度計","鬧 鈴","籃球器","退 出"}; // 工具菜單中文
149 uchar code char_num[10]={"0123456789"}; // 數(shù)字顯示代碼 // 每月天數(shù)
150 uchar code dayofmonth[12]={0x31,0x28,0x31,0x30,0x31,0x30,0x31,0x31,0x30,0x31,0x30,0x31};
151 uchar code key_code[]={0xD7,0x7E,0x7D,0x7B,0xBE,0xBD,0xBB,0xDE,0xDD,0xDB,0xB7,0x77,0xEE,0xED,0xEB,0xE7};
152 uchar code ksp[4]={0x7F,0xBF,0xDF,0xEF}; // 按鍵掃描代碼
153 uchar code tool_cal[4][2]={"+ ","- ","* ","/ "}; // 運算符號
154 uchar code alm_sign[2][2]={"關(guān)","開"}; // 鬧鈴開關(guān)
155 uchar code set_bl_dm[2][3][4]={{"30秒","常開","關(guān)閉"},{"模01","模02","模03"}};
156 uchar code set_mka[3][2][4]={{"圖片","文字"},{"解鎖","加鎖"},{"開啟","關(guān)閉"}};
157 uchar code nba_oppo[8][2]={"紅","白","藍","綠","紫","灰","黃","黑"};
158 uchar code set_menu[6][4]={"背光","顯示","菜單","鍵盤","警報","退出"};
159
160
161 uchar code version[10][14]={ // 版本信息
162 {"清遠職業(yè)技術(shù)學(xué)"},
163 {" 信息科技學(xué)院"},
164 {"08屆畢業(yè)設(shè)計 "},
165 {" —05電子02班"},
166 {"作者:李錦華 "},
167 {"指導(dǎo):李祖明 "},
168 {"版本:LIJH-V1.0"},
169 {" 2008/06/19"},
170 {"謝謝你的使用!"},
171 {" (ok)\x10"}};
172
173
174 uchar code timer_tips[12][16]={ // 籃球器使用說明
175 {"使用方法: "},
176 {" (+)(-)與(*)(/)"},
177 {"分別是兩方的分數(shù)"},
178 {"加與減,(7)鍵回退"},
179 {"一秒,(8)鍵24秒復(fù)"},
C51 COMPILER V8.02 縚制系統(tǒng) 08/08/2008 18:31:54 PAGE 4
180 {"位,(9)鍵暫停與開"},
181 {"始;暫停狀態(tài)下:"},
182 {"按兩次(OK)鍵可返"},
183 {"回時鐘模式-2界面"},
184 {",(OK)鍵返回程序"},
185 {"界面,(./S)鍵兩次"},
186 {"退出程序. \x1f"}};
187
188
189
190 /*================================= 操作導(dǎo)航代碼 ==================================*/
191
192
193 typedef struct // 定義主菜單操作索引
194 {
195 uchar shaft_num;
196 uchar left_num;
197 uchar right_num;
198 }menu_index;
199
200 typedef struct // 定義導(dǎo)航更改索引
201 {
202 uchar lnum;
203 uchar rnum;
204 }index;
205
206 menu_index code index_m[6]={{3,5,1},{4,0,2},{5,1,3},{0,2,4},{1,3,5},{2,4,0}}; // 菜單導(dǎo)航
207 index code index_t[6]={{4,1},{0,2},{1,3},{2,4},{3,0}}; // 工具導(dǎo)航
208 index code index_p[5]={{3,1},{0,2},{1,3},{2,0}}; // 保密導(dǎo)航
209 index code index_s[6]={{5,1},{0,2},{1,3},{2,4},{3,5},{4,0}}; // 設(shè)置導(dǎo)航
210 index code index_a[7]={{0x81,0x91},{0x83,0x91},{0x85,0x91},{0x89,0x81},
211 {0x8b,0x81},{0x8d,0x81},{0x8f,0x91}}; // 調(diào)整下的坐標
212 index code index_temp_set[3]={{0x8b,0x81},{0x8b,0x91},{0x8f,0x91}}; // 溫度設(shè)定下的坐標
213 index code index_alm[3]={{0x8c,0x81},{0x8e,0x81},{0x8f,0x91}}; // 鬧鈴更改坐標
214 index code index_cal[3]={{0x86,0x90},{0x8e,0x80},{0x8e,0x90}}; // 計算器操作坐標
215 uchar code index_nba[4]={0x93,0x97,0x8b,0x8f}; // 籃球器設(shè)置導(dǎo)航
216
217
218
219
220
221 /*========================== 菜單圖片(寬度x高度=32*24)=============================*/
222
223 uchar code menu_pic[6][96]={
224 {// 調(diào)整
225 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x40,0x00,0x00,0x02,0x40,0x00,0x00,0x02,
226 0x40,0x00,0x00,0x82,0x47,0xFF,0xE1,0xC2,0x47,0xFF,0xF3,0xE2,0x47,0x38,0x68,0x02,
227 0x46,0xDF,0x68,0x82,0x46,0xDF,0x69,0xC2,0x46,0xDE,0xE8,0x82,0x46,0xDD,0xE8,0x02,
228 0x46,0xDD,0xE8,0x02,0x47,0x3D,0xE8,0x02,0x47,0xFF,0xE8,0x02,0x47,0xFF,0xE9,0xC2,
229 0x42,0x00,0x18,0x02,0x41,0xFF,0xF3,0xE2,0x40,0x00,0x01,0xC2,0x40,0x00,0x00,0x82,
230 0x40,0x00,0x00,0x02,0x40,0x00,0x00,0x02,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00},
231
232 {// 工具
233 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x40,0x00,0x00,0x02,0x40,0x00,0x03,0x82,
234 0x41,0xF0,0x07,0xC2,0x43,0xFF,0xCF,0xE2,0x47,0x3F,0xFE,0x02,0x47,0x3F,0xFE,0x02,
235 0x43,0xFF,0xCF,0xE2,0x41,0xF0,0x0F,0xC2,0x40,0x00,0x03,0x82,0x40,0x00,0x00,0x02,
236 0x40,0x00,0x03,0xC2,0x40,0x00,0x03,0xC2,0x41,0x80,0x01,0x82,0x43,0xFF,0xF3,0xC2,
237 0x47,0xFF,0xFF,0xE2,0x47,0xFF,0xFF,0xE2,0x43,0xFF,0xF3,0xC2,0x41,0x80,0x01,0x82,
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -