MSP430F1121与PCF8576驱动程序

发布者:beta12最新更新时间:2018-01-29 来源: eefocus关键字:MSP430F1121  PCF8576  驱动程序 手机看文章 扫描二维码
随时随地手机看文章

#include  "MSP430x11x1.h" 

#define uint unsigned int 
#define uchar unsigned char 

//器件地址 
uchar    PCF8576=0x70; 

//内存数据定义 


uchar    ByteCnt;     //I2C 数据字节计数器 
uchar    SlvAdr;        //被控器地址 
uchar    SubAdr;        //被控器单元地址 
uchar    XmtDat[5];    //发送数据缓冲区 


//uchar    MODE1=0x45; 
uchar    MODE2=0xCD;        // 
uchar    Bank_sel=0x78; 

uchar    flag; 

uchar    Digit[10]; 

#define SDA      BIT3      // P2.3 controls SDA line (pull-up used for  
logIC 1) 
#define SCL   BIT4      // P2.4 controls SCL line (pull-up used for logic 1) 



/****************************************************************************** 
; 子程序 
;名称:START 
;描述:启动I2C 总线子程序--发送I2C 起始条件 
;;*****************************************************************************/ 
void START(void) 

    P2OUT |= SDA;        //SDA=1 
    _NOP(); 
    P2OUT |= SCL;        //SCL=1 
    _NOP(); 
    P2OUT &= ~SDA;        //SDA=0 
    _NOP(); 
    P2OUT &= ~SCL;        //SCL=0 


/*-------------------------------------------------------------------------- 
;名称:STOP 
;描述:停止I2C 总线子程序--发送I2C 总线停止条件 
;-------------------------------------------------------------------------*/ 
void STOP(void) 

    P2OUT &= ~SDA;        //SDA=0 
    _NOP(); 
    P2OUT |= SCL; 
    _NOP(); 
    P2OUT |= SDA; 
    _NOP(); 
    P2OUT &= ~SCL; 


void cack(void)        /* 应答位检查 */ 

    P2OUT |= SDA; 
    P2OUT |= SCL; 

    P2DIR &= ~SDA; 

    _NOP();     
    P2OUT &= ~SCL; 
     
    P2DIR |= SDA; 
     


void delay(uchar time) 

uchar i; 

do{ 
    for(i=100;i!=0;i--); 
     
  } while(--time!=0); 


     
/*---------------------------------------------------------------------- 
;名称:SendByte 
;描述:字节数据传送子程序发送一个字节数据或地址给被控器PCF8576 
;------------------------------------------------------------------------*/ 
void SendByte(uchar Data) 

uchar i=8; 
     
    do   
      { 
          if((Data&0x80)==0x80) 
            P2OUT |= SDA; 
          else 
                 P2OUT &= ~SDA; 
                  
          P2OUT |= SCL; 
        _NOP (); 
          P2OUT &= ~SCL; 

          Data=Data<<1; 
      } while(--i!=0); 

    cack(); 



/*********************************************************** 
;发送数据程序 
;名称:Display_Data 
;描述:发送ByteCnt 个字节给被控器PCF8576 
;被控器地址在SlvAdr 中单元地址在SubAdr 中 
;所发送数据的字节数ByteCnt 在中发送的数据在XmtDat 缓冲区中 
;**********************************************************/ 
void Display_Data(void) 

uchar i=0; 
uchar size=ByteCnt; 

    START();                //发送I2C 总线起始条件 
     
    SendByte(SlvAdr);        //发送被控器总线地址 
         
    SendByte(SubAdr);        //发送单元地址 
     
//    SendByte(0x73);            //闪烁方式为正常,闪烁频率 
为0.5Hz 的命令字送缓冲区首址,其它命令最好单独设 
    SendByte(0x70);            //闪烁方式为正常,闪烁频率 
为0.5Hz 的命令字送缓冲区首址,其它命令最好单独设 
                            //定 
如程序1 如果不需要闪烁应将数#70H 送入缓冲区首址 
     
    do 
      { 
          SendByte(XmtDat[i]);    //发送数据 
          i++; 
      } while(--size!=0); 
       
    STOP(); 
     
    delay(100);     

     
void ClearLCD(void) 

uchar size=ByteCnt; 

    START();                //启动I2C 总线 
     
    SendByte(SlvAdr);        //送器件地址 
     
    SendByte(SubAdr);        //发送单元地址 
     
    SendByte(0x70); 
     
    do 
    { 
      SendByte(0x00);    //发送数据 
    } while(--size!=0); 
     
    STOP(); 
     
    delay(200); 

     
void PCF8576SET(void) 

    START(); 
     
    SendByte(SlvAdr);        //送器件地址 
     
    SendByte(MODE2);        //取方式命令字 

    SendByte(Bank_sel); 
     
    STOP(); 



void main(void) 

uint out_data; 
uint tmp_data; 
uchar i; 
uchar k; 
uchar tmp[5]; 

P2DIR |= SDA;            //SDA 
P2DIR |= SCL;            //SCL 

P2OUT &= ~SDA; 
P2OUT &= ~SCL; 

WDTCTL = WDTPW+WDTHOLD; 

Digit[0]=0x7E;    //0 
Digit[1]=0x18;    //1 
Digit[2]=0xB6;    //2 
Digit[3]=0xBC;    //3 
Digit[4]=0xD8;    //4 
Digit[5]=0xEC;    //5 
Digit[6]=0xEE;    //6 
Digit[7]=0x38;    //7 
Digit[8]=0xFE;    //8 
Digit[9]=0xFC;    //9 

SubAdr=0x80; 
SlvAdr=PCF8576; 
ByteCnt=4; 

PCF8576SET(); 
     
ClearLcd(); 

out_data=0; 

while(1) 

    tmp_data=out_data; 

    for(i=0;i      { 
          k=tmp_data%10; 
          tmp_data=tmp_data/10; 
       
        XmtDat[i]=Digit[k]; 
        tmp[i]=k; 
      } 

    XmtDat[2] |= 0x01; 
     
    for(i=ByteCnt-1;i!=0;i--) 
      { 
          if( tmp[i] == 0 )     
              XmtDat[i]=0x00; 
          else     
              break; 
      } 


    Display_Data(); 

    out_data++; 



}  


关键字:MSP430F1121  PCF8576  驱动程序 引用地址:MSP430F1121与PCF8576驱动程序

上一篇:基于TMS320C6x11系列DSP的图像获取方案
下一篇:ADC10 测量单通道多次模式

推荐阅读最新更新时间:2024-03-16 15:53

11-S3C2440驱动学习(五)嵌入式linux-网络设备驱动(一)虚拟网卡驱动程序
一、嵌入式linux驱动主要分为三部分: 字符设备驱动 块设备驱动 网络设备驱动 字符设备驱动: APP:open、read、write。。。 驱动:drv_open、drv_read、drv_write。。。 框架: (1)主设备号 (2)file_operation结构体 (3)regist_chrdev(主设备号,name,file_operation) (4)入口函数 (5)出口函数 二、网卡设备驱动 1、框架分析 网络协议分可为七层等等。我们 只关心硬件部分。就是底层的网卡部分的内容。应用通过socket就可以传输数据。 下面,我们说一下实际的网络包究竟经过怎样一个流程从用户空
[单片机]
11-S3C2440驱动学习(五)嵌入式linux-网络设备驱动(一)虚拟网卡<font color='red'>驱动程序</font>
嵌入式Linux下的AU 1200 MAE驱动程序设计
随着移动多媒体终端的口益普及,功能的日益强大,人们已经不满足于自己的手持终端仅仅能够听MP3音乐,而是希望终端在播放音乐的同时能够播放高质量视频,并支持多种视频格式。AU 1200作为一款基于MIPS架构的处理器,由于其片上集成了视频硬件设备(Media Accel-eration Engine,MAE),使得该处理器无需配合其他视频解码芯片即可完成多种格式的视频解码功能,所以AU 1200非常适合应用于像PMP这样的移动多媒体终端,而MAE也成为AU 1200的特色。 1 MAE概述 MAE是AU 1200的片上硬件设备,除了可以实现视频解码功能外,还可以完成色彩空间转换、滤波等工作。MAE在硬件结构上可以分为前端和后端
[嵌入式]
基于DSP的视频采集驱动程序的设计
视频终端的核心是图像的数字化处理模块。基于PC机的数字视频处理,给出了算法研究的途径,而基于高速DSP的应用模块才提供了实时嵌入式视频处理的可能。然而,基于 DSP 的海量视频数据的实时处理的关键则是实时、合理的视频数据采集。本文针对自行研制的基于TMS320DM642(以下简称DM642)DSP的视频处理板卡,使其在C64x系列DSP的实时操作系统DSP/BIOS的环境下运行,实现基于类/微驱动模型的视频采集驱动程序,并进一步描述采用EDMA(增强的直接存储器存取控制器)的数字视频图像信号的实时传输。   1 类/微驱动程序模型   C64x系列的DSP系统给出了类/微驱动模型 的驱动程序结构,采用该模型进行驱动程序
[嵌入式]
基于DSP的视频采集<font color='red'>驱动程序</font>的设计
S3C44B0X键盘的uClinux驱动程序设计
  用三星公司的嵌入式微处理器S3C44B0X设计的嵌入式开发板大多采用1×4按键键盘,在移植uClinux到这类开发板上时,必须设计键盘驱动程序。1×4键盘驱动程序通过修改uClinux源代码中PC键盘的驱动程序得到。   根据实际电路,对键盘的初始化、键盘中断处理程序进行了处理,用户可根据需要决定各键的扫描码。此驱动程序利用操作系统计时器解决了键盘的抖动问题。1×4键盘驱动程序可用于其他类似的嵌入式系统。    引言   三星公司的ARM7系列微处理器得到了广泛使用,其中S3C44B0X是制作手持式设备的良好选择。目前以S3C44B0X为核心制作的开发板大多采用1×4按键键盘,其电路简单,容易实现。在移植uClinux到
[工业控制]
S3C44B0X键盘的uClinux<font color='red'>驱动程序</font>设计
ADS7816的AVR驱动程序
/*********************************************************************************** 相关寄存器设置参照M16单片机 初始化写: SPI_Masterinit(); init_DA(); ***********************************************************************************/ /****************************SPI片选硬件宏定义*************************************/ //各芯片的片选脚自行修改 #define
[单片机]
VxWorks系统下的RTL8139驱动程序改进
0 引言 RTL8139是台湾Realtek半导体公司生产的一种快速以太网控制器,提供符合PCI2.2标准的接口,兼容IEEE802.3u 100BASE-T规范,支持IEEE-802.3x全双工流量控制,支持10Mbit.s-1/100Mbit.s-1全双工、半双工自适应,价格便宜,性能稳定,是PC机、电信终端产品中应用最多的以太网控制器之一。RTL8139在各种操作系统下的驱动都能从Realtek公司网页下载,其中包括VxWorks系统下的驱动,而且提供C源代码。但是在嵌入式系统下,针对不同的硬件平台,往往需要修改该驱动程序以提高其稳定性和效率。基于MPC8241 CPU的硬件平台,本文提出RTL8139在VxWorks系统
[工业控制]
MSP430与DS18B20驱动程序
**文 件 名: ds18b20.c **描 述: 利用但总线DS18B20测温程序,并在LCD显示,取三位有效小数位。整数部分两位。共5位显示 #include MSP430x44x.h #define SEGE 0X80 #define SEGH 0X40 #define SEGF 0X20 #define SEGC 0X10 #define SEGG 0X08 #define SEGD 0X04 #define SEGB 0X02 #define SEGA 0X01 const unsigned char digit = { SEGA|SEGB|SEGC|SEGD|SEGE|SEGF, /* 0 LCD
[单片机]
HD4478U显示LCD与51单片机驱动程序
#include SST89x5x4.H #include absacc.h #include intrins.h sbit LCDRSPIN = P3^7; sbit LCDRWPIN = P3^6; sbit LCDEPIN = P2^6; #define UCHAR unsigned char void delay(unsigned int i) { UCHAR j; for(i; i 0; i--) for(j = 200; j 0; j--); } /////////////////////////////// //控制LCD unsigned char XPOS,YPOS; //测
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved