谁会c语言的595和165的控制程序,求帮助

谁会c语言的595和165的控制程序,求帮助,第1张

#include<reg51.h>

#include<INTRINS.H>

sbit SCLK=P1^0 //定义P1^0端口为595的频率

sbit DAT=P1^1 //定义P1^1端口为595的数据

sbit SLCK=P1^2////定义P1^2端口为595的输出频率

unsigned char code tab[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F}//0-9,-,全灭

void sendbyte(unsigned char a)//单位数据发送函数

{ unsigned char i//定义一个无字符串变量

for(i=0i<8i++) //for 循环,循环8次,把一个数变成二进制发送出去

{

SCLK=0// 把595 SCLK频率置低电平

DAT=a&0x80//把数据与0X80后发送出去

a=a<<1 把数据a左移一位

SCLK=1 把595频率置高

}

}

void out595(void) //595输出函数

{

SLCK=0

_nop_()//延时函数,系统自带

SLCK=1

}

main() //主函数

{ unsigned char i //定义一个无符号局部变量I

unsigned int f=60000 //赋值

while(1)//进循环

{for(i=0i<9i++) //进FOR循环

{

sendbyte(tab[i])//调用发送函数 发送I数据道595 比如第一次循环的时候 i 数为0tab[0] 那么发送的数就是0x3f

out595() //数据输出函数,现在数据在595内面,现在这个就是输出到数码管

while(f--) //延时

}

}

}

下面是595的程序,给你参考一下,根据这个程序来写数码管显示就很简单了。

#define u8 unsigned char

#define u16 unsigned int

sbit MR=P1^6//寄存器清0,避免数据错位

sbit RCK=P1^5//并行输出时钟

sbit DS=P1^4//数据线

sbit CLK=P1^3//移位输入时钟

void writ_595(u8 dat)

{

u8 i

MR=0//寄存器清0,避免数据错位

MR=1

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

{

CLK=0

if((dat&0x80) == 0x80)

DS = 1//串行数据输出

else DS = 0

CLK=1//移位输入时钟,上升沿输入

dat<<=1

}

RCK=0//并行输出时钟

RCK=1   

} 该子函数可以直接调用,比如writ_595(0xfe);Q0-Q7脚则输出对应的二进制码

送往595的,不宜直接用时间的数据。

应该用一个显示缓冲数组,把时间先送到数组,再送到595。

想要显示黑屏,就把黑屏的代码,送到数组。

间隔0.5秒,把时间数据和黑屏代码,轮流送到数组,再送到595,即可看到闪烁的效果。


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

原文地址:https://54852.com/yw/11926805.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存