历史上的今天
返回首页

历史上的今天

今天是:2025年01月14日(星期二)

正在发生

2018年01月14日 | SD7218A数码管驱动芯片实例程序

2018-01-14 来源:eefocus

功能说明: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 $ 


推荐阅读

史海拾趣

驰兴电感(Coilank)公司的发展小趣事

为了进一步提升产品的竞争力,驰兴电感积极开展国际合作。公司与国际知名电子元器件厂商建立了长期稳定的合作关系,共同研发新产品、新技术。这些国际合作不仅使驰兴电感能够借鉴国际先进经验和技术,还为公司带来了更多的市场机会和资源。

D+H Mechatronic AG公司的发展小趣事

在全球环保意识日益增强的背景下,D+H Mechatronic AG积极响应绿色制造的号召。公司投入大量资金和资源研发出了一系列节能环保的机械设备,这些设备在生产过程中能够显著降低能耗和排放。同时,公司还积极参与各种环保活动,倡导绿色生产理念。这些举措不仅使公司赢得了客户的信赖和支持,也为其在行业内树立了良好的环保形象。

Dfx公司的发展小趣事

某半导体企业在生产过程中面临着生产效率低下、成本过高的问题。为了提高生产效率并降低成本,该企业引入了DFX的设计理念,对生产线进行了全面优化。通过改进设备布局、优化工艺流程和采用自动化生产技术等手段,该企业成功提高了生产效率并降低了成本,增强了市场竞争力。

EM Microelectronic-Marin SA公司的发展小趣事

EM Microelectronic-Marin SA,作为斯沃琪集团公司(The Swatch Group)的一部分,自1971年起便开始了对超低功率集成电路的探索。在当时,电子设备的功耗是一个重要的挑战,尤其是在移动和便携式设备中。EM Microelectronic-Marin凭借其前瞻性的技术视野,投入大量资源进行研发,逐渐在行业内建立了低功耗技术的领先地位。

永源微电子(APM)公司的发展小趣事

2023年,永源微电子成功完成了A轮融资,这是公司发展过程中的一个重要里程碑。此次融资由深圳英集芯科技股份有限公司领投,为公司带来了丰富的资金支持和市场资源。通过与英集芯科技的战略合作,永源微电子在微电子领域的技术创新和产品研发上取得了新的突破。双方共同开展研发项目,推动技术的突破和应用场景的拓展,为公司的未来发展注入了强大的动力。

中科银河芯(GXCAS)公司的发展小趣事
电源电压决定了输出信号的高电平值。

问答坊 | AI 解惑

最新版本的keil软件--uvision4beta1及其使用手记

上传一份最新版本的KEIL 51 软件vision4beta1,看起来很不错的,这个是没有PJ的版本,如果你的机子上装有注册过的uvision3,那直接安装就可以使用,无需另外注册!!刚下载下来,简单打开看了下,就拿出来和大家分享了,里边有一份网上找的使用手记 ...…

查看全部问答>

创建SQLCE数据库

能不能用VS2003在PC机上创建一个SQLCE数据库并操作SQLCE数据库??救救命啊…

查看全部问答>

关于BOOTlLOADER写数据命令的问题

                                 写两个以上的数据时他的校验和是他们依次异或的结果,那要是写一个数据时校验和是什么呢?…

查看全部问答>

cortex-m0社区热闹程度大减!

关于M0的讨论不是很热闹呀! 发帖顶一下!…

查看全部问答>

求助啊,去明尼苏达的事

首先我一直关注学校有个2+2的项目,是去明尼苏达双城校区的。不过我大概了解到,一年所有的费用大概在20万左右,不知道你觉得是大概一个怎样的数目? 然后我家的情况不是特别好,只能这样说,最多够支付我一年的学费,也就是20万。而且我估计是家 ...…

查看全部问答>

stm32 CAN通信遇到问题

    我用的stm32F103VC控制器外接一个TJA1050CAN收发器,加一个CAN分析仪(确定可用USBCAN-II(iTEK公司的))进行测试,至于stm32的CAN测试程序,首先采用回环模式,使能CAN接收中断,调试发现,可以进入接收中断,而且接收的数据与发送的数 ...…

查看全部问答>

同时有12V、5V、3.3V的系统,TI有没有单片电源器件?

有个东东,需要的电源有12V(或15V)、5V、3.3V,TI的电源IC有没有单片解决方案?…

查看全部问答>

【PSoC4心得】对PSoC的一些感受

收到板子后就开始装软件,软件装了两次,第一次不知道为什么没装成功,第二次直接安装到C盘 ,安装类型选的全部,装好后可以用了。 我是听大学的老师说起PSoC的,感觉挺不错的就申请了一套板子,打算用到公司的方案上。       &n ...…

查看全部问答>

2014 C2000研讨会课程汇总 带有DSP灵魂的MCU

2014 C2000研讨会课程汇总 https://www.eeworld.com.cn/traini ... ex&a=lists&catid=25 TI C2000是业界公认的最适合各种对实时性要求高的场合 工业应用是TI近几年明确的最重要的发展应用,即把工业应用作为其公司发展战略的重中之重, 因此C20 ...…

查看全部问答>