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