?? 1602b_lcd.lst
字號:
C51 COMPILER V7.06 1602B_LCD 03/03/2006 15:27:36 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 1602B_LCD
OBJECT MODULE PLACED IN 1602B_LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1602B_LCD.c BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS
stmt level source
1 /**********************************************************
2 TC1602B LCD DISPLAY WITH 4 BITS MODE
3 建立時間:2004年12月10號
4 修改日期:2005年1月12號
5 LCD第一行顯示寄存器地址:0X80-0X8F
6 LCD第二行顯示寄存器地址:0XC0-0XCF
7 **********************************************************/
8 #include <At89x51.h>
9 #include "1602B_LCD.h"
10 //--------------------------------------------------------
11 #define LCD_DATA_PORT P3
12 sbit LCD_EN=P3^4;
13 sbit LCD_RS=P3^5;
14 //--------------------------------------------------------
15 typedef unsigned char uchar;
16 code char Numtable[]="0123456789ABCDEF ";
17 //--------------------------------------------------------
18 void delay_nms(char i){for(;i>0;i--);}
19 //--------------------------------------------------------
20 void LCD_WR4bits(unsigned char c){
21 1 //c<<=4;
22 1 //unsigned char i=0x01,j=0x80,k=0;
23 1 //for(;i<0x10;i<<=1,j>>=1){
24 1 // if(c&i)k|=j;
25 1 //}
26 1 LCD_EN=1;
27 1 //LCD_DATA_PORT&=0x0f;
28 1 LCD_DATA_PORT&=0xf0;
29 1 LCD_DATA_PORT|=c;
30 1 //LCD_DATA_PORT|=k;
31 1 LCD_EN=0;
32 1 }
33 //--------------------------------------------------------
34 void LCD_init(void){
35 1 /* delay_nms(50);
36 1 LCD_RS=0; //command
37 1 LCD_WR4bits(0x03); //set 8 bits
38 1 delay_nms(10);
39 1 LCD_WR4bits(0x03); //set 8 bits
40 1 delay_nms(10);
41 1 LCD_WR4bits(0x03); //set 8 bits
42 1 delay_nms(10);
43 1 LCD_WR4bits(0x02); //set 4 bits
44 1 LCD_WR4bits(0x08);
45 1 delay_nms(2);
46 1 LCD_WR4bits(0x00); //顯示開
47 1 LCD_WR4bits(0x0c);
48 1 delay_nms(2);
49 1 LCD_WR4bits(0x00); //光標設定
50 1 LCD_WR4bits(0x06);
51 1 delay_nms(2);
52 1 LCD_RS=1; //data
53 1 delay_nms(10);
54 1 */
55 1 delay_nms(250);
C51 COMPILER V7.06 1602B_LCD 03/03/2006 15:27:36 PAGE 2
56 1 LCD_RS=0; //command
57 1 LCD_WR4bits(0x02); //set 4 bits
58 1 delay_nms(50);
59 1
60 1 LCD_WR4bits(0x08); //2 Lines,disp off
61 1 delay_nms(50);
62 1 LCD_WR4bits(0x00); //顯示開
63 1 LCD_WR4bits(0x0c); //cursor off,blink off
64 1 delay_nms(50);
65 1 LCD_WR4bits(0x00); //clean all
66 1 LCD_WR4bits(0x01);
67 1 delay_nms(5);
68 1 LCD_WR4bits(0x00); //inc mode,shift off
69 1 LCD_WR4bits(0x06);
70 1
71 1 LCD_RS=1; //data
72 1 }
73 /*--------------------------------------------------------
74 LCD_set_xy : 設置LCD顯示的起始位置
75
76 輸入參數:x、y : 顯示字符串的位置,X:0-15,Y:0-1
77 --------------------------------------------------------*/
78 void LCD_set_xy( uchar x, uchar y ){
79 1 x=(y==0)?0x80+x:0xc0+x;
80 1 LCD_RS=0;
81 1 LCD_WR4bits(x>>4);
82 1 LCD_WR4bits(x);
83 1 LCD_RS=1;
84 1 }
85 //----------------------------------------------------
86 void LCD_char(uchar c){
87 1 LCD_WR4bits(c>>4);
88 1 LCD_WR4bits(c);
89 1 delay_nms(2);
90 1 }
91 /*----------------------------------------------------
92 LCD_write_string : 英文字符串顯示函數
93
94 輸入參數:*s :英文字符串指針;
95 X、Y : 顯示字符串的位置
96 ----------------------------------------------------*/
97 void LCD_write_string(uchar X,uchar Y,uchar *s){
98 1 LCD_set_xy( X, Y );
99 1 while(*s)LCD_char(*s++);
100 1 }
101 //----------------------------------------------------
102 void LCD_digtal(uchar c){
103 1 LCD_WR4bits(Numtable[c]>>4);
104 1 LCD_WR4bits(Numtable[c]);
105 1 delay_nms(2);
106 1 }
107 //----------------------------------------------------
108 void LCD_clear(void){
109 1 LCD_RS=0;
110 1 delay_nms(2);
111 1 LCD_WR4bits(0x00);
112 1 LCD_WR4bits(0x01);
113 1 delay_nms(2);
114 1 LCD_RS=1;
115 1 delay_nms(10);
116 1 }
117 //----------------------------------------------------
C51 COMPILER V7.06 1602B_LCD 03/03/2006 15:27:36 PAGE 3
118 void LCD_home(void){
119 1 LCD_RS=0;
120 1 delay_nms(2);
121 1 LCD_WR4bits(0x00);
122 1 LCD_WR4bits(0x02);
123 1 delay_nms(2);
124 1 LCD_RS=1;
125 1 delay_nms(10);
126 1 }
127 //----------------------------------------------------
C51 COMPILER V7.06 1602B_LCD 03/03/2006 15:27:36 PAGE 4
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _delay_nms (BEGIN)
; SOURCE LINE # 18
;---- Variable 'i' assigned to Register 'R7' ----
0000 ?C0001:
0000 D3 SETB C
0001 EF MOV A,R7
0002 6480 XRL A,#080H
0004 9480 SUBB A,#080H
0006 4003 JC ?C0004
0008 1F DEC R7
0009 80F5 SJMP ?C0001
000B ?C0004:
000B 22 RET
; FUNCTION _delay_nms (END)
; FUNCTION L?0019 (BEGIN)
0000 120000 R LCALL _LCD_WR4bits
0003 7F32 MOV R7,#032H
0005 L?0020:
0005 120000 R LCALL _delay_nms
0008 E4 CLR A
0009 FF MOV R7,A
; FUNCTION _LCD_WR4bits (BEGIN)
; SOURCE LINE # 20
;---- Variable 'c' assigned to Register 'R7' ----
; SOURCE LINE # 26
000A D2B4 SETB LCD_EN
; SOURCE LINE # 28
000C 53B0F0 ANL P3,#0F0H
; SOURCE LINE # 29
000F EF MOV A,R7
0010 42B0 ORL P3,A
; SOURCE LINE # 31
0012 C2B4 CLR LCD_EN
; SOURCE LINE # 32
0014 22 RET
; FUNCTION _LCD_WR4bits (END)
; FUNCTION LCD_init (BEGIN)
; SOURCE LINE # 34
; SOURCE LINE # 55
0000 7FFA MOV R7,#0FAH
0002 120000 R LCALL _delay_nms
; SOURCE LINE # 56
0005 C2B5 CLR LCD_RS
; SOURCE LINE # 57
0007 7F02 MOV R7,#02H
0009 120000 R LCALL _LCD_WR4bits
; SOURCE LINE # 58
000C 7F32 MOV R7,#032H
000E 120000 R LCALL _delay_nms
; SOURCE LINE # 60
0011 7F08 MOV R7,#08H
; SOURCE LINE # 61
; SOURCE LINE # 62
0013 120000 R LCALL L?0019
; SOURCE LINE # 63
0016 7F0C MOV R7,#0CH
; SOURCE LINE # 64
C51 COMPILER V7.06 1602B_LCD 03/03/2006 15:27:36 PAGE 5
; SOURCE LINE # 65
0018 120000 R LCALL L?0019
; SOURCE LINE # 66
001B 0F INC R7
001C 120000 R LCALL _LCD_WR4bits
; SOURCE LINE # 67
001F 7F05 MOV R7,#05H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -