📄 display.lst
字号:
C51 COMPILER V8.05a DISPLAY 07/22/2007 11:27:38 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE DISPLAY
OBJECT MODULE PLACED IN display.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE display.C ROM(SMALL) BROWSE DEBUG OBJECTEXTEND
line level source
1 //cs1=0,cs2=1选左
2 #include <reg51.h>
3 #include <intrins.h>
4 sbit P10 = P1^0;
5 sbit P11 = P1^1;
6 sbit P12 = P1^2;
7 sbit P13 = P1^3;
8 sbit P14 = P1^4;
9 sbit P15 = P1^5;
10 sbit P16 = P1^6;
11 sbit P17 = P1^7;
12 sbit button1=P0^0;
13 sbit button2=P0^1;
14 sbit button3=P0^2;
15 sbit button4=P0^3;
16 sbit DataPortDS1820 = P1^6;
17 #define button P0;
18 #define LCD_DATA P2
19 #define LCD_RS P10
20 #define LCD_RW P11
21 #define LCD_E P12
22 #define LCD_CS1 P13
23 #define LCD_CS2 P14
24 #define LCD_RST P15
25 #define SELECTCS 0
26
27 char code wen[]= //温
28 {0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,
29 0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00,
30
31
32
33 };
34 char code du[]= //度
35 {
36 0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,
37 0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00,
38 };
39 char code shuzi[10][16]=
40 { //
41 {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},//0
42 {0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},//1
43 {0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00}, //2
44 {0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,0x00}, //3
45 {0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00},//4
46 {0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00},//5
47 {0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00},//6
48 {0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00},//7
49 {0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00},//8
50 {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00}//9
51 };
52 char code Han[]=
53 { 0x10,0x60,0x01,0x86,0x60,0x04,0x1C,0xE4,0x04,0x04,0x04,0xE4,0x1C,0x04,0x00,0x00,
54 0x04,0x04,0x7E,0x01,0x40,0x20,0x20,0x10,0x0B,0x04,0x0B,0x10,0x30,0x60,0x20,0x00,
55 /*0x00,0x10,0x61,0x06,0xC0,0x30,0x02,0x3E,0xC2,0x02,0x82,0x62,0x1F,0x02,0x00,0x00,
C51 COMPILER V8.05a DISPLAY 07/22/2007 11:27:38 PAGE 2
56 0x00,0x02,0x02,0x3F,0x20,0x20,0x10,0x08,0x05,0x02,0x05,0x08,0x10,0x30,0x10,0x00, */
57 };
58 /*-- 文字: 字 --*/
59 char code Zi[]=
60 {
61 0x00,0x00,0x10,0x0C,0x14,0x14,0x14,0x15,0xD6,0x54,0x34,0x14,0x14,0x8C,0x00,0x00,
62 0x00,0x01,0x01,0x01,0x01,0x01,0x11,0x21,0x1F,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
63 };
64 void LCD_Check_Busy1(void)
65 {
66 1 while(1)
67 1 {
68 2 LCD_E = 0;
69 2 LCD_RS = 0;
70 2 LCD_RW = 1;
71 2 LCD_DATA = 0xff;
72 2 LCD_E = 1;
73 2 if(!(LCD_DATA&0X80)) break;
74 2 }
75 1 LCD_E = 0;
76 1 }
77 void LCD_Check_Busy2(void)
78 {
79 1 while(1)
80 1 {
81 2 LCD_E = 0;
82 2 LCD_RS = 0;
83 2 LCD_RW = 1;
84 2 LCD_DATA = 0xff;
85 2 LCD_E = 1;
86 2 if(!(LCD_DATA&0X80)) break;
87 2 }
88 1 LCD_E = 0;
89 1 }
90 void LCD_SELECT1(void)
91 {
92 1 LCD_CS1=0;
93 1 LCD_CS2=1;
94 1 }
95 void LCD_SELECT2(void)
96 {
97 1 LCD_CS1=1;
98 1 LCD_CS2=0;
99 1 }
100 void LCD_WriteCommand1(char ch)
101 { LCD_SELECT1();
102 1 LCD_Check_Busy1(); //判断LCD是否处于忙状态
103 1
104 1 LCD_RW=0;
105 1 LCD_RS=0;
106 1 LCD_DATA=ch;
107 1 LCD_E=1;
108 1 LCD_E=0;
109 1
110 1 }
111 void LCD_WriteCommand2(char ch)
112 {
113 1 LCD_SELECT2();
114 1 LCD_Check_Busy2();
115 1 LCD_RW=0;
116 1 LCD_RS=0;
117 1 LCD_DATA=ch;
C51 COMPILER V8.05a DISPLAY 07/22/2007 11:27:38 PAGE 3
118 1 LCD_E=1;
119 1 LCD_E=0;
120 1
121 1 }
122 void LCD_WriteData1(char ch)
123 {
124 1 LCD_SELECT1();
125 1 LCD_Check_Busy1();
126 1 LCD_RW=0;
127 1 LCD_RS=1;
128 1 LCD_DATA=ch;
129 1 LCD_E=1;
130 1 LCD_E=0;
131 1
132 1 }
133 void LCD_WriteData2(char ch)
134 {
135 1 LCD_SELECT2();
136 1 LCD_Check_Busy2();
137 1 LCD_RW=0;
138 1 LCD_RS=1;
139 1 LCD_DATA=ch;
140 1 LCD_E=1;
141 1 LCD_E=0;
142 1
143 1 }
144
145 void Delay1ms(unsigned char T)
146 {
147 1 unsigned char i,j;
148 1 for(i=0;i<T;i++)
149 1 for(j=0;j<250;j++)
150 1 _nop_();_nop_();_nop_();
151 1 }
152 void Delay1s(unsigned char T)
153 {
154 1 while (T)
155 1 {
156 2 Delay1ms(200);
157 2 Delay1ms(200);
158 2 Delay1ms(200);
159 2 Delay1ms(200);
160 2 Delay1ms(200);
161 2 T--;
162 2 }
163 1 }
164 void LCD_WriteHZ(char x,char y,char *Dot)
165 {
166 1 char i;
167 1 for (i=0;i<32;i++)
168 1 {
169 2 if ((x+i%16)<64) //横向坐标小于64时在左屏显示汉字
170 2 {
171 3 LCD_WriteCommand1(0xB8+y+i/16);
172 3 LCD_WriteCommand1(0x40+x+i%16);
173 3 LCD_WriteData1(Dot[i]);
174 3 }
175 2 else //横向坐标大于64时在右屏显示汉字
176 2 {
177 3 LCD_WriteCommand2(0xB8+y+i/16);
178 3 LCD_WriteCommand2(0x40+x-64+i%16);
179 3 LCD_WriteData2(Dot[i]);
C51 COMPILER V8.05a DISPLAY 07/22/2007 11:27:38 PAGE 4
180 3 }
181 2 }
182 1 }
183 void LCD_WriteSZ(char x,char y,char *Dot)
184 {
185 1 char i;
186 1 for (i=0;i<16;i++)
187 1 {
188 2 if ((x+i%8)<64) //横向坐标小于64时在左屏显示汉字
189 2 {
190 3 LCD_WriteCommand1(0xB8+y+i/8);
191 3 LCD_WriteCommand1(0x40+x+i%8);
192 3 LCD_WriteData1(Dot[i]);
193 3 }
194 2 else //横向坐标大于64时在右屏显示汉字
195 2 {
196 3 LCD_WriteCommand2(0xB8+y+i/8);
197 3 LCD_WriteCommand2(0x40+x-64+i%8);
198 3 LCD_WriteData2(Dot[i]);
199 3 }
200 2 }
201 1 }
202 void DispBmp(char *buf) //显示一幅位图
203 {
204 1 int i,j;
205 1 for (j=0;j<8;j++) //显示位图
206 1 {
207 2 LCD_WriteCommand1(0xB8+j);
208 2 LCD_WriteCommand1(0x40);
209 2 for (i=0;i<64;i++)
210 2 LCD_WriteData1(buf[(j*2)*64+i]);
211 2 LCD_WriteCommand2(0xB8+j);
212 2 LCD_WriteCommand2(0x40);
213 2 for (i=0;i<64;i++)
214 2 LCD_WriteData2(buf[(j*2+1)*64+i]);
215 2 }
216 1 }
217 void InitLCD(void)
218 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -