历史上的今天
返回首页

历史上的今天

今天是:2025年03月02日(星期日)

2020年03月02日 | 深入理解单片机的串转并IC-74HC595的工作时序及用法

2020-03-02 来源:51hei

本人新手一枚,正在学51单片机,买了一块开发板,配套的教程解释有点错误,摸索了一天,把程序改了一下,更能方便理解单片机的串转并IC-74HC595的工作时序及用法
(74HC595的规格书及8*8LED点阵模块电路这里省略)


程序功能:通过主程序调用发送数据的子函数,发送了两个数据,分别点亮LED阵列的第一列的底下一个LED和顶上的七个LED,并交替闪烁
#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器
#include "intrins.h"
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
//--定义使用的 IO 口--//
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
sbit LED=P0^7;
//sbit LED1=P0^6;
/********************************************************************
***********
* 函 数 名 : Hc595SendByte(u8 dat1,u8 dat2)
* 函数功能 : 通过 595 发送 2 个字节的数据
* 输 入 : dat1:第 2 个 595 输出数值
* * dat2: 第 1 个 595 输出数值
* 输 出 : 无
*********************************************************************
**********/
void Hc595SendByte(u8 dat1,u8 dat2)
{
u8 a;
u16 b;
SRCLK = 1;
RCLK = 1;
for(a=0;a<8;a++) //发送 8 位数
{
SER = dat1 >> 7; //从最高位开始发送
dat1 <<= 1;
SRCLK = 0; //发送时序
_nop_();
_nop_();
SRCLK = 1;
}
RCLK = 0;
_nop_();
_nop_();
RCLK = 1;               
for(b=0;b<65535;b++){} //加入延时,方便在开发板上看清HC595发送第一个数据时,点亮的LED
SRCLK = 1;
RCLK = 1;
for(a=0;a<8;a++) //发送 8 位数
{
SER = dat2 >> 7; //从最高位开始发送
dat2 <<= 1;
SRCLK = 0; //发送时序
_nop_();
_nop_();
SRCLK = 1;
}
RCLK = 0;
_nop_();
_nop_();
RCLK = 1;
for(b=0;b<65535;b++){} // 加入延时,方便在开发板上看清看清HC595发送第一个数据时,点亮的LED
}
/********************************************************************
***********
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*********************************************************************
**********/
void main()
{ LED=0; //使第一列为低电平。
while(1)
{
Hc595SendByte(0x01,0xfe);
}
}

推荐阅读

史海拾趣

All Sensors公司的发展小趣事

在过去的30年里,All Sensors一直致力于为OEM客户设计定制各种经典的传感器。这些传感器不仅具有高精度、高可靠性和高灵敏度,还广泛应用于航天航空、医疗设备、环保仪器等多个领域。凭借卓越的产品性能,All Sensors的部分经典产品甚至被业界某大公司收购并发扬光大,进一步扩大了其在电子行业的影响力。

bb-smartworx公司的发展小趣事

All Sensors公司的创始人Dennis被誉为美国硅谷的传奇人物。在70年代,Dennis在硅谷成功发明了全球第一颗压力传感器,这一创新不仅奠定了All Sensors在传感器领域的领先地位,也为整个电子行业带来了新的技术革命。这颗传感器的诞生,标志着All Sensors正式踏上了传感器技术的研发之路,为后续的发展奠定了坚实的基础。

Corsair Electrical Connectors Inc公司的发展小趣事

随着市场的不断发展,Corsair意识到只有不断创新才能在竞争中立于不败之地。因此,公司加大了对研发的投入,积极引进先进技术和设备,不断提升产品的性能和质量。在一次次的尝试和失败后,Corsair的研发团队终于突破了行业技术瓶颈,成功开发出了一款具有高性能、高稳定性的连接器产品。这一创新成果不仅赢得了客户的青睐,也为公司在行业中树立了良好的口碑。

Fuji Teminal Industry Co Ltd公司的发展小趣事

Corsair深知品质是企业生存和发展的关键。因此,公司建立了严格的质量管理体系,从原材料采购、生产加工到产品出厂,每一个环节都进行严格的质量控制。Corsair还引入了先进的质量检测设备和方法,确保每一件产品都符合客户的要求和行业标准。这种对品质的执着追求使得Corsair的产品在市场上赢得了良好的声誉。

Elpaq公司的发展小趣事
American Micro Products Inc公司的发展小趣事

AMP深知品质是企业的生命线。因此,公司始终将品质管理放在首位,从原材料的采购到生产过程的每一个环节都严格把控。同时,AMP还注重客户需求的收集与反馈,根据市场变化及时调整产品策略,确保产品能够满足客户的实际需求。

问答坊 | AI 解惑

哥们刚改进过的USB2.0转IDE硬盘的SCH,兼容笔记本硬盘.PROTEL99SE格式.

哥们刚改进过的USB2.0转IDE硬盘的SCH,兼容笔记本的IED44硬盘.PROTEL99SE格式.性能不错,每分钟近500M的传输速度! [ 本帖最后由 西门 于 2009-5-12 21:17 编辑 ]…

查看全部问答>

电子产品手工焊接

本帖最后由 paulhyde 于 2014-9-15 09:37 编辑 RT,希望有帮助。  …

查看全部问答>

出错:i2cwrite error:1460 麻烦高手指点一二

12c init iic irq mapping :[irq:27->sysIRQ:21]. OEMIoControl:Unspported Code 0x10100b4-device 0x0101 func 52 OEMIoControl:Unspported Code 0x10100b4-device 0x0101 func 62 CamCLOCKOn=1 syncist:IO_Abandoned I2CWrite error :1460 ...…

查看全部问答>

C# writefile 写设备如何指定地址?万分紧急

问题如下:        我现在接手别人的工作,驱动别人是用evc4.2写dll,驱动经测试可用。        我现在用C#开发应用程序。        现在的问题是,驱动writefile第二个参数他传的是 ...…

查看全部问答>

学硬件还是软件?

学硬件的话,以后工作好找吗?能找些什么工作?…

查看全部问答>

开发板申请

采集电梯数据给PC机…

查看全部问答>

求助:要启动F425的高速晶振LFXT1,在软件里怎样设置

要启动F425的高速晶振LFXT1(8M),请问在软件里怎样设置?…

查看全部问答>

freesacle codewarrior中C编程问题

看到一位大牛在定义一个数组时这样定义的:V_MEMROM0 V_MEMROM1 unsigned char  V_MEMROM2 CanTxId2[kCanNumberOfTxObjects] ; 不知道加上V_MEMROM0和V_MEMROM1 是什么意思 其中声明是:#ifndef V_MEMROM1     # define V_M ...…

查看全部问答>

关于ccs v5 头文件的问题

调试一个列程,发现一个头文件明明存在于工程文件夹下,编译时却报错,说不能打开该文件,是不是路径问题啊??…

查看全部问答>

福禄克万用表8808A的测试应用

  福禄克万用表是指美国品牌福禄克旗下的一款仪器;万用表是我们日常生活中不可缺少的测量工具,根据使用场合的不同,我们要选择合适的万用表来使用。万用表具有用途多,量程广,使用方便等优点,是电子测量中使用最多的工具之一。它不仅可以用来 ...…

查看全部问答>