adcc.lst
来自「郑州远博公司生产的单片机A型实验板原理图及配套试验源程序」· LST 代码 · 共 170 行
LST
170 行
C51 COMPILER V7.20 ADCC 02/20/2005 17:55:37 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE ADCC
OBJECT MODULE PLACED IN adcc.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE adcc.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /**************************************************************************
2 A/D转换模块演示程序
3 来源: 郑州远博科技 王兴民
4 0371-6949037 0371-7256036 13949105551
5 实验本程序,需要把转换模块上的J2短路
6 阅读本程序,需要参照AD0832的使用说明及时序图进行
7 ***************************************************************************/
8 #include <at89x51.h>
9 #include <Delay.h>
10 #define CS P0_0 //ADC0832 的CS端
11 #define CLK P0_1 //ADC0832 的CLK端
12 #define DO P0_2 //ADC0832 的DO端
13 #define DI P0_3 //ADC0832 的DI端
14 #define SDA P2_7 //74LS164 SAD
15 #define SCK P2_6 //74LS164 SCK
16 #define BIT5 P2_5 //数码管位1
17 #define BIT4 P2_4 //数码管位2
18 #define BIT3 P2_3 //数码管位3
19 #define BIT2 P2_2 //数码管位4
20 #define BIT1 P2_1 //数码管位5
21 #define BIT0 P2_0 //数码管位6
22 #define uchar unsigned char
23 #define uint unsigned int
24 code uchar szdm[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff}; //共阳数码管的显示字模数据
25 data uchar displaybuff[6]; //定义显示缓冲区
26 uchar CH0=0X10; //通道0转换数据
27 void display();
28 uchar adconvert(sign);
29
30
31 void main() {
32 1 uchar temp;
33 1 DelayMs(2000); //延时使芯片复位完成
34 1 CS=1;
35 1 DI=1;
36 1 DO=1;
37 1 CLK=0;
38 1 while(1) {
39 2
40 2 temp=adconvert(CH0);
41 2 displaybuff[2]=temp/100;
42 2 displaybuff[1]=(temp-displaybuff[2]*100)/10;
43 2 displaybuff[0]=temp-(displaybuff[2]*100+displaybuff[1]*10);
44 2 display();
45 2
46 2
47 2 }
48 1 }
49
50
51
52 void adstart(void) { //开始条件
53 1 CLK=0;
54 1 CS=0;
55 1 DI=1;
C51 COMPILER V7.20 ADCC 02/20/2005 17:55:37 PAGE 2
56 1 CLK=1;
57 1 CLK=0; }
58
59
60
61 void adsendsign(uchar signifi) { //发送信号
62 1 uchar temp;
63 1 temp=signifi&0x03;
64 1 DI=(signifi>>1)&0x01;
65 1 CLK=1;
66 1 CLK=0;
67 1 DI=temp&0x01;
68 1 CLK=1;
69 1 CLK=0;
70 1 }
71
72
73 uchar adoutdata(void) { //数据输出
74 1 uchar mfdata,i,j;
75 1 bit D;
76 1 while(DO);
77 1 CLK=1;
78 1 for(i=0;i<8;i++)
79 1 { CLK=0;
80 2 D=DO;
81 2 mfdata=mfdata|D;
82 2 CLK=1;
83 2 mfdata=mfdata<<1;
84 2 }
85 1 for(j=0;j<7;j++)
86 1 {
87 2 CLK=0;CLK=1;
88 2 }
89 1 CS=1;
90 1 DO=1;
91 1 return(mfdata);
92 1 }
93
94
95
96 uchar adconvert(sign) { //开始转换
97 1 uchar addata;
98 1 adstart();
99 1 adsendsign(sign);
100 1 addata=adoutdata();
101 1 return(addata);
102 1
103 1 }
104
105
106
107 void senddata(uchar dd) { //74HC164移入显示数据
108 1 uchar j;
109 1 for (j=0;j<8;j++) {
110 2 SDA=(bit)(dd&0x01);
111 2 SCK=1; SCK=0;
112 2 dd=dd>>1;
113 2 }
114 1 }
115
116
117 void display() { //在实验板的6位数码管上动态显示缓冲区中的数据
C51 COMPILER V7.20 ADCC 02/20/2005 17:55:37 PAGE 3
118 1 senddata(szdm[displaybuff[0]]);
119 1 BIT0=0;
120 1 Delay_ms(10);
121 1 BIT0=1;
122 1 senddata(szdm[displaybuff[1]]);
123 1 BIT1=0;
124 1 Delay_ms(10);
125 1 BIT1=1;
126 1 senddata(szdm[displaybuff[2]]);
127 1 BIT2=0;
128 1 Delay_ms(10);
129 1 BIT2=1;
130 1 senddata(szdm[displaybuff[3]]);
131 1 BIT3=0;
132 1 Delay_ms(10);
133 1 BIT3=1;
134 1 senddata(szdm[displaybuff[4]]);
135 1 BIT4=0;
136 1 Delay_ms(10);
137 1 BIT4=1;
138 1 senddata(szdm[displaybuff[5]]);
139 1 BIT5=0;
140 1 Delay_ms(10);
141 1 BIT5=1;
142 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 337 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 1
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?