📄 lcd.lst
字号:
C51 COMPILER V8.02 LCD 03/23/2007 17:55:12 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: d:\program files\Keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <absacc.h>
2 #include <intrins.h>
3 #include <reg51.h>
4 #include "library.h"
5 #define uchar unsigned char
6 #define DataPort P1
7 sbit CS1=P2^7;
*** ERROR C141 IN LINE 7 OF LCD.C: syntax error near 'sbit'
*** ERROR C247 IN LINE 7 OF LCD.C: non-address/-constant initializer
8 sbit CS2=P2^6;
9 sbit DI=P2^5;
10 sbit R_W=P2^4;
11 sbit E=P2^3;
12 //写显示数据
13 void write_data(uchar dat)
14 {
15 1 DI=1;
16 1 R_W=0;
17 1 DataPort=dat;
18 1 E=1;
19 1 E=0;
20 1 }
21
22 //发送指令
23 void send_data(uchar dat)
24 {
25 1 DI=0;
26 1 R_W=0;
27 1 DataPort=dat;
28 1 E=1;
29 1 E=0;
30 1 }
31 //显示开关
32 void display_onoff(uchar onoff)
33 {
34 1 onoff&=0x3f;
35 1 onoff|=0x3e;
36 1 send_data(onoff);
37 1 }
38 //设置行地址(0-7)
39 void set_line(uchar line)
40 {
41 1 line&=0xbf;
42 1 line|=0xb7;
43 1 send_data(line);
44 1 }
45 //设置列地址(0-63)
46 void set_column(uchar column)
47 {
48 1 column&=0x7f;
49 1 column|=0x40;
50 1 send_data(column);
51 1 }
52 //选择半屏
53 void select_screem(uchar screem)
C51 COMPILER V8.02 LCD 03/23/2007 17:55:12 PAGE 2
54 {
55 1 switch(screem)
56 1 { case 0:
57 2 CS1=0;
*** ERROR C183 IN LINE 57 OF LCD.C: unmodifiable lvalue
58 2 CS2=0;
59 2 break;
60 2 case 1:
61 2 CS1=0;
*** ERROR C183 IN LINE 61 OF LCD.C: unmodifiable lvalue
62 2 CS2=1;
63 2 break;
64 2 case 2:
65 2 CS1=1;
*** ERROR C183 IN LINE 65 OF LCD.C: unmodifiable lvalue
66 2 CS2=0;
67 2 break;
68 2 case 3:
69 2 CS1=1;
*** ERROR C183 IN LINE 69 OF LCD.C: unmodifiable lvalue
70 2 CS2=1;
71 2 break;
72 2 default:
73 2 break;
74 2 }
75 1 }
76 //clear screem
77 void clear_screem(uchar screem)
78 { uchar i,j;
79 1 select_screem(screem);
80 1 for(i=0;i<8;i++)
81 1 {
82 2 set_line(i);
83 2 for(j=0;j<64;j++)
84 2 {
85 3 write_data(0x00);
86 3 }
87 2 }
88 1
89 1 }
90 //显示8*8点阵单元
91 void show_unit(uchar line,uchar column,uchar * address)
92 {
93 1 uchar i,j;
94 1 if(column<64)
95 1 {
96 2 select_screem(1);
97 2 set_line(line);
98 2 set_column(column);
99 2 for(i=0;i<8;i++)
100 2 {
101 3 if(column+i>63)
102 3 {
103 4 select_screem(2);
104 4 set_column(column-64+i);
105 4 write_data(*(address+i));
106 4 }
107 3 else
108 3 { write_data(*(address+i));}
109 3 }
110 2 }
111 1
C51 COMPILER V8.02 LCD 03/23/2007 17:55:12 PAGE 3
112 1 else
113 1 {
114 2 select_screem(2);
115 2 set_line(line);
116 2 set_column(column);
117 2 for(i=0;i<8;i++)
118 2 {
119 3 if(column+i>63)
120 3 {
121 4 select_screem(1);
122 4 set_column(column-64+i);
123 4 write_data(*(address+i));
124 4 }
125 3 else
126 3 { write_data(*(address+i)); }
127 3 }
128 2 }
129 1 }
130 //显示16*8点阵字符
131 void show_number(uchar line ,uchar column,uchar num)
132 { uchar * address;
133 1 address=&number[num][0];
134 1 show_unit(line,column,address);
135 1 show_unit(line+1,column,*(address+8));
136 1 }
137 //显示16*16点阵汉字
138 void show_china(uchar line ,uchar column,uchar num)
139 {
140 1 uchar * address;
141 1 address=&number[num][0];
142 1 show_unit(line,column,address);
143 1 show_unit(line,column+8,*(address+8));
144 1 show_unit(line+1,column,*(address+16));
145 1 show_unit(line+1,column+8,*(address+24));
146 1 }
147 void Init_LCD(void)
148 {
149 1 display_onoff(1);
150 1 clear_screem(1);
151 1 clear_screem(2);
152 1 show_number(0,0,0);
153 1 }
C51 COMPILATION COMPLETE. 0 WARNING(S), 6 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -