📄 1602.lst
字号:
C51 COMPILER V6.12 1602 06/28/2007 13:08:18 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN .\1602.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE .\1602.C DEBUG OBJECTEXTEND
stmt level source
1 /***************************************
2 LCD OCMC2X16A驱动模块
3 ****************************************/
4 #include<reg52.h>
5 #define uchar unsigned char
6
7 #define LCD
8 #define LCD_DB P1 //LCD数据线pin7~14
9 sbit LCD_WR=P3^1; //读写控制线pin5
10 sbit LCD_RS=P3^2; //数据指令控制线pin4
11 sbit LCD_E=P3^0; //使能端pin6
12 //查忙函数
13 void busy(void)
14 {
15 1 LCD_RS=0;
16 1 LCD_WR=1;
17 1 LCD_E=1;
18 1 LCD_E=1;
19 1 LCD_E=1;
20 1 #ifdef LCD
21 1 while(LCD_DB&0x80);
22 1 #endif
23 1 LCD_E=0;
24 1 }
25 //读AC函数
26 /*uchar rd_ac(void)
27 {
28 uchar ac;
29 LCD_RS=0;
30 LCD_WR=1;
31 LCD_E=1;
32 LCD_E=1;
33 LCD_E=1;
34 ac=LCD_DB&0x7f;
35 LCD_E=0;
36 return ac;
37 }*/
38 //写指令函数
39 void w_com(char com)
40 {
41 1 busy();
42 1 LCD_RS=0;
43 1 LCD_WR=0;
44 1 LCD_DB=com;
45 1 LCD_E=1;
46 1 LCD_E=0;
47 1 LCD_DB=0XFF;
48 1 }
49 //写数据函数
50 void w_dat(uchar dat)
51 { busy();
52 1 LCD_RS=1;
53 1 LCD_WR=0;
54 1 LCD_DB=dat;
55 1 LCD_E=1;
C51 COMPILER V6.12 1602 06/28/2007 13:08:18 PAGE 2
56 1 LCD_E=0;
57 1 LCD_DB=0XFF;
58 1 }
59 //定位函数
60 void LCD_gotoxy(char x,char y)
61 { uchar code line[]={0x80,0xc0}; //行首地址
62 1 w_com(line[x]+y);
63 1 }
64 //显示一个字符串
65 void LCD_puts(char *s)
66 {
67 1 while(*s!='\0')
68 1 {
69 2 w_dat(*s++);
70 2 }
71 1 }
72 //自定义字符
73 void def_char(void)
74 { uchar code ch[]=
75 1 {
76 1 0x00,0x0E,0x11,0x11,0x11,0x0A,0x1B,0x00, //1.欧姆符号
77 1 0x00,0x04,0x04,0x1F,0x04,0x04,0x1F,0x00 //2.正负号
78 1 };
79 1 uchar i;
80 1 w_com(0x48); //设置CGRAM地址
81 1 for(i=0;i<sizeof(ch);i++)
82 1 {
83 2 w_dat(ch[i]);
84 2 }
85 1 w_com(0x80);
86 1 }
87 //初始化函数
88 void LCD_init(void)
89 {
90 1 unsigned i;
91 1 for(i=0;i<2000;i++);
92 1 w_com(0x38); //8位数据总线,2行显示模式,5*7点阵
93 1 def_char(); //自定义字符
94 1 w_com(0x06); //AC自动加1,显示不移位
95 1 w_com(0x0c); //开显示,不显示光标
96 1 w_com(0x01);
97 1 LCD_gotoxy(0,2);
98 1 LCD_puts("OCM2X16A LCD.");
99 1 for(i=0;i<50000;i++);
100 1 w_com(0x01); //清屏
101 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 235 ----
CONSTANT SIZE = 32 ----
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 + -