问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

AD转换器和51单片机和LED

发布网友 发布时间:2022-05-02 01:44

我来回答

3个回答

热心网友 时间:2022-06-26 10:17

这个是一个用PCF8591结合51单片机的AD用数码管显示程序
可以看一看
#include<reg52.h>
#include <intrins.h>

sbit lockd=P1^0;
sbit lockw=P1^1; //地址:写0x90/读0x91
sbit scl=P1^2;
sbit sda=P1^3;
unsigned char ad_date,da_date;
#define port P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
unsigned char code anma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80,0x3e};// 显示段码值0~9
unsigned char code weima[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//分别对应相应的数码管点亮,即位码
unsigned long int k;
unsigned char ge,shi,;
unsigned int m=0;

/*-------------------------------------
数码管一位显示
--------------------------------------*/
void display1(unsigned char an,unsigned char wei)
{
port=0;
lockd=1;
lockd=0;

port=weima[wei];
lockw=1;
lockw=0;

port=anma[an];
lockd=1;
lockd=0;
}

/*-------------------------------------
数码管三位显示A/D转化数据
--------------------------------------*/
void display_ad()
{
display1(,3);
display1(10,3);
display1(shi,2);
display1(ge,1);
display1(11,0);
}

/*------------------------------
i2c启动
--------------------------------*/
void start_i2c()
{
sda=1;
scl=1;
_nop_();_nop_();_nop_();
sda=0;
_nop_();_nop_();_nop_();
scl=0;
}

/*------------------------------
i2c停止
--------------------------------*/
void stop_i2c()
{
sda=0;
_nop_();
scl=1;
_nop_();_nop_();
sda=1;
_nop_();
}

/*------------------------------
i2c发送一个字节
--------------------------------*/
void send_i2c(unsigned char date)
{
char i;
scl=0;
for(i=0;i<8;i++)
{
if(date&0x80)sda=1;
else sda=0;
_nop_();
scl=1;
date=date<<1;
_nop_();_nop_();_nop_();_nop_();
scl=0;
_nop_();
}
sda=1;
scl=0;
}

/*------------------------------
i2c接收一个字节
--------------------------------*/
unsigned char recive_i2c()
{
unsigned char recive=0;
char i;
scl=0;
_nop_();
sda=1; //置数据线为输入方式
for(i=0;i<8;i++)
{
scl=0; //置时钟线为低,准备接收数据位
_nop_(); //时钟低电平周期大于4.7us
_nop_();_nop_();_nop_();_nop_();
scl=1;
_nop_();
if(sda)recive |=0x01;
else recive &=0xfe;
_nop_();
recive=recive<<1;
scl=0;
}
return(recive);
scl=0;
}

/*------------------------------
i2c应答脉冲
--------------------------------*/
void i2c_ack_p()
{
scl=0;
_nop_();
scl=1;
_nop_();_nop_();
_nop_();
scl=0;
}

/*------------------------------
i2c应答
--------------------------------*/
void i2c_ack()
{
scl=0;
_nop_();
sda=0;
_nop_();
scl=1;
_nop_();_nop_();
scl=0;
_nop_();
}

/*------------------------------
i2c非应答
--------------------------------*/
void i2c_noack()
{
scl=0;
_nop_();
sda=1;
_nop_();
scl=1;
_nop_();_nop_();
scl=0;
}

/*------------------------------
D/A转换
--------------------------------*/
void da_zh(unsigned char date)
{
start_i2c();
send_i2c(0x90); //地址 写
i2c_ack_p();
send_i2c(0x40); //控制字,D/A转化
i2c_ack_p();
send_i2c(date);
i2c_ack_p();
stop_i2c();
}

/*------------------------------
A/D转换
--------------------------------*/
unsigned char ad_zh()
{
unsigned char date;
start_i2c();
send_i2c(0x90); //地址 写
i2c_ack_p();
send_i2c(0x40);
i2c_ack_p();
stop_i2c();

start_i2c();
send_i2c(0x91); //地址 读
i2c_ack_p();
date=recive_i2c();
i2c_ack();
date=recive_i2c();
i2c_noack();//当主器件作接收器时,必须发出数据传输结束信号给发送器
stop_i2c(); //即它在最后一个字节之后的应答脉冲期间不会产生应答(不拉低SDA)
//这种情况,发送器必须释放SDA为高以便主器件产生停止条件
return(date);
}
/*----------------------
主函数
-----------------------*/
void main(void)
{
while(1)
{
m++;
if(m==500)
{
m=0;
ad_date=ad_zh();// A/D转换
da_date=ad_date;
k=da_date;
k=(k*500)/0xff;
da_zh(da_date);// D/A转换
=k/100;
shi=(k%100)/10;
ge=(k%100)%10;
}
display_ad();
}
}

热心网友 时间:2022-06-26 10:17

需要写AD转换的接口,和显示程序,很简单的,到网上搜一搜,相似的程序不少。搜电压表吧,原理一样的,AD转换送显示。

热心网友 时间:2022-06-26 10:18

是三相电吗?追问嗯,请问你有程序不?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 什么叫推导符麻将玩法 直营会计是做什么工作的? QQ已经注销但是手机号还是显示不完全 连锁网吧的财务管理 现在急需一份超市的财务管理制度,求助大家 关于51单片机的指令系统 求一份公司财务制度,小企业20个人的。财务管理制度?报销制度及流程?业务应酬费用规定,谢谢 51之类的外链相册都收费了,还有类似这种网站可以免费使用的吧?听说有个“外链吧”可以免费,有没有用过的? 新媒体艺术20世纪上半叶艺术特点是什么,中叶发生变化的原因 51上网导航怎么清除? 数码娱乐衍生设计这个专业学的到底是什么? 急求51单片机秒表程序,要求精确到0.01秒,有开始,暂停继续键,用液晶 求一篇有关网络影像文化的论文 数码幻想插画的历史演变 51talk靠谱吗?百度一搜还挺多条的~~想去那学英语,但是真的是太便宜... 请求51单片机高手啊,本人刚学51单片机谁能帮忙写下程序,题目是:以16进制发送一个0-65536之间的任意数, 做梦梦见母亲去世,我抱着她,替她编头发,然后感觉她脸上的皱纹越来越 数字媒体艺术将来就业方向 51单片机汇编语言基础书籍: 谁有推荐关于学习51单片机汇编语言基础的书籍 比较好的 梦见给死去的母亲头发上淋香水 我名下的QQ号已达到上限 请返回前序页面处理,都注销了怎么还会呢? 51单片机可不可以进行pid运算 电话号码注销了,QQ还显示手机在线。怎么回事? 手机怎么制作音乐相册 怎么在手机上制作音乐相册 如何进行远程控制 李传星的人物经历 2017企业服务创新论坛评选结果及获奖理由 山东职高护理专业可以考哪些大学 繁星的主持经历 安逸游戏,安逸游戏币哪家银商信誉好?+Q5386 0280 名人总代 中专师范学校有哪些山东初中毕业可考的3十2或3十3师范院校有哪些? 集结号游戏有没有一个叫腾云网络的银商 山东省内职业中专可以报考省内哪些大学 山东职高可以考哪些本科大学 职高生考大学,有哪些大学可供选择? 山东学计算机专业的中职生都能考哪些大学? 天生牙黄,该如何去掉 天生牙黄怎么办? 天生牙齿黄,怎么办?