📄 nokia5110.lst
字号:
C51 COMPILER V9.00 NOKIA5110 07/01/2013 12:13:30 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE NOKIA5110
OBJECT MODULE PLACED IN ..\output\nokia5110.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ..\c_file\nokia5110.c BROWSE INCDIR(..\c_file;..\h_file;..\output;..\projec
-t) DEBUG OBJECTEXTEND PRINT(.\nokia5110.lst) OBJECT(..\output\nokia5110.obj)
line level source
1 /**************************************************************************************
2 * 子程序:底层程序 *
3 * 功能:显示器处理,系统初始化; *
4 * *
5 * *
6 ***************************************************************************************/
7 # include <intrins.h>
8 # include "stc12c5a60s2.h"
9 # include "macroandconst.h"
10 # include "zimo.h"
11 # include "nokia5110.h"
12 # include "ds1302.h"
13 # include "ADC.h"
14 # include "delay.h"
15 void system_inint()
16 {
17 1 uchar num;
18 1
19 1 EX0 = 1;//*外部中断0中断允许位;*//
20 1 IT0 = 0;//*外部中断0触发方式控制位,置0为低电平触发方式,置1为跳变触发方式;*//
21 1
22 1 TMOD = 0x11; //设置定时器模式
23 1 TH0 = (65536-50000)/256;
24 1 TL0 = (65536-50000)%256;
25 1 TF0 = 0; //清除TF0标志
26 1 TR0 = 1;
27 1 EA = 1;//*总中断控制;*//
28 1
29 1 LCD_RST=0;
30 1 Delay100ms();
31 1 LCD_RST=1;
32 1
33 1 LCD_init(); //初始化LCD模块
34 1 LCD_clear(); //清屏幕
35 1 LCD_POWER=1;
36 1 Delay100ms();
37 1 LCD_BLA=1;
38 1
39 1 BEEP=0;
40 1 //smartclock//
41 1 for(num=0;num<10;num++)
42 1 {
43 2 LCD_write_shu(num,2,num+77);
44 2 }
45 1 BEEP=1;
46 1 Delay100ms();
47 1 Delay100ms();
48 1 Delay100ms();
49 1 Delay100ms();
50 1 Delay100ms();
51 1 Delay100ms();
52 1 LCD_clear(); //清屏幕
53 1
54 1 /*您好,欢迎您使用!*/
C51 COMPILER V9.00 NOKIA5110 07/01/2013 12:13:30 PAGE 2
55 1
56 1 LCD_write_hanzi(0,0,20);
57 1 LCD_write_hanzi(1,0,21);
58 1 LCD_write_shu(4,0,88);
59 1
60 1
61 1 LCD_write_hanzi(0,2,22);
62 1 LCD_write_hanzi(1,2,23);
63 1 LCD_write_hanzi(2,2,20);
64 1 LCD_write_hanzi(3,2,24);
65 1 LCD_write_hanzi(4,2,25);
66 1 LCD_write_6x8shu(13,3,100);
67 1 LCD_write_6x8shu(13,2,99);
68 1
69 1
70 1 /*leading...*/
71 1 LCD_write_shu(2,4,'L'-29);
72 1 LCD_write_shu(3,4,'e'-87);
73 1 LCD_write_shu(4,4,'a'-87);
74 1 LCD_write_shu(5,4,'d'-87);
75 1 LCD_write_shu(6,4,'i'-87);
76 1 LCD_write_shu(7,4,'n'-87);
77 1 LCD_write_shu(8,4,'g'-87);
78 1 LCD_write_shu(9,4,89);
79 1
80 1 Delay100ms();
81 1 Delay100ms();
82 1 Delay100ms();
83 1 Delay100ms();
84 1 Delay100ms();
85 1 Delay100ms();
86 1 Delay100ms();
87 1 Delay100ms();
88 1 Delay100ms();
89 1 Delay100ms();
90 1
91 1 LCD_draw_bmp_pixel(0,0,tupian, 84,48);
92 1
93 1 Delay100ms();
94 1 Delay100ms();
95 1 Delay100ms();
96 1 Delay100ms();
97 1 Delay100ms();
98 1 Delay100ms();
99 1 Delay100ms();
100 1 Delay100ms();
101 1 Delay100ms();
102 1 Delay100ms();
103 1
104 1 LCD_clear(); //清屏幕
105 1
106 1 InitADC();
107 1
108 1 }
109
110
111
112
113 /*--------------------------------------------
114 LCD_write_byte: 使用SPI接口写数据到LCD
115 输入参数:DAT:写入的数据;
116 command :写数据/命令选择;
C51 COMPILER V9.00 NOKIA5110 07/01/2013 12:13:30 PAGE 3
117 ----------------------------------------------*/
118 void LCD_write_byte(uchar DAT, uchar command)
119 {
120 1 uchar i;
121 1 LCD_CE=0;
122 1 LCD_DC=command; //command=1为写数据,command=0为写指令
123 1 for(i=0;i<8;i++)
124 1 {
125 2 if(DAT&0x80)
126 2 LCD_SDA=1;
127 2 else
128 2 LCD_SDA=0;
129 2 DAT=DAT<<1;
130 2 LCD_SCLK=0; //LCD_SCLK上升沿接收一位数据
131 2 LCD_SCLK=1;
132 2 }
133 1 LCD_DC=1;
134 1 LCD_CE=1;
135 1 LCD_SDA=1;
136 1 }
137 /*---------------------------------------
138 LCD_init: 5110LCD初始化
139
140 ----------------------------------------- */
141 void LCD_init(void)
142 {
143 1 LCD_RST=0; //复位
144 1 delayms(1);
145 1 LCD_RST=1;
146 1 LCD_write_byte(0x21,0);//初始化Lcd,功能设定使用扩充指令
147 1 LCD_write_byte(0xc5,0);//设定液晶偏置电压//背景阴影调整;
148 1 LCD_write_byte(0x20,0);//使用基本指令
149 1 LCD_write_byte(0x0C,0);//设定显示模式,正常显示
150 1 LCD_write_byte(0x06,0); // 温度校正
151 1
152 1 }
153 /*-------------------------------------------
154 LCD_set_XY: 设置LCD坐标函数
155 输入参数:X:0-83 Y:0-5
156
157 ---------------------------------------------*/
158 void LCD_set_XY(uchar X, uchar Y)
159 {
160 1 LCD_write_byte(0x40 | Y, 0);// column 列
161 1 LCD_write_byte(0x80 | X, 0);// row 行
162 1 }
163 /*------------------------------------------
164 LCD_clear: LCD清屏函数
165
166 --------------------------------------------*/
167 void LCD_clear(void)
168 {
169 1 uchar t;
170 1 uchar k;
171 1 LCD_set_XY(0,0);
172 1 for(t=0;t<6;t++)
173 1 {
174 2 for(k=0;k<84;k++)
175 2 {
176 3 LCD_write_byte(0x00,1);
177 3
178 3 }
C51 COMPILER V9.00 NOKIA5110 07/01/2013 12:13:30 PAGE 4
179 2 }
180 1 }
181 /*---------------------------------------------
182 LCD_write_shu: 显示6(宽)*8(高)点阵列数字字母符号等半角类
183 输入参数:c:显示的字符;
184 -----------------------------------------------*/
185 void LCD_write_6x8shu(uchar row, uchar page,uchar c) //row:列 page:行 dd:字符
186 {
187 1 uchar i;
188 1
189 1 LCD_set_XY(row*6, page);// 列,页 row表示第row个8行,page表示第page个8列,坐标位(row,page)
190 1 for(i=0; i<3;i++)
191 1 {
192 2 LCD_write_byte(shuzi6x8[c*6+i],1); //数字的点阵为8*6,写上shuz90的上半部分
193 2 }
194 1
195 1 LCD_set_XY(row*6+3, page);// 列,行
196 1 for(i=3; i<6;i++)
197 1 {
198 2 LCD_write_byte(shuzi6x8[c*6+i],1); //写数字的下半部分
199 2 }
200 1 }
201 /*---------------------------------------------
202 LCD_write_shu: 显示8(宽)*16(高)点阵列数字字母符号等半角类
203 输入参数:c:显示的字符;
204 -----------------------------------------------*/
205 void LCD_write_shu(uchar row, uchar page,uchar c) //row:列 page:页 dd:字符
206 {
207 1 uchar i;
208 1
209 1 LCD_set_XY(row*8, page);// 列,页 row表示第row个8行,page表示第page个8列,坐标位(row,page)
210 1 for(i=0; i<8;i++)
211 1 {
212 2 LCD_write_byte(shuzi[c*16+i],1); //数字的点阵为16*8,写上shuz9o的上半部分
213 2 }
214 1
215 1 LCD_set_XY(row*8, page+1);// 列,页
216 1 for(i=8; i<16;i++)
217 1 {
218 2 LCD_write_byte(shuzi[c*16+i],1); //写数字的下半部分
219 2 }
220 1 }
221 /*---------------------------------------------
222 LCD_write_hanzi: 显示16(宽)*16(高)点阵列汉字等半角类
223 输入参数:c:显示的字符;
224 -----------------------------------------------*/
225 void LCD_write_hanzi(uchar row, uchar page,uchar c) //row:列 page:页 dd:字符
226 {
227 1 uchar i;
228 1
229 1 LCD_set_XY(row*16, page);// 列,页
230 1 for(i=0; i<16;i++)
231 1 {
232 2 LCD_write_byte(hanzi[c*32+i],1); //写汉子的上半部分
233 2 }
234 1
235 1 LCD_set_XY(row*16, page+1);// 列,页
236 1 for(i=16; i<32;i++)
237 1 {
238 2 LCD_write_byte(hanzi[c*32+i],1); //写汉子的下半部分
239 2 }
240 1 }
C51 COMPILER V9.00 NOKIA5110 07/01/2013 12:13:30 PAGE 5
241 /***********************************************************
242 函数名称:LCD_draw_bmp_pixel
243 函数功能:位图绘制函数
244 入口参数:X、Y :位图绘制的起始X、Y坐标;
245 *map :位图点阵数据;
246 Pix_x :位图像素(长)
247 Pix_y :位图像素(宽)
248 出口参数:无
249 备 注:
250 ***********************************************************/
251 void LCD_draw_bmp_pixel(uchar X,uchar Y,uchar *tupian, uchar Pix_x,uchar Pix_y)
252 {
253 1 uint i,n;
254 1 uchar row;
255 1 //计算位图所占行数
256 1 if (Pix_y%8==0) //如果为位图所占行数为整数
257 1 row=Pix_y/8;
258 1 else
259 1 row=Pix_y/8+1; //如果为位图所占行数不是整数
260 1
261 1 LCD_set_XY(X,Y);
262 1 for (n=0;n<row;n++) //换行
263 1 {
264 2 for(i=0;i<Pix_x;i++)
265 2 {
266 3 LCD_set_XY(X+i,Y+n);
267 3 LCD_write_byte(tupian[i+n*Pix_x], 1);
268 3 }
269 2 }
270 1 }
271
272
273
274
275
276
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 834 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 13
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 + -