📄 ad0809.lst
字号:
C51 COMPILER V8.02 AD0809 11/28/2008 15:15:44 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE AD0809
OBJECT MODULE PLACED IN ad0809.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ad0809.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /* 作者:史叔伍
2 完成日期:2008-11-5
3 程序实现功能:通过AD0809将输入的模拟量转化为数字量,
4 通过调节电位器来改变模拟电压输入,通过数码管显示电压的变化
5 */
6 #include <reg52.h>
7 #include<intrins.h>
8 #define uchar unsigned char
9 #define uint unsigned int
10 uchar code table[]=
11 {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
12 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef
13 };//0,1,2,3,4,5,6,7,8,9,0.,1.,2.,3.,4.,5.,6.,7.,8.,9. */
14 uint temp;
15 uchar dis[3];
16
17 sbit START=P3^0; //A/D转换启动信号,高电平有效
18 sbit OE=P3^1; //输出数据允许信号,高电平时,可以从ADC0809读取数据
19 sbit EOC=P3^2; //A/D转换结束信号,高电平时,转换结束
20 sbit PinA=P3^4;
21 sbit PinB=P3^5;
22 sbit PinC=P3^6;
23
24 /*延时zms程序*/
25 void delay(uint z)
26 {
27 1 uint x,y;
28 1 for(x=z;x>0;x--)
29 1 for(y=110;y>0;y--);
30 1 }
31
32 /*开始AD转换函数*/
33 void startadc(uchar address)
34 {
35 1 PinC=(bit)(address&0x04); //选择输入通道
36 1 PinB=(bit)(address&0x02);
37 1 PinA=(bit)(address&0x01);
38 1 }
39
40 /*读取A/D转换后的数据函数*/
41 uint readdata(void)
42 {
43 1 START=0;
44 1 START=1;
45 1 START=0;
46 1 while(!EOC); //等待A/D转化结束
47 1 OE=0;
48 1 _nop_();
49 1 _nop_();
50 1 temp=P0&0xff;
51 1 return(temp);
52 1 }
53
54 /*初始化端口*/
55 void initio()
C51 COMPILER V8.02 AD0809 11/28/2008 15:15:44 PAGE 2
56 {
57 1 P0=0xff;
58 1 PinA=0;
59 1 PinB=0;
60 1 PinC=0;
61 1 START=0;
62 1 OE=0;
63 1 EOC=1;
64 1 }
65
66 /*将AD读出数据转化为电压值*/
67 void convert()
68 {
69 1 uint volt;
70 1 float voltage;
71 1 voltage=temp*0.02;
72 1 volt=voltage*100;
73 1 dis[0]=volt/100;
74 1 dis[1]=volt%100/10;
75 1 dis[2]=volt%10;
76 1 }
77
78 /*在数码管上显示三位数字*/
79 void show()
80 {
81 1 P1=0xfb;
82 1 P2=table[dis[0]+10];
83 1 delay(5);
84 1 P1=0xfd;
85 1 P2=table[dis[1]];
86 1 delay(5);
87 1 P1=0xfe;
88 1 P2=table[dis[2]];
89 1 delay(5);
90 1 }
91
92 /*主程序*/
93 void main()
94 {
95 1 initio();
96 1 while(1)
97 1 {
98 2 startadc(4);//4通道
99 2 temp=readdata();
100 2 convert();
101 2 show();
102 2 }
103 1 }
104
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 251 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 4
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 + -