TM1635驱动程序问题,我根据IC资料里面的例程编写了程序,好像是不行,IC时序那资料里好像不是很清楚!

TM1635驱动程序问题,我根据IC资料里面的例程编写了程序,好像是不行,IC时序那资料里好像不是很清楚!,第1张

/*

*

*/

#include<reg52.h>

#include<tm1635.h>

bdata unsigned char y //定义可以位寻址的两个全局变量

sbit y7=y^7

//给IC写数据(包括8位数据,ACK应答信号

void write(unsigned char wr_data)

{

unsigned int i,count1

for(i=0i<8i++)//开始传送8位数据,每循环一次传送一位数据

{

CLK =0

nop

nop

wr_data >>= 1 //移位数据,低位在前!

nop

DIO = CY

nop

nop

CLK =1

nop

nop

}

//8位数据传送完1

CLK = 0 //判断芯片发过来的ACK应答信号

nop

nop

DIO = 1

nop

nop

CLK = 1

nop

nop

while(DIO)

{

count1 +=1

if(count1 ==200)//第九个脉冲高电平时等待芯片把DIO拉低,否则一定时间内自动拉低,以开始下一字节的传送

{

DIO =0

count1 =0

}

}

nop

nop //ACK应答信号

}

//读按键数据子程序

unsigned char read(void)

{

unsigned char count,x

nop

nop

CLK = 0

for(x=0x<8x++)//读按键数据开始

{

CLK = 0

nop

if(DIO==1)

{

y7 = 1

}

else

{

y7 = 0

}

CLK = 1

nop

nop

if(x!=7)

{y=(y>>1)} //读按键时,不需要开始信号,直接读8位数据。

}

CLK = 0

nop

nop

DIO = 1

nop

nop

CLK = 1

nop

nop

nop

while(DIO)

{

count +=1

if(count ==200)

{

DIO =0

count =0

}

}

nop

nop//ACK应答信号

return(y)

}

//---------开始信号------------------

void start(void)

{

CLK = 1 //给芯片发送开始信号

DIO = 1

nop

nop

DIO = 0

nop

nop

CLK = 0 //开始信号传送完

nop

}

//---------结束信号-------------------

void stop(void)

{

CLK = 0

nop

nop

DIO = 0

nop

nop

CLK = 1

nop

nop

nop

DIO = 1

}

//显示子函数

void display(unsigned char led[6])

{

unsigned char i=0

DIO = 1

CLK = 1

start() //调用开始信号

write(0x40)//写命令40H(数据设置),地址自动加一

stop() //调用结束信号,一个字节命令发送完毕,可以发送下一个命令

nop

nop

nop

nop

start() //调用开始信号

write(0xc0)//写起始地址命令(0C0H),地址从00H单元开始。

for(i=0i<4i++)

{

write(led[i]) //给显示寄存器写显示数据,值可根据实参改变

}

stop() //将所有数据送完后,发结束信号,可以发送下一条命令

nop

nop

nop

start() //调用开始信号

write(0x8b)//送开屏命令,(8BH),亮度可以根据低三位调节。

stop() //调用结束信号,一个字节命令发送完毕,可以发送下一个命令

}

//----------判按键子程序-----------

unsigned char readkey(void)

{

unsigned char key_VALUE

DIO = 1

CLK = 1

start()//调用开始信号

write(0x42) //送读按键命令(42H),

key_VALUE = read()//读8位按键数据,其中高三位为0,低5位为按键编码。编码表见说明书第5页。

stop()//发结束信号,按键读取完毕。

//dokey(key_VALUE)

return(key_VALUE)

}

lm258是低功耗双运算放大器,可用于单电源工作。lm348是四运算放大器,引脚排列和lm324一样。lm324是双电源工作的芯片,是四个741组合芯片。两种芯片引脚数,引脚排列不一样,直接替换是不行的。替换得看重新设计应用的具体电路。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7801190.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存