《2022年芯片SDA实例程序X位LED数码管驱动 .pdf》由会员分享,可在线阅读,更多相关《2022年芯片SDA实例程序X位LED数码管驱动 .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、LED 数码管驱动专用 IC SD 7218A 特别功能:内置两线式串行接口、I2C 接口,但没有字节地址,所以不能像 AT24C04那样使用。8 8 数码管接口、64 键键盘接口、100Bytes 静态 RAM、最多可级联 8 片概述名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -SD 7218A 是一片具有两线式串行接口的、可同时驱动 8 位共阴式数码管(或 64 只独立 LED)、100Bytes 静态 RAM 的智能显示驱动芯片,该芯片同时还可连接多达 64 键的键盘矩阵。SD 7218A 内部含有译码器,可直接接受 16 进制码,SD 7218A 还具有多种控
2、制指令,如消隐、闪烁、左移、右移、段寻址等。SD 7218A 内部含有 100Bytes 静态 RAM,可通过串行方式读写,用于存储通用数据。SD 7218A 可通过两线串行接口最多可级联 8 片,此时 LED 数为64 8。SD 7218A 有 DIP28 和 SOIC28 两种封装形式。管脚设置?、管脚功能管脚号标号功能特征1,3,8 NC 不用接2 VCC 正电源4 VSS 负电源5,24 CLK 与 CPU 接口的串行时钟线N 沟道开路输入,需要对 VCC 外加上拉电阻6,7 DIG6,DIG7 LED 数码管的位码驱动脚 6、7/键盘列线 7、8 9 KEY 与 CPU 接口的键盘中
3、断信号线CMOS 输出 ,,低电平有效(即当检测到按键时,KEY 引脚变为低电平,并一直保持到按键结束。)名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -10,11,12,13,14,15,16,17 SEGA,SEGB,SEGC,SEGD,SEGE,SEGF,SEGG,DP LED 数码管的八段码(即 a,、b、c、d、e、f、g、dp)驱动脚 /键盘行线 1、2、3、4、5、6、7、8 18 DIG0/A0 LED 数码管的位码驱动脚 0/片选地址脚A0/键盘列线 1 此脚接 560K 电阻至 VSS 时,A0=0;此脚不接电阻时 A0=1 19 DIG1/A1 L
4、ED 数码管的位码驱动脚 0/片选地址脚A1/键盘列线 2 此脚接 560K 电阻至 VSS 时,A1=0;此脚不接电阻时 A1=1 20 DIG2/A2 LED 数码管的位码驱动脚 0/片选地址脚A2/键盘列线 3 此脚接 560K 电阻至 VSS 时,A2=0;此脚接 560K 电阻至 VCC 时A2=1.(一定要加 560K 的上拉或下拉电阻)21,22,23 DIG3,DIG4,DIG5 LED 数码管的位码驱动脚 3、4、5/键盘列线 4、5、6 25 DATA 与 CPU 接口的串行数据线N 沟道开路输出 /输入,需要对VCC 外加上拉电阻26 OSCO 晶体振荡输出脚27 OSC
5、I 晶体振荡输入脚28 RST 复位脚低电平有效(一般接 VCC)*;奥宇星单片机工作室;http:/;Copyright 2009 aoyux McuStudio 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -;All rights Reserved ;作者:奥宇星 QQ:393193589;AT89S52 晶振频率为 11.0592MHz 指令周期:1.085069us 功能说明:SD7218A 循环左移显示实例程序;*/#include reg52.h#include intrins.h#define uchar unsigned char#define uin
6、t unsigned int sbit sda=P11;/;模拟 I2C 数据传送位sbit scl=P12;/;模拟 I2C 时钟控制状态标志void delay1(uint z)/延时为 1ms uchar x,x1;for(;z0;z-)for(x=0;x114;x+)for(x1=0;x10)i-;名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 9 页 -void star()/开始 sda=1;delay();/5us延时scl=1;delay();/5us延时sda=0;delay();/5us延时 void stop()/停止 sda=0;delay();/5us延
7、时scl=1;delay();/5us延时sda=1;delay();/5us延时 void ack()/应答 uchar z=0;while(sda=1)&(z50)z+;/条件判断,sda=1,则没有应答。如果没有应答则延时:z50,z+;后返回scl=0;delay();/延时 /写一个数据函数/器件写地址 slave_write_address /字节地址 byte_address /待写入数据 data_data void write(uchar slave_write_address,uchar data_data)/写一个数据名师资料总结-精品资料欢迎下载-名师精心整理-第 5
8、页,共 9 页 -uchar temp,temp1,i,ii;star();/开始for(ii=0;ii2;ii+)/根据 24CXX 文档资料,和时序图,按顺序送:器件写地址,字节地址,数据 if(ii=0)temp=slave_write_address;/送 器件写地址temp1=slave_write_address;else if(ii=1)temp=data_data;/送 数据temp1=data_data;for(i=0;i8;i+)scl=0;delay();/延时temp=temp1;temp=temp&0 x80;/相 与 后,把不相关的位清零if(temp=0 x80)
9、/根据前面相 与 后,判断 temp 是否等于 0 x80,是则该位为 1 sda=1;else sda=0;delay();/延时scl=1;delay();/延时scl=0;delay();/延时temp1=temp11;/向左移出 1 位名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 9 页 -sda=1;delay();/延时scl=1;delay();/延时ack();stop();/停止 /读一个数据函数/器件写地址 slave_write_address /器件读地址 slave_read_address /字节地址 byte_address /读出的数据 data
10、_data read(uchar slave_write_address)/读一个数据 uchar temp,temp1,i,x,data_data;star();/开始temp=slave_write_address;/送 器件写地址temp1=slave_write_address;for(i=0;i8;i+)/开始读数据 scl=0;delay();/5us延时temp=temp1;temp=temp&0 x80;/相 与 后,把不相关的位清零if(temp=0 x80)/根据前面相 与 后,判断 temp 是否等于 0 x80,是则该位为 1 sda=1;else sda=0;名师资料
11、总结-精品资料欢迎下载-名师精心整理-第 7 页,共 9 页 -delay();/延时scl=1;delay();/延时scl=0;delay();/延时temp1=temp11;/向左移出 1 位 sda=1;delay();/延时scl=1;delay();/延时ack();/应答for(x=0;x8;x+)data_data=data_data1;/向左移入 1 位sda=1;delay();/延时scl=0;delay();/延时scl=1;delay();/延时if(sda=1)/判断数据线是否是高电平data_data|=0 x01;/把读到的数据或 0X01 /else /dat
12、a_data|=0 x00;ack();/应答stop();/停止return data_data;/返回读到的数据 void init()/0 x50 是器件写地址;0 xff 是待写入的数据或指令)while(1)名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 9 页 -/write(0 x50,0 x6a);/测试指令:/write(0 x50,0 x68);/复位(清除)指令:/write(0 x50,0 x61);/左移指令:/write(0 x50,0 x62);/右移指令:delay1(1000);write(0 x50,0 x63);/循环左移指令:/write(0 x50,0 x64);/循环右移指令:void main()uchar temp;init();/delay1(1000);/写与读的时间间隔应大于5ms,取决于器件 24C02 的响应速度/向器件读一个数据temp=read(0 x51);/向器件读一个数据:(0 xa0 是器件写地址;读出数据)while(1);/跳转,相当于汇编指令 JUMP$名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 9 页 -