SD7218A数码管驱动芯片实例程序

2018-01-14 20:24:55编辑:什么鱼 关键字:SD7218A  数码管  驱动芯片

功能说明:SD7218A 循环左移显示实例程序 

#include "reg52.h" 
#include "intrins.h" 
#define uchar unsigned char 
#define uint unsigned int 

sbit sda=P1^1;//;模拟I2C 数据传送位 


sbit scl=P1^2;//;模拟I2C 时钟控制状态标志 

void delay1(uint z)//延时为 1ms 
{  
uchar x,x1; 
for(;z>0;z--) 

for(x=0;x<114;x++) 

for(x1=0;x1<1;x1++); 


}  

void delay()//30us延时 

uchar i; 
i=30; 
while(i>0) 

i--; 




void star()//开始 

sda=1; 
delay();//5us延时 
scl=1; 
delay();//5us延时 
sda=0; 
delay();//5us延时 



void stop()//停止 

sda=0; 
delay();//5us延时 
scl=1; 
delay();//5us延时 
sda=1; 
delay();//5us延时 



void ack()//应答 
{ uchar z=0; 
while((sda==1)&&(z<50))z++;//条件判断, sda=1,则没有应答。如果没有应答则延时:z<50,z++;后返回 
scl=0; 
delay();//延时 


///写一个数据函数 
//器件写地址 slave_write_address 
//字节地址 byte_address 
//待写入数据 data_data 
void write(uchar slave_write_address,uchar data_data)//写一个数据 

uchar temp,temp1,i,ii; 

star();//开始 

for(ii=0;ii<2;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;i<8;i++) 

scl=0; 
delay();//延时 
temp=temp1; 
temp=temp&0x80;// 相 与 后,把不相关的位清零 

if(temp==0x80)//根据前面 相 与 后,判断 temp是否等于0x80,是则该位为 1 

sda=1;  
else 
sda=0; 

delay();//延时 
scl=1; 
delay();//延时 
scl=0; 
delay();//延时 
temp1=temp1<<1;//向左移出1位 


sda=1; 
delay();//延时 
scl=1; 
delay();//延时 
ack(); 

stop();//停止 


///读一个数据函数 
//器件写地址 slave_write_address 
//器件读地址 slave_read_address 
//字节地址 byte_address 
//读出的数据 data_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;i<8;i++)//开始读数据 

scl=0; 
delay();//5us延时 
temp=temp1; 
temp=temp&0x80;// 相 与 后,把不相关的位清零 

if(temp==0x80)//根据前面 相 与 后,判断 temp是否等于0x80,是则该位为 1 

sda=1;  
else 
sda=0; 

delay();//延时 
scl=1; 
delay();//延时 
scl=0; 
delay();//延时 
temp1=temp1<<1;//向左移出1位 

sda=1; 
delay();//延时 
scl=1; 
delay();//延时 
ack();//应答 

for(x=0;x<8;x++) 

data_data=data_data<<1;//向左移入1位 

sda=1; 
delay();//延时 
scl=0; 
delay();//延时 
scl=1; 
delay();//延时 

if(sda==1)//判断 数据线是否是高电平 
data_data|=0x01;//把读到的数据 或 0X01  
//else  
//data_data|=0x00; 

ack();//应答 
stop();//停止 
return data_data;//返回读到的数据 



void init()//0x50 是器件写地址;0xff 是待写入的数据或指令) 

while(1) 

//write(0x50,0x6a);//测试指令: 
//write(0x50,0x68);//复位(清除)指令: 
//write(0x50,0x61);//左移指令: 
//write(0x50,0x62);//右移指令: 
delay1(1000); 
write(0x50,0x63);//循环左移指令: 
//write(0x50,0x64);//循环右移指令: 




void main() 
{  
uchar temp; 

init(); 

//delay1(1000);//写与读的时间间隔应大于5ms,取决于器件 24C02的响应速度 


//向器件读一个数据 

temp=read(0x51);//向器件读一个数据:(0xa0 是器件写地址;读出数据) 

while(1);//跳转,相当于汇编指令 JUMP $ 


关键字:SD7218A  数码管  驱动芯片

来源: eefocus 引用地址:http://www.eeworld.com.cn/mcu/article_2018011437353.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:NTC热敏电阻高精度温度计程序
下一篇:51单片机ADC0809+AD590温度检测、报警程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

51单片机之数码管显示实验

/* 名称:51单片机之数码管显示实验 说明:对于数码管来说,其本质上可以理解为按照一定规则组合的多个二极管。其使用只需按照特定规则显示对应的二极管即可。要稍微注意一点的就是多个数码管的显示分为静态显示和动态显示。静态显示就是每个二极管显示的内容是一样的,通过片选信号来决定是哪个二极管该显示。动态数码管,即利用人眼的视觉停留效果,快速扫描,快速显示每个数码管的内容,使得每个数码管看起来好像是一起显示的一样。 本实验编写了几个数码管显示的简单程序。在此不做赘述了。*/#include <reg52.h>#define uchar unsigned char//共阳极段码(a在高位,dp在低位
发表于 2018-07-21 13:06:23

DS1302+AT24C02+按键数码管显示程序

#include<reg52.h>  #include<intrins.h>  #define uint unsigned int  #define uchar unsigned char  bit write=0;  sbit led0=P1^5;  sbit led1=P1^6;  sbit led2=P1^7;    sbit&
发表于 2018-06-25 21:48:31

51单片机的数码管和矩阵键盘

使用4*4的矩阵键盘和一个数码管在4*4的矩阵键盘上编码0-F的字符,和一个数码管显示每个键盘上输入的字符。//4*4键盘检测程序,按下键后相应的代码显示在数码管上  #include<reg51.h>  typedef unsigned char UINT8;  UINT8 i=100;  UINT8 j,k,temp,key;  void delay(unsigned char i)  {    for(j=i;j>0;j--)      for(k=125;k>0;k--);  
发表于 2018-06-22 23:00:46

51单片机STC89C52 矩阵键盘数码管显示

;;共阴数码管  DB  3FH,06H,5BH,4FH  DB  66H,6DH,7DH,07H  DB  7FH,6FH,77H,7CH  DB  39H,5EH,79H,71H    END 
发表于 2018-06-22 22:09:37

89C52控制MAX7219驱动数码管

89C52控制MAX7219驱动数码管,提供源码,原理图,焊接实物图等。链接见文末。原理图源码max7219.h/*********************************************************** 文  件  名 : MAX7219.H * 描      述 : MAX7219驱动包程序 **********************************************************/#ifndef _MAX7219_H_#define _MAX7219_H_#include <reg52.h>
发表于 2018-05-29 22:25:24

ATmega16控制MAX7219驱动数码管

ATmega16控制MAX7219驱动数码管,提供源码,原理图,焊接实物图等。链接见文末。 原理图源码MAX7219.H/*********************************************************** 文  件  名 : MAX7219.H * 描      述 : MAX7219驱动包程序 **********************************************************/#ifndef _MAX7219_H_#define
发表于 2018-05-29 22:23:33

小广播

何立民专栏

单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved