历史上的今天
返回首页

历史上的今天

今天是:2024年11月23日(星期六)

2019年11月23日 | AVR单片机PCF8591转换实例源程序操作库

2019-11-23 来源:51hei

目标系统:   基于AVR单片机                                                 
应用软件:   ICCAVR                                                      
版    本:   Version 1.0                                                       
实验内容:
初始化、读取AD、输出DA,使用PA口的LED指示获取的AD数据,使用万用表测量DA的输出电压。
----------------------------------------------------------------------
硬件连接:
将PA口的LED指示灯使用短路帽短接;
PCF8591:VCC、GND、SDA、SCL 
| | | |
SMK1632:VCC、GND、SDA、SCL
----------------------------------------------------------------------
注意事项: 
(1)若有加载库函数,请将光盘根目录下的“库函数”下的“ICC_H”文件夹拷到D盘
(2)请详细阅读“使用必读”及相关资料。


#include


#define WR_DADR 0x90 //write device-address

#define RD_DADR 0x91 //read device-address

#include "D:ICC_HPCF8591.H"


#define DISP_DDR DDRA

#define DISP_PORT PORTA


/*--------------------------------------------------------------------

函数名称:PCF8591

函数功能:

注意事项:

提示说明:

输 入:

返 回:

--------------------------------------------------------------------*/

void errDisp()

{

DISP_PORT = 0X55;

delay50ms(4);

DISP_PORT = 0X00;

delay50ms(4);

DISP_PORT = 0XAA;

delay50ms(4);

DISP_PORT = 0X00;

delay50ms(4);

}

/*--------------------------------------------------------------------

函数全称:PCF8591

函数功能:

注意事项:最好不要将 TWBR 的值改太小,否则可能出错

提示说明:假设系统时钟为16M,则TWI波特率=CLK/(16+2*(TWBR)*4)=400K

输 入:

返 回:

--------------------------------------------------------------------*/

void twi_init() //TWI(I2C)初始化

{

TWBR = 0X12; //设置TWI波特率

TWSR &= 0XFC; //设置TWI预分频 为 1

}

/*--------------------------------------------------------------------

函数名称:PCF8591

函数功能:

注意事项:

提示说明:

输 入:

返 回:

--------------------------------------------------------------------*/

void main()

{

uint8 DAval=0,t;

uint8 *pGetDat=&t; //随便给"pGetDat"一个地址以防内存错误


DISP_DDR = 0XFF;

twi_init();


while(1)

{

PCF8591_getAD(MODE0,CHNL0,pGetDat);

DISP_PORT = *pGetDat;

PCF8591_setDA(DAval++);

delay50ms(4);

}

}



推荐阅读

史海拾趣

Ava Electronics Corp公司的发展小趣事

随着市场的不断发展,AVA电子意识到只有不断创新才能在竞争中保持领先。于是,公司加大了在研发方面的投入,引进了一批高素质的研发人才,并与多所高校和研究机构建立了合作关系。经过数年的努力,AVA电子成功研发出了一系列具有自主知识产权的电子产品,这些产品在性能、稳定性和用户体验等方面都达到了行业领先水平。这些创新产品的推出,不仅提升了公司的市场地位,也为公司带来了可观的利润。

Daewoo公司的发展小趣事

随着金融危机的持续影响,Daewoo汽车公司最终未能幸免于难。2000年,大宇汽车公司宣告破产。然而,就在此时,美国通用汽车公司看到了Daewoo汽车公司的潜力和价值,决定对其进行收购。这一收购不仅为Daewoo汽车公司带来了新的生机,也使其能够借助通用汽车的技术和管理经验实现转型和升级。

天钰(FITIPOWER)公司的发展小趣事

然而,好景不长。1997年亚洲金融危机的爆发给Daewoo公司带来了前所未有的挑战。由于过度扩张和错误的投资决策,公司背负了巨额债务,资不抵债。面对这一困境,Daewoo公司不得不进行资产重组和裁员等措施,以减轻财务压力。虽然这些措施在短期内带来了痛苦,但也为公司的未来发展奠定了基础。

Giga公司的发展小趣事
用于设置提醒或自动执行某项任务。
Genesys Logic公司的发展小趣事

进入21世纪,“General Microcircuits”开始实施全球化战略,先后在美国、欧洲、亚洲等地建立研发中心和生产基地。通过全球化布局,公司不仅能够更快地响应不同地区的市场需求,还能充分利用各地的资源优势和技术优势,进一步提升产品的竞争力和市场占有率。同时,公司还加强了与国际知名电子制造商的战略合作,共同推动半导体技术的创新与发展。

芯茂微电子公司的发展小趣事

芯茂微电子始终坚持品质至上和客户至上的原则,致力于为客户提供高品质、高性能的集成电路产品和服务。公司建立了完善的质量管理体系和客户服务体系,从产品研发、生产、销售到售后服务,每一个环节都严格把控,确保产品质量和客户满意度。正是凭借这种对品质和客户的执着追求,芯茂微电子赢得了客户的广泛信赖和赞誉。

问答坊 | AI 解惑

友善之臂嵌入式浏览器中文支持移植成功

经过本人的改造,友善之臂的qtopia自带的浏览器终于支持中文网页了,也就是,如果能把应用程序再汉化下,就可以应用到开发中。空说无凭,先给大家上几张图。(X86-qtopia在PC上运行) …

查看全部问答>

三星官网下载源码

问下大家有谁在三星官网上下载过资料,比如2440的相关源码驱动已经引导程序之类的?还有啊,官网到底一般都提供哪些资料?我在疑惑,对于向VIVI之类的引导程序,三星这些它提供不? 谢谢…

查看全部问答>

delphi中spcomm控件安装问题

安装好后(SYSTEM中有红色控件)把SPCOMM控件放入窗体,没写一行代码直接编译弹出SPCOMM单元文件,编译不过,好像内嵌了一个代码单元,怎么回事?…

查看全部问答>

试用期快结束了,怎么和老总谈呢

大学刚毕业就直奔人才市场,很不错的在这家公司面试,当时说好了刚毕业工资会低点2200,包吃住的,转正3000.总体觉得还可以吧,就很高兴的周一去公司签了,可是谈工资的时候却说吃住要扣400也就是说工资1800了,当时真的很郁闷吧。说了包吃住结果这 ...…

查看全部问答>

商品化STM32系列ISP软件和ISP-STM32F编程器上市啦!

新颖、快速、方便、实用的商品化STM32系列ISP软件和ISP-STM32F编程器上市啦!产品特点:易学易用:连接方便、操作简单、提示全面- 高速编程:(4秒/32K,7秒/64K,14秒/128K;高速读取:1秒/32K,2秒/64K,4秒/128K- 操作简便:自动识别 ...…

查看全部问答>

STM32的RTC是否真的与晶振有关系

对于晶振来讲,我查询过很多厂家,其最次的精度都≤50PPM,也就是说2万个脉冲,才误差1个脉冲,对于32.768kHz的晶振来说,在STM32上也就是1秒钟差1个半脉冲了,也就是1天才能差4秒。 然而ST公司却在芯片中添加了晶体的校正程序,为晶体脉冲在 ...…

查看全部问答>

问:怎样来区分ATMEL存储器的大小(多少K)?

最近向商家买几片ATMEL的存储器,我要的是128K,可是用起来总觉得好象不像,跟原来要的32K差不多大,我现在的片子上写的是:ATMEL316 24C256N SI27A 底面写的是 2E4476 请问专家,到底怎么来区分他们的大小?24系列的地址应该都是15位的吧 ...…

查看全部问答>

LM3S811驱动SSD1306 OLED 程序!

驱动OLED管脚为PB2,PB3,OLED驱动芯片为SSD1306,分辨率为12864。本来是写给我老婆看的,所以大家自行更改!…

查看全部问答>

关于AD转换通过串口显示

在protues仿真中,用AD0804采集数据后,直接赋给SBUF,然后通过虚拟终端显示,但是不能显示出来,该怎么写?谢谢!               SBUF=P2; while(!TI); TI=0;这个是参照郭天翔那个写的 但是虚拟终端显示 ...…

查看全部问答>

关于stm32f103r8t6的定位问题!!!

本帖最后由 langmanhengxing 于 2014-7-17 17:27 编辑 我用UART-GPS-NEO-7M-C模块,通过杜邦线连接stm32f103r8t6核心板,通过串口usart  GPS 定位的信息都能够通过板子传输到电脑上。(我用sscom 串口工具观看定位数据) 但是定位误差 ...…

查看全部问答>