📄 task.lst
字号:
C51 COMPILER V7.06 TASK 03/22/2009 20:21:29 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TASK
OBJECT MODULE PLACED IN task.OBJ
COMPILER INVOKED BY: D:\KEIL\C51\BIN\C51.EXE task.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*******************************************************************/
2 /* */
3 /* 延时函数 */
4 /* */
5 /*******************************************************************/
6 #include<reg51.h>
7 #include <intrins.h>
8 #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
9 sbit LCD_RS = P3^5; //寄存器选择输入
10 sbit LCD_RW = P3^6; //液晶读/写控制
11 sbit LCD_EN = P3^4; //液晶使能控制
12 sbit LCD_PSB = P3^7; //串/并方式控制
13 sbit wela = P2^6;
14 sbit dula = P2^7;
15 #define uchar unsigned char
16 #define uint unsigned int
17 void delay(int ms)
18 {
19 1 while(ms--)
20 1 {
21 2 unsigned char i;
22 2 for(i=0;i<250;i++)
23 2 {
24 3 _nop_();
25 3 _nop_();
26 3 _nop_();
27 3 _nop_();
28 3 }
29 2 }
30 1 }
31 /*******************************************************************/
32 /* */
33 /*检查LCD忙状态 */
34 /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */
35 /* */
36 /*******************************************************************/
37 bit lcd_busy()
38 {
39 1 bit result;
40 1 LCD_RS = 0;
41 1 LCD_RW = 1;
42 1 LCD_EN = 1;
43 1 result = (bit)(P0&0x80);
44 1 LCD_EN = 0;
45 1 return(0);
46 1 }
47 /*******************************************************************/
48 /* */
49 /*写指令数据到LCD */
50 /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */
51 /* */
52 /*******************************************************************/
53 void lcd_wcmd(unsigned char cmd)
54 {
55 1 while(lcd_busy());
C51 COMPILER V7.06 TASK 03/22/2009 20:21:29 PAGE 2
56 1 LCD_RS = 0;
57 1 LCD_RW = 0;
58 1 LCD_EN = 0;
59 1 _nop_();
60 1 _nop_();
61 1 P0 = cmd;
62 1 delayNOP();
63 1 LCD_EN = 1;
64 1 delayNOP();
65 1 LCD_EN = 0;
66 1 }
67 /*******************************************************************/
68 /* */
69 /*写显示数据到LCD */
70 /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */
71 /* */
72 /*******************************************************************/
73 void lcd_wdat(unsigned char dat)
74 {
75 1 while(lcd_busy());
76 1 LCD_RS = 1;
77 1 LCD_RW = 0;
78 1 LCD_EN = 0;
79 1 P0 = dat;
80 1 delayNOP();
81 1 LCD_EN = 1;
82 1 delayNOP();
83 1 LCD_EN = 0;
84 1 }
85 /*******************************************************************/
86 /* */
87 /* LCD初始化设定 */
88 /* */
89 /*******************************************************************/
90 void lcd_init()
91 {
92 1
93 1 LCD_PSB = 1; //并口方式
94 1
95 1 lcd_wcmd(0x34); //扩充指令操作
96 1 delay(5);
97 1 lcd_wcmd(0x30); //基本指令操作
98 1 delay(5);
99 1 lcd_wcmd(0x0C); //显示开,关光标
100 1 delay(5);
101 1 lcd_wcmd(0x01); //清除LCD的显示内容
102 1 delay(5);
103 1 }
104 void delay0(uchar x) //x*0.14MS
105 {
106 1 uchar i;
107 1 while(x--)
108 1 {
109 2 for (i = 0; i<13; i++) {}
110 2 }
111 1 }
112 /*********************************************************/
113 /* */
114 /* 设定显示位置 */
115 /* */
116 /*********************************************************/
117 void lcd_pos(uchar X,uchar Y)
C51 COMPILER V7.06 TASK 03/22/2009 20:21:29 PAGE 3
118 {
119 1 uchar pos;
120 1 if (X==0)
121 1 {X=0x80;}
122 1 else if (X==1)
123 1 {X=0x90;}
124 1 else if (X==2)
125 1 {X=0x88;}
126 1 else if (X==3)
127 1 {X=0x98;}
128 1 pos = X+Y ;
129 1 lcd_wcmd(pos); //显示地址
130 1 }
131
132
133 void Draw_PM(const unsigned char *ptr)
134 {
135 1 uchar i,j,k;
136 1
137 1 lcd_wcmd(0x34); //打开扩展指令集
138 1 i = 0x80;
139 1 for(j = 0;j < 32;j++)
140 1 {
141 2 lcd_wcmd(i++);
142 2 lcd_wcmd(0x80);
143 2 for(k = 0;k < 16;k++)
144 2 {
145 3 lcd_wdat(*ptr++);
146 3 }
147 2 }
148 1 i = 0x80;
149 1 for(j = 0;j < 32;j++)
150 1 {
151 2 lcd_wcmd(i++);
152 2 lcd_wcmd(0x88);
153 2 for(k = 0;k < 16;k++)
154 2 {
155 3 lcd_wdat(*ptr++);
156 3 }
157 2 }
158 1 lcd_wcmd(0x36); //打开绘图显示
159 1 lcd_wcmd(0x30); //回到基本指令集
160 1
161 1 }
162
163
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 297 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
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 + -