📄 lcd_zb.lst
字号:
C51 COMPILER V7.07 LCD_ZB 08/22/2008 17:59:38 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE LCD_ZB
OBJECT MODULE PLACED IN lcd_zb.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd_zb.c DEBUG OBJECTEXTEND
stmt level source
1 /*==============================================================*/
2 /*※※※※※※※※※※※※※系统主文※※※※※※※※※※※※※※*/
3 /*==============================================================*/
4 #include <at89x51.h>
5 /////////////////////////////////
6 #define LCM_RS P2_2
7 #define LCM_RW P2_1 //定义LCD引脚
8 #define LCM_E P2_0
9 #define LCM_Data P0
10 #define Busy 0x80 //用检测LCM状态
11 #define uchar unsigned char
12 #define uint unsigned int
13 //////////////////////////////////////////////////
14 void delayms(uint i)
15 { uint j;
16 1 for(;i--;i>0)
17 1 for(j=0;j<125;j++)
18 1 {;}
19 1
20 1 }
21
22 //////////////////////////////////////////////////
23 void Delay5Ms(void) //5ms延时
24 {
25 1 unsigned int TempCyc = 3552;
26 1 while(TempCyc--);
27 1 }
28
29 ////////////////////////////////////////////////////////////////////////
30 void Delay400Ms(void) //400ms延时
31 {
32 1 unsigned char TempCycA = 5;
33 1 unsigned int TempCycB;
34 1 while(TempCycA--)
35 1 {
36 2 TempCycB=5269;
37 2 while(TempCycB--);
38 2 };
39 1 }
40 //////////////////////////////////////////////////
41
42 unsigned char ReadStatusLCM(void) //读状态
43 {
44 1 LCM_Data = 0xFF;
45 1 LCM_RS = 0;
46 1 LCM_RW = 1;
47 1 LCM_E = 0;
48 1 LCM_E = 0;
49 1 LCM_E = 1;
50 1 while (LCM_Data & Busy); //检测忙信号
51 1 return(LCM_Data);
52 1 }
53 //////////////////////////////////////////////////
54
55 void WriteDataLCM(unsigned char WDLCM) //写数据
C51 COMPILER V7.07 LCD_ZB 08/22/2008 17:59:38 PAGE 2
56 {
57 1 ReadStatusLCM();
58 1 LCM_Data = WDLCM;
59 1 LCM_RS = 1;
60 1 LCM_RW = 0;
61 1 LCM_E = 0;
62 1 LCM_E = 0;
63 1 LCM_E = 1;
64 1 }
65 //////////////////////////////////////////////////
66 void WriteCommandLCM(unsigned char WCLCM,BuysC) //写指令
67 {
68 1 if (BuysC) ReadStatusLCM();
69 1 LCM_Data = WCLCM;
70 1 LCM_RS =0;
71 1 LCM_RW =0;
72 1 LCM_E = 0;
73 1 LCM_E = 0;
74 1 LCM_E = 1;
75 1 }
76 //////////////////////////////////////////////////]
77 /*unsigned char ReadDataLCM(void) //读数据
78 {
79 LCM_RS = 1;
80 LCM_RW = 1;
81 LCM_E = 0;
82 LCM_E = 0;
83 LCM_E = 1;
84 return(LCM_Data);
85 }*/
86 //////////////////////////////////////////////////
87 void LCMInit(void) //LCM初始化
88 {
89 1 LCM_Data = 0;
90 1 WriteCommandLCM(0x38,0);
91 1 Delay5Ms();
92 1 WriteCommandLCM(0x38,0);
93 1 Delay5Ms();
94 1 WriteCommandLCM(0x38,0);
95 1 Delay5Ms();
96 1 WriteCommandLCM(0x38,1);
97 1 WriteCommandLCM(0x08,1);
98 1 WriteCommandLCM(0x01,1);
99 1 WriteCommandLCM(0x06,1);
100 1 WriteCommandLCM(0x0c,1);
101 1 }
102 //////////////////////////////////////////////////
103 /*void Locatexy(char x,char y) //确定光标位置
104 { char temp;
105 temp=x&0xf;
106 y&=0x1;
107 if(y)
108 temp|=0x40;
109 temp|=0x80;
110 WriteCommandLCM(temp,0);
111 }*/
112 //////////////////////////////////////////////////
113 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
114 {
115 1 Y &= 0x1;
116 1 X &= 0xF;
117 1 if (Y) X |= 0x40;
C51 COMPILER V7.07 LCD_ZB 08/22/2008 17:59:38 PAGE 3
118 1 X |= 0x80;
119 1 WriteCommandLCM(X, 0);
120 1 WriteDataLCM(DData);
121 1 }
122 //////////////////////////////////////////////////
123 void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData) //按指定位置显示一串字
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -