📄 12864f.lst
字号:
C51 COMPILER V7.08 12864F 04/27/2009 21:28:13 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE 12864F
OBJECT MODULE PLACED IN 12864F.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 12864F.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include <intrins.h>
3 #include <string.h>
4 #include <DS18B20.h>
5 #define uchar unsigned char
6 #define uint unsigned int
7
8 //12864 汉字显示模块 与MCU连接
9
10 sbit RS = P3^0;// 1:输入数据 ;0:输入命令
11 sbit RW = P3^1;//1:读数据 0:写数据
12 sbit E = P3^2;
13 //sbit PSB = P1^1; //串并口选择 1:并口模式; 0:串口模式;
14 sbit ak = P1^0;
15 sbit be = P3^7;
16 sbit br = P1^7;
17 sbit key= P3^3;
18
19 #define LcdData P0
20
21 //延时子程序
22 void delay(unsigned int t)
23 { unsigned int i,j;
24 1 for(i=0;i<t;i++)
25 1 for(j=0;j<10;j++);
26 1
27 1 }
28 //测试LCD忙
29 bit Check_Busy()
30 {
31 1 bit busy;
32 1 RS = 0;
33 1 RW = 1;
34 1 E = 1;
35 1 _nop_();
36 1 busy = (bit)(LcdData&0x80);
37 1 E = 0;
38 1 return busy;
39 1 }
40 //等待LCD到空闲
41 void wait()
42 {
43 1 while(Check_Busy());
44 1 }
45 //写数据
46 void Lcd_Writedata(unsigned char dispdata)
47 { wait();
48 1
49 1 RS=1;
50 1 RW=0;
51 1 E=0;
52 1 _nop_(); _nop_();
53 1 LcdData=dispdata;
54 1 E=1;
55 1 _nop_(); _nop_();
C51 COMPILER V7.08 12864F 04/27/2009 21:28:13 PAGE 2
56 1 E=0;
57 1 }
58
59 //写指令代码
60 void Lcd_WriteCmd(unsigned char cmdcode)
61 { wait();
62 1 RS=0;
63 1 RW=0;
64 1
65 1 E=0;
66 1 _nop_(); _nop_();
67 1 LcdData=cmdcode;
68 1 _nop_(); _nop_();
69 1 E=1;
70 1 _nop_(); _nop_();
71 1 E=0;
72 1 }
73 //初始化LCD
74 void Lcd_Reset()
75 { // PSB=1;
76 1 Lcd_WriteCmd(0x30); //选择基本指令集
77 1 delay(5);
78 1 Lcd_WriteCmd(0x0e); //开显示(无游标、不反白)
79 1 delay(5);
80 1 Lcd_WriteCmd(0x01); //清除显示,并且设定地址指针为00H
81 1 delay(5);
82 1 Lcd_WriteCmd(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
83 1
84 1 }
85
86 void WriteStr(unsigned char code *s)
87 {
88 1 while(*s>0)
89 1 { Lcd_Writedata(*s);
90 2 s++;
91 2 }
92 1 }
93
94 void hzDisp()
95 {
96 1 Lcd_WriteCmd(0x80);
97 1 WriteStr(" ");
98 1 Lcd_WriteCmd(0x90);
99 1 WriteStr("系统初始化。。。");
100 1 delay(40000);
101 1 Lcd_WriteCmd(0x90);
102 1 WriteStr(" ");
103 1 delay(5000);
104 1 Lcd_WriteCmd(0x80);
105 1 WriteStr("欢迎使用");
106 1 Lcd_WriteCmd(0x88);
107 1 WriteStr(" 智能家居系统");
108 1
109 1 }
110
111
112
113 void Main()
114 {
115 1 unsigned int a,b,c,d,tem;
116 1 Lcd_Reset(); //初始化LCD屏
117 1 ak=0;
C51 COMPILER V7.08 12864F 04/27/2009 21:28:13 PAGE 3
118 1 hzDisp();
119 1 delay(40000);
120 1 d=0;
121 1 while(1)
122 1 {
123 2 tem=ReadTemperature();
124 2 a=tem/100+48;
125 2 b=tem%100/10+48;
126 2 c=tem%10+48;
127 2 Lcd_Reset(); //初始化LCD屏
128 2 delay(5);
129 2 Lcd_WriteCmd(0x80);
130 2 WriteStr("当前室内温度:");
131 2 Lcd_WriteCmd(0x90);
132 2 Lcd_Writedata(a);
133 2 Lcd_Writedata(b);
134 2 Lcd_Writedata(0x2e);
135 2 Lcd_Writedata(c);
136 2 WriteStr("度");
137 2 Lcd_WriteCmd(0x88);
138 2 WriteStr("当前室内照度:");
139 2 Lcd_WriteCmd(0x98);
140 2 WriteStr("偏暗");
141 2 delay(20000);
142 2
143 2 if(d++==10)
144 2 ak=1;
145 2
146 2 if (key==0)
147 2 { d=0;
148 3 ak=0;
149 3 be=0;
150 3 delay(5000);
151 3 be=1;}
152 2 }
153 1
154 1 }
155
156
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 661 ----
CONSTANT SIZE = 98 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 12
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 + -