?? ds1820.lst
字號:
C51 COMPILER V8.05a DS1820 06/18/2007 12:13:23 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE DS1820
OBJECT MODULE PLACED IN ds1820.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ds1820.C BROWSE DEBUG OBJECTEXTEND
line level source
1 //cs1=0,cs2=1選左
2 #include <reg51.h>
3 #include <intrins.h>
4 sbit P30 = P3^0;
5 sbit P31 = P3^1;
6 sbit P32 = P3^2;
7 sbit P33 = P3^3;
8 sbit P34 = P3^4;
9 sbit P35 = P3^5;
10 sbit P36 = P3^6;
11 sbit P37 = P3^7;
12 #define LCD_DATA P2
13 #define LCD_RS P30
14 #define LCD_RW P31
15 #define LCD_E P32
16 #define LCD_CS1 P33
17 #define LCD_CS2 P34
18 #define LCD_RST P35
19 #define SELECTCS 0
20 #define SELECTCS 0
21 char code Han[]=
22 { 0x10,0x60,0x01,0x86,0x60,0x04,0x1C,0xE4,0x04,0x04,0x04,0xE4,0x1C,0x04,0x00,0x00,
23 0x04,0x04,0x7E,0x01,0x40,0x20,0x20,0x10,0x0B,0x04,0x0B,0x10,0x30,0x60,0x20,0x00,
24 /*0x00,0x10,0x61,0x06,0xC0,0x30,0x02,0x3E,0xC2,0x02,0x82,0x62,0x1F,0x02,0x00,0x00,
25 0x00,0x02,0x02,0x3F,0x20,0x20,0x10,0x08,0x05,0x02,0x05,0x08,0x10,0x30,0x10,0x00, */
26 };
27 /*-- 文字: 字 --*/
28 char code Zi[]=
29 {
30 0x00,0x00,0x10,0x0C,0x14,0x14,0x14,0x15,0xD6,0x54,0x34,0x14,0x14,0x8C,0x00,0x00,
31 0x00,0x01,0x01,0x01,0x01,0x01,0x11,0x21,0x1F,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
32 };
33 void LCD_Check_Busy1(void)
34 {
35 1 while(1)
36 1 {
37 2 LCD_E = 0;
38 2 LCD_RS = 0;
39 2 LCD_RW = 1;
40 2 LCD_DATA = 0xff;
41 2 LCD_E = 1;
42 2 if(!(LCD_DATA&0X80)) break;
43 2 }
44 1 LCD_E = 0;
45 1 }
46 void LCD_Check_Busy2(void)
47 {
48 1 while(1)
49 1 {
50 2 LCD_E = 0;
51 2 LCD_RS = 0;
52 2 LCD_RW = 1;
53 2 LCD_DATA = 0xff;
54 2 LCD_E = 1;
55 2 if(!(LCD_DATA&0X80)) break;
C51 COMPILER V8.05a DS1820 06/18/2007 12:13:23 PAGE 2
56 2 }
57 1 LCD_E = 0;
58 1 }
59 void LCD_SELECT1(void)
60 {
61 1 LCD_CS1=0;
62 1 LCD_CS2=1;
63 1 }
64 void LCD_SELECT2(void)
65 {
66 1 LCD_CS1=1;
67 1 LCD_CS2=0;
68 1 }
69 void LCD_WriteCommand1(char ch)
70 { LCD_SELECT1();
71 1 LCD_Check_Busy1(); //判斷LCD是否處于忙狀態(tài)
72 1
73 1 LCD_RW=0;
74 1 LCD_RS=0;
75 1 LCD_DATA=ch;
76 1 LCD_E=1;
77 1 LCD_E=0;
78 1
79 1 }
80 void LCD_WriteCommand2(char ch)
81 {
82 1 LCD_SELECT2();
83 1 LCD_Check_Busy2();
84 1 LCD_RW=0;
85 1 LCD_RS=0;
86 1 LCD_DATA=ch;
87 1 LCD_E=1;
88 1 LCD_E=0;
89 1
90 1 }
91 void LCD_WriteData1(char ch)
92 {
93 1 LCD_SELECT1();
94 1 LCD_Check_Busy1();
95 1 LCD_RW=0;
96 1 LCD_RS=1;
97 1 LCD_DATA=ch;
98 1 LCD_E=1;
99 1 LCD_E=0;
100 1
101 1 }
102 void LCD_WriteData2(char ch)
103 {
104 1 LCD_SELECT2();
105 1 LCD_Check_Busy2();
106 1 LCD_RW=0;
107 1 LCD_RS=1;
108 1 LCD_DATA=ch;
109 1 LCD_E=1;
110 1 LCD_E=0;
111 1
112 1 }
113
114 void Delay1ms(unsigned char T)
115 {
116 1 unsigned char i,j;
117 1 for(i=0;i<T;i++)
C51 COMPILER V8.05a DS1820 06/18/2007 12:13:23 PAGE 3
118 1 for(j=0;j<250;j++)
119 1 _nop_();
120 1 }
121
122 void Delay1s(unsigned char T)
123 {
124 1 while (T)
125 1 {
126 2 Delay1ms(200);
127 2 Delay1ms(200);
128 2 Delay1ms(200);
129 2 Delay1ms(200);
130 2 Delay1ms(200);
131 2 T--;
132 2 }
133 1 }
134 void LCD_WriteHZ(char x,char y,char *Dot)
135 {
136 1 char i;
137 1 for (i=0;i<32;i++)
138 1 {
139 2 if ((x+i%16)<64) //橫向坐標小于64時在左屏顯示漢字
140 2 {
141 3 LCD_WriteCommand1(0xB8+y+i/16);
142 3 LCD_WriteCommand1(0x40+x+i%16);
143 3 LCD_WriteData1(Dot[i]);
144 3 }
145 2 else //橫向坐標大于64時在右屏顯示漢字
146 2 {
147 3 LCD_WriteCommand2(0xB8+y+i/16);
148 3 LCD_WriteCommand2(0x40+x-64+i%16);
149 3 LCD_WriteData2(Dot[i]);
150 3 }
151 2 }
152 1 }
153 void DispBmp(char *buf) //顯示一幅位圖
154 {
155 1 int i,j;
156 1 for (j=0;j<8;j++) //顯示位圖
157 1 {
158 2 LCD_WriteCommand1(0xB8+j);
159 2 LCD_WriteCommand1(0x40);
160 2 for (i=0;i<64;i++)
161 2 LCD_WriteData1(buf[(j*2)*64+i]);
162 2 LCD_WriteCommand2(0xB8+j);
163 2 LCD_WriteCommand2(0x40);
164 2 for (i=0;i<64;i++)
165 2 LCD_WriteData2(buf[(j*2+1)*64+i]);
166 2 }
167 1 }
168 void InitLCD(void)
169 {
170 1 char i,j;
171 1 LCD_RST=0;
172 1 Delay1ms(1);
173 1 LCD_RST=1;
174 1 LCD_WriteCommand1(0xc0);
175 1 LCD_WriteCommand2(0xc0);
176 1 LCD_WriteCommand1(0x3f); //開顯示
177 1 LCD_WriteCommand2(0x3f);
178 1 for (j=0;j<8;j++) //清屏
179 1 {
C51 COMPILER V8.05a DS1820 06/18/2007 12:13:23 PAGE 4
180 2 LCD_WriteCommand1(0xB8+j); //清左半屏
181 2 LCD_WriteCommand1(0x40);
182 2 for (i=0;i<64;i++)
183 2 LCD_WriteData1(0x00);
184 2 LCD_WriteCommand2(0xB8+j); //清右半屏
185 2 LCD_WriteCommand2(0x40);
186 2 for (i=0;i<64;i++)
187 2 LCD_WriteData2(0x00);
188 2 }
189 1 }
190 void main (void)
191 {
192 1 InitLCD();
193 1 while(1)
194 1 {
195 2 DispBmp(screen1); //顯示位圖"新華龍電子-單片機推廣應用急先鋒!"
*** ERROR C202 IN LINE 195 OF DS1820.C: 'screen1': undefined identifier
196 2 Delay1s(1);
197 2 DispBmp(screen2); //顯示位圖"換代創(chuàng)新后的51-高速SOC美國silicon labs 8051F"
*** ERROR C202 IN LINE 197 OF DS1820.C: 'screen2': undefined identifier
198 2 Delay1s(1);
199 2 InitLCD(); //清屏
200 2 LCD_WriteHZ(0,4,Han); //顯示16*16點陣漢字'漢'
201 2 Delay1ms(100);
202 2 LCD_WriteHZ(60,3,Zi); //顯示16*16點陣漢字'字'
203 2 Delay1s(1);
204 2
205 2 }
206 1 }
C51 COMPILATION COMPLETE. 0 WARNING(S), 2 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -