📄 tem_test.lst
字号:
C51 COMPILER V7.50 TEM_TEST 12/05/2007 10:50:25 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TEM_TEST
OBJECT MODULE PLACED IN tem_test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE tem_test.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*-------------------------------------------------------------------------------------------------
2 ╔=======================================
3 ┆ YG51A开发板配套实验学习例程 ┆
4 ┆ Version 2.0 ┆
5 ┆ ┆
6 ┆ 扬光电子工作室 ┆
7 ┆ ┆
8 ┆ QQ:573764777 ┆
9 ┆ E-mail:yg-stu@163.com ┆
10 ╚=======================================╝
11 *********************************** 程序功能说明 *********************************************
12 数码管显示当前温度
13 ********************************************************************************************/
14
15 #include <reg52.h>
16 #define uchar unsigned char
17
18 sbit DQ =P3^7; //18B20数据线引脚
19
20 //数码管显示的段码表
21 uchar code table[] ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
22 // 0 1 2 3 4 5 6 7 8 9
23 uchar code table_d[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
24 // 0 1 2 3 4 5 6 7 8 9
25
26 uchar dispbuf[4]; //显示缓冲区
27 uchar temper[2];//存放温度的数组
28
29 void seg_scan();
30
31 /*****************************延时函数**************************/
32
33 void delay (unsigned int us)
34 {
35 1 while(us--);
36 1 }
37
38 void reset(void) //复位
39 {
40 1 uchar x=0;
41 1 DQ = 1;
42 1 delay(8); //稍做延时
43 1 DQ = 0;
44 1 delay(80); //精确延时 大于 480us
45 1 DQ = 1; //拉高总线
46 1 delay(14);
47 1 x=DQ;
48 1 delay(20);
49 1 }
50 /**********************从DS18B20读一字节***************/
51 uchar readbyte(void) //读1字节
52 {
53 1 uchar i=0;
54 1 uchar dat=0;
55 1 for (i=8;i>0;i--)
C51 COMPILER V7.50 TEM_TEST 12/05/2007 10:50:25 PAGE 2
56 1 {
57 2 DQ = 0;
58 2 dat>>=1;
59 2 DQ = 1;
60 2 if(DQ)
61 2 dat|=0x80;
62 2 delay(4);
63 2 }
64 1 return(dat);
65 1 }
66 /***********************向DS18B20写一字节***********************/
67 void writebyte(unsigned char dat) //写1字节
68 {
69 1 uchar i=0;
70 1 for (i=8; i>0; i--)
71 1 {
72 2 DQ = 0;
73 2 DQ = dat&0x01;
74 2 delay(5);
75 2 DQ = 1;
76 2 dat>>=1;
77 2 }
78 1 delay(4);
79 1 }
80 /***********************CPU读取温度值***************************/
81 void readtemp(void) //读取温度
82 {
83 1 uchar a=0,b=0;
84 1 reset();
85 1
86 1 seg_scan();
87 1
88 1 writebyte(0xCC); // 跳过序列号
89 1 writebyte(0x44); // 启动温度转换
90 1 reset();
91 1
92 1 seg_scan();
93 1
94 1 writebyte(0xCC);
95 1 writebyte(0xBE); //读9个寄存器,前两个为温度
96 1
97 1 seg_scan();
98 1
99 1 a=readbyte(); //低位
100 1 b=readbyte(); //高位
101 1
102 1 seg_scan();
103 1
104 1 temper[0]=a&0x0f;
105 1 a=a>>4; //低位右移4位,舍弃小数部分
106 1 temper[1]=b<<4; //高位左移4位,舍弃符号位
107 1 temper[1]=temper[1]|a;
108 1 }
109
110 /******************************显示*************************/
111
112 void seg_scan()
113 {
114 1 int i,j=0xFE;
115 1 int dispdata;
116 1 for(i=0;i<4;i++)
117 1 {
C51 COMPILER V7.50 TEM_TEST 12/05/2007 10:50:25 PAGE 3
118 2 P2=j;
119 2 dispdata=dispbuf[i];
120 2 if(i==1)
121 2 P0=table_d[dispdata];
122 2 else
123 2 P0=table[dispdata];
124 2 delay(500);
125 2 j=(j<<1)|0x01;
126 2 if(j==0xEF)j=0xFE;
127 2 }
128 1 }
129
130 /*******************************主函数***********************/
131
132 main()
133 { uchar i;
134 1 uchar temp;
135 1 float backbit;
136 1 for(i=0;i<4;i++)
137 1 dispbuf[i] = 0;
138 1 while(1){
139 2 readtemp();//读18B20
140 2 backbit = temper[0];//换成浮点数
141 2 backbit = backbit * 6.25;//乘以0.0625*100
142 2 temp = backbit;//取低2位整数部分
143 2 dispbuf[3] = temp%10 ;
144 2
145 2 temp = temp/10;
146 2 dispbuf[2] = temp%10 ;
147 2
148 2 temp = temper[1];//取整数部分
149 2 dispbuf[1] = temp%10;
150 2
151 2 temp = temp/10;
152 2 dispbuf[0]= temp%10;
153 2
154 2 seg_scan(); //显示扫描
155 2 }
156 1 }
157
158 /********************************结束************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 381 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 8
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 + -