?? nokia5110.lst
字號:
C51 COMPILER V7.07 NOKIA5110 04/18/2012 19:27:36 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE NOKIA5110
OBJECT MODULE PLACED IN nokia5110.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE nokia5110.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "nokia5110.h"
2 #include"zifu6x8.h"
3
4 /*********************************
5 函數名稱: WriteByteNokia(uchar cmd_data,uchar lcd_cmd)寫指令
6 功能:寫入一個字節
7 入口參數:cmd_data,lcd_cmd
8 返回參數:無
9 *********************************/
10
11 void WriteByteNokia(uchar cmd_data,uchar lcd_byte)
12 {
13 1 uchar i;
14 1
15 1 SCE_L();//NOKIA_SCE = LOW;
16 1 RST_H();//NOKIA_RST = HIGH;
17 1 if(cmd_data)//NOKIA_DC = cmd_data;
18 1 DC_H();//命令OR數據
19 1 else
20 1 DC_L();
21 1
22 1 for (i=0;i<8;i++)
23 1 {
24 2 SCLK_L();//NOKIA_SCLK= LOW;
25 2 if ((lcd_byte&0x80) == 0x80)
26 2 SDIN_H();//NOKIA_SDIN = 1;
27 2 else
28 2 SDIN_L();//NOKIA_SDIN = 0;
29 2 lcd_byte = lcd_byte<<1;
30 2 SCLK_H();//NOKIA_SCLK= HIGH;
31 2 }
32 1 }
33
34 /*********************************
35 函數名稱: WriteNokia(uchar cmd_data,uchar lcd_byte)寫指令
36 功能:寫入一個字符串
37 入口參數:cmd_data,lcd_cmd
38 返回參數:無
39 *********************************/
40 void WriteNokia(uchar cmd_data,uchar *lcd_byte)
41 {
42 1 uchar i;
43 1 SCE_L();//NOKIA_SCE = LOW;
44 1 RST_H();//NOKIA_RST = HIGH;
45 1 if(cmd_data)//NOKIA_DC = cmd_data;
46 1 DC_H(); //命令OR數據
47 1 else
48 1 DC_L();
49 1
50 1 while ((*lcd_byte) != '\0')
51 1 {
52 2 for (i=0;i<8;i++)
53 2 {
54 3 SCLK_L();//NOKIA_SCLK= LOW;
55 3 if (((*lcd_byte)&0x80) == 0x80)
C51 COMPILER V7.07 NOKIA5110 04/18/2012 19:27:36 PAGE 2
56 3 SDIN_H();//NOKIA_SDIN = 1;
57 3 else
58 3 SDIN_L();//NOKIA_SDIN = 0;
59 3 *lcd_byte = (*lcd_byte)<<1;
60 3 SCLK_H();//NOKIA_SCLK= HIGH;
61 3 }
62 2 lcd_byte++;
63 2 }
64 1 }
65
66 /*********************************
67 函數名稱: SetAddr(uchar addr_x,uchar addr_y)
68 功能:設定RAM地址
69 入口參數:uchar addr_x,uchar addr_y
70 返回參數:無
71 *********************************/
72 void SetAddr(uchar addr_x,uchar addr_y)
73 {
74 1 WriteByteNokia(CMD,0x80+addr_x);//加上0x80和0x40是設置地址所必須的控制字
75 1 WriteByteNokia(CMD,0x40+addr_y);
76 1 }
77
78 /*********************************
79 函數名稱: ClearLcd(void)清除RAM
80 入口參數:無
81 返回參數:無
82 *********************************/
83 void ClearLcd(void)
84 {
85 1 uint i;
86 1
87 1 WriteByteNokia(CMD,0x80); //將地址指向原點
88 1 WriteByteNokia(CMD,0x40);
89 1
90 1 for (i=0;i<504;i++)
91 1 {
92 2 WriteByteNokia(DAT,0x00);
93 2 }
94 1 }
95 /*********************************
96 函數名稱: LCD_init(void)
97 功能:清屏
98 入口參數:無
99 返回參數:無
100 *********************************/
101 void LCD_init(void){
102 1
103 1 P2=0xff;//設置為輸出管腳
104 1 LED_ON(); //打開背光
105 1 WriteByteNokia(0,0x21);//初始化Lcd,功能設定使用擴充指令
106 1 WriteByteNokia(0,0xC6);//設定液晶偏置電壓
107 1 WriteByteNokia(0,0x06);//溫度校正
108 1 WriteByteNokia(0,0x13);;//1:48
109 1 WriteByteNokia(0,0x20);//使用基本指令
110 1 WriteByteNokia(0,0x0C);//設定顯示模式,正常顯示
111 1 ClearLcd();
112 1 SetAddr(0,0);
113 1
114 1 }
115 /*********************************
116 函數名稱: DisplayHz(uchar addr_x,uchar addr_y,uchar *hz)
117 功能:顯示漢字
C51 COMPILER V7.07 NOKIA5110 04/18/2012 19:27:36 PAGE 3
118 入口參數:uchar addr_x,uchar addr_y,uchar *hz
119 返回參數:無
120 *********************************/
121 void DisplayHz(uchar addr_x,uchar addr_y,const unsigned char *hz)//漢字寬度為12,高度為12
122 {
123 1 uchar i=0,ch_with=12;
124 1
125 1 SetAddr(addr_x,addr_y);
126 1 for (i=0; i<ch_with*2;i++)
127 1 {
128 2 if (i==ch_with)
129 2 {
130 3 // if (i==0)
131 3 SetAddr(addr_x,addr_y+1);
132 3 // else
133 3 // SetAddr((addr_x+(ch_with+row)*i),addr_y+1);
134 3 }
135 2 WriteByteNokia(DAT,hz[i]);
136 2 }
137 1
138 1 }
139
140 /*********************************
141 函數名稱: DisplayZf(uchar addr_x,uchar addr_y,uchar *zf)
142 功能: 顯示字符
143 入口參數:uchar addr_x,uchar addr_y,uchar *hz
144 返回參數:無
145 *********************************/
146 void LCD_char_string(uchar addr_x,uchar addr_y,uchar *zf)//字符寬度為6,高度為8
147 {
148 1 uchar j,i=0; //每行最多寫14個字符
149 1 while (*zf != '\0')
150 1 {
151 2 for (j=0;j<6;j++)
152 2 {
153 3 SetAddr(addr_x+i*6+j,addr_y);
154 3 WriteByteNokia(DAT,zifu6x8[*zf-0x20][j]);
155 3 }
156 2 zf++;
157 2 i++;
158 2 }
159 1
160 1 }
161 /*********************************
162 函數名稱: LCD_write_char(uchar addr_x,uchar addr_y,uchar c)
163 功能: 在指定的位置顯示一個英文字符
164 入口參數:uchar addr_x,uchar addr_y,uchar c
165 返回參數:無
166 *********************************/
167 void LCD_one_char(uchar addr_x,uchar addr_y,uchar c)
168 {
169 1 unsigned char j;
170 1
171 1 for (j=0; j<6; j++){
172 2 SetAddr(addr_x+j,addr_y);
173 2 WriteByteNokia(DAT,zifu6x8[c-0x20][j]);
174 2 }
175 1 }
176 /*********************************
177 函數名稱: LCD_num(uchar addr_x,uchar addr_y,unsigned int num)
178 功能: 在指定的位置顯示數據
179 入口參數:uchar addr_x,uchar addr_y,unsigned int num
C51 COMPILER V7.07 NOKIA5110 04/18/2012 19:27:36 PAGE 4
180 返回參數:無
181 *********************************/
182 void LCD_num(uchar addr_x,uchar addr_y,unsigned int num)
183 {
184 1 unsigned char dat[7],i;
185 1 dat[0]=num/10000+48;
186 1 dat[1]=num%10000/1000+48;
187 1 dat[2]=num%1000/100+48;
188 1 dat[3]=num%100/10+48;
189 1 dat[4]=num%10+48;
190 1 dat[5]=32;
191 1 dat[6]='\0';
192 1 for(i=0;i<4;i++)
193 1 {
194 2 if(dat[i]==48)
195 2 dat[i]=32;
196 2 else break;
197 2 }
198 1 LCD_char_string(addr_x,addr_y,dat);
199 1
200 1 }
201
202 /*-----------------------------------------------------------------------
203 LCD_draw_map : 位圖繪制函數
204
205 輸入參數:X、Y :位圖繪制的起始X、Y坐標;
206 *map :位圖點陣數據;
207 Pix_x :位圖像素(長)
208 Pix_y :位圖像素(寬)
209
210 -----------------------------------------------------------------------*/
211
212 void LCD_draw_bmp(uchar addr_x,uchar addr_y,const unsigned char *map,
213 uchar Pix_x,uchar Pix_y)
214 {
215 1 unsigned int i,n;
216 1 unsigned char row;
217 1
218 1 if (Pix_y%8==0) row=Pix_y/8; //計算位圖所占行數
219 1 else
220 1 row=Pix_y/8+1;
221 1
222 1 for (n=0;n<row;n++)
223 1 {
224 2 SetAddr(addr_x,addr_y);
225 2
226 2 for(i=0; i<Pix_x; i++)
227 2 {
228 3 WriteByteNokia(DAT,map[i+n*Pix_x]);
229 3 }
230 2 addr_y++; //換行
231 2 }
232 1 }
233
234
235
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 711 ----
CONSTANT SIZE = 552 ----
XDATA SIZE = ---- ----
C51 COMPILER V7.07 NOKIA5110 04/18/2012 19:27:36 PAGE 5
PDATA SIZE = ---- ----
DATA SIZE = ---- 34
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -