文档库 最新最全的文档下载
当前位置:文档库 › 74LS164移位寄存器介绍

74LS164移位寄存器介绍

74LS164移位寄存器介绍
74LS164移位寄存器介绍

LOW POWER SCHOTTKY

Device Package Shipping SN74LS164N 14 Pin DIP 2000 Units/Box SN74LS164D

14 Pin

SOIC D SUFFIX CASE 751A

2500/T ape & Reel

PLASTIC N SUFFIX CASE 646

14

1

14

1

ON Semiconductor and are trademarks of Semiconductor Components Industries, LLC (SCILLC). SCILLC reserves the right to make changes without further notice to any products herein. SCILLC makes no warranty, representation or guarantee regarding the suitability of its products for any particular purpose, nor does SCILLC assume any liability arising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation special, consequential or incidental damages. “Typical” parameters which may be provided in SCILLC data sheets and/or specifications can and do vary in different applications and actual performance may vary over time. All operating parameters, including “Typicals” must be validated for each customer application by customer’s technical experts. SCILLC does not convey any license under its patent rights nor the rights of others.

SCILLC products are not designed, intended, or authorized for use as components in systems intended for surgical implant into the body, or other applications intended to support or sustain life, or for any other application in which the failure of the SCILLC product could create a situation where personal injury or death may occur. Should Buyer purchase or use SCILLC products for any such unintended or unauthorized application, Buyer shall indemnify and hold SCILLC and its officers, employees, subsidiaries, affiliates, and distributors harmless against all claims, costs, damages, and expenses, and reasonable attorney fees arising out of, directly or indirectly, any claim of personal injury or death associated with such unintended or unauthorized use, even if such claim alleges that SCILLC was negligent regarding the design or manufacture of the part. SCILLC is an Equal Opportunity/Affirmative Action Employer. PUBLICATION ORDERING INFORMATION

ASIA/PACIFIC: LDC for ON Semiconductor – Asia Support

Phone:303–675–2121 (Tue–Fri 9:00am to 1:00pm, Hong Kong Time)

Toll Free from Hong Kong 800–4422–3781

Email: ONlit–asia@https://www.wendangku.net/doc/828873066.html,

JAPAN: ON Semiconductor, Japan Customer Focus Center

4–32–1 Nishi–Gotanda, Shinagawa–ku, Tokyo, Japan 141–8549

Phone: 81–3–5487–8345

Email: r14153@https://www.wendangku.net/doc/828873066.html,

Fax Response Line:303–675–2167

74LS164动态扫描数码管与proteus传真及C程序

74ls164 为8 位移位寄存器,其主要电特性的典型值如下: 当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。串行数据输入端(A,B)可控制数据。当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0 为低电平。当A、B 有一个为高电平,则另一个就允许输入数据,并在CLOCK 上升沿作用下决定Q0 的状态。 引脚功能: CLOCK :时钟输入端 CLEAR:同步清除输入端(低电平有效) A,B :串行数据输入端 QA-QH:输出端

极限值 电源电压7V 输入电压…… 5.5V 工作环境温度74164….. -55~125℃74164…… -0~70℃储存温度….. -65℃~150 真值表:

时序图: 建议操作条件:

应用实例: C程序: #include #include #define uchar unsigned char #define uint unsigned int sbit DA T=P2^3;//A,B端接一块后接入DA T sbit CLK=P2^2; sbit W A1=P2^4; sbit W A2=P2^5; uchar code table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}; //共阴数码管无小数点void delayms(uint time) { uchar i,k; for(k=time;k>0;k--) for(i=110;i>0;i--); } void sendchar(ch)

I0口驱动74LS164数码管静态显示程序

74LS164 1、器件功能作用 8 位串入,并出移位寄存器 2. 概述 74HC164、74HCT164 是高速硅门 CMOS 器件,与低功耗肖特基型 TTL (LSTTL) 器件的引脚兼容。74HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。 时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。 主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。 3. 特性 ?门控串行数据输入 ?异步中央复位 ?符合 JEDEC 标准 no. 7A ?静电放电 (ESD) 保护: ·HBM EIA/JESD22-A114-B 超过 2000 V ·MM EIA/JESD22-A115-A 超过 200 V 。 ?多种封装形式 ?额定从 -40 °C 至+85 °C 和 -40 °C 至+125 °C 。 4. 功能图

图 1. 逻辑符号 图 2. IEC 逻辑符号 图 3. 逻辑图

图 4. 功能图 5. 引脚信息 图 5. DIP14、SO14、SSOP14 和 TSSOP14 封装的引脚配置引脚说明 6. 功能表(真值表)

H = HIGH(高)电平 h = 先于低-至-高时钟跃变一个建立时间 (set-up time) 的 HIGH(高)电平L = LOW(低)电平 l = 先于低-至-高时钟跃变一个建立时间 (set-up time) 的 LOW(低)电平q = 小写字母代表先于低-至-高时钟跃变一个建立时间的参考输入(referenced input) 的状态 ↑ = 低-至-高时钟跃变 7. 电器特性

74LS164在单片机中的使用

74LS164在单片机中的使用 作者:huqin 来源:本站原创点击数:406 更新时间:2014年02月15日【字体:大中小】 在单片机系统中,如果并行口的IO资源不够,那么我们可以使用74LS164来扩展并行IO口,节约单片机IO资源。74LS164是一个串行输入并行输出的移位寄存器,并带有清除端。 74LS164的引脚可以查看数据手册。 proteus仿真图和代码附上。

#include #define HIGH 1 #define LOW 0 #define SEG_PORT P0 sbit DATA = P0^4; sbit CLK = P0^5; unsigned char Timer0IRQEvent = 0; unsigned char Time1SecEvent = 0; unsigned int TimeCount = 0; unsigned char SegCurPosition = 0; code unsigned char SegCode[10] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x 07,~0x7F,~0x6F}; code unsigned char SegPosition[4] = {0xFE,0xFD,0xFB,0xF7}; unsigned char SegBuf[4] = {0}; void LS164_DATA(unsigned char x) { if(x) { DATA = 1; } else { DATA = 0; }

void LS164_CLK(unsigned char x) { if(x) { CLK = 1; } else { CLK = 0; } } /********************************************************** *函数名称:LS164Send *输入:byte单个字节 *输出:无 *功能:74LS164发送单个字节 ***********************************************************/ void LS164Send(unsigned char byte) { unsigned char j; for(j=0;j<=7;j++) { if(byte&(1<<(7-j))) {

单片机控制74LS164驱动数码管

单片机控制74LS164驱动数码管 利用74LS164驱动数码管, 我们首先来弄清74LS164的工作方式,然后学习如何在自己板子上连接线路。 我们来讲一讲数码管的基础知识: 使用数码管时,要注意区分这两种不同的接法:共阴极和共阳极。共阴极时,为1则亮;共阳极时,为0则亮。

为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。 比如共阴极的方式接数码管,显示“1”,则编码为0x3f,即00111111(dp g f e d c b a )。 ================================================================================================== 静态显示程序如下: /*----------------------------------- 功能:数码管静态显示0-F 单片机:AT89S52 ------------------------------------*/ #include "reg52.h" #define uint unsigned int #define uchar unsigned char sbit DAT=P0^3; sbit CLK=P0^2; void sendbyte(uchar byte); void delay(uint z); uchar code tab[]={ 0xed,0x09,0xbc,0x9d,0x59,0xd5, 0xf5,0x0d,0xfd,0xdd,0x7d,0xf1, 0xe4,0xb9,0xf4,0x74,0x00} ; //0-F, 全灭 /*======================== 主函数 =========================*/ void main() { unsigned char h; while(1) { for(h=0;h<17;h++) { delay(500); //延时大约是0.5s sendbyte(h); delay(500); } h=0;

(完整版)74ls164动态驱动多位数码管

74ls164 能否动态驱动多位数码管void display() //数码显示 { SCON=0; //初始化串行口方式SBUF=dispcode[ge]; while(!TI); TI=0; led4=0; delay(2); led4=1; SBUF=dispcode[shi]; while(!TI); TI=0; led3=0; delay(2); led3=1; SBUF=dispcode[bai]; while(!TI); TI=0; led2=0; delay(2);

SBUF=dispcode[qian]; while(!TI); TI=0; led1=0; delay(2); led1=1; SBUF=dispcode[wan]; while(!TI); TI=0; led0=0; delay(2); led0=1; } 74ls164数码管驱动(第二个程序) #define clock PORTD.1 #define date PORTD.0 #define clock_en DDRD.1 #define date_en DDRD.0 unsigned char lab[2][10]={ 0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09, 0x02,0x9E,0x24,0x0C,0x98,0x48,0x40,0x1E,0x00,0x08}; void send(unsigned char w) { unsigned char i; for(i=0;i<8;i++) { clock=0; date=w&1;

74ls164串行输出扩展运用课程设计

单片机课程设计报告74ls164串行输出扩展运用 班级:09移动1班 姓名:王家树、黄志豪 学号:09112002、09112003 指导老师: 陈海松 一、课题的提出 选择这个课程设计,是由于陈老师在课程上曾提到过74ls164芯,并且对串口通信比较喜欢,通过老师的咨询,便提出做一个关于74ls164的串行通信程序应用设计的报告。 二、设计任务和要求 任务:设计一个能够由数码管显示,编写一个关于74ls164的串输入并行输出一串数字。

要求:利用单片机的并行串行I/O口,利用C语言中的指针函数,编写一段好用又简洁的设计代码。 三、设计方案的论证 1、首先从参考文献中可以查到54/74164是 8 位移位寄存器(串行输入,并行输出),是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。 2、功能图 图 1. 逻辑符号

3、引脚说明 符号引脚说明 DSA 1 数据输入 DSB 1 数据输入 Q0~Q3 3~6 输出 GND 7 地 (0 V) CP 8 时钟输入(低电平到高电平边沿触发) /M/R 9 中央复位输入(低电平有效) Q4~Q7 10~13 输出 四、硬件资源及其分配 关键元件:89C51芯片,74ls164芯片、数码管、复位电路 主要用到的硬件:P3口、数码管、串行输出输入口; 硬件分配: 1.串行输出输入口(单片机51的10、11脚)分别接第一个74ls164的8脚1、2脚,第二第三第四第五第六个进行级联; 2. 74ls164的9脚复位端接高电平; 3.每个数码管(a、b、c、d、e、f、g)接74ls164并行输出口(3、4、5、6、10、 11、12、13); 五、硬件图

单片机串口连接两个74LS164驱动两个LED数码管

单片机应用设计 课题:串口连接两个74LS164驱动2个LED 数码管显示 班级学号:xx 姓名:xx

1设计要求 设计内容 设晶体为12MHz,将拨码开关数据串行输入到74LS164,并行输出到2个LED 数码管进行相应的数码显示。 设计包括:系统设计分析、系统原理图设计、程序流程图设计、源程序设计、系统调试与仿真及调试结果分析、对本课程学习的感想与收获、对老师的意见与建议、期望成绩等。 学习目的 该作业具有较强的实用性,许多同学已经认识到自己完全有能力设计一个实用的单片机应用系统,对单片机设计由感兴趣已经变为爱好了,为后面的实际应用系统设计奠定了较好的基础。 2 系统设计分析 单片机最小系统+串口+74LS164+LED数码管 单片机的最小系统是单片机能够工作的最小硬件组合,对于8051系列单片机,其电路的最小系统大致相同,主要包括电源、晶体振荡电路、复位电路等。 串口 数据通信方式包括并行通信和串行通信两种。并行通信就是多条数据线上同时传送,其优点:速度快,只适于近距离通信。串行通信就是数据以为以为的顺序传送,其优点:线路简单,成本低,适合远距离通信。 串行通信方式包括:异步串行通信和同步串行通信。异步方式,数据传送不连续,时间间隔任意。同步方式,发送与接收同步。数据传送方式:单工、半双工、全双工、多工。常见的串行通讯有:RS-232、RS-485、CAN总线等。 串行口控制寄存器包括:串行口控制寄存器SCON(控制工作方式)、电源控制寄存器PCON(控制波特率)。SM0、SM1选择工作方式,SM2用于多机通信,REN允许接收控制位,TB8/RB8发送/接收数据D8位,TI/RI为发送/接收中断标志位。

使用74LS164制作流水灯

使用74LS164制作流水灯 单片机初学者对于流水灯实验一定特别的熟悉,这个实验逻辑清晰,效果明显,在各类单片机以及微机控制相关材料中都会进行讲解。当我们学习了一段时间单片机之后,或者在进行单片机系统设计时,会发现51单片机的引脚有时并不是很够用,有时候需要尽量节省单片机I/O引脚。如何节省I/O引脚是我们在设计单片机系统时,经常需要考虑的一个问题。 下面以8个LED组成的流水灯效果的实现为例,讲解如何节省单片机的I/O引脚。 通常我们会采用如图1所示的电路图,通过单片机直接驱动8个LED,但是这种控制方式消耗了8个单片机引脚。 图1 常规流水灯电路

我们也可以使用三八译码器来完成流水灯的效果。其控制电路图如图2所示(这种控制方式在我之前上传的文档中有详细介绍,感兴趣读者可以查看)。这种控制方式虽然可以在一定程度上可以节省单片机I/O接口的使用,如下图所示,最少只需要使用3个I/O口。但是这种方式也存在一定的缺点,这种控制方式只能同时点亮1个LED 灯,如果想实现两个以及以上的LED灯点亮的效果,那么这种电路将无法直接实现效果。 图2 三八译码器拓展I/O口 下面我们看一下能够使用其他的芯片,来进一步降低单片机I/O 口的消耗。使用串行转并行芯片74LS164来制作流水灯效果,其控制原理图如图3所示。从原理图中可以看出,使用了74LS164芯片控制流水灯之后,只占用了单片机的两个I/O口。一个用于输出时钟脉冲,另外一个用于输出串行数据。

图3 74LS164控制流水灯原理图 与前面采用译码器控制的流水灯相比,使用74LS164控制的流水灯效果具有如下两个显著优点: 1.占用单片机I/O口少,最少仅为2个。 2.控制功能强大,74LS164驱动的流水灯点亮的个数没有限制,可以任意数量点亮。 编程思路:单片机以最快的速度通过串口控制8个LED灯的点亮状态,由于此过程极短,人眼无法分辨,通过延时函数稳定输出效果,并延时一定时间,再次以最快的速度通过串口控制8个LED灯的亮灭状态,并执行延时函数实现等待效果,如此反复,就可以实现流水灯的效果,且可以实现任意的流水灯的效果。 编程技巧:由于需要反复执行“单片机通过串口控制8个LED灯”的程序,可以将该程序通过子函数来实现简化程序的效果。 下面给出笔者编写的程序参考,读者可以根据自己的编程思路,完成不同的控制程序的编写。

单片机课程设计——74LS164实现串入并出

目录 1. 题目设计要求.................................................................. 2.系统的硬件设计.................................................................. 2.1系统采用的元器件.......................................................... 2.2器件选择.................................................................. 2.2.1 AT89C51概述及引脚功能.............................................. 2.2.2 74164的技术指标及工作原理.......................................... 3.系统硬件电路图设计.............................................................. 3.1振荡电路及复位电路设计.................................................... 3.2电路原理图................................................................ 4.系统的软件设计................................................................. 4.1编程语言选择.............................................................. 4.2发送字符串模块设计........................................................ 4.4源代码.................................................................... 4.5编译结果.................................................................. 5.系统仿真调试 ................................................................... 5.1仿真调试的过程............................................................ 5.2仿真调试的结果............................................................ 6.总结 ........................................................................... 7参考文献........................................................................

74LS164和74LS165工作原理及其单片机中的应用(基于Proteus仿真)

74LS164和74LS165工作原理及其在单片机中的应用 基于Proteus仿真 前言:本文详细介绍了74LS164和74LS165工作原理,并分别举例它们在单片机中的应用,所举例子包含proteus仿真电路图,源程序,程序注释详细清楚。 1、74LS164在单片机中应用举例 本例在单片机串行口外接一片8位串入并出移位寄存器74LS164芯片,构成单片机输出接口电路,控制8只LED滚动显示。 (1)74LS164芯片如右图所示,它是8位串入并出移位寄存器,串行输入数据, 然后并行输出。各引脚功能如下: A、B(1、2引脚):数据输入端,数据通过这两 个输入端之一串行输入;任一输入端可以用作高电平 使能端,控制另一输入端的数据输入。当其中任意一 个为低电平,则禁止新数据输入;当其中有一个为高 电平,则另一个就允许输入数据。因此两个输入端或 者连接在一起,或者把不用的输入端接高电平,一定 不要悬空。 Q0~Q7(3~6,10~13引脚):数据输出端 CP(8号引脚):时钟输入端。CP每次由低变高时,数据右移一位,输入到Q0,Q0 是两个数据输入端的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。 MR:复位清除端,当MR为低电平时,其它所有输入端都无效,同时所有输出端均为低电平。 GND(7号引脚,在proteus中已隐藏):接地端 VCC(14号引脚,在proteus中已隐藏):电源端,接+5V电源

74LS164 内部逻辑图 (2)如下图所示,本例单片机串行口工作于方式0,即移位寄存器输入/输出模式。串行数据通过RXD输出,TXD则用于输出移位时钟脉冲。数据输入端1接高电平,数据输入端2接单片机RXD引脚。时钟输入端接TXD引脚,复位端悬空。数据输出端通过限流电阻接8只LED灯。 C程序如下: #include #include #define uint unsigned int #define uchar unsigned char void delay(uint x) {uchar i; while(x--) for(i=0;i<120;i++); } void main() {uchar c=0x80; SCON=0x00; //串行口工作在方式0 while(1) {c=_crol_(c,1); SBUF=c; while(TI==0); //等待发送结束 TI=0; //发送结束,TI置0 delay(400); } }

74HC164驱动数码管C程序

//**时间:2015-6-5 //**编写:Z X C //**功能:74HC164驱动数码管显示0-9数字 #include #define uchar unsigned char #define uint unsigned int #define SDA P0_0 //74LS164 SAD #define SCK P0_1 //74LS164 SCK sbit wm=P2^0; uint i; //定义数码管显示字符跟数字的对应数组关系 uchar code sled_dm_xs[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 0 1 2 3 4 5 6 7 8 9 //****1MS延时函数******** void delay(uint z) { uint i,j; for(i=0;i

//******主函数********* void main() { wm=0; while(1) { for(i=0;i<10;i++) { senddata(sled_dm_xs[i]); wm=1; delay(300); } } }

单片机串口连接两个74LS164驱动两个LED数码管学习资料

单片机串口连接两个74L S164驱动两个 L E D数码管

单片机应用设计 课题:串口连接两个74LS164驱动2个LED 数码管显示 班级学号: 14110501xx 姓名: xx

1设计要求 1.1 设计内容 设晶体为12MHz,将拨码开关数据串行输入到74LS164,并行输出到2个LED数码管进行相应的数码显示。 设计包括:系统设计分析、系统原理图设计、程序流程图设计、源程序设计、系统调试与仿真及调试结果分析、对本课程学习的感想与收获、对老师的意见与建议、期望成绩等。 1.2 学习目的 该作业具有较强的实用性,许多同学已经认识到自己完全有能力设计一个实用的单片机应用系统,对单片机设计由感兴趣已经变为爱好了,为后面的实际应用系统设计奠定了较好的基础。 2 系统设计分析 2.1 单片机最小系统+串口+74LS164+LED数码管 单片机的最小系统是单片机能够工作的最小硬件组合,对于8051系列单片机,其电路的最小系统大致相同,主要包括电源、晶体振荡电路、复位电路等。 2.1.1 串口 数据通信方式包括并行通信和串行通信两种。并行通信就是多条数据线上同时传送,其优点:速度快,只适于近距离通信。串行通信就是数据以为以为的顺序传送,其优点:线路简单,成本低,适合远距离通信。 串行通信方式包括:异步串行通信和同步串行通信。异步方式,数据传送不连续,时间间隔任意。同步方式,发送与接收同步。数据传送方式:单工、半双工、全双工、多工。常见的串行通讯有:RS-232、RS-485、CAN总线等。 串行口控制寄存器包括:串行口控制寄存器SCON(控制工作方式)、电源控制寄存器PCON(控制波特率)。SM0、SM1选择工作方式,SM2用于多机通信,

单片机之用74LS164驱动数码管

单片机之用74LS164驱动数码管 2011-09-26 16:31:39| 分类:单片机(AT89S52 | 标签:单片机|字号大中小订阅用74LS164驱动数码管,首先弄清74LS164的工作方式,然后是自己板子上的线路是如何连接的。 最后,说一说数码管的基础知识: 使用数码管时,要注意区分这两种不同的接法:共阴极和共阳极。共阴极时,为1则亮;共阳极时,为0则亮。

为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。 比如共阴极的方式接数码管,显示“1”,则编码为0x3f,即00111111(dp g f e d c b a )。 ================================================================================================== 静态显示程序如下: /*----------------------------------- 功能:数码管静态显示0-F 单片机:AT89S52 ------------------------------------*/ #include "reg52.h" #define uint unsigned int #define uchar unsigned char sbit DAT=P0^3; sbit CLK=P0^2; void sendbyte(uchar byte); void delay(uint z); uchar code tab[]={ 0xed,0x09,0xbc,0x9d,0x59,0xd5, 0xf5,0x0d,0xfd,0xdd,0x7d,0xf1, 0xe4,0xb9,0xf4,0x74,0x00} ; //0-F, 全灭 /*======================== 主函数 =========================*/ void main() { unsigned char h; while(1) { for(h=0;h<17;h++) { delay(500); //延时大约是0.5s sendbyte(h); delay(500); } h=0;

74ls164程序

89c2051总共才有20个引脚所以在实现复杂功能的单片机应用中节约针脚的使用显得尤为重要我最近在做单片机项目时已开始客户要求的功能少所以采用89c2051的p1口直接驱动两个led数码管(外加两个扫描控制脚p3_3 p3_4)这样光显示部分就占用了9个脚开始的几个控制系统还可以满足需要可是后来客户要一次加三个功能1.水平开关输入2.缺水开关输入 3.状态报警输出因为之前做的程序20个脚正好全部用上所以这次再加功能再不更换单片机芯片的情况下就只能把显示电路改为其他方式考虑到成本问题采用常用的74ls164驱动led比较实用(74LS164 是TTL 八位串行入/并行输出移位寄存器)经过两天的研究现在终于完成了该项目的程序编写工作再此次编写过程中我发现网上讲的大多数都是74ls164 汇编程序的例子c语言的几乎没有 所以在此奉上74ls164的c语言的源代码其中驱动共阴数码管和驱动共阳数码管时程序是不同的这一点其他地方还有书上并未明确说明所以在这要重点提一下。 c51源码和Proteus仿真程序下载请点击下面链接(压缩包包括共阴、共阳源文件及仿真文件) #include "reg52.h" #define uint unsigned int #define uchar unsigned char sbit DAT=P1^1; sbit CLK=P1^2; uchar code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0xe7f,0xff,0x00};//0-9,-,全灭 void sendbyte(uchar byte) { uchar num,c; num=tab[byte]; for(c=0;c<8;c++) { CLK=0; DAT=num&0x01; CLK=1; num>>=1; } } void delay_50ms(unsigned int t) { unsigned int j; for(;t>0;t--) for(j=6245;j>0;j--) {;} }

74LS164在单片机中的使用

74LS164在单片机中的使用 在单片机系统中,如果并行口的IO 资源不够,那么我们可以使用 74LS164 来扩展并行IO 口,节约单片机IO 资源。74LS164 是一个串行输入并 行输出的移位寄存器,并带有清除端。74LS164 的引脚可以查看数据手册。proteus 仿真图和代码附上。 #include #define HIGH 1#define LOW 0#define SEG_PORT P0 sbit DATA = P0;sb it CLK = P0 ; unsigned char Timer0IRQEvent = 0;unsigned char Time1SecEvent = 0;unsigned int TimeCount = 0;unsigned char SegCurPosition = 0;code unsigned char SegCode[10] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F};code unsigned char SegPosition[4] = {0xFE,0xFD,0xFB,0xF7};unsigned char SegBuf[4] = {0}; void LS164_DATA(unsigned char x){ if(x) { DATA = 1; } else { DATA = 0; }}void LS164_CLK(unsigned char x){ if(x) { CLK = 1; } else { CLK = 0; }}/***********************************************************函数名 称:LS164Send*输入:byte 单个字节*输出:无*功能:74LS164 发送单个 字节***********************************************************/void LS164Send(unsigned char byte){ unsigned char j; for(j=0;j<=7;j++) { if(byte&(1<<(7-j))) { LS164_DATA(HIGH); } else { LS164_DATA(LOW); } LS164_CLK(LOW); LS164_CLK(HIGH); }}/***********************************************************函数名

74LS164串转并实验

74LS164串转并实验 一、实验目的 1、掌握89C51串行口方式0工作方式及编程方法 2、掌握89C51的P1口的I/O 功能输出 3、掌握利用串行口入I/O 口,扩展I/O 通道的方法 二、实验说明 本实验是用74LS164把输入的串行数转换成并行数输出,74LS164为串行输入并行输出移位寄存器,其引脚图及功能如下: A 、 B :串行输入端; QA ~QH :并行输出端; CLR :清零端,低电平有效; CLK :时钟脉冲输入端,上升沿有效。 实验采用单片机串行工作方式0和P1端口两种方式串行输出 数据。串行口工作方式0时,数据为8位,从RXD 端输出,TXD 端输出移位信号,其波特率固定为Fosc/12。在CPU 将数据写入SBUF 寄存器后,立即启动发送。待8位数据输完后,硬件将状态寄存器的TI 位置1,TI 必须由软件清零。 串行口工作方式0数据/时钟是自动移位输出,用P1端口输出数据时,要编程位移数据,每输出一个数据位,再输出一个移位脉冲。 三、实验内容及步骤 本实验需要用到单片机最小系统(F1区)、十六位逻辑电平显示(I4区)和74LS164(G3区)。 1、选用89C51单片机最小应用系统模块,用八位数据线连接74LS164的并行输出JD5G 与十六位逻辑电平显示模块JD2I ,将74LS164的串行输入端A/B (1和2脚)接到RXD 上,CLK 接到TXD 上,CLR 接INT0。 2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。 3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加 “TH23_74164 .ASM ”源程序,进行编译,直到编译无误。 4、全速运行程序,观察发光二极管亮灭情况,先右移动两次,再左移动两次,然后闪烁两次。 5、也可以把源程序编译成可执行文件,用ISP 烧录器烧录到89S52/89S51芯片中。(ISP 烧录器的使用查看附录二) 四、实验程序(见光盘中的程序文件夹) 五、电路图 CLR 9CLK 8 A 1B 2 QA 3QB 4QC 5QD 6QE 10QF 11QG 12QH 13 VCC 14GND 7 74LS164 CLR 9CLK 8A 1B 2QA 3QB 4QC 5QD 6QE 10QF 11QG 12QH 13 VCC 14GND 7 U3G SN74LS164N VCC XTAL1A 12MHz C3A 33pF C2A 33pF P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.7 8 RST 9P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR 16P3.7/RD 17XTAL218XTAL119VSS 20 P2.0 21P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN 29ALE/PROG 30EA 31P0.032 P0.133P0.234P0.335P0.436P0.537P0.638P0.739VCC 4089C51 U1F VCC P3.0P3.1P1.0 P1.1P1.2P1.3P1.4P1.5P1.6P1.7 P0.0 P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA ALE PSEN P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0 P3.2P3.3P3.4P3.5P3.6P3.7 510*8 VCC P3.0 P3.2 P3.1L0L1L2L3 L4L5L6L7 C3F 10uF VCC RESET R2F 100R1F 1K

单片机与74ls164控制八路流水灯程序(需编译)

//title:static1602display //author:LFD //revision:1.1 #include #include #define uint unsigned int #define uchar unsigned char //--------------定义------------------ sbit DS=P2^2; //数据端 sbit SCLK=P2^1; //时钟信号 //--------------函数声明------------------ void In_164(uchar dat); void Delay_1ms(uint x); //--------------主程序------------------ void Delay_1ms(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } void In_164(uchar dat) //送数据进74LS164 { uchar i; for(i=0;i<8;i++) { dat=dat>>1; //移位8 位 DS=CY; //溢出位给数据端 SCLK=0; //时钟脉冲 _nop_(); _nop_(); SCLK=1; _nop_(); _nop_(); SCLK=0; } } void main(void) { uchar temp=0x01; uchar i; while(1) {

for(i=0;i<8;i++) { In_164(temp); Delay_1ms(1000); //延时1s temp=(temp<<1)|(temp>>7); //循环移位 } } }

相关文档
相关文档 最新文档