|
目标系统: 基于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 <iom16v.h>
- #define WR_DADR 0x90 //write device-address
- #define RD_DADR 0x91 //read device-address
- #include "D:\ICC_H\PCF8591.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);
- }
- }
复制代码
|
|