




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
接触式接触式 ICIC 卡读写设计卡读写设计 实验要求 实验要求 1 对 IC 卡进行读 写操作 先向 IC 卡中写入初始值 再从 IC 卡中将写入的数据读出 并 保存到 RAM 中 查看 RAM 中的数据 看与原始数据是否一致 验证 IC 卡进行读 写操作功能 2 将学号存入 IC 卡中 读出 IC 卡信息并送数码管显示 如果读出错误 指示灯点亮 实验设计思路 实验设计思路 将学号后六位 010835 写入卡中 然后读取期中的数据 再通过查共阴极七段码表 使其按 顺序显示在数码管上 实验硬件连线及其说明 实验硬件连线及其说明 接触式接触式 IC IC 卡读写卡读写 IC卡 8个触点分布如图所示 基于Atmel 公司的AT24C01 生产的IC卡就是一种简单易用 的存储卡 其管脚排列如图所示 接触式IC卡与CPU采用I 2C总线通讯形式 I2C总线只用两条线 不需要片选线 支持带电 插拔 SCL是时钟线 SDA是数据线 I 2C总线上传送的每一个字节均为8位 并且高位在前 首先由起始信号启动I2C总线 其 后为寻址字节 寻址字节由高7位地址和最低1位方向位组成 方向位表明主控器的操作方式 为读操作或写操作 其后的数据传输字节数是没有限制的 每传送一个字节后都必须跟随一 个应答位或非应答位 在全部数据传送结束后主控制器发送终止信号 I 2C总线上每传输一 个数据位 必须产生一个时钟脉冲 SDA线上的数据必须在时钟线SCL的高电平周期保持稳定 数据线的电平状态只有在SCL 线的时钟信号是低电平时才能改变 起始条件 重复起始条件 当SCL线为高电平时 SDA线从高电平向低电平切换 停止条件 当SCL线为高电平时 SDA线由低电平向高电平切换 如图所示 启动和停止启动和停止 输出确认输出确认 ICIC 卡单元原理图卡单元原理图 ICIC 卡接线图卡接线图 实验程序 实验程序 include Reg51 h include IIC C51 c unsigned char data WData 0 1 0 8 3 5 unsigned char table 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f unsigned char code address 0 xfe 0 xfd 0 xfb 0 xf7 0 xef 0 xdf 0 xbf 0 x7f unsigned char m i void Delay unsigned int count unsigned int i for i 0 i count i void main bit temp unsigned char ptr ptr unsigned char 0 x50 指向内部 RAM 30H 处 Init I2c 初始化 IIC 总线 ISendStr 0 xA0 0 WData 6 将 WData 中的数据写入卡内 Delay 300 temp IRcvStr 0 xA0 0 ptr 6 从卡内读出数据并存入指定 RAM 中 m 0 while 1 for m 0 m 6 m i WData m P0 address m P2 table i Delay 100 文件名 IIC C51 C 此程序是 I2C 操作平台 主方式的软件平台 的底层的 C 子程序 如发送数据 及接收数据 应答位发送 并提供了几个直接面对器件的操作函数 注意 函数是采用软件延时的方法产生 SCL 脉冲 固对高晶振频率要作 一定的修改 本例是 1us 机器周期 即晶振频率要小于 12MHZ 11 0592MHz include 头文件的包含 include define uchar unsigned char 宏定义 define uint unsigned int define Nop nop 定义空指令 常 变量定义区 端口位定义 sbit SDA P1 6 模拟 I2C 数据传送位 sbit SCL P1 7 模拟 I2C 时钟控制位 状态标志 bit ack 应答标志位 函数名 启动总线函数 函数原型 void Start I2c 功能 启动 I2C 总线 即发送 I2C 起始条件 void Start I2c SDA 1 发送起始条件的数据信号 Nop SCL 1 Nop 起始条件建立时间大于 4 7us 延时 Nop Nop Nop Nop SDA 0 发送起始信号 Nop 起始条件锁定时间大于 4 s Nop Nop Nop Nop SCL 0 钳住 I2C 总线 准备发送或接收数据 Nop Nop 函数名 结束总线函数 函数原型 void Stop I2c 功能 结束 I2C 总线 即发送 I2C 结束条件 void Stop I2c SDA 0 发送结束条件的数据信号 Nop 发送结束条件的时钟信号 SCL 1 结束条件建立时间大于 4 s Nop Nop Nop Nop Nop SDA 1 发送 I2C 总线结束信号 Nop Nop Nop Nop Nop Nop 函数名 初始化 IIC 总线 void Init I2c void Init I2c SCL 0 Stop I2c 函数名 字节数据传送函数 函数原型 void SendByte uchar c 功能 将数据 c 发送出去 可以是地址 也可以是数据 发完后等待应答 并对 此状态位进行操作 不应答或非应答都使 ack 0 假 发送数据正常 ack 1 ack 0 表示被控器无应答或损坏 void SendByte uchar c uchar BitCnt for BitCnt 0 BitCnt 8 BitCnt 要传送的数据长度为 8 位 if c BitCnt 判断发送位 else SDA 0 Nop SCL 1 置时钟线为高 通知被控器开始接收数据位 Nop Nop 保证时钟高电平周期大于 4 s Nop Nop Nop SCL 0 Nop Nop SDA 1 8 位发送完后释放数据线 准备接收应答位 Nop SCL 1 Nop Nop Nop Nop if SDA 1 ack 0 else ack 1 判断是否接收到应答信号 SCL 0 Nop Nop 函数名 字节数据接收函数 函数原型 uchar RcvByte 功能 用来接收从器件传来的数据 并判断总线错误 不发应答信号 收完后请用应答函数 uchar RcvByte uchar retc uchar BitCnt retc 0 SDA 1 置数据线为输入方式 for BitCnt 0 BitCnt 8 BitCnt Nop SCL 0 置时钟线为低 准备接收数据位 Nop Nop 时钟低电平周期大于 4 7 s Nop Nop Nop SCL 1 置时钟线为高使数据线上数据有效 Nop Nop retc retc 1 if SDA 1 retc retc 1 读数据位 接收的数据位放入 retc 中 Nop Nop SCL 0 Nop Nop return retc 函数名 应答子函数 原型 void Ack I2c bit a a 0 发送应答 a 1 发送非应答 功能 主控器进行应答信号 可以是应答或非应答信号 void Ack I2c bit a if a 0 SDA 0 在此发出应答或非应答信号 else SDA 1 Nop Nop Nop SCL 1 Nop Nop 时钟低电平周期大于 4 s Nop Nop Nop SCL 0 清时钟线 钳住 I2C 总线以便继续接收 Nop Nop 函数名 向无子地址器件发送字节数据函数 函数原型 bit ISendByte uchar sla ucahr c 功能 从启动总线到发送地址 数据 结束总线的全过程 从器件地址 sla 如果返回 0 表示操作成功 否则操作有误 注意 使用前必须已结束总线 bit ISendByte uchar sla uchar c Start I2c 启动总线 SendByte sla 发送器件地址 if ack 0 return 1 SendByte c 发送数据 if ack 0 return 1 Stop I2c 结束总线 return 0 函数名 向有子地址器件发送多字节数据函数 函数原型 bit ISendStr uchar sla uchar suba ucahr s uchar no 功能 从启动总线到发送地址 子地址 数据 结束总线的全过程 从器件 地址 sla 子地址 suba 发送内容是 s 指向的内容 发送 no 个字节 如果返回 0 表示操作成功 否则操作有误 注意 使用前必须已结束总线 bit ISendStr uchar sla uchar suba uchar s uchar no uchar i Start I2c 启动总线 SendByte sla 发送器件地址 if ack 0 return 1 SendByte suba 发送器件子地址 if ack 0 return 1 for i 0 i no i SendByte s 发送数据 if ack 0 return 1 s Stop I2c 结束总线 return 0 函数名 向无子地址器件读字节数据函数 函数原型 bit IRcvByte uchar sla ucahr c 功能 从启动总线到发送地址 读数据 结束总线的全过程 从器件地 址 sla 返回值在 c 如果返回 0 表示操作成功 否则操作有误 注意 使用前必须已结束总线 bit IRcvByte uchar sla uchar c Start I2c 启动总线 SendByte sla 1 发送器件地址 if ack 0 return 1 c RcvByte 读取数据 Ack I2c 1 发送非就答位 Stop I2c 结束总线 return 0 函数名 向有子地址器件读取多字节数据函数 函数原型 bit IRcvStr uchar sla uchar suba ucahr s uchar no 功能 从启动总线到发送地址 子地址 读数据 结束总线的全过程 从器件 地址 sla 子地址 suba 读出的内容放入 s 指向的存储区 读 no 个字节 如果返回 0 表示操作成功 否则操作有误 注意 使用前必须已结束总线 bit IRcvStr uchar sla uchar suba uchar s uchar no uchar i Start I2c 启动总
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业文化体验旅游创新创业项目商业计划书
- 金融合规服务创新创业项目商业计划书
- 汽车客户关系管理系统升级创新创业项目商业计划书
- 2025年共青城市市级机关公开遴选考试笔试试题(含答案)
- 消费者购物体验研究创新创业项目商业计划书
- 编程乐园探险记创新创业项目商业计划书
- 智能化烹饪菜谱创新工具创新创业项目商业计划书
- 2025年数字艺术市场创作与交易政策环境分析报告
- 2025年文化创意产品创新研发资金申请策略研究报告
- 2025年心血管疾病心血管疾病心血管疾病患者教育项目市场前景报告
- T/CATCM 026-2023中药液体废弃物循环利用指导原则
- 低空经济培训项目工程方案
- 中国冷冻榴莲行业市场前景预测及投资价值评估分析报告
- 2025至2030年中国眼科手术器械行业投资前景及策略咨询报告
- 人教九年级英语上册Unit 7《单元写作》课件
- 外贸英语专业课件
- 心血管系统疾病相关专业医疗质量控制指标(2021年版)
- 苏教版六年级上册数学教案:19分数与分数相乘及分数乘法练习
- 2025学校食堂食品安全培训
- 生产安全事故应急预案评估报告
- 人教版(2024)七年级下册英语各单元必会重点短语和句型默写版(含答案)
评论
0/150
提交评论