📄 液晶显示.lst
字号:
C51 COMPILER V8.08 液晶显示 05/04/2008 12:45:49 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE 液晶显示
OBJECT MODULE PLACED IN 液晶显示.OBJ
COMPILER INVOKED BY: D:\program files\Keil 3.2\C51\BIN\C51.EXE 液晶显示.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <at89x51.h>
2 #include <intrins.h>
3 #define LCD_RS P2_0 //定义引脚
4 #define LCD_RW P2_1
5 #define LCD_E P2_2
6 #define LCD_DATA P0
7 unsigned char a ;
8 unsigned char b ;
9 unsigned char c ;
10 unsigned char d ;
11 extern void delayus(unsigned int num);
12
13 extern void delayus(unsigned int num) //us级延时函数
14 {
15 1 while( --num ) ;
16 1 }
17
18 bit LCD_Busy(void) //LCD忙碌状态检测
19 {
20 1 bit result;
21 1 LCD_RS = 0;
22 1 LCD_RW = 1;
23 1 LCD_E =1;
24 1 _nop_();
25 1 _nop_();
26 1 _nop_();
27 1 _nop_();
28 1 result = (bit)(P0 & 0x80);
29 1 LCD_E =0;
30 1 return result;
31 1 }
32
33 extern void LCD_WriteCommand(unsigned char cmd) //写指令数据到LCD
34 {
35 1 while(LCD_Busy());
36 1 LCD_RS = 0;
37 1 LCD_RW = 0;
38 1 LCD_E =0;
39 1 _nop_();
40 1 _nop_();
41 1 LCD_DATA = cmd;
42 1 _nop_();
43 1 _nop_();
44 1 _nop_();
45 1 _nop_();
46 1 LCD_E =1;
47 1 _nop_();
48 1 _nop_();
49 1 _nop_();
50 1 _nop_();
51 1 LCD_E =0;
52 1 }
53
54 void LCD_WriteDate(unsigned char dat) //写字符显示数据到LCD
55 {
C51 COMPILER V8.08 液晶显示 05/04/2008 12:45:49 PAGE 2
56 1 while(LCD_Busy());
57 1 LCD_RS=1;
58 1 LCD_RW=0;
59 1 LCD_E=0;
60 1 LCD_DATA = dat;
61 1 _nop_();
62 1 _nop_();
63 1 _nop_();
64 1 _nop_();
65 1 LCD_E =1;
66 1 _nop_();
67 1 _nop_();
68 1 _nop_();
69 1 _nop_();
70 1 LCD_E =0;
71 1 }
72
73 extern void LCD_DisplayOneChar(unsigned char X,unsigned char Y,unsigned char Z) //显示指定坐标的一个字符
-子函数 X为列0--15,Y为行0--1 ,Z为数据,输入字母加单引号
74 { Y &= 0x1;
75 1 X &= 0xF; //限制X不能大于15,Y不能大于1
76 1 if(Y == 0)
77 1 {
78 2 LCD_WriteCommand(X|0X80);
79 2 LCD_WriteDate(Z);
80 2 } //1602地址为第一行00H~0FH,第二行为40H~4FH,
81 1 if(Y==1) //而且写入地址命令格式为1xxx xxxx,
82 1 {
83 2 LCD_WriteCommand((X|0x40)|0X80);
84 2 LCD_WriteDate(Z);
85 2 } //所以这里的0x80|(x-0x40)就是如此得出
86 1 }
87
88
89 extern void LCD_Init(void) //LCD初始化
90 {
91 1 LCD_WriteCommand(0x38); //两行显示,5×7字型
92 1 delayus(5);
93 1 LCD_WriteCommand(0x0c); //显示开,不显示光标,光标不闪
94 1 delayus(5);
95 1 LCD_WriteCommand(0x06); //输入模式,地址增量,显示不移动
96 1 delayus(5);
97 1 // LCD_WriteCommand(0x01); //清显示,如果加上此语句,显示地址返回0x00
98 1 // Delay(5);
99 1 }
100 extern void LCD_DisplayOneString(unsigned char X,unsigned char Y,unsigned char a[])
101 { unsigned char m ;//LCD_Init(); //初始化LCD
102 1 Y &= 0x1;
103 1 X &= 0xF; //限制X不能大于15,Y不能大于1
104 1 m = 0 ;
105 1 while(a[m] != '\0')
106 1 { //显示第一行字符
107 2 LCD_DisplayOneChar(X,Y,a[m]);
108 2 m++ ;
109 2 X++;
110 2 }
111 1 }
112 extern void LCD_DisplayNum(unsigned char X,unsigned char Y,unsigned char num) //显示一个数字
113 {
114 1 a = num%10;
115 1 b = num/10%10;
116 1 LCD_DisplayOneChar((X+1),Y,a+0x30);
C51 COMPILER V8.08 液晶显示 05/04/2008 12:45:49 PAGE 3
117 1 LCD_DisplayOneChar(X,Y,b+0x30);
118 1 delayus(100);
119 1
120 1 }
121 extern void LCD_DisplayoneNum(unsigned char X,unsigned char num)
122 {
123 1 LCD_DisplayOneChar(X,0,num+0x30);
124 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 274 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 6
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 + -