📄 1602串.lst
字号:
C51 COMPILER V7.06 1602__ 04/06/2009 16:09:35 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 1602__
OBJECT MODULE PLACED IN 1602串.OBJ
COMPILER INVOKED BY: D:\Program Files\keil c\C51\BIN\C51.EXE 1602串.c BROWSE DEBUG OBJECTEXTEND TABS(5)
stmt level source
1
2
3 //1602串口显示不需判别忙信号//
4
5 #include"AT89X51.H"
6 #define uchar unsigned char
7 #define ufloat unsigned float
8
9 sbit LCD_RS=P0^0;
10 sbit LCD_RW=P0^1;
11 sbit LCD_E=P0^2;
12
13 sbit CLK=P0^3;
14 sbit Clear=P0^4;
15 sbit LCD_Data=P0^5;
16
17 char a[]={'1','q','w','e','f','s','c','f','s','c','v'};
18 char b[]={'0','1','2','3','4','5','6','7','8','9'};
19
20
21 int h,m,s,count=1;
22 void delay(unsigned char time)
23 {
24 1 uchar i,k;
25 1 for(i=time;i>0;i--)
26 1 for(k=248;k>0;k--) ;
27 1 }
28 /////将一个字节转换成数据流/////////////
29 void TransBit(uchar WCLCD) //char->bit
30 {
31 1 int i;
32 1 // CLK=0;
33 1 Clear=1; //CLK上升沿时输出全为零
34 1 for(i=0;i<8;i++) //数据流处理
35 1 {
36 2 LCD_Data=WCLCD&0x80;
37 2 CLK=0; ////CLK下降沿时读取数据
38 2 delay(2);
39 2 CLK=1;
40 2 WCLCD<<=1;
41 2 }
42 1 }
43 ////////写指令////////
44 void WriteCommandLCD(uchar WDLCD)
45 {
46 1 TransBit(WDLCD);
47 1 LCD_RS=0;
48 1 LCD_RW=0;
49 1 LCD_E=0;
50 1 LCD_E=0;
51 1 LCD_E=1;
52 1 }
53
54 ////////写数据////////
55 void WriteDataLCD(uchar WDLCD)
C51 COMPILER V7.06 1602__ 04/06/2009 16:09:35 PAGE 2
56 {
57 1 TransBit(WDLCD);
58 1 LCD_RS=1;
59 1 LCD_RW=0;
60 1 LCD_E=0;
61 1 LCD_E=0;
62 1 LCD_E=1;
63 1 }
64
65 /////按指定位置显示一个字符X不能大于15,Y不能大于1/////
66 void DisplayOneChar(uchar X,uchar Y,uchar Num)
67 {
68 1
69 1 Y&=0x01;
70 1 X&=0x0F; //限制X不能大于15,Y不能大于1
71 1 if(Y) X+=0xc0; //当要显示第二行时地址码+0xc0;
72 1 else X+=0x80;
73 1 WriteCommandLCD(X); //发送地址码
74 1 WriteDataLCD(Num);
75 1 }
76
77 /////按指定位置显示一串字符/////
78 void DisplayListChar(uchar X,uchar Y,uchar *DData)
79 {
80 1 uchar ListLength;
81 1 ListLength=0;
82 1 while(DData[ListLength]>0x20) //若到达字串尾则退出
83 1 {
84 2 if(X<=15) //X坐标应小于15
85 2 {
86 3 DisplayOneChar(X,Y,DData[ListLength]); //显示单个字符
87 3 ListLength++;
88 3 ++X;
89 3 }
90 2 }
91 1 }
92
93 ///显示数字////
94 void DisplayNumChar(uchar X,uchar Y,int Num,char length)
95 {
96 1 char i;
97 1 int e=1,num;
98 1 num=Num;
99 1 for(i=0;i<length-1;i++)
100 1 {
101 2 e*=10;
102 2 }
103 1 for(i=0;i<length;i++)
104 1 {
105 2 if(X<=15)
106 2 {
107 3 DisplayOneChar(X,Y,b[(num/e)]);
108 3 X++;
109 3 num-=(num/e)*e;
110 3 e/=10;
111 3 }
112 2 }
113 1 }
114 //////显示光标程序////////
115 void LocateXY(uchar X,uchar Y)
116 { uchar temp;
117 1 Y&=0x01;
C51 COMPILER V7.06 1602__ 04/06/2009 16:09:35 PAGE 3
118 1 X&=0x0F; //限制X不能大于15,Y不能大于1
119 1 if(Y) X+=0xc0; //当要显示第二行时地址码+0xc0;
120 1 else X+=0x80;
121 1 temp=X;
122 1 WriteCommandLCD(temp);
123 1 }
124 void LCDInit(void) //LCM初始化
125 {
126 1 delay(3);
127 1 WriteCommandLCD(0x38); //显示模式设置
128 1 delay(3);
129 1 WriteCommandLCD(0x38);
130 1 delay(3);
131 1 WriteCommandLCD(0x38);
132 1 delay(3);
133 1 WriteCommandLCD(0x38);
134 1 delay(3);
135 1 WriteCommandLCD(0x0f);//整体显示的开,光标开,光标是否闪烁,
136 1 delay(3);
137 1 WriteCommandLCD(0x01);
138 1 delay(3);
139 1 WriteCommandLCD(0x06);
140 1 }
141
142 void main(void)
143 {
144 1 TMOD=0x01;
145 1 TH0=(65536-5000)/256;
146 1 TL0=(65536-5000)%256;
147 1 ET0=1;
148 1 EA=1;
149 1 TR0=1;
150 1 LCDInit();
151 1 CLK=1;
152 1 DisplayListChar(8,1,"time");
153 1 DisplayOneChar(1,0,':');
154 1 DisplayOneChar(13,0,':');
155 1 LocateXY(12,1);
156 1 while(1);
157 1
158 1 }
159 void t0(void) interrupt 1 using 0
160 {
161 1 TH0=(65536-1000)/256;
162 1 TL0=(65536-1000)%256;
163 1 // DisplayListChar(8,1,"time");
164 1 // DisplayOneChar(10,0,':');
165 1 // DisplayOneChar(13,0,':');
166 1 count++;
167 1 if(count==1000)
168 1 {
169 2 s++;
170 2 count=1;
171 2 if(s==59)
172 2 {
173 3 m++;
174 3 s=0;
175 3 if(m==59)
176 3 {
177 4 h++;
178 4 m=0;
179 4 if(h==12)
C51 COMPILER V7.06 1602__ 04/06/2009 16:09:35 PAGE 4
180 4 h=0;
181 4 }
182 3 }
183 2 DisplayNumChar(8,0,h,2);
184 2 DisplayNumChar(11,0,m,2);
185 2 DisplayNumChar(14,0,s,2);
186 2 }
187 1
188 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 584 ----
CONSTANT SIZE = 5 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 29 16
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 + -