?? lcdinit.lst
字號(hào):
C51 COMPILER V8.05a LCDINIT 01/05/2007 08:38:52 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE LCDINIT
OBJECT MODULE PLACED IN lcdinit.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcdinit.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include "data.h"
3 #include "order.h"
4 #include "lcdinit.h"
5
6 /*讀狀態(tài)*/
7 uchar read_state(){
8 1 uchar temp;
9 1 P2 = 0xff;
10 1 cd = 1;
11 1 rd = 0;
12 1 temp = P2;
13 1 rd = 1;
14 1 return(temp);
15 1 }
16
17 /*STA0指令讀寫狀態(tài),STA1數(shù)據(jù)讀寫狀態(tài) 判斷函數(shù)*/
18 void lcd_enable(){
19 1 uchar i;
20 1 for(i = 10; i > 0; i--)
21 1 if((read_state() & 0x03) == 0x03)
22 1 break;
23 1 if(i==0)error0=1;/*若i==0,說(shuō)明錯(cuò)誤*/
24 1 //else error0=0;
25 1 }
26
27 /*STA2數(shù)據(jù)自動(dòng)讀狀態(tài) 判斷函數(shù)*/
28 void atrd_enable(){
29 1 uchar i;
30 1 for(i = 10; i > 0; i--)
31 1 if((read_state() & 0x04) == 0x04)
32 1 break;
33 1 if(i==0)error1=1;/*若i==0,說(shuō)明錯(cuò)誤*/
34 1 //else error1=0;
35 1 }
36
37 /*STA3數(shù)據(jù)自動(dòng)寫狀態(tài) 判斷函數(shù)*/
38 void atwr_enable(){
39 1 uchar i;
40 1 for(i = 10; i > 0; i--)
41 1 if((read_state() & 0x08) == 0x08)
42 1 break;
43 1 if(i==0)error2=1;/*若i==0,說(shuō)明錯(cuò)誤*/
44 1 //else error2=0;
45 1 }
46
47 /*寫無(wú)參數(shù)函數(shù)*/
48 void write_cmd0(uchar cmd){
49 1 lcd_enable();
50 1 cd=1;
51 1 P2=cmd;
52 1 wr=0;
53 1 wr=1;
54 1 }
55
C51 COMPILER V8.05a LCDINIT 01/05/2007 08:38:52 PAGE 2
56 /*寫單參數(shù)函數(shù)*/
57 void write_cmd1(uchar data1, uchar cmd){
58 1 lcd_enable();
59 1 cd=0;
60 1 P2=data1;
61 1 wr=0;
62 1 wr=1;
63 1 lcd_enable();
64 1 cd=1;
65 1 P2=cmd;
66 1 wr=0;
67 1 wr=1;
68 1 }
69
70 /*寫雙參數(shù)函數(shù)*/
71 void write_cmd2(uchar data1, uchar data2, uchar cmd){
72 1 lcd_enable();
73 1 cd=0;
74 1 P2=data1;
75 1 wr=0;
76 1 wr=1;
77 1 lcd_enable();
78 1 cd=0;
79 1 P2=data2;
80 1 wr=0;
81 1 wr=1;
82 1 lcd_enable();
83 1 cd=1;
84 1 P2=cmd;
85 1 wr=0;
86 1 wr=1;
87 1 }
88
89 /*寫數(shù)據(jù)函數(shù)*/
90 void write_data(uchar data0){
91 1 lcd_enable();
92 1 cd=1;
93 1 P2=data0;
94 1 wr=0;
95 1 wr=1;
96 1 }
97
98 /*讀數(shù)據(jù)函數(shù)*/
99 uchar read_data(){
100 1 char temp;
101 1 lcd_enable();
102 1 cd = 0;
103 1 P2 = 0xff;
104 1 rd = 0;
105 1 temp = P2;
106 1 rd = 1;
107 1 return(temp); /*若返回0,可能錯(cuò)誤*/
108 1 }
109
110 /*自動(dòng)寫開(kāi)始*/
111 void auto_write(){
112 1 write_cmd0(AUT_WR);
113 1 }
114
115 /*自動(dòng)讀開(kāi)始*/
116 void auto_read(){
117 1 write_cmd0(AUT_RD);
C51 COMPILER V8.05a LCDINIT 01/05/2007 08:38:52 PAGE 3
118 1 }
119
120 /*自動(dòng)寫結(jié)束*/
121 void atwr_stop(){
122 1 write_cmd0(AUT_WO);
123 1 }
124
125 /*自動(dòng)讀結(jié)束*/
126 void atrd_stop(){
127 1 write_cmd0(AUT_RO);
128 1 }
129
130 /*數(shù)據(jù)一次寫函數(shù)*/
131 void write_one(uchar data1, char way){
132 1 atwr_enable();
133 1 auto_write();
134 1 write_cmd1(data1,way);
135 1 atwr_stop();
136 1 }
137
138 /*數(shù)據(jù)一次讀函數(shù)*/
139 uchar read_one(char way){
140 1 uchar temp;
141 1 atrd_enable();
142 1 auto_read();
143 1 write_cmd0(way);
144 1 temp = read_data();
145 1 atrd_stop();
146 1 return(temp);
147 1 }
148
149 /*設(shè)置當(dāng)前顯示位置函數(shù)x,y從0開(kāi)始表示單位為字符*/
150 void set_xy(uchar x, uchar y){
151 1 int temp;
152 1 temp = y * LCD_CHAR + x;
153 1 write_cmd2(temp&0xff,temp/0xff,ADR_POS);
154 1 }
155
156 void set_adr(uchar D1, uchar D2){
157 1 write_cmd2(D1,D2,ADR_POS);
158 1 }
159
160 /*設(shè)置光標(biāo)指針 x,y從0開(kāi)始*/
161 void set_cur(char x, char y){
162 1 write_cmd2(x,y,CUR_POS);
163 1 }
164
165 /*CGRAM偏置地址設(shè)置函數(shù)*/
166 void set_cgram(){
167 1 write_cmd2(0x01,0x00,CGR_POS);//0000,1100,0000,0000 0C00
168 1 }
169
170 /*液晶初始化函數(shù)(文本區(qū)首地址D1,文本區(qū)首地址D2, 文本區(qū)寬度, 圖形區(qū)首地址D1, 圖形區(qū)首地址D2, 圖形區(qū)寬度,
- 光標(biāo)形狀, 顯示方式, 顯示開(kāi)關(guān))*/
171 void lcd_init(uchar txtstpd1, uchar txtstpd2, uchar txtwid, uchar grhstpd1, uchar grhstpd2, uchar grhwid,
-uchar cur, uchar mod, uchar sw){
172 1 write_cmd2(txtstpd1,txtstpd2,TXT_STP); /*文本區(qū)首地址*/
173 1 write_cmd2(txtwid,0x00,TXT_WID); /*文本區(qū)寬度*/
174 1 write_cmd2(grhstpd1,grhstpd2,GRH_STP); /*圖形區(qū)首地址*/
175 1 write_cmd2(grhwid,0x00,GRH_WID); /*圖形區(qū)寬度*/
176 1 write_cmd0(CUR_SHP | cur); /*光標(biāo)形狀*/
177 1 write_cmd0(mod); /*顯示方式*/
C51 COMPILER V8.05a LCDINIT 01/05/2007 08:38:52 PAGE 4
178 1 write_cmd0(DIS_SW | sw); /*顯示開(kāi)關(guān)*/
179 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 321 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 9
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -