📄 adc0832.lst
字号:
C51 COMPILER V7.20 ADC0832 12/11/2007 10:26:07 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE ADC0832
OBJECT MODULE PLACED IN ADC0832.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ADC0832.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************
2
3 ADC0832数字电压表实验
4 网址:http://www.kaifaban.com
5
6 传感器接口说明:从左到右依次为通道1,地,通道2
7 功能:在数码管上显示传感器接口通道2输入的电压
8 小数部分为7位,整数部分1位
9 测量范围:0~5V
10
11 *******************************************************/
12 #include <reg52.h>
13 #include <intrins.h>
14 #define uint unsigned int
15 #define uchar unsigned char
16 uchar Code[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff}; //共阳数码管编码表
17 uchar Bit[8]={0,0,0,0,0,0,0,0}; //数码管各位显示的数字
18 sbit CLK=P1^7; //定义时钟信号IO口
19 sbit CS=P3^3; //定义片选信号IO口
20 sbit DI=P1^5; //定义数据输入IO口
21 sbit DO=P1^6; //定义数据输出IO口
22 sbit DsySelect=P3^6; //控制数码管的74HC244所在IO口
23 uchar BitCode=0x80; //数码管位码初值
24 unsigned long V=0; //电压扩大10000000的值
25 uchar Data=0; //从AD中读取的值
26 //延时函数
27 void delay(uchar ms){
28 1 uchar i;
29 1 while(ms--){
30 2 for(i=0;i<125;i++);
31 2 }
32 1 }
33 //实现AD转换
34 void AdChange(){
35 1 uchar i;
36 1 CLK=0;
37 1 CS=0; //打开芯片
38 1
39 1 DI=1; //启动位
40 1 CLK=1;
41 1 CLK=0;
42 1
43 1 DI=1; //配置位1
44 1 CLK=1;
45 1 CLK=0;
46 1
47 1 DI=1; //配置位2
48 1 CLK=1;
49 1 CLK=0;
50 1 //读取转换后的值
51 1 for(i=0;i<8;i++){
52 2 CLK=1;
53 2 CLK=0;
54 2 Data=(Data<<1)|DO;
55 2 }
C51 COMPILER V7.20 ADC0832 12/11/2007 10:26:07 PAGE 2
56 1
57 1 CS=1;//关闭芯片
58 1 }
59 //扫描显示程序
60 void Dispaly(){
61 1 uchar i;
62 1 for(i=0;i<8;i++){
63 2 P2=BitCode; //输出位码
64 2 if(i==0){ //输出段码,如果第1位显示小数点
65 3 P0=Code[Bit[i]]&0x7F;
66 3 }else{
67 3 P0=Code[Bit[i]];
68 3 }
69 2 BitCode=_cror_(BitCode,1); //位码循环右移一位
70 2 delay(1); //延时1ms
71 2 P0=0xFF;
72 2 }
73 1 }
74 //电压计算程序
75 void GetV(){
76 1 V=Data*(50400000/255); //计算电压并扩大10000000倍,50400000是参考电压5.04扩大10000000倍得到的
77 1 //计算数码管各位要显示的数值
78 1 Bit[0]=V/10000000;
79 1 Bit[1]=V%10000000/1000000;
80 1 Bit[2]=V%1000000/100000;
81 1 Bit[3]=V%100000/10000;
82 1 Bit[4]=V%10000/1000;
83 1 Bit[5]=V%1000/100;
84 1 Bit[6]=V%100/10;
85 1 Bit[7]=V%10;
86 1 }
87 //主函数
88 main(){
89 1 DsySelect=0; //打开数码管
90 1 P0=0xFF; //复位P0口
91 1 P2=0xFF; //复位P2口
92 1 while(1){
93 2 AdChange(); //AD转换
94 2 GetV(); //计算电压值
95 2 Dispaly(); //电压显示程序
96 2 }
97 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 433 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 26 ----
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 + -