📄 display.lst
字号:
C51 COMPILER V7.09 DISPLAY 05/17/2006 14:57:10 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE DISPLAY
OBJECT MODULE PLACED IN display.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE display.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <absacc.h>
2 #include <reg51.h>
3 #include "display_drv.h"
4 #include "font.h"
5 #include "font2.h"
6
7 #include <absacc.h>
8
9
10 #define DWPort0 XBYTE[0x8002]
11 #define DRPort0 XBYTE[0x8003]
12 #define IWPort0 XBYTE[0x8000]
13 #define IRPort0 XBYTE[0x8001]
14 #define DWPort1 XBYTE[0x9002]
15 #define DRPort1 XBYTE[0x9003]
16 #define IWPort1 XBYTE[0x9000]
17 #define IRPort1 XBYTE[0x9001]
18
19 unsigned int data Dispointer;
20
21 sbit lcd_cs0=P1^4;
22 sbit lcd_cs1=P1^3;
23 sbit lcd_res=P1^5;
24 sbit lcd_rw=P3^6;
25 sbit lcd_EN=P1^2;
26 sbit lcd_DC=P3^7;
27
28 /*void main(void){
29 unsigned char k;
30 display_on();
31 cls();
32 display_top(0);
33 Set_Display_Add(0);
34 for(k=128;k<255;k++)
35 {
36 putchar(k);
37 }
38 putchar(255);
39 display_on();
40 cls();
41 display_top(0);
42 Set_Display_Add(0);
43 while(1){
44
45 }
46 }
47 */
48 void display_init(void)
49 {
50 1 display_on();
51 1 display_top(0);
52 1 cls();
53 1 lcd_res=1;
54 1 }
55
C51 COMPILER V7.09 DISPLAY 05/17/2006 14:57:10 PAGE 2
56 void lcddelay()
57 {
58 1 unsigned char k;
59 1 for(k=0;k<10;k++);;
60 1 }
61
62 void printf(unsigned char code *screen)
63 {
64 1 while (*screen != '\0')
65 1 {
66 2 putchar(*screen++);
67 2 }
68 1 }
69
70 bit naga=0;
71 #if font_select
72 void putchar(unsigned char a){
73 1 unsigned char *p;
74 1 if(a=='\n'){
75 2 Set_Display_Add((Dispointer&0x380)+0x80);
76 2 }
77 1 else
78 1 {
79 2 p=font5x7+(a*5);
80 2 if(!naga){
81 3 Display(*p);
82 3 p++;
83 3 Display(*p);
84 3 p++;
85 3 Display(*p);
86 3 p++;
87 3 Display(*p);
88 3 p++;
89 3 Display(*p);
90 3 }
91 2 else
92 2 {
93 3 Display(~(*p));
94 3 p++;
95 3 Display(~(*p));
96 3 p++;
97 3 Display(~(*p));
98 3 p++;
99 3 Display(~(*p));
100 3 p++;
101 3 Display(~(*p));
102 3 }
103 2 }
104 1 }
105 #else
void putchar(unsigned char a){
unsigned char *p;
if(a=='\n'){
Set_Display_Add((Dispointer&0x380)+0x80);
}
else
{
p=Character8x8+(a*8);
Display(*p);
p++;
Display(*p);
p++;
C51 COMPILER V7.09 DISPLAY 05/17/2006 14:57:10 PAGE 3
Display(*p);
p++;
Display(*p);
p++;
Display(*p);
p++;
Display(*p);
p++;
Display(*p);
p++;
Display(*p);
}
}
#endif
132
133 /*
134 void DisplayArray(Uchar s[]){
135 unsigned char *p;
136 unsigned int add;
137 p=s;
138 Set_Display_Add(0);
139 for(add=0;add<1024;add++){
140 Display(*p);
141 p++;
142 }
143 }*/
144 #if array_display
145 void DisplayArray(unsigned char s[]){
146 1 unsigned char *p;
147 1 unsigned char k,j;
148 1 p=s;
149 1 for(k=0;k<8;k++){
150 2 SetCommand(0xb8+k,0);
151 2 SetCommand(0x40,0);
152 2 for(j=0;j<64;j++)
153 2 {
154 3 WriteData(*p,0);
155 3 p++;
156 3 }
157 2 SetCommand(0xb8+k,1);
158 2 SetCommand(0x40,1);
159 2 for(j=0;j<64;j++)
160 2 {
161 3 WriteData(*p,1);
162 3 p++;
163 3 }
164 2 }
165 1
166 1 }
167 #endif
168
169
170 static bit bdata flag;
171 void Display(unsigned char dat){
172 1 if((Dispointer&0x3f)==0){
173 2 flag=((Dispointer&0x40)==0x40);
174 2 SetCommand(0xb8+((Dispointer&0x380)>>7),flag);
175 2 SetCommand(0x40+(Dispointer&0x3f),flag);
176 2 }
177 1 WriteData(dat,flag);
178 1 Dispointer++; //此处Dispointer有可能越界,但只是用了低10位,正好利用越界让低10位以模1024循环,Dispoint
-er只要取低10位即可,不用写限制语句
C51 COMPILER V7.09 DISPLAY 05/17/2006 14:57:10 PAGE 4
179 1 }
180
181
182
183 unsigned char GetDisplay(){
184 1 if((Dispointer&0x3f)==0){
185 2 flag=((Dispointer&0x40)==0x40);
186 2 SetCommand(0xb8+((Dispointer&0x380)>>7),flag);
187 2 SetCommand(0x40+(Dispointer&0x3f),flag);
188 2 }
189 1
190 1 Dispointer++; //此处Dispointer有可能越界,但只是用了低10位,正好利用越界让低10位以模1024循环,Dispoint
-er只要取低10位即可,不用写限制语句
191 1 return ReadData(flag);
192 1 }
193
194 void GetNot(unsigned int start,unsigned int end){
195 1 unsigned char data dis;
196 1 while(start<=end){
197 2 Set_Display_Add(start);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -