ZLG7290矩陣鍵盤(pán)控制forMSP40
[cpp]view plaincopyprint?
- /*****************************************************************
- //文件名:ZLG7290.c
- //描述:該文件定義與ZLG7290有關(guān)的各種接口、函數(shù),適用于MSP430F149
- //編寫(xiě)人:小邪@清水
- //版本號(hào):1.01
- *****************************************************************/
- #include"msp430x14x.h"
- #include"ZLG7290.h"
- /*****************************************************************
- //關(guān)于接口的一些定義
- //需要根據(jù)實(shí)際應(yīng)用做出改變
- *****************************************************************/
- #defineIIC_Enable!(P2IN&BIT2)
- #defineSCL_UPPORTDIR&=~SCL
- #defineSDA_UPPORTDIR&=~SDA
- #defineSCL_DOWNPORTDIR|=SCL
- #defineSDA_DOWNPORTDIR|=SDA
- #definePORTDIRP3DIR//設(shè)置為P3口
- #definePORTINP3IN
- #definePORTOUTP3OUT
- #defineSDABIT0//設(shè)置SDA為Px.0
- #defineSCLBIT1//設(shè)置SCL為Px.1
- #defineRESBIT2//設(shè)置RES為P2.7(對(duì)應(yīng)430的中斷)
- #defineCHIP0x70//ZLG7290的IIC地址
- /*************************************************************************
- //名稱(chēng):IIC_delay()
- //參數(shù):無(wú)
- //返回值:無(wú)
- //功能:完成IIC設(shè)置中所需要的延時(shí)
- *************************************************************************/
- voidIIC_delay()
- {
- inti;
- i=0xff;
- while(i)
- {
- i--;
- _NOP();
- }
- i=0xff;
- while(i)
- {
- i--;
- _NOP();
- }
- }
- /*************************************************************************
- //名稱(chēng):SendToBus()
- //參數(shù):要發(fā)送的數(shù)據(jù)
- //返回值:無(wú)
- //功能:向線上發(fā)送數(shù)據(jù)(SCL必須在進(jìn)入函數(shù)前置為低)
- *************************************************************************/
- voidSendToBus(BYTEm)
- {
- BYTEi;
- for(i=0;i<8;i++)
- {
- if(m&0x80)
- SDA_UP;
- else
- SDA_DOWN;
- SCL_UP;
- IIC_delay();
- SCL_DOWN;
- m<<=1;
- }
- return;
- }
- /*************************************************************************
- //名稱(chēng):BackAns()
- //參數(shù):無(wú)
- //返回值:成功標(biāo)志,若成功則為1,否則為0
- //功能:接收應(yīng)答信號(hào)
- *************************************************************************/
- BYTEBackAns()
- {
- BYTEflag;
- SDA_UP;
- IIC_delay();
- SCL_UP;
- flag=0;
- IIC_delay();
- if((PORTIN&SDA))
- {
- flag=1;
- }
- SCL_DOWN;
- returnflag;
- }
- /*************************************************************************
- //名稱(chēng):Start()
- //參數(shù):無(wú)
- //返回值:無(wú)
- //功能:發(fā)送一個(gè)起始信號(hào)
- *************************************************************************/
- voidStart()
- {
- PORTOUT&=(~SCL)&(~SDA);
- SCL_UP;
- IIC_delay();
- SDA_UP;
- IIC_delay();
- SDA_DOWN;//開(kāi)始位
- IIC_delay();
- SCL_DOWN;
- IIC_delay();
- }
- /*************************************************************************
- //名稱(chēng):Stop()
- //參數(shù):無(wú)
- //返回值:無(wú)
- //功能:發(fā)送一個(gè)停止信號(hào)
- *************************************************************************/
- voidStop()
- {
- SDA_DOWN;
- IIC_delay();
- SCL_UP;//停止位
- IIC_delay();
- SDA_UP;
- IIC_delay();
- SCL_DOWN;
- IIC_delay();
- }
- /*************************************************************************
- //名稱(chēng):Write_IIC_Byte()
- //參數(shù):data-待寫(xiě)入的數(shù)據(jù),startaddr-待寫(xiě)入的首地址
- //返回值:無(wú)
- //功能:向線上寫(xiě)一個(gè)字節(jié)
- *************************************************************************/
- voidWrite_IIC_Byte(BYTEdata,BYTEstartaddr)
- {
- do
- {
- Start();
- SendToBus(CHIP);//選片地址
- if(BackAns())//從機(jī)的回答信息
- continue;
- SendToBus(startaddr);//選擇芯片上的內(nèi)在地址
- if(BackAns())
- continue;
- SendToBus(data);//傳輸數(shù)據(jù)
- if(!BackAns())
- break;
- }
- while(1);
- Stop();
- }
- /*************************************************************************
- //名稱(chēng):ReadFromBus()
- //參數(shù):無(wú)
- //返回值:讀出的數(shù)據(jù)
- //功能:從線上讀出數(shù)據(jù)
- *************************************************************************/
- BYTEReadFromBus()
- {
- inti,temp;
- temp=0;
- SDA_UP;//讀取數(shù)據(jù)之前要把SDA拉高
- IIC_delay();
- for(i=0;i<8;i++)
- {
- SCL_UP;
- IIC_delay();
- temp<<=1;
- if(PORTIN&SDA)
- temp|=0x01;
- else
- temp&=0xfe;
- SCL_DOWN;
- IIC_delay();
- }
- returntemp;
- }
-
關(guān)鍵詞:
ZLG7290矩陣鍵盤(pán)控制MSP4
相關(guān)推薦
技術(shù)專(zhuān)區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開(kāi)關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車(chē)電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論