I0口驱动74LS164数码管静态显示程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 封装的引脚配置引脚说明
符号引脚说明
DSA 1 数据输入
DSB 2 数据输入
Q0~Q3 3~6 输出
GND 7 地 (0 V)
CP 8 时钟输入(低电平到高电平边沿触发)/M/R 9 中央复位输入(低电平有效)
Q4~Q7 10~13 输出
VCC 14 正电源罗亩的笔记
6. 功能表(真值表)
H = HIGH(高)电平
h = 先于低-至-高时钟跃变一个建立时间 (set-up time) 的 HIGH(高)电平L = LOW(低)电平
l = 先于低-至-高时钟跃变一个建立时间 (set-up time) 的 LOW(低)电平q = 小写字母代表先于低-至-高时钟跃变一个建立时间的参考输入(referenced input) 的状态
↑ = 低-至-高时钟跃变
7. 电器特性
动态特性(TA=25℃)
8. 推荐工作条件
[1] 对于 DIP14 封装:Ptot 在超过70 °C 时以 12 mW/K 的速度线性降低。
[2] 对于 SO14 封装:Ptot 在超过70 °C 时以 8 mW/K 的速度线性降低。
对于 SSOP14 和 TSSOP14 封装:Ptot 在超过60 °C 时以 5.5 mW/K 的速度线性降低。
对于 DHVQFN14 封装:Ptot 在超过60 °C 时以 4.5 mW/K 的速度线性降低。
9、时序图
74ls164 c程序
单片机 74ls164 IO 口驱动程序串入并出源代码(C语言附源文件及仿真程序)
其中驱动共阴数码管和驱动共阳数码管时程序是不同的
//送一个数字显示的程序
#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--)
{;}
}
main()
{
unsigned char h;
while(1){
for(h=0;h<10;h++){
delay_50ms(1);
sendbyte(h);
delay_50ms(10);
}
h=0;
}
74LS164级联控制5个数码管静态显示仿真图:
74LS164级联控制5个数码管静态显示源程序:
#include <reg52.h>
#include “MacroAndConst.h”uint8 LEDBuffer[5]={0}; //显示缓冲区
//code uint8 tab[]={0x3F,0×06,0x5B,0x4F,0×66,0x6D,0x7D,0×07,0x7F,0x6F,0×40}; //共阴极
code uint8 tab[]={0xC0,0xF9,0xA4,0xB0,0×99,0×92,0×82,0xF8,0×80,0×90,0xbf}; //共阳极
sbit LED_DAT=P1^1;
sbit LED_CLKE=P1^2;
void bit_dat(bit i) //向数码管写一个位
{
LED_CLKE=0;
LED_DAT=i;
LED_CLKE=1;
}
void uint_dat(uint8 i) //向数码管写一个字母,8位
{
LED_CLKE=0;
bit_dat((bit)(tab[i]&0×80));
bit_dat((bit)(tab[i]&0×40));
bit_dat((bit)(tab[i]&0×20));
bit_dat((bit)(tab[i]&0×10));
bit_dat((bit)(tab[i]&0×08));