/**************************************************************************
A/D转换模块演示程序
作者:郑州万科
0371-66987446 0371-66760315
实验本程序,需要把转换模块上的J2短路
阅读本程序,需要参照AD0832的使用说明及时序图进行
***************************************************************************/
#include <at89x51.h>
#include <Delay.h>
#define CS P0_0 //ADC0832 的CS端
#define CLK P0_1 //ADC0832 的CLK端
#define DO P0_2 //ADC0832 的DO端
#define DI P0_3 //ADC0832 的DI端
#define SDA P2_7 //74LS164 SAD
#define SCK P2_6 //74LS164 SCK
#define BIT5 P2_5 //数码管位1
#define BIT4 P2_4 //数码管位2
#define BIT3 P2_3 //数码管位3
#define BIT2 P2_2 //数码管位4
#define BIT1 P2_1 //数码管位5
#define BIT0 P2_0 //数码管位6
#define uchar unsigned char
#define uint unsigned int
code uchar szdm[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff}; //共阳数码管的显示字模数据
data uchar displaybuff[6]; //定义显示缓冲区
uchar CH0=0X10; //通道0转换数据
void display();
uchar adconvert(sign);
void main() {
uchar temp;
DelayMs(2000); //延时使芯片复位完成
CS=1;
DI=1;
DO=1;
CLK=0;
while(1) {
temp=adconvert(CH0);
displaybuff[2]=temp/100;
displaybuff[1]=(temp-displaybuff[2]*100)/10;
displaybuff[0]=temp-(displaybuff[2]*100+displaybuff[1]*10);
display();
}
}
void adstart(void) { //开始条件
CLK=0;
CS=0;
DI=1;
CLK=1;
CLK=0; }
void adsendsign(uchar signifi) { //发送信号
uchar temp;
temp=signifi&0x03;
DI=(signifi>>1)&0x01;
CLK=1;
CLK=0;
DI=temp&0x01;
CLK=1;
CLK=0;
}
uchar adoutdata(void) { //数据输出
uchar mfdata,i,j;
bit D;
while(DO);
CLK=1;
for(i=0;i<8;i++)
{ CLK=0;
D=DO;
mfdata=mfdata|D;
CLK=1;
mfdata=mfdata<<1;
}
for(j=0;j<7;j++)
{
CLK=0;CLK=1;
}
CS=1;
DO=1;
return(mfdata);
}
uchar adconvert(sign) { //开始转换
uchar addata;
adstart();
adsendsign(sign);
addata=adoutdata();
return(addata);
}
void senddata(uchar dd) { //74HC164移入显示数据
uchar j;
for (j=0;j<8;j++) {
SDA=(bit)(dd&0x01);
SCK=1; SCK=0;
dd=dd>>1;
}
}
void display() { //在实验板的6位数码管上动态显示缓冲区中的数据
senddata(szdm[displaybuff[0]]);
BIT0=0;
Delay_ms(10);
BIT0=1;
senddata(szdm[displaybuff[1]]);
BIT1=0;
Delay_ms(10);
BIT1=1;
senddata(szdm[displaybuff[2]]);
BIT2=0;
Delay_ms(10);
BIT2=1;
senddata(szdm[displaybuff[3]]);
BIT3=0;
Delay_ms(10);
BIT3=1;
senddata(szdm[displaybuff[4]]);
BIT4=0;
Delay_ms(10);
BIT4=1;
senddata(szdm[displaybuff[5]]);
BIT5=0;
Delay_ms(10);
BIT5=1;
}
adcc.rar_at89c52
版权申诉
133 浏览量
2022-09-19
14:08:10
上传
评论
收藏 1KB RAR 举报
weixin_42651887
- 粉丝: 76
- 资源: 1万+
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈