IIC通讯之TM1650
来源:互联网 发布:it设备管理 编辑:程序博客网 时间:2024/06/10 21:13
本篇博文最后修改时间:2017年08月14日 22:00。
一、简介
本文以Upd79F8513A(NEC)编程为例,介绍Upd79F8513A(NEC)与TM1650通讯
二、实验平台
电脑平台:Windows7 64位旗舰
编译软件:PM+ V6.30
硬件平台:Upd79F8513A(NEC) 、TM1650
三、版权声明
博主:_懵懂
声明:此博客仅供参考不做任何商业用途,最终解释权归原博主所有。
原文地址:http://blog.csdn.NET/qq_18842031
QQ:951795235
E-mail :951795235@qq.com
懵懂之MCU交流群:136384801
四、实验前提
1、在进行本文步骤前,请先安装PM+ V6.30版本;准备好79F8513A、TM1650硬件平台。
五、基础知识
暂无
六、源码地址
暂无
七、关联文章
暂无
八、实验内容
1.声明及外部调用H文件
#define Pt_TM1650_SDAM PM2.3 //#define Pt_TM1650_SDA P2.3 //#define Pt_TM1650_SCL P2.2 //#define SDA_TM1650_IN Pt_TM1650_SDAM=1 //#define SDA_TM1650_OUT Pt_TM1650_SDAM=0 //#define SDA_H Pt_TM1650_SDA=1 //#define SDA_L Pt_TM1650_SDA=0 //#define SCL_H Pt_TM1650_SCL=1 //#define SCL_L Pt_TM1650_SCL=0 //#define W5NOP NOP();NOP();NOP();NOP();NOP()void Delay_us(uint8 u);void I2CStart(void);void I2Cask(void);void I2CStop(void);void I2CWrByte(uint8 oneByte);uint8 Scan_Key(void); // 按键扫描void TM1650_Set(uint8 Address, uint8 dat);
2.编写引脚模拟IIC通讯代码C文件
void Delay_us(uint8 u){ for( ; u > 0; u--) { NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); }}void I2CStart(void)//开始信号{ SDA_TM1650_OUT; SCL_H; W5NOP; SDA_H; Delay_us(5); SDA_L; Delay_us(5); SCL_L;}void I2CStop(void) //停止信号{ SDA_L; W5NOP; SCL_H; Delay_us(5); SDA_H; W5NOP; W5NOP; SCL_L; W5NOP; W5NOP; SDA_L; Delay_us(5); Delay_us(5);}void I2Cask(void) //ACK信号{ uint8 timeout = 1; SDA_TM1650_IN; //SDA转换为输入 SCL_L; while((Pt_TM1650_SDA) && (timeout <= 10)) //等待SDA返回‘0’电平 { timeout++; } SCL_H; Delay_us(1); SCL_L; SDA_TM1650_OUT; //SDA转换为输出}void I2CWrByte(uint8 oneByte) //写一个字节高位在前,低位在后{ uint8 i, temp; temp = oneByte; SCL_L; Delay_us(1); for(i = 0; i < 8; i++) { if(oneByte & 0x80) SDA_H; else SDA_L; Delay_us(1); SCL_H; Delay_us(1); SCL_L; oneByte <<= 1; }}void TM1650_Set(uint8 Address, uint8 dat) //数码管显示{ //写显存必须从高地址开始写 I2CStart(); I2CWrByte(Address); //第一个显存地址 I2Cask(); I2CWrByte(dat); I2Cask(); I2CStop();}uint8 I2CReadByte() //写一个字节高位在前,低位在后{ uint8 dat, i; SDA_H; dat = 0; SDA_TM1650_IN; //SDA转换为输入 Delay_us(1);Delay_us(1); ///////////////////////////////////// SCL_L; for(i = 0; i < 8; i++) { SCL_H; dat = dat << 1; if(Pt_TM1650_SDA) { dat++; } Delay_us(1); SCL_L; Delay_us(1); } return dat ;}uint8 Scan_Key(void) // 按键扫描{ uint8 i; uint8 rekey; I2CStart(); I2CWrByte(0x49);//读按键命令 I2Cask(); rekey = I2CReadByte(); I2Cask(); I2CStop(); return(rekey);}
阅读全文
0 0
- IIC通讯之TM1650
- IIC 通讯协议
- IIC 通讯协议
- IIC 通讯协议
- IIC 通讯协议
- IIC 通讯协议
- iic通讯协议
- IIC通讯协议学习
- IIC 通讯协议
- IIC 通讯协议
- pic 16 使用8563 rtc iic 通讯 内部iic
- MELEXIS/MLX90614ESF-DCI 传感器 2440 IIC通讯
- IO口模拟ARM系列IIC通讯
- msp430g2533之iic(硬件iic)
- msp430g2533之iic(gpio模拟iic)
- S3C2440之IIC
- stm32 之iic
- 硬件之IIC时序
- 学好C语言、C++,让你掌握自己的未来
- Java初级论点
- mysql内嵌查询
- htm5 对付运营商劫持的笨办法。
- [NOIP2016 D1T3]换教室 【floyd+概率dp】
- IIC通讯之TM1650
- SQL语句详解------数据库表
- 2017.9.11 海拔 思考记录
- Spring Security学习笔记之整体配置
- Netty in action—EventLoop和线程模型
- 【leetcode】第78题 Subsets 题目+解析+JAVA代码
- vue中钩子
- Vuejs 页面的区域化与组件封装
- jdk换版本