📄 testlcd.lst
字号:
C51 COMPILER V7.07 TESTLCD 05/04/2007 11:53:52 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE TESTLCD
OBJECT MODULE PLACED IN testlcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE testlcd.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*----------------------------------www.00IC.com-----------------------------------------
2 ╔=======================================╗
3 ┆ 00IC-51开发板配套实验学习例程 ┆
4 ┆ Version 2.0.1 ┆
5 ┆ ┆
6 ┆ 零零电子 ┆
7 ┆ ┆
8 ┆ http://www.00IC.com ┆
9 ┆ E-mail:sales@00IC.com ┆
10 ╚=======================================╝
11 ********************************** 程序功能说明 ******************************************************
12 在1602液晶上分别显示“www.00IC.com”和“^_^00IC-51MCU^_^”两行内容,延时后从左到右循环输出
13 ******************************************************************************************************/
14
15 #include "reg52.h"
16 #include <intrins.h>
17
18 #define uchar unsigned char
19
20 typedef bit BOOL ;
21
22 sbit rs = P2^6 ;
23 sbit rw = P3^6 ;
24 sbit ep = P2^7 ;
25
26
27 void delay(uchar) ;
28 void lcd_wcmd(uchar) ;
29 BOOL lcd_bz() ;
30 void lcd_pos(uchar) ;
31 void lcd_wdat(uchar) ;
32 void display(uchar,uchar *) ;
33
34 code uchar dis1[] = {" WinXP MCE 2005 "} ;
35 code uchar dis2[] = {"P4/3G/1G YPRHTPC"} ;
36
37
38
39 void longdelay(uchar s) //长延时
40 {
41 1 while(s--)
42 1 {
43 2 delay(60) ;
44 2 }
45 1 }
46
47 void delay(uchar ms)
48 { // 延时子程序
49 1 uchar i ;
50 1 while(ms--)
51 1 {
52 2 for(i = 0 ; i<250;i++) ;
53 2 }
54 1 }
55
C51 COMPILER V7.07 TESTLCD 05/04/2007 11:53:52 PAGE 2
56 BOOL lcd_bz()
57 { // 测试LCD忙碌状态
58 1 BOOL result ;
59 1 rs = 0 ;
60 1 rw = 1 ;
61 1 ep = 1 ;
62 1 result = (BOOL)(P0 & 0x80) ;
63 1 ep = 0 ;
64 1 return result ;
65 1 }
66
67 void lcd_wcmd(uchar cmd)
68 { // 写入指令数据到LCD
69 1 while(lcd_bz()) ;
70 1 rs = 0 ;
71 1 rw = 0 ;
72 1 ep = 0 ;
73 1 P0 = cmd ;
74 1 ep = 1 ;
75 1 ep = 0 ;
76 1 }
77
78 void lcd_pos(uchar pos)
79 { //设定显示位置
80 1 lcd_wcmd(pos | 0x80) ;
81 1 }
82
83 void lcd_wdat(uchar dat)
84 { //写入字符显示数据到LCD
85 1 while(lcd_bz()) ;
86 1 rs = 1 ;
87 1 rw = 0 ;
88 1 ep = 0 ;
89 1 P0 = dat ;
90 1 ep = 1 ;
91 1 ep = 0 ;
92 1 }
93
94 void lcd_init()
95 { //LCD初始化设定
96 1 lcd_wcmd(0x38) ; //function set
97 1 delay(1) ;
98 1 lcd_wcmd(0x38) ; //function set
99 1 delay(1) ;
100 1 lcd_wcmd(0x08) ; //display on/off
101 1 delay(1) ;
102 1 lcd_wcmd(0x01) ; //清除LCD的显示内容
103 1 delay(1) ;
104 1 lcd_wcmd(0x06) ; //entry mode set
105 1 delay(1) ;
106 1 lcd_wcmd(0x0c) ; //entry mode set
107 1 delay(1) ;
108 1 }
109
110 /*---------------
111 函数名称:display()
112 功能 :在LCD上显示数组的数据
113 说明 :先写显示地址,后写显示数据
114 调用 :lcd_wcmd(), lcd_pos()
115 入口参数:pos 写入的位置,q指向要写入的数据所在的数组
116 返回值 :无
117 ----------------*/
C51 COMPILER V7.07 TESTLCD 05/04/2007 11:53:52 PAGE 3
118 void display(uchar pos, uchar *q)
119 {
120 1 uchar i ;
121 1 //lcd_wcmd(0x01) ; //clear
122 1 delay(10) ;
123 1 lcd_pos(pos) ;
124 1 for(i=0 ;i<16;i++)
125 1 {
126 2 lcd_wdat(*q) ;
127 2 q++ ;
128 2 longdelay(2) ;
129 2 }
130 1 }
131
132 main()
133 {
134 1 lcd_init() ; // 初始化LCD
135 1 delay(10) ;
136 1 display(0x00,dis1) ;
137 1 display(0x40,dis2) ;
138 1 display(0x14,dis1) ;
139 1 display(0x54,dis2) ;
140 1 lcd_wcmd(0x07) ; //entry mode set
141 1 delay(1) ;
142 1 while(1)
143 1 {
144 2 display(0x00,dis1) ;
145 2 /*
146 2 display(0x40,dis2) ;
147 2 display(0x14,dis1) ;
148 2 display(0x54,dis2) ;
149 2 */
150 2 }
151 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 279 ----
CONSTANT SIZE = 34 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -