📄 lcd1602a.lst
字号:
C51 COMPILER V7.06 LCD1602A 07/11/2009 14:45:46 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCD1602A
OBJECT MODULE PLACED IN LCD1602A.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE LCD1602A.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /**********************************Copyright (c)**************************************************
2 ** 浙 江 师 范 大 学
3 **
4 **--------------文件信息---------------------------------------------------------------------------
5 功能:在LCD上显示汉字信息
6 作者:陈希
7 时间:2008-08-20
8 版本:V1.0
9 注:
10
11 **--------------当前版本修订-----------------------------------------------------------------------
12 ** 修改人:
13 ** 日 期:
14 ** 描 述:
15 **
16 **-------------------------------------------------------------------------------------------------
17 ***************************************************************************************************/
18 //-----------------------------------------------------------------------------
19 //程序描述:
20 // 这个程序可以在该液晶模块上显示字符:" BT F020 V1.0 www.xhl.com.cn"
21 // 此程序用4位数据线来驱动液晶
22 // 液晶接线方法 :1脚接地;2脚接+5V;3脚通过1个10K电阻接+5v,通过1个430欧电阻接地;
23 // 15脚接地;16脚通过1个15R电阻接+5v。液晶别的引脚直接接相应的数据或控制信号线。
24 //作者:ZDP
25 //时间:2005-11-30
26 //版本:V1.0
27 //-----------------------------------------------------------------------------
28 // 头文件包含
29 //-----------------------------------------------------------------------------
30 #include <c8051f020.h>
31
32 //-----------------------------------------------------------------------------
33 //全局变量定义
34 //-----------------------------------------------------------------------------
35
36
37 unsigned long x; //"www.xhl.com.cn"
38 unsigned char xdata Netdata[16]={0x77,0x77,0x77,0x2e,0x78,0x68,0x6c,0x2e,0x63,0x6f,
39 0x6d,0x2e,0x63,0x6e};
40
41 //" BT F020 V1.0 "
42 unsigned char xdata NCDdata[17]={0x20,0x20,0x42,0x54,0x20,0x46,0x30,0x32,0x30,0x20,
43 0x56,0x31,0x2e,0x30,0x20,0x20};
44
45 unsigned char *lcdpoint; //指向 lcddata数组的指针
46 unsigned char lcd_data_count;
47 //-----------------------------------------------------------------------------
48 // 函数定义
49 //-----------------------------------------------------------------------------
50 void SYSCLK_Init (void);
51 void PORT_Init (void);
52 void LCD_Init(void);
53 //-----------------------------------------------------------------------------
54 // 主程序
55 //-----------------------------------------------------------------------------
C51 COMPILER V7.06 LCD1602A 07/11/2009 14:45:46 PAGE 2
56 void main (void)
57 {
58 1 static unsigned char data1;
59 1 WDTCN = 0xde;
60 1 WDTCN = 0xad; //禁止看门狗定时器
61 1
62 1 SYSCLK_Init (); // 系统时钟初始化
63 1
64 1 PORT_Init (); // 交叉开关和通用I/O口初始化
65 1
66 1 while(1){
67 2 LCD_Init(); //LCD初始化
68 2 P2 = 0xA0; //准备送数据
69 2 for(x=0;x<5000;x++);
70 2 lcdpoint=&NCDdata; //取地址
71 2 for(lcd_data_count=14;lcd_data_count>0;lcd_data_count--)//显示第一行字符
72 2 {
73 3 data1=*lcdpoint; //读出数据
74 3 P3 = data1; //写数据到端口
75 3 P2 = 0X20;
76 3 P2 = 0XA0; //控制LCD
77 3 lcdpoint++;
78 3 for(x=0;x<5000;x++);
79 3 }
80 2 P2 = 0X80;
81 2 P3 = 0xc0;
82 2 P2 = 0x00;
83 2 P2 = 0x80;
84 2 for(x=0;x<1000;x++);
85 2 lcdpoint=&Netdata;
86 2 for(lcd_data_count=14;lcd_data_count>0;lcd_data_count--)//显示第一行字符
87 2 {
88 3 data1=*lcdpoint;
89 3 P3 = data1;
90 3 //-----------------------------------------------------
91 3 // P2 = 0x20; /*原来的LCD程序*/
92 3 // P2 = 0xA0;
93 3 //-----------------------------------------------------
94 3 P2 = 0xA0; //修改后的LCD程序
95 3 P2 = 0x20;
96 3 //------------------------------------------------------/
97 3 lcdpoint++;
98 3 for(x=0;x<5000;x++);
99 3 }
100 2 }
101 1 }
102
103 //-----------------------------------------------------------------------------
104 //函数名称: SYSCLK_Init ()
105 //函数功能: 系统时钟初始化
106 //入口参数: 无
107 //出口参数: 无
108 //全局变量引用: 无
109 //调用模块: 无
110 //-----------------------------------------------------------------------------
111 //
112
113 void SYSCLK_Init (void)
114 {
115 1 //int i; // delay counter
116 1
117 1 //OSCXCN = 0x67; // start external oscillator with
C51 COMPILER V7.06 LCD1602A 07/11/2009 14:45:46 PAGE 3
118 1 // 22.1184MHz crystal
119 1
120 1 //for (i=0; i < 256; i++) ; // Wait for osc. to start up
121 1
122 1 //while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
123 1
124 1 //OSCICN = 0x88;
125 1
126 1 OSCICN = 0x05; // 系统时钟初始化为片内的 24.5MHz / 8
-
127 1 }
128
129 //-----------------------------------------------------------------------------
130 //函数名称: PORT_Init ()
131 //函数功能: 通用I/O口及交叉开关初始化
132 //入口参数: 无
133 //出口参数: 无
134 //全局变量引用: 无
135 //调用模块: 无
136 //-----------------------------------------------------------------------------
137
138 void PORT_Init (void)
139 {
140 1
141 1 XBR0 = 0x00; // 没有选择数字外设
142 1 XBR2 = 0x40;
143 1 P2MDOUT = 0xe0; // P2口设为推挽方式
144 1 }
145 //-----------------------------------------------------------------------------
146 //函数名称: LCD_Init ()
147 //函数功能: LCD初始化
148 //入口参数: 无
149 //出口参数: 无
150 //全局变量引用: 无
151 //调用模块: 无
152 //-----------------------------------------------------------------------------
153 void LCD_Init(void)
154 {
155 1 P2 = 0X80;
156 1 for(x=0;x<50000;x++);
157 1 //P7 = 0x30; /*一行显示*/
158 1 P3 = 0x38; /*两行显示*/
159 1 P2 = 0X00;//0x08;
160 1 P2 = 0X80;//0x09;
161 1 for(x=0;x<1000;x++);
162 1 P3 = 0x0e;
163 1 P2 = 0x00;
164 1 P2 = 0x80;
165 1 for(x=0;x<1000;x++);
166 1 P3= 0x06;
167 1 P2 = 0x00;
168 1 P2 = 0x80;
169 1 for(x=0;x<5000;x++);
170 1 P3 = 0x01;
171 1 P2 = 0x00;
172 1 P2 = 0x80;
173 1 for(x=0;x<5000;x++);
174 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 657 ----
C51 COMPILER V7.06 LCD1602A 07/11/2009 14:45:46 PAGE 4
CONSTANT SIZE = ---- ----
XDATA SIZE = 33 ----
PDATA SIZE = ---- ----
DATA SIZE = 9 ----
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 + -