📄 lcm12864.c.lst
字号:
C51 COMPILER V7.06 LCM12864_C 06/13/2003 10:55:13 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCM12864_C
OBJECT MODULE PLACED IN LCM12864.c.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCM12864.c.C BROWSE DEBUG OBJECTEXTEND TABS(3)
stmt level source
1 #include <reg52.h>
2 #include <word.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5
6 sbit RSPIN = P2^3;
7 sbit RWPIN = P2^4;
8 sbit EPIN = P2^5;
9 sbit CS1PIN = P2^1;
10 sbit CS2PIN = P2^0;
11 sbit LCMBUSY = P0^7;
12 sfr LCMDATA = 0x80; //P2
13
14
15 void LCMREST(void);
16
17 void WAITIDLE(bit ChipChoice);
18 void LCMWRITECONTROLWORDS(uchar ControlWords, bit ChipChoice);
19 void LCMWRITEDISPDATA(uchar DispData, bit ChipChoice);
20
21 void MuchPageDisp(uchar *DataPoint, uchar StartPage, uchar StartRow,uchar DispLenth,uchar Pagesum); //多
-页显示函数
22
23 uchar Temp0,Temp1,Temp2,Temp3,Temp4,Temp5;
24 uchar XPosition,YPosition; //XPosition: 列方向地址指针 YPosition: 行方向地址指针
25
26 void LCM12864(uchar LcmDispData, uchar LcmFirstPage, uchar CharacterStartRow, uchar CharacterRowSum, bi
-t IfNotRest)
27 {
28 1 bit CsChoice;
29 1 if(IfNotRest)
30 1 {
31 2 LCMREST();
32 2 }
33 1
34 1
35 1 Temp0=0xc0; //(LcmFirstPage*8)|0xc0; //写起始点控制字
36 1 LCMWRITECONTROLWORDS(Temp0,0); //写片1
37 1 LCMWRITECONTROLWORDS(Temp0,1); //写片2
38 1
39 1 for(Temp1=0;Temp1<CharacterRowSum;Temp1++)
40 1 {
41 2
42 2 if(CharacterStartRow<64) CsChoice=0;
43 2 else CsChoice=1;
44 2 Temp0=CharacterStartRow&0x3f|0x40; //写列码 定位
45 2 LCMWRITECONTROLWORDS(Temp0,CsChoice);
46 2 Temp0=LcmFirstPage&0x07|0xb8; //写页码 定位
47 2 LCMWRITECONTROLWORDS(Temp0,CsChoice);
48 2 LCMWRITEDISPDATA(LcmDispData, CsChoice); //写数据
49 2 CharacterStartRow++;
50 2 }
51 1
52 1 }
53
C51 COMPILER V7.06 LCM12864_C 06/13/2003 10:55:13 PAGE 2
54 void LCMREST(void)
55 {
56 1 Temp0=0x3f; //写开LCM控制字
57 1 LCMWRITECONTROLWORDS(Temp0,0); //写片1
58 1 LCMWRITECONTROLWORDS(Temp0,1); //写片2
59 1 }
60
61 void LCMWRITECONTROLWORDS(uchar ControlWords, bit ChipChoice) //写LCM控制字
62 {
63 1 ET0=0;
64 1 WAITIDLE(ChipChoice);
65 1 LCMDATA=ControlWords; //RS=0 RW=0 CS1=1 E=高脉冲
66 1 RSPIN=0;
67 1 RWPIN=0;
68 1 if(ChipChoice) CS2PIN=1;
69 1 else CS1PIN=1;
70 1 EPIN=1;
71 1 EPIN=1;
72 1 CS1PIN=0;
73 1 CS2PIN=0;
74 1 EPIN=0;
75 1 ET0=1;
76 1 }
77
78 void LCMWRITEDISPDATA(uchar DispData, bit ChipChoice) //写LCM显示数据
79 {
80 1 ET0=0;
81 1 WAITIDLE(ChipChoice);
82 1
83 1 LCMDATA=DispData;
84 1 RSPIN=1;
85 1 RWPIN=0;
86 1 if(ChipChoice) CS2PIN=1;
87 1 else CS1PIN=1;
88 1 EPIN=1;
89 1 EPIN=1;
90 1 CS1PIN=0;
91 1 CS2PIN=0;
92 1 EPIN=0;
93 1 ET0=1;
94 1 }
95
96 void WAITIDLE(bit ChipChoice) //空闲检测
97 {
98 1 LCMDATA=0xff;
99 1 RSPIN=0; //RS=0 RW=1 CS1/CS2=1 E=高电平
100 1 RWPIN=1;
101 1 if(ChipChoice) CS2PIN=1;
102 1 else CS1PIN=1;
103 1 EPIN=1;
104 1 EPIN=1; //=nop;
105 1 while(LCMBUSY);
106 1 CS1PIN=0;
107 1 CS2PIN=0;
108 1 EPIN=0;
109 1 }
110
111
112 void MuchPageDisp(uchar *DataPoint, uchar StartPage, uchar StartRow,uchar DispLenth,uchar Pagesum) //汉
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -