📄 lcd.lst
字号:
C51 COMPILER V6.12 LCD 08/20/2005 20:10:09 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN .\lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\lcd.c DEBUG OBJECTEXTEND
stmt level source
1 #include <AT89X52.H>
2 sbit rs=P0^0; //寄存器类型选择位
3 sbit rw=P0^1; //数据读写类型控制位
4 sbit e=P0^2; //下降沿使能控制位
5 sbit flag=ACC^7; //LCD忙状态判断标志位
6 void wait(void);
7 void delay(unsigned int temp);
8 void initial(void);
9 unsigned char code seg[]={0x43,0x68,0x69,0x6E,0x61,0x20,0x55,0x6E,0x69,0x76, //China University of Mini
-ng and
10 0x65,0x72,0x73,0x69,0x74,0x79,0x20,0x6F,0x66,0x20, //Techlonogy 17--302
11 0x4D,0x69,0x6E,0x69,0x6E,0x67,0x20,0x61,0x6E,0x64,
12 0x20,0x20,0x54,0x65,0x63,0x68,0x6C,0x6F,0x6E,0x6F,0x67,
13 0x79,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5C,0x5C,
14 0x31,0x37,0x2D,0x2D,0x33,0x30,0x32,0x5C,0x5C,0x20,0x20,0x20};
15 void main(void){
16 1 unsigned char data_index;
17 1 unsigned char add_first,add_second,add_third,add_fourth; //LCD行地址为80H,C0H,90H,D0H
18 1 initial(); //初始化LCD
19 1 while(1){
20 2 data_index=0;add_first=0x80;add_second=0xC0;add_third=0x90;add_fourth=0xD0;
21 2 while(data_index<=15){
22 3 rs=0;rw=0;P2=add_first+data_index;e=1;e=0; //第一行显示
23 3 wait();
24 3 rs=1;rw=0;P2=seg[data_index];e=1;e=0;
25 3 wait();
26 3 data_index++;
27 3 }
28 2 while(data_index<=31){ //第二行显示
29 3 rs=0;rw=0;P2=add_second+data_index-16;e=1;e=0;
30 3 wait();
31 3 rs=1;rw=0;P2=seg[data_index];e=1;e=0;
32 3 wait();
33 3 data_index++;
34 3 }
35 2 while(data_index<=47){ //第三行显示
36 3 rs=0;rw=0;P2=add_third+data_index-32;e=1;e=0;
37 3 wait();
38 3 rs=1;rw=0;P2=seg[data_index];e=1;e=0;
39 3 wait();
40 3 data_index++;
41 3 }
42 2 while(data_index<=63){ //第四行显示
43 3 rs=0;rw=0;P2=add_fourth+data_index-48;e=1;e=0;
44 3 wait();
45 3 rs=1;rw=0;P2=seg[data_index];e=1;e=0;
46 3 wait();
47 3 data_index++;
48 3 }
49 2 }
50 1 }
51 void initial(void){
52 1 rs=0;rw=0;P2=0x3C; //置功能,8位数据位,2行显示,5×7点阵
53 1 e=1; e=0;wait();
54 1 rs=0;rw=0;P2=0x06; //地址计数器自动加1,显示屏不移动
C51 COMPILER V6.12 LCD 08/20/2005 20:10:09 PAGE 2
55 1 e=1;e=0;wait();
56 1 rs=0;rw=0;P2=0x0E; //显示开,光标显示,光标闪烁
57 1 e=1;e=0;wait();
58 1 rs=0;rw=0;P2=0x01; //清显示,光标复位到00H
59 1 e=1;e=0;wait();
60 1 }
61 void wait(void){ //判断LCD处于空闲状态
62 1 do{
63 2 rs=0;rw=1;
64 2 e=1;
65 2 e=0;delay(0);
66 2 P2_7=1;flag=P2_7;
67 2 }while(flag==0);
68 1
69 1 }
70 void delay(unsigned int temp){
71 1 unsigned int jj;
72 1 for(jj=0;jj<=temp;jj++)
73 1 ;
74 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 220 ----
CONSTANT SIZE = 64 ----
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 + -