找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3882|回复: 0
收起左侧

AVR单片机PCF8591转换实例源程序操作库

[复制链接]
ID:76190 发表于 2015-4-5 18:36 | 显示全部楼层 |阅读模式
目标系统:   基于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)请详细阅读“使用必读”及相关资料。
----------------------------------------------------------------------
  1. #include <iom16v.h>

  2. #define WR_DADR 0x90 //write device-address
  3. #define RD_DADR 0x91 //read device-address
  4. #include "D:\ICC_H\PCF8591.H"

  5. #define DISP_DDR DDRA
  6. #define DISP_PORT PORTA

  7. /*--------------------------------------------------------------------
  8. 函数名称:PCF8591
  9. 函数功能:
  10. 注意事项:
  11. 提示说明:
  12. 输 入:
  13. 返 回:
  14. --------------------------------------------------------------------*/
  15. void errDisp()
  16. {
  17. DISP_PORT = 0X55;
  18. delay50ms(4);
  19. DISP_PORT = 0X00;
  20. delay50ms(4);
  21. DISP_PORT = 0XAA;
  22. delay50ms(4);
  23. DISP_PORT = 0X00;
  24. delay50ms(4);
  25. }
  26. /*--------------------------------------------------------------------
  27. 函数全称:PCF8591
  28. 函数功能:
  29. 注意事项:最好不要将 TWBR 的值改太小,否则可能出错
  30. 提示说明:假设系统时钟为16M,则TWI波特率=CLK/(16+2*(TWBR)*4)=400K
  31. 输 入:
  32. 返 回:
  33. --------------------------------------------------------------------*/
  34. void twi_init() //TWI(I2C)初始化
  35. {
  36. TWBR = 0X12; //设置TWI波特率
  37. TWSR &= 0XFC; //设置TWI预分频 为 1
  38. }
  39. /*--------------------------------------------------------------------
  40. 函数名称:PCF8591
  41. 函数功能:
  42. 注意事项:
  43. 提示说明:
  44. 输 入:
  45. 返 回:
  46. --------------------------------------------------------------------*/
  47. void main()
  48. {
  49. uint8 DAval=0,t;
  50. uint8 *pGetDat=&t; //随便给"pGetDat"一个地址以防内存错误

  51. DISP_DDR = 0XFF;
  52. twi_init();

  53. while(1)
  54. {
  55. PCF8591_getAD(MODE0,CHNL0,pGetDat);
  56. DISP_PORT = *pGetDat;
  57. PCF8591_setDA(DAval++);
  58. delay50ms(4);
  59. }
  60. }
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表