?? daxianshi.lst
字號:
C51 COMPILER V8.02 DAXIANSHI 03/05/2009 16:01:55 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DAXIANSHI
OBJECT MODULE PLACED IN DAXIANSHI.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DAXIANSHI.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<stdio.h>
2 #include<reg51.h>
3 #include<intrins.h>
4 #include <absacc.h>
5
6 #define uchar unsigned char
7 #define LCD_DATA P0 //數(shù)據(jù)口
8 #define LCD_GO_HOME 0x02 //AC=0,光標(biāo)、畫面回HOME位
9
10 //輸入方式設(shè)置
11 #define LCD_AC_AUTO_INCREMENT 0x06 //數(shù)據(jù)讀、寫操作后,AC自動增一
12 #define LCD_AC_AUTO_DECREASE 0x04 //數(shù)據(jù)讀、寫操作后,AC自動減一
13 #define LCD_MOVE_ENABLE 0x05 //數(shù)據(jù)讀、寫操作,畫面平移
14 #define LCD_MOVE_DISENABLE 0x04 //數(shù)據(jù)讀、寫操作,畫面不動
15
16 //設(shè)置顯示、光標(biāo)及閃爍開、關(guān)
17 #define LCD_DISPLAY_ON 0x0C //顯示開
18 #define LCD_DISPLAY_OFF 0x08 //顯示關(guān)
19 #define LCD_CURSOR_ON 0x0A //光標(biāo)顯示
20 #define LCD_CURSOR_OFF 0x08 //光標(biāo)不顯示
21 #define LCD_CURSOR_BLINK_ON 0x09 //光標(biāo)閃爍
22 #define LCD_CURSOR_BLINK_OFF 0x08 //光標(biāo)不閃爍
23
24 //光標(biāo)、畫面移動,不影響DDRAM
25 #define LCD_LEFT_MOVE 0x18 //LCD顯示左移一位
26 #define LCD_RIGHT_MOVE 0x1C //LCD顯示右移一位
27 #define LCD_CURSOR_LEFT_MOVE 0x10 //光標(biāo)左移一位
28 #define LCD_CURSOR_RIGHT_MOVE 0x14 //光標(biāo)右移一位
29
30 //工作方式設(shè)置
31 #define LCD_DISPLAY_DOUBLE_LINE 0x38 //兩行顯示
32 #define LCD_DISPLAY_SINGLE_LINE 0x30 //單行顯示
33
34 sbit LCD_BUSY=P0^7; //忙標(biāo)志位
35 sbit LCD_RS=P3^7; //LCD寄存器
36 sbit LCD_RW=P3^6; //LCD讀寫
37 sbit LCD_EN=P2^6; //LCD使能
38 sbit RW=P3^6;
39 sbit DA=P2^5;
40
41 //定義變量
42 uchar XPOS,YPOS;
43 uchar Tens[2]={0x01,0x02};
44 uchar counter;
45 uchar Later=0;
46 uchar out;
47 uchar DAzhi[];
48
49 /*********************************************
50 涵數(shù)名稱: Delay()
51 涵數(shù)功能: 延時
52 入口參數(shù): Void
53 出口參數(shù): Void
54 *********************************************/
55 void Delay(int number)
C51 COMPILER V8.02 DAXIANSHI 03/05/2009 16:01:55 PAGE 2
56 {
57 1 for(;number!=0;number--)
58 1 {}
59 1 }
60
61 /*********************************************
62 涵數(shù)名稱: LcdCheckBusy(void)
63 涵數(shù)功能: 判斷LCD忙信號
64 入口參數(shù): Void
65 出口參數(shù): Void
66 *********************************************/
67 void LcdCheckBusy(void) //判斷忙標(biāo)志
68 {
69 1 LCD_DATA=0xff;
70 1 LCD_RS=0; //選擇IR
71 1 LCD_RW=1; //讀操作
72 1 LCD_EN=1;
73 1 while(LCD_BUSY); //為1繼續(xù)判斷,為0時往下執(zhí)行
74 1 LCD_EN=0;
75 1 }
76
77 /*********************************************
78 涵數(shù)名稱: LCD_READ_AC()
79 涵數(shù)功能: 讀LCD光標(biāo)地址
80 入口參數(shù): void
81 出口參數(shù): Void
82 *********************************************/
83 /*void Lcd_Read_AC()
84 {
85 LCD_DATA=0xff;
86 LCD_RS=0; //選擇IR
87 LCD_RW=1; //讀操作
88 LCD_EN=1;
89 counter=LCD_DATA; //為1繼續(xù)判斷,為0時往下執(zhí)行
90 LCD_EN=0;
91 }
92
93 /*********************************************
94 涵數(shù)名稱: LcdCls(void)
95 涵數(shù)功能: 向LCD寫指令
96 入口參數(shù): void
97 出口參數(shù): Void
98 *********************************************/
99 void LcdCls(void) //LCD清屏
100 {
101 1 LcdCheckBusy();
102 1 LCD_RS=0;
103 1 LCD_RW=0;
104 1 LCD_EN=1;
105 1 LCD_DATA=1;
106 1 LCD_EN=0;
107 1 }
108
109
110 /*********************************************
111 涵數(shù)名稱: void LcdWriteInstruction()
112 涵數(shù)功能: 向LCD寫指令
113 入口參數(shù): uchar LcdInstruction
114 出口參數(shù): Void
115 *********************************************/
116
117 void LcdWriteInstruction(uchar LcdInstruction) //寫指令到LCD
C51 COMPILER V8.02 DAXIANSHI 03/05/2009 16:01:55 PAGE 3
118 {
119 1 LcdCheckBusy();
120 1 LCD_RS=0;
121 1 LCD_RW=0;
122 1 LCD_EN=1;
123 1 LCD_DATA=LcdInstruction;
124 1 LCD_EN=0;
125 1 }
126
127 /*********************************************
128 涵數(shù)名稱: LcdWriteData()
129 涵數(shù)功能: 輸出一個字節(jié)
130 入口參數(shù): uchar LcdData
131 出口參數(shù): Void
132 *********************************************/
133 void LcdWriteData(uchar LcdData) //輸出一個字節(jié)數(shù)據(jù)到LCD
134 {
135 1 LcdCheckBusy();
136 1 LCD_RS=1;
137 1 LCD_RW=0;
138 1 LCD_EN=1;
139 1 LCD_DATA=LcdData;
140 1 LCD_EN=0;
141 1 }
142
143 /*********************************************
144 涵數(shù)名稱: void LcdPos(void)
145 涵數(shù)功能: 地址計算
146 入口參數(shù): viod
147 出口參數(shù): Void
148 *********************************************/
149
150 void LcdPos(void) //顯示地址計算
151 { XPOS&=0x0f; //定義列向顯示個數(shù)為16
152 1 YPOS&=0x03; //定義顯示行數(shù)為2行
153 1 if(YPOS==0x00) //當(dāng)在第一行顯示時,橫向顯示地址從0開始,因?yàn)閷懙刂窌rD7為1,所以要或80H
154 1 LcdWriteInstruction(XPOS|0x80);
155 1 else if(YPOS==0x01)
156 1 LcdWriteInstruction((XPOS+0x40)|0x80); //當(dāng)在第二行顯示時,加40H回到第二行的第一個位置
157 1 else if(YPOS==0x02)
158 1 LcdWriteInstruction((XPOS+0x01)|0x80); //當(dāng)行數(shù)超過2時,回到起始點(diǎn)
159 1
160 1 }
161
162 /*********************************************
163 涵數(shù)名稱: void LcdInits(void)
164 涵數(shù)功能: 初始化LCD
165 入口參數(shù): void
166 出口參數(shù): Void
167 *********************************************/
168 void LcdInit(void) //初始化LCD
169 {
170 1 LcdWriteInstruction(LCD_DISPLAY_DOUBLE_LINE);
171 1 LcdWriteInstruction(LCD_DISPLAY_OFF);
172 1 LcdCls();
173 1 LcdWriteInstruction(LCD_AC_AUTO_INCREMENT);
174 1 LcdWriteInstruction(0x0f);
175 1 }
176
177
178 /*********************************************
179 涵數(shù)名稱: void LcdWDAstr()
C51 COMPILER V8.02 DAXIANSHI 03/05/2009 16:01:55 PAGE 4
180 涵數(shù)功能: 確定顯示地址并顯示字符串
181 入口參數(shù): uchar x 確定LCD的X向顯示坐標(biāo)
182 uchar y 確定LCD的Y向顯示坐標(biāo)
183 uchar s[]寫入字符串
184 uchar Len 數(shù)組長度
185 出口參數(shù): Void
186 *********************************************/
187 void LcdWDAstr(uchar x,uchar y,uchar s[],uchar Len) //地址確定
188 {
189 1 YPOS=y; //把要顯示的位置賦值
190 1 for(XPOS=x;Later<Len;XPOS++) //指針值必須要有數(shù)據(jù)
191 1 {
192 2 LcdPos();
193 2 LcdWriteData(s[Later]); //指針取內(nèi)容
194 2 Later++; //逐個顯示
195 2 }
196 1 }
197
198 /**********************************************
199 函數(shù)名稱:DA_Star()
200 函數(shù)功能:啟動DA轉(zhuǎn)換
201 函數(shù)類型:void
202 入口參數(shù):無
203 出口參數(shù):無
204 ***********************************************/
205 void DA_Star(uchar d)
206 {
207 1 RW=0;
208 1 DA=0;
209 1 _nop_();
210 1 _nop_();
211 1 _nop_();
212 1 P0=d;
213 1 _nop_();
214 1 _nop_();
215 1 _nop_();
216 1 RW=1;
217 1 DA=1;
218 1 _nop_();
219 1 _nop_();
220 1 _nop_();
221 1 _nop_();
222 1 _nop_();
223 1 _nop_();
224 1 }
225
226 void main()
227 {
228 1 LcdInit();
229 1 while(1)
230 1 {
231 2 DA_Star(0xff);
232 2 Delay(2000);
233 2 DA_Star(0x00);
234 2 Delay(2000);
235 2 Tens[Later]+=0x30;
236 2 LcdWDAstr(3,0,Tens,1);
237 2
238 2 }
239 1 }
240
241
C51 COMPILER V8.02 DAXIANSHI 03/05/2009 16:01:55 PAGE 5
242
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 249 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 6
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -