?? lcd1602.lst
字號:
C51 COMPILER V7.06 LCD1602 09/01/2008 00:04:39 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN lcd1602.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd1602.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //#pragma src // 產生匯編文件
2 #include<reg51.h>
3 #include<intrins.h>
4 //========= 變量類型標識的宏定義,通常做法 ==============
5 #define Uchar unsigned char
6 #define Uint unsigned int
7 //======== 定義LCD與MCU的接口,LCD數據線接P2 =============
8 #define LCD_DATA P0
9 sbit LCD_EN=P3^5;
10 sbit LCD_RS=P3^7;
11 sbit LCD_RW=P3^6;
12
13 /*------------------------------------------------
14 Public function prototypes 函數原型
15 -------------------------------------------------*/
16 void LCD_init(void);/*初始化*/
17 void LCD_cmd(Uchar cmd);/*寫入控制命令*/
18 void LCD_string(char *s);/*寫入要顯示的字符串*/
19 void LCD_char(char str);/*寫入要顯示的字符*/
20 void LCD_setxy(char x,char y);/*設定顯示位置,行x=1/2,列y=1~16的任意整數*/
21 void wait_until_ready(void);/*檢測忙標志,忙則等待*/
22 void delay(void);
23
24 //函數實現:
25
26
27 sbit bflag=ACC^7;
28 void delay(void) //延時函數
29 {
30 1
31 1
32 1 int i=0;
33 1
34 1
35 1 }
36 /*產生一個使能脈沖*/
37 void En_Toggle(void)
38 {
39 1 LCD_EN=1;
40 1 delay();
41 1 LCD_EN=0;
42 1 delay();
43 1 }
44
45
46 void LCD_clr()
47 {
48 1 LCD_cmd(0x01);
49 1
50 1 }
51
52 void LCD_init(void)
53 {
54 1 LCD_cmd(0x08);/*顯示關閉*/
55 1 LCD_cmd(0x38);/*8位數據,2行顯示*/
C51 COMPILER V7.06 LCD1602 09/01/2008 00:04:39 PAGE 2
56 1
57 1 LCD_cmd(0x01);/*清屏*/
58 1 /*清屏和光標歸位需要較長的時間*/
59 1 LCD_cmd(0x06);/*寫入數據后光標右移*/
60 1 LCD_cmd(0x0c);/*顯示開,不顯示光標*/
61 1 }
62 void LCD_cmd(Uchar cmd)/*寫入控制命令*/
63 {
64 1 wait_until_ready();
65 1 LCD_RS=0;
66 1 LCD_RW=0;
67 1 LCD_DATA=cmd;
68 1 En_Toggle();
69 1
70 1 }
71 void LCD_char(char str)/*寫入要顯示的字符*/
72 {
73 1 wait_until_ready();
74 1 LCD_RS=1;
75 1 LCD_RW=0;
76 1 LCD_DATA=str;
77 1 En_Toggle();
78 1
79 1 }
80 void LCD_setxy(char x,char y) /*設定顯示位置,行x=1/2,列y=1~16的任意整數*/
81 {
82 1 char temp;
83 1 if(x==1)
84 1 {temp=0x80+y-1;
85 2 LCD_cmd(temp);
86 2 }
87 1 else
88 1 {temp=0xC0+y-1;
89 2 LCD_cmd(temp);
90 2 }
91 1 }
92 void LCD_string(char *s)
93 {
94 1 for(;*s!='\0';s++)LCD_char(*s);
95 1 }
96 void wait_until_ready(void) /*檢測忙標志,忙則等待*/
97 {
98 1 LCD_RS=0;
99 1 LCD_RW=1;
100 1 LCD_DATA=0x0ff;
101 1 LCD_EN=1;
102 1 delay();
103 1 do{ACC=LCD_DATA;}while(bflag==1);
104 1 LCD_EN=0;
105 1 }
106
107
108
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 151 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 9
IDATA SIZE = ---- ----
C51 COMPILER V7.06 LCD1602 09/01/2008 00:04:39 PAGE 3
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 + -