|
目標(biāo)系統(tǒng): 基于AVR單片機(jī)
應(yīng)用軟件: ICCAVR
版 本: Version 1.0
實(shí)驗(yàn)內(nèi)容:
初始化、讀取AD、輸出DA,使用PA口的LED指示獲取的AD數(shù)據(jù),使用萬用表測量DA的輸出電壓。
----------------------------------------------------------------------
硬件連接:
將PA口的LED指示燈使用短路帽短接;
PCF8591:VCC、GND、SDA、SCL
| | | |
SMK1632:VCC、GND、SDA、SCL
----------------------------------------------------------------------
注意事項(xiàng):
(1)若有加載庫函數(shù),請將光盤根目錄下的“庫函數(shù)”下的“ICC_H”文件夾拷到D盤
(2)請?jiān)敿?xì)閱讀“使用必讀”及相關(guān)資料。
----------------------------------------------------------------------
- #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
- /*--------------------------------------------------------------------
- 函數(shù)名稱:PCF8591
- 函數(shù)功能:
- 注意事項(xiàng):
- 提示說明:
- 輸 入:
- 返 回:
- --------------------------------------------------------------------*/
- void errDisp()
- {
- DISP_PORT = 0X55;
- delay50ms(4);
- DISP_PORT = 0X00;
- delay50ms(4);
- DISP_PORT = 0XAA;
- delay50ms(4);
- DISP_PORT = 0X00;
- delay50ms(4);
- }
- /*--------------------------------------------------------------------
- 函數(shù)全稱:PCF8591
- 函數(shù)功能:
- 注意事項(xiàng):最好不要將 TWBR 的值改太小,否則可能出錯
- 提示說明:假設(shè)系統(tǒng)時鐘為16M,則TWI波特率=CLK/(16+2*(TWBR)*4)=400K
- 輸 入:
- 返 回:
- --------------------------------------------------------------------*/
- void twi_init() //TWI(I2C)初始化
- {
- TWBR = 0X12; //設(shè)置TWI波特率
- TWSR &= 0XFC; //設(shè)置TWI預(yù)分頻 為 1
- }
- /*--------------------------------------------------------------------
- 函數(shù)名稱:PCF8591
- 函數(shù)功能:
- 注意事項(xiàng):
- 提示說明:
- 輸 入:
- 返 回:
- --------------------------------------------------------------------*/
- void main()
- {
- uint8 DAval=0,t;
- uint8 *pGetDat=&t; //隨便給"pGetDat"一個地址以防內(nèi)存錯誤
- DISP_DDR = 0XFF;
- twi_init();
- while(1)
- {
- PCF8591_getAD(MODE0,CHNL0,pGetDat);
- DISP_PORT = *pGetDat;
- PCF8591_setDA(DAval++);
- delay50ms(4);
- }
- }
復(fù)制代碼
|
|