• PUDN用户
    了解作者
  • C/C++
    开发工具
  • 12KB
    文件大小
  • ZIP
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 17
    下载次数
  • 2005-08-09 04:44
    上传日期
ch452的应用和方法,能过要它来做显示,这样不要用164芯片来,使得电路简单可靠.
CH452IF.ZIP
  • C
  • PIN.H
    1.5KB
  • CH452W2.C
    2.9KB
  • CH452W4.C
    2.4KB
  • EXAM.C
    1.7KB
  • CH452W3.C
    2.6KB
  • CH452CMD.H
    1.5KB
  • MCS51ASM
  • CH452W3.ASM
    4.8KB
  • CH452W4.ASM
    5.7KB
  • CH452W2.ASM
    5.1KB
  • www.pudn.com.txt
    218B
内容介绍
/**************************** Website: http://wch.cn Email: tech@wch.cn Author: W.ch 2005.4 CH452 的真正2 线接口 **************************** MCS51 24MHz 频率降低则可以适当减少SCL SDA 之间的延时 CH452 的真正2 线接口,含低电平脉冲按键中断在内,只需要2 个I/O 引脚,兼容IIC 时序 两线制方式SCL/SDA, 按键中断由SDA产生, 脉冲/边沿中断 ****************************************************************************/ #include <reg52.h> #include <intrins.h> #include <pin.h> // 修改该文件以适应硬件环境/单片机型号等 void CH452_I2c_Start_2() //两线制方式,SDA用做中断输出,使用以下两个函数 { CH452_SDA_SET; CH452_SCL_CLR; //通知CH452,将要对其操作,此段时间不要再产生按键中断 do { DELAY_1US; // 保留足够的时间给CH452产生中断 DELAY_1US; } while ( CH452_SDA_IN == 0 ); // CH452正在请求中断? DELAY_1US; DISABLE_INTERRUPT; //禁止键盘中断,防止开始时被CH452中断而进入中断服务程序中的START CH452_SDA_SET; /*发送起始条件的数据信号*/ CH452_SCL_SET; DELAY_1US; CH452_SDA_CLR; /*发送起始信号*/ DELAY_1US; CH452_SCL_CLR; /*钳住I2C总线,准备发送或接收数据 */ DELAY_1US; } void CH452_I2c_Stop_2() { CH452_SDA_CLR; DELAY_1US; CH452_SCL_SET; DELAY_1US; CH452_SDA_SET; /*发送I2C总线结束信号*/ DELAY_1US; CLEAR_INTER_FLAG; // 清除中断标志,因为通过SDA输出数据所以会误中断 ENABLE_INTERRUPT; } void CH452_I2c_WrByte(unsigned char c) //写一个字节数据 { unsigned char i; for(i=0;i!=8;i++) // 输出8位数据 { if(c&0x80) {CH452_SDA_SET;} else {CH452_SDA_CLR;} CH452_SCL_SET; c<<=1; DELAY_1US; DELAY_1US; CH452_SCL_CLR; DELAY_1US; // DELAY_1US; } DELAY_1US; CH452_SDA_SET; CH452_SCL_SET; // 接收应答 DELAY_1US; DELAY_1US; CH452_SCL_CLR; DELAY_1US; } unsigned char CH452_I2c_RdByte() //读一个字节数据 { unsigned char c,i; c=0; for(i=0;i!=8;i++) // 输入8位数据 { CH452_SDA_SET; CH452_SCL_SET; DELAY_1US; DELAY_1US; c<<=1; if(CH452_SDA_IN) c|=0x01; // 输入1位 CH452_SCL_CLR; DELAY_1US; // DELAY_1US; } DELAY_1US; CH452_SDA_SET; CH452_SCL_SET; // 发出无效应答 DELAY_1US; DELAY_1US; CH452_SCL_CLR; DELAY_1US; return(c); } void CH452_Write(unsigned short command) //写命令 { CH452_I2c_Start_2(); /*启动总线*/ #ifdef ENABLE_2_CH452 // 若有两个CH452并连 CH452_I2c_WrByte(((unsigned char)(command>>7)&0x3E)|0x40); // CH452的ADDR=0时 #else CH452_I2c_WrByte(((unsigned char)(command>>7)&0x3E)|0x60); // CH452的ADDR=1时(默认) #endif CH452_I2c_WrByte((unsigned char)command); /*发送数据*/ CH452_I2c_Stop_2(); /*结束总线*/ } unsigned char CH452_Read() //读取按键 { unsigned char key; CH452_I2c_Start_2(); /*启动总线*/ CH452_I2c_WrByte(0x6F); // 若有两个CH452并连,当ADDR=0时,此值为0x4F key=CH452_I2c_RdByte(); /*读取数据*/ CH452_I2c_Stop_2(); /*结束总线*/ return(key); }
评论
    相关推荐
    • ch452a.rar
      IIC总线协议芯片CH452驱动代码,配合数码管和按键,适合快速移植。
    • CH452.zip
      CH452芯片中文资料,实现按键扫描及数码管显示
    • Ch2.rar
      data structure lecture - 2, teach you about basical introduction.
    • ch03.rar
      本源码实现了Windows变成和MFC基础
    • 730956.rar
      这是一个用C实现7-bit的编码和解码的算法 非常有效 经过本人验证的,可用
    • purpcsessymbolicnamespace.rar
      这里有所有扩展名的介绍,让大家在开发软件的时候更方便些,很好用的
    • calculator.zip
      应用简单的堆栈操作,实现了初等的计算器,学生刚学习编程,望海涵
    • c.zip
      输入一个数字,输出这一个数的位数,并且不大于5位数字
    • Ch7.rar
      KNN IS SDI UH DISUGH EIUDH XIDSEWYG2U
    • compution.zip
      对于表达式求值的计算,实现有标点符号和括号的计算,采用栈的原则