📄 shiyan.lst
字号:
C51 COMPILER V7.50 SHIYAN 12/08/2006 13:58:19 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SHIYAN
OBJECT MODULE PLACED IN shiyan.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE shiyan.c DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include <intrins.h>
3
4 #define GDM12864ADataPort P1 //LCD数据线
5
6 sbit DI=P2^2; // 数据\指令 选择
7 sbit RW=P2^1; // 读\写 选择
8 sbit EN=P2^0; // 读\写使能
9 sbit cs1=P2^4; // 片选1
10 sbit cs2=P2^3; // 片选2
11
12 unsigned char i,j,t;
13
14 /*--------函数列表-------*/
15
16 /*----------------------------------------------------------------------------------------------------*/
17 //状态检查
18 void CheckState()
19 {
20 1 unsigned char dat;
21 1 DI=0;
22 1 RW=1;
23 1 do{
24 2 GDM12864ADataPort=0x00;
25 2 EN=1;
26 2 dat=GDM12864ADataPort;
27 2 EN=0;
28 2 dat=0x80 & dat; //仅当第7位为0时才可操作(判别busy信号)
29 2 }while(!(dat==0x00));
30 1 }
31 /*-----------------------------------------------------------------------------------------------------*/
32 //向LCD发送命令
33 //command :命令
34 SendCommandToLCD(unsigned char command)
35 {
36 1 CheckState();
37 1 RW=0;
38 1 GDM12864ADataPort=command;
39 1 EN=1; EN=0;
40 1 }
41 /*----------------------------------------------------------------------------------------------------*/
42 //写显示数据
43 //dat:显示数据
44 void WriteByte(unsigned char dat)
45 {
46 1 CheckState();
47 1 DI=1; RW=0;
48 1 GDM12864ADataPort=dat;
49 1 EN=1; EN=0;
50 1 }
51 /*----------------------------------------------------------------------------------------------------*/
52 //读显示数据
53 unsigned char ReadByte()
54 {
55 1 unsigned char dat;
C51 COMPILER V7.50 SHIYAN 12/08/2006 13:58:19 PAGE 2
56 1 CheckState();
57 1 DI=1; RW=1;
58 1 GDM12864ADataPort=0xff;
59 1 EN=1; dat=GDM12864ADataPort; EN=0;
60 1 return(dat);
61 1 }
62 /*----------------------------------------------------------------------------------------------------*/
63 //设定行地址(页)--X 0-7
64 void SetLine(unsigned char line)
65 {
66 1 line=line & 0x07; // 0<=line<=7
67 1 line=line|0xb8; //1011 1xxx
68 1 SendCommandToLCD(line);
69 1 }
70 /*----------------------------------------------------------------------------------------------------*/
71 //设定列地址--Y 0-63
72 void SetColumn(unsigned char column)
73 {
74 1 column=column &0x3f; // 0=<column<=63
75 1 column=column | 0x40; //01xx xxxx
76 1 SendCommandToLCD(column);
77 1 }
78 /*----------------------------------------------------------------------------------------------------*/
79 //设定显示开始行--XX
80 void SetStartLine(unsigned char startline) //0--63
81 {
82 1 startline=startline & 0x07;
83 1 startline=startline|0xc0; //1100 0000
84 1 SendCommandToLCD(startline);
85 1 }
86 /*----------------------------------------------------------------------------------------------------*/
87 //开关显示
88 void SetOnOff(unsigned char onoff)
89 {
90 1 onoff=0x3e | onoff; //0011 111x
91 1 SendCommandToLCD(onoff);
92 1 }
93 /*---------------------------------------------------------------------------------------------------*/
94 //选择屏幕
95 //screen: 0-全屏,1-左屏,2-右屏
96 void SelectScreen(unsigned char screen)
97 { //cs1: 1--左; cs2: 1--右
98 1 switch(screen)
99 1 { case 0: cs1=0;//全屏
100 2 _nop_(); _nop_(); _nop_();
101 2 cs2=0;
102 2 _nop_(); _nop_(); _nop_();
103 2 break;
104 2 case 1: cs1=0;//左屏
105 2 _nop_(); _nop_(); _nop_();
106 2 cs2=1;
107 2 _nop_(); _nop_(); _nop_();
108 2 break;
109 2 case 2: cs1=1;//右屏
110 2 _nop_(); _nop_(); _nop_();
111 2 cs2=0;
112 2 _nop_(); _nop_(); _nop_();
113 2 break;
114 2 }
115 1 }
116 /*---------------------------------------------------------------------------------------------------*/
117 //延时
C51 COMPILER V7.50 SHIYAN 12/08/2006 13:58:19 PAGE 3
118 GDM12864delay()
119 {
120 1 unsigned int i=500;
121 1 while(i--) {;}
122 1 }
123
124 /*---------------------------------------------------------------------------------------------------*/
125 //清屏
126 //screen: 0-全屏,1-左屏,2-右
127 void ClearScreen(unsigned char screen)
128 { unsigned char i,j;
129 1 SelectScreen(screen);
130 1 for(i=0;i<8;i++){
131 2 SetLine(i);
132 2 for(j=0;j<128;j++){
133 3 WriteByte(0x00);
134 3 }
135 2 }
136 1
137 1 }
138 /*---------------------------------------------------------------------------------------------------*/
139 //初始化LCD
140 void InitLCD()
141 { unsigned char i=250; //延时
142 1 while(i--);
143 1
144 1 SelectScreen(0);
145 1 SetOnOff(0); //关显示
146 1
147 1 ClearScreen(0);//清屏
148 1
149 1 SelectScreen(0);
150 1 SetOnOff(1); //开显示
151 1 SelectScreen(0);
152 1 SetStartLine(0); //开始行:0
153 1 }
154 /*----------------------------------------------------------------------------------------------------*/
155
156
157
158 /*----------------------------------------------------------------------------------------------*/
159 unsigned char code ASC[]={
160 /*.--0x2E */
161 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
162 0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,
163
164 /*'/'--0x2F */
165 0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x00,
166 0x0C,0x06,0x03,0x01,0x00,0x00,0x00,0x00,
167
168 /*0--0x30 */
169 0xF8,0xFC,0x04,0xC4,0x24,0xFC,0xF8,0x00,
170 0x07,0x0F,0x09,0x08,0x08,0x0F,0x07,0x00,
171
172 /*1--0x31 */
173 0x00,0x10,0x18,0xFC,0xFC,0x00,0x00,0x00,
174 0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00,
175
176 /*2--0x32 */
177 0x08,0x0C,0x84,0xC4,0x64,0x3C,0x18,0x00,
178 0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0C,0x00,
179
C51 COMPILER V7.50 SHIYAN 12/08/2006 13:58:19 PAGE 4
180 /*3--0x33 */
181 0x08,0x0C,0x44,0x44,0x44,0xFC,0xB8,0x00,
182 0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00,
183
184 /*4--0x34 */
185 0xC0,0xE0,0xB0,0x98,0xFC,0xFC,0x80,0x00,
186 0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,
187
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -