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

合集下载

74LS164串进并出实验及165并串转换实验

74LS164串进并出实验及165并串转换实验

实验二 74LS164串进并出实验及165并串转换实验一、实验目的1、了解74LS164芯片的工作原理,以及与单片机的接口方法。

2、掌握单片机串行口的工作原理以及编程方法。

3、了解74LS165芯片的工作原理。

4、掌握74LS165芯片在单片机系统中的应用及编程。

二、实验内容1、用74LS164芯片扩展并行输出口,本实验中我们用74LS164扩展两个8位输出口的接口显示电路,两位数码管循环显示00~99之间的数字。

2、利用实验系统上的74LS165芯片,编程实现8位数据并行输入,串行口串行接收,并将接收的数据存放在CPU 内部存储区50H~59H 中,共10个数据。

(并行输入数据由P1口来送入)三、编程指南1、74LS164串进并出实验。

(1)本实验中MCS-51单片机串行口工作在方式0(移位寄存器方式,用于并行I/0口扩展)的发送状态时,串行数据由P3.0(RXD)送出,移位时钟由P3.1(TXD )送出。

在移位时钟的作用下,串行口发送缓冲器的数据一位一位地移入74LS164中。

需要指出的是,由于741S164无并行输出控制端,因而在串行输入过程中,其输出端的状态会不断变化,故在某些应用场合,在74LS164的输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据。

(2)74LS164引脚功能图管脚说明:SIA 、SIB --- Serial inputsQ0 through Q7 ---- Data outputs CLK ---- CLOCKCLR ---- Clear input功能表:2、165并串转换实验。

(1)74LS165芯片引脚图管脚说明:D0 through D7 --Parallel inputs SI -- Serial inputQ7,/Q7 -- Data outputsCLK -- ClockCKIN -- Clock inhibitS/L -- (高有效)Shift/Parallel-loadCLRSIA SIB CLK Q0 Q1 Q2 Q3 Q4 Q5 Q6 0 X X X 0 0 0 0 0 0 0 1 1 1 ↑ 1 Q0 Q1 Q2 Q3 Q4 Q5 Q6 1 0 X ↑ 0 Q0 Q1 Q2 Q3 Q4 Q5 Q6 1 X 0 ↑ 0 Q0 Q1 Q2 Q3 Q4 Q5 Q6control(低有效)(2)编程说明74LS165是8位并行置入移位寄存器。

矩阵键盘状态机之74HC164驱动数码管依次显示键值要点

矩阵键盘状态机之74HC164驱动数码管依次显示键值要点

用视图Web模式看uchar code smg_duan[]= //数码管(共阴)编码0-F,全灭; 按键对应的数字不是上图,而是-------------------------这里下面的{//用IO口P0,所以把A B C D E F G DP分别接到P0^0 P0^1 P0^2 P0^3 P0^4 P0^5 P0^6 PO^7 所以编码如下---------- --------------|-1--|-2--|-3--|-----------------------------------|-4--|-5--|-6--|-----------------------0X3f,0X06,0X5B,0X4f,0X66,0X6D,0X7D,0x07,0x7f,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x7 1,0X00---------------|-7--|-8--|-9--|-----------------//可以把0x71或任意一个改为0x00,这样就可以按下0x71这个案件时清楚显示了---------------|-C--|-0--|-E--|---------------------/* 0xfC,0x0C,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0x00 //多写了0x00,代表段选全部熄灭*/};0X3f,0X06,0X5B,0X4f,0X66,0X6D,0X7D,0x07,0x7f,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x7 1,0X00//可以把0x71或任意一个改为0x00,这样就可以按下0x71这个案件时清楚显示了完整程序如下:/*==========================================================* 开发人员:laowang* 当前版本:V1.0* 创建时间:11/26/2013* 修改时间:04/21/2017* 功能说明:对4*3矩阵键盘扫描,用4位共阴数码管进行显示,刚开始时不亮,依次按下按键时数码管依次显示0-F,扫描方法为状态机方法+定时器中断* 修改人员:梁超云*==========================================================*/#include<reg52.h>#include"Define.h"#include"display.h"#include"matrixkeyscan.h"#include "74HC164.h"void Timer0_init(); //定时器初始化函数uint flag1=0;uint flag=0; //按键扫描标志,每中断一次,扫描一次bit power_on=1;//主函数void main(){uchar key_state=0;uchar readkey;readkey=0xff;Timer0_init();Display_init(); //使之不亮while(1){if(flag==1){flag=0;flag1++;if(flag1>=4){flag1=0;}readkey=Keyscan();if (power_on==0){power_on=1;num2++;if(num2>=4){num2=0;}DisplayBUFF(readkey);}Display();}}}void Timer0() interrupt 1{// TH0=0xD8; //10Ms产生一次中断// TL0=0xF0;// TH0=0xB1; //20Ms产生一次中断// TL0=0xE0;// TH0=0xec; //5Ms产生一次中断// TL0=0x78;TH0=0x63; //40Ms产生一次中断TL0=0xc0;flag++;}void Timer0_init(){// TH0=0xD8; //12MHz--10Ms产生一次中断// TL0=0xF0;// TH0=0xB1; //20Ms产生一次中断// TL0=0xE0;// TH0=0xec; //5Ms产生一次中断// TL0=0x78;TH0=0x63; //40Ms产生一次中断TL0=0xc0;EA=1;ET0=1;TR0=1;}/*==================硬件电路===============================*说明:数码管为共阴数码管,驱动方式为74hc164扫描方式为动态扫描*==========================================================*/ //梁超云改为P0.0-P0.7直接数码管的A-H,P2接数码管位选#include<reg52.h>#include"Define.h" //把常用的宏定义写成了头文件,包含进来#include"display.h"#include "74HC164.h"#include"matrixkeyscan.h"uchar segbuff[4];uchar num2=0;//sbit wela=P3^5; //位选//sbit dula=P3^4; //段选uchar code smg_duan[]= //数码管(共阴)编码0-F,全灭;{//用IO口P0,所以把A B C D E F G GP分别接到P0^0 P0^1 P0^2 P0^3 P0^4 P0^5 P0^6 PO^7 所以编码如下0X3f,0X06,0X5B,0X4f,0X66,0X6D,0X7D,0x07,0x7f,0x6F,0x77,0x7C,0x39,0x5E,/*0x79*/0 x00,0x71,0X00//用IO口P0,所以把A B C D E F G GP分别接到P0^7 P0^6 P0^5 P0^4 P0^3 P0^2 P0^1 PO^0 所以编码如下//可以把0x79或任意一个改为0x00,这样就可以按下0x79这个案件时清楚显示了//0xfC,0x0C,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,/*0x9E*/ 0X00,0x8E,0x00 //多写了0x00,代表段选全部熄灭};//uchar code smg_wei[]={0xfe,0xfd,0xfB,0xf7};//数据向左移动。

74hc164驱动数码管笔段问题

74hc164驱动数码管笔段问题
void out_simuseri(uchar data_buf)
{
uchar i;
i=8;
ACC=data__CLK=0;
simuseri_DATA=a0;
simuseri_CLK=1;
ACC=ACC>>1;
numer=dis_code[ge];
out_simuseri(numer); //个位移位显示
delay(5);
P2_0=1;
P2_1=0;
numer=dis_code[shi]; //十位移位
out_simuseri(numer);
0x74,0x61,0x21,0x7A,0x20,0x60, 0x01};
uchar numer,temp;
uchar ge,shi;
//----------------------------------------------------------------------------
// 函数名称:out_simuseri
// 输入参数:data_buf
// 输出参数:无
// 功能说明:8位同步移位寄存器,将data_buf的数据逐位输出到simuseri_DATA
//----------------------------------------------------------------------------
}
while(--i!=0);
}
/************************************/
void delay(uchar ms) //延时程序
{
uchar i;

74ls164在2051单片机led显示电路中的应用

74ls164在2051单片机led显示电路中的应用

第20誊第2期2001年6月大连轻工业学院学报JournalofDalianInstituteofLightIndustryVol20,No2jU[22001文章编号:1005.4014(2001)02.0123—0374LSl64在2051单片机LED显示电路中的应用林敏,于忠得,舒奎(大连轻工业学院自动化工程秉,辽宁大连116034/关键词:单片机;显示;电路摘要:AT89C2051是一种高性能低价位单片机,但因其引脚少,给系统设计尤其是LED显示接口电路的设计带来一定难度。

笔者采用串人并出移位寄存器74LSl64圆满地解央了这一闻题,文中详细介绍了该接口电路的构成原理与软件。

实际运行表明.该显示电路可以成功地应用到以AT89C2051单片机为核心的智能仪表中.而且LED显示清晰稳定可在线词整发光亮度。

中图分类号:TP274;TH86文献标识码:A74LSl64appliedinLEDdisplayingcircuitofAT89C2051singlechipcomputerL1NM抽.yUZhong-de.SHUKui(DeplofAuto.Erlg,Da/ianlnstofLightlnd,Dalian116034,China)Keywords:singlechipcomputer;displaying;circuitAbstract:ATSqC2051issinglechipcomputerwithhigh—performanceand10wc∞t.hsLEDdisp[aylngcircuitisnoteasytodesign,fortherearefewnumbersofpinsWesolvethisproblembyusingregister74LSl64.Thispaperpresentsitsprincipleandsoftwareimplementation.IthasbeenusedsuccessfullyintheintelligentinstrumentwithAT89C205lchip.emittingsteadylightclearlyandadjustableonline.AT89系列单片机L11是美国ATMEL公司近年来推出的一种新型高性能低价位、低电压低功耗的8位CMOS微型计算机。

74HC164应用实例:驱动数码管两例(电路图和源程序)

74HC164应用实例:驱动数码管两例(电路图和源程序)

74HC164应用实例:驱动数码管两例(电路图和源程序)————————————————————————————————作者:————————————————————————————————日期:4HC164应用实例:驱动数码管两例(电路图和源程序) 文章编号:100816210758 文章分类: 电路 > 电子元件 点击:... 关键词: 74HC164文章来源:百合电子工作室收集整理 摘要: 74HC164应用实例:驱动数码管的两个实例分别提供了汇编源程序和C 源程序...实例174HC164是串行输入,并行输出接口器件,可用在单向的并行输出/并行地址锁存等. 74HC164因为价格便宜,容易使用特别适合使用在在需要用到数码管显示IO 口又比较紧张的电子产品中,下面浅谈使用方法:1. 首先先了解他的引脚功能和逻辑图,如下图:图1 引脚名称和用途图2 真值表通过真值表我们可以了解到,A,B两个输入端是互锁的,CLK上升沿时数据移入移位寄存器中,CLEAR为清零用的,接低电平时所有端口都输出低电平,了解了真值表之后开始运用了,先给出如下原理图:图3 原理图图中,采用义隆的EM78P153作为控制芯片,P50作为CLK时钟信号,注意平时数据不传输时,时钟信号是不发送的应一直保持低电平或者高电平,数据需要传输的时候才输出时钟信号^_^ ,继续P51作为移位数据输出端,接到74HC164的B端,A端接高电平,当然也可以AB端短路,然后连接到DATA移位数据端,P52作为数码管的选通信号(也可以叫消隐^_^), 作用是使数据传输过程暂时关闭显示,以免显示出不需要的数据,原因是应为164不带锁存功能,数据传输过程是一位一位的向高位移位输出的,所以要等数据全部移入后才打开始点亮数码管.注意了哦,通过查看164的规格书发现,164输出高电平电流比输出低电平电流要小,亦称灌电流大,扇出电流弱,所以适合选用共阳数码管,如图,本人偷懒没有画出那个数码管的8字该介绍的介绍的差不多了,废话少说,该开始干活了,任务是: 显示0-9 每秒+1 ,到9后又返回0,一直循环显示,根据任务得到如下流程图:1. 显示部分:将需要显示的数值送入A ==>查表求得显示段码==>将段码逐位移入164==>8位移完后点亮数码管==>延时==>返回第一步执行2. 中断部分:进入中断==>保存现场(以备调查取证,送你入狱^_^)==>重置TCC==>够1秒钟将需要显示的数据+1,并重置,不够就退出;根据以上要求就开始写代码调试了,要注意一点,数据移位时一定要记得高位在前哦,否则显示错误别怪我没有说清楚,我当年实验时就因为这个数据移位方向反了排查了半天,甚至以为是时钟频率不对,又以为时许不对.....搞了半天,NND后来重看DATASHEET才发现,原来是低级错误啊,呜呼哀哉.......,希望你不要重蹈我覆辙,哎哟!! 谁! 谁! 谁扔砖头上来? 啥? 你扔的? 我废话太多.........,那俺少来两句,继续上菜, 咦好像没啥可说的了,上源程序吧1.;中断部分:2.3.;;;;;;;;;;中断;;;;;;;;4.INTPUT:5.MOV TEMPA, A;6.MOV A,@130;7.MOV TCC,A;255-130=1258.CLR RF;9.;;;;;此处填写250Us处理程序10. BS WKREG,T500US11.;;;;;;;;;;;;;;;;;;;;;;;;;12. DJZ R1MS13.JMP INTEXT;14.MOV A,@415.MOV R1MS,A;重置16. BS WKREG,T1MS17.;;;;;;;此处填写1ms处理程序18.19.;;;;;;;;;;;;;;;;;;;;;;;;;;20. DJZ R20MS21.JMP INTEXT;22.MOV A,@2023.MOV R20MS,A;重置24.;;;此处填写1秒处理程序25. BS WKREG,T20MS26.;;;;;;;;;;;;;;27. DJZ R1S28.JMP INTEXT;29.MOV A,@5030.MOV R1S,A;31.;;;;;;;;;32.INC NUMBER33.MOV A,NUMBER34. SUB A,@1035. JBS SR,236.JMP INTEXT37.MOV A,@038.MOV NUMBER,A39.40.41. INTEXT:42.MOV A,TEMPA;43.RETI;;;;;;;;;;;;;;;;;;;;;44.45.46.47.48.49.;显示部分:50.51.;==============TXDATA==============52.TXDATA:53. BS P5,CC154.MOV A,@855.MOV DATALOP,A;56.TXLOP:57. BC WKREG,T500US58. BS P5,CLK;clk=高59.NOP;60.NOP61. JBS DATA_BUF,762.JMP $+363. BS P5,DATA;64.JMP $+265. BC P5,DATA66.DD1MS: JBS WKREG,T500US67.JMP $-168. BC P5,CLK69. BC WKREG,T500US70. JBS WKREG,T500US71.JMP $-1;72.RLC DATA_BUF73. DJZ DATALOP74.JMP TXLOP75.;;;;;;;;;;76. BC WKREG,T500US77. BS P5,CLK;clk=高78. BC WKREG,T500US79. JBS WKREG,T500US80.JMP $-1;81. BC P5,CLK82.;;;;;;;;83. BC P5,CC184.85.RET;;;;;;;86.87.;数据查表88.;===============DSPTBL============89.DSPTBL: ADD PC,A90. RETL @0B01000000;091. RETL @0B01111001;192. RETL @0B00100100;293. RETL @0B00110000;394. RETL @0B00011001;495. RETL @0B00010010;596. RETL @0B00000010;697. RETL @0B01111000;798. RETL @0B00000000;899. RETL @0B00010000;9100.101.102.;循环体部分;103.104.;;;;;;;;;;主程序;;;;;;;;;;;105.MLOOP:106.MOV A,NUMBER107.CALL DSPTBL108.MOV DATA_BUF,A109.CALL TXDATA110. BC WKREG,T1MS111. JBS WKREG,T1MS112.JMP $-1113.NOP;114.115.JMP MLOOP;;;;;;;;;;;;;;;;;;;;实例2在实际应用中驱动数码管常用的方式分动态扫描和静态驱动。

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

单片机控制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 charsbit 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.5ssendbyte(h);delay(500);}h=0;}}/*====================================用74LS164来输出一个8位的数据,点亮数码管相应的管脚,以显示数字=====================================*/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(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}。

实验六静态显示与IO扩展实验

实验六静态显示与IO扩展实验

实验六静态显示与IO扩展实验一、实验目的1、通过实验掌握应用74LS164实现静态显示的工作原理;2、通过实验掌握74LS165和74HC595的使用方法;二、实验内容1、根据应用串行口的静态显示电路图图1-10编写程序,应用串行口的工作方式0和定时计数器1的定时,控制74LS164驱动的数码管进行显示“0”—“F”。

要求应用定时计数器1产生一秒的延时,四个数码管同时显示“0”,隔一秒变换为“1”,……,到“F”后再重新开始。

注意:调整适当的延时时间,不使用定时计数器延时不算完成。

2、根据应用IO口的静态显示电路图图1-11编写程序,应用IO口模拟串行口的工作方式0和定时计数器1的定时,控制74LS164驱动的数码管进行显示。

要求应用定时计数器1产生一秒的延时,四个数码管显示“0123”,隔一秒变换为“1234”,……,到“CdEF”后隔一秒变换为“dEF0”,顺次“EF01”、“F012”、“0123”不断循环。

注意:将静态显示数据时钟选择端口的KA1 和KA2插针中间的插针是静态显示数据线,用短路套将其与下面的插针短接,就是占用单片机串行口P3.0,用短路套将其与上面的插针短接,则占用单片机P1.6 口。

KA2 中间的插针是静态显示时钟线,用短路套将其与下面的插针短接,就是占用单片机串行口P3.1,用短路套将其与上面的插针短接,则占用单片机P1.7 口。

调整适当的延时时间,不使用定时计数器延时不算完成。

3、根据74HC595和74LS165应用电路图图1-12编写程序,74LS165外接8个开关,74HC595外接8个LED指示灯。

要求用8个LED指示灯显示8个开关的状态,即S开关合,对应LED灯亮;其余灯灭。

注意:要将74HC595和74LS164的电源加上。

4、根据应用IO口的静态显示电路图图1-11和74HC595和74LS165应用电路图图1-12编写程序,在第3题基础上,将外接8个开关的状态转换为十进制数,应用静态显示显示出来,高位补零。

两个74ls164怎么连?74ls164联级应用电路

两个74ls164怎么连?74ls164联级应用电路

两个74ls164怎么连?74ls164联级应用电路74ls164联级应用电路:串口连接两个74LS164驱动2个LED 数码管显示单片机的最小系统是单片机能够工作的最小硬件组合,对于8051系列单片机,其电路的最小系统大致相同,主要包括电源、晶体振荡电路、复位电路等。

串口数据通信方式包括并行通信和串行通信两种。

并行通信就是多条数据线上同时传送,其优点:速度快,只适于近距离通信。

串行通信就是数据以为以为的顺序传送,其优点:线路简单,成本低,适合远距离通信。

串行通信方式包括:异步串行通信和同步串行通信。

异步方式,数据传送不连续,时间间隔任意。

同步方式,发送与接收同步。

数据传送方式:单工、半双工、全双工、多工。

常见的串行通讯有:RS-232、RS-485、CAN总线等。

串行口控制寄存器包括:串行口控制寄存器SCON(控制工作方式)、电源控制寄存器PCON(控制波特率)。

SM0、SM1选择工作方式,SM2用于多机通信,REN允许接收控制位,TB8/RB8发送/接收数据D8位,TI/RI为发送/接收中断标志位。

74LS164串行口工作于方式0,发送数据时,是把串行端口设置成“串入并出的”输出口。

将它设置为“串入并出”输出口时,需外接1片“串入并出”同步移位芯片74LS164或CD4094,本次设计,用74LS164。

74LS164是8位边沿触发式移位寄存器,具有DIP、SO14等多种封装形式。

其DIP封装形式如上图所示。

数据通过A或B之一串行输入,任一输入端可以用作高电平使能端控制另一输入端的数据输入,两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。

时钟CP每次由低变高时,数据右移一位输入到Q0。

Q0是两个数据输入端A和B的逻辑与。

输入的数据在Q0输出,并依次右移在其它输出端口输出。

LED数码管LED数码管是单片机应用系统中常用的输出设备,其特点结构简单,价格便宜。

单片机系统常用7段LED数码管,由8个发光二极管构成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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));
bit_dat((bit)(tab[i]&0×04));
bit_dat((bit)(tab[i]&0×02));
bit_dat((bit)(tab[i]&0×01));
LED_CLKE=0;
}
void uchar_dat() //把缓存区的5个字符输入到5个数码管中{
int j;
for(j=0;j<5;j++)
{
uint_dat(LEDBuffer[j]);
}
}
void main()
{
int i;
for(i=0;i<5;i++)
{
LEDBuffer[i]=i;
}
uchar_dat();
while(1);}
/***************************************************/
/* I0口驱动74LS164数码管动态显示 */
/* 在实验仪XL600上测试通过, */
/*但记得把数码管数据端线有一头要反插;*/
/**************************************/
//----------库函数声明,管脚定义---------------------
#include <at89x51.h>
#define uchar unsigned char
sbit simuseri_CLK=P1^1; //用P1^6模拟串口时钟
sbit simuseri_DATA=P1^0; //用P1^5模拟串口数据
sbit a0=ACC^0;
unsigned char code dis_code[11]={0x28,0x7E,0xa2,0x62, //查表显示 0, 1、、9
0x74,0x61,0x21,0x7A,0x20,0x60, 0x01};
uchar numer,temp;
uchar ge,shi;
//-------------------------------------------------------------------------------------------------------
// 函数名称:out_simuseri
// 输入参数:data_buf
// 输出参数:无
// 功能说明:8位同步移位寄存器,将data_buf的数据逐位输出到simuseri_DATA
//--------------------------------------------------------------------------------------------------------
2_1=0;
numer=dis_code[shi]; //十位移位
out_simuseri(numer);
delay(5);
2_1=1;
}
m=0;
}
}
}
/****************************************/。

相关文档
最新文档