📄 _main.lst
字号:
C51 COMPILER V8.05a _MAIN 11/26/2008 17:29:25 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE _MAIN
OBJECT MODULE PLACED IN _main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE _main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include "intrins.h"
3
4 #define uint unsigned int
5 #define uchar unsigned char
6
7 #define TRUE 1
8 #define FALSE 0
9 #define nop _nop_()
10
11
12 #define PtData P1 //定义连接口线,
13 #define PtContr P3
14 sbit RS=PtContr^5;
15 sbit RW=PtContr^6;
16 sbit E=PtContr^7;
17
18 void InitialLcd();
19 void WriteLcdInstr(uchar);
20 void WriteLcdData(uchar);
21 void CheckLcdBusy();
22 uchar HexToDdram(uchar);
23 void PutChar(uchar x,uchar y,uchar c);
24 void PutStr(uchar x,uchar y,uchar *str);
25 void Delay(unsigned int);
26
27
28
29 main()
30 {Delay(1000);
31 1
32 1 InitialLcd();
33 1 PutStr(2,0,"www.znmcu.cn");
34 1 PutStr(1,1,"4 Bits Mode!!!");
35 1 while(1);
36 1
37 1 }
38
39
40 //----------------LCD1602函数---------------------//
41 //---初始化
42 void InitialLcd()
43 {Delay(600);//延时应大于15ms,不同的晶振使需要修改,本程序再6M下调试通过
44 1 RS=0;
45 1 RW=0;nop;
46 1 E=0;nop;
47 1
48 1 E=1;nop;
49 1 PtData=0x20;//
50 1 nop;
51 1 E=0;
52 1 Delay(200);//延时应大于4.1ms
53 1
54 1 E=1;nop;
55 1 PtData=0x20;//
C51 COMPILER V8.05a _MAIN 11/26/2008 17:29:25 PAGE 2
56 1 nop;
57 1 E=0;
58 1 Delay(5);//延时应大于100us
59 1
60 1 E=1;nop;
61 1 PtData=0x20;//
62 1 nop;
63 1 E=0;//设置4位操作;
64 1
65 1 WriteLcdInstr(0x01);//清屏
66 1 WriteLcdInstr(0x28);//设置4位操作,1行显示,5x8
67 1 WriteLcdInstr(0x02);//光标归位
68 1 WriteLcdInstr(0x06);//AC自动加1,画面不动
69 1 WriteLcdInstr(0x0f);//0x0f:光标闪烁开;
70 1
71 1 }
72 //---写指令
73 void WriteLcdInstr(uchar Temp)
74 {CheckLcdBusy();
75 1 RS=0;
76 1 RW=0;
77 1 E=0;nop;
78 1 E=1;nop;
79 1 PtData=Temp;
80 1 nop;
81 1 E=0;nop;
82 1 E=1;nop;
83 1 PtData=(Temp<<4);
84 1 nop;
85 1 E=0;nop;
86 1 }
87
88
89 //---写数据
90 void WriteLcdData(uchar Temp)
91 {
92 1 CheckLcdBusy();
93 1 RS=1;
94 1 RW=0;
95 1 E=0;nop;
96 1 E=1;nop;
97 1 PtData=Temp;
98 1 nop;
99 1 E=0;nop;
100 1 E=1;nop;
101 1 PtData=(Temp<<4);
102 1 nop;
103 1 E=0;nop;
104 1 }
105
106
107 //---查忙
108 void CheckLcdBusy()
109 {uchar Temp,t;
110 1 PtData=0xff;
111 1
112 1 RW=1;
113 1 RS=0;nop;
114 1 E=0;nop;
115 1 do
116 1 {nop;
117 2 E=1;nop;
C51 COMPILER V8.05a _MAIN 11/26/2008 17:29:25 PAGE 3
118 2 Temp=PtData;
119 2 nop;nop;nop;
120 2 E=0;nop;nop;
121 2
122 2 E=1;nop;
123 2 t=PtData;
124 2 nop;nop;nop;
125 2 E=0;nop;nop;
126 2
127 2 Temp&=0x80;
128 2 }while(Temp==0x80);
129 1 }
130
131
132
133 //---delay
134 void Delay(unsigned int N)
135 {unsigned int i;
136 1 for(i=0;i<N;i++){i=i;}
137 1 }
138
139 void PutChar(uchar x,uchar y,uchar c)
140 {
141 1 if(y)
142 1 WriteLcdInstr(0xc0+x);
143 1 else
144 1 WriteLcdInstr(0x80+x);
145 1 WriteLcdData(c);
146 1 }
147
148 void PutStr(uchar x,uchar y,uchar *str)
149 {
150 1 uchar i=0;
151 1 while(str[i])
152 1 {
153 2 PutChar(x+i,y,str[i++]);
154 2 }
155 1 }
156
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 339 ----
CONSTANT SIZE = 28 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 11
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -