📄 1602.lst
字号:
C51 COMPILER V8.08 1602 05/15/2007 21:14:16 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN 1602.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 1602.c DEBUG OBJECTEXTEND PAGEWIDT
-H(79) PAGELENGTH(66)
line level source
1 //========================1602=============================//
2 //========================by laputa========================//
3 //========================2006.5.16========================//
4 #include<reg51.h>
5 //===========================函数声明============================
-=========//
6 void WriComm(unsigned char reg_code,busy);
7 void Display(unsigned char Disp_Data);
8 void Delay();
9 void Init_LCM();
10
11 void Delay5Ms(void);
12 void Delay400Ms(void);
13 void LINE2_CLEAR();
14 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned ch
-ar DData);
15 void DisplayListChar(unsigned char X, unsigned char Y, unsigned c
-har *DData);
16 //===============================================================
-===========//
17
18 sbit RS=P2^3;
19 sbit RW=P2^2;
20 sbit E=P2^1;
21 sbit LED=P2^0; //=======背光灯
22 sbit busy=P0^7;//=======忙标志
23 //=========================LCM初始化数据=========================
-======//
24 #define lcd_bus P0
25 #define Set_Disp_On 0X0c
26 #define Set_Disp_Off 0x08
27 #define Set_CLR 0X01
28 #define Set_DISP_Mode 0X38
29 #define Set_LINE_Mode 0X06
30
31 //===============================================================
-======//
32
33 //====================主程序======================//
34 main()
35 {
36 1 EA=1;
37 1 IT1=1;
38 1 IT0=1;
39 1 EX1=1;
40 1 EX0=1;
41 1 Delay400Ms();
42 1 Init_LCM();
43 1 DisplayOneChar(4,1,'s');
44 1 //DisplayOneChar(5,1,'e');
45 1 //DisplayOneChar(5,1,'x');
46 1 while(1);
47 1 }
48 //================================================//
49
50
C51 COMPILER V8.08 1602 05/15/2007 21:14:16 PAGE 2
51
52 //延时子程序======================================//
53 //==============5ms延时==========================//
54 void Delay5Ms(void)
55 {
56 1 unsigned int TempCyc = 5552;
57 1 while(TempCyc--);
58 1 }
59
60 //==============400ms延时=========================//
61 void Delay400Ms(void)
62 {
63 1 unsigned char TempCycA = 5;
64 1 unsigned int TempCycB;
65 1 while(TempCycA--)
66 1 {
67 2 TempCycB=7269;
68 2 while(TempCycB--);
69 2 };
70 1 }
71 //=================================================//
72
73
74
75 //写入控制命令子程序=============================//
76 void WriComm(unsigned char reg_code,busy)
77 {
78 1 lcd_bus=reg_code;
79 1 RS=0;
80 1 RW=0;
81 1 E=0;
82 1 //if(busy)
83 1 // Delay();
84 1 E=1;
85 1 }
86 //=================================================//
87
88
89 //判断液晶显示器忙子程序==========================//
90 void Delay()
91 {
92 1 lcd_bus=0xff;
93 1 RS=0;
94 1 RW=1;
95 1 E=0;
96 1 E=0;
97 1 E=1;
98 1 while(busy==1);
99 1 }
100 //=================================================//
101
102
103
104 //显示命令子程序====================================//
105 void Display(unsigned char Disp_Data)
106 {
107 1 lcd_bus= Disp_Data;
108 1 RS=1;
109 1 RW=0;
110 1 E=0;
111 1 Delay();
112 1 E=1;
113 1 }
114 //===================================================//
C51 COMPILER V8.08 1602 05/15/2007 21:14:16 PAGE 3
115 //按指定位置显示一个字符子程序===================================
-============//
116 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned ch
-ar DData)
117 {
118 1 Y &= 0x01;
119 1 X &= 0x0F;
120 1 if (Y) X |= 0x40;
121 1 X |= 0x80;
122 1 WriComm(X, 1);
123 1 Display(DData);
124 1 }
125 //===============================================================
-==============//
126
127 //按指定位置显示一串字符子程序===================================
-==============//
128 void DisplayListChar(unsigned char X, unsigned char Y, unsigned c
-har *DData)
129 {
130 1 Y &= 0x01;
131 1 X &= 0x0F;
132 1 if (Y) X |= 0x40;
133 1 X |= 0x80;
134 1 WriComm(X, 1);
135 1 while (*DData)
136 1 Display(*(DData++));
137 1 }
138 //===============================================================
-==============//
139
140 //LCM初始化子程序================================================
-==============//
141 void Init_LCM()
142 {
143 1 lcd_bus=0;
144 1 WriComm(Set_DISP_Mode,0);
145 1 Delay5Ms();
146 1 WriComm(Set_DISP_Mode,0);
147 1 Delay5Ms();
148 1 WriComm(Set_DISP_Mode,0);
149 1 Delay5Ms();
150 1 WriComm(Set_DISP_Mode,1);
151 1 WriComm(Set_Disp_On,1);
152 1 WriComm(Set_LINE_Mode,1);
153 1 LED=0;
154 1
155 1 }
156 //===============================================================
-==============//
157 //lcm第二行清字符子程序==========================================
-==============//
158 void LINE2_CLEAR()
159 {
160 1 unsigned char i;
161 1 WriComm(0XC0,1);
162 1 for(i=16;i>0;i--)
163 1 Display(0xfe);
164 1 }
165
166
167
C51 COMPILER V8.08 1602 05/15/2007 21:14:16 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 269 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
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 + -