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

74LS164动态扫描数码管与proteus传真及C程序
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)

uchar i;

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

{

CLK=0;

DA T=ch&0x01;

CLK=1;

ch>>=1;

}

}

void display(uint temp) {

uint shi,ge;

shi=temp/10;

ge=temp%10;

sendchar(table[shi]);

WA1=0;WA2=1;

delayms(1);WA1=1;

sendchar(table[ge]);

WA1=1;WA2=0;

delayms(1);WA2=1; }

void main()

{

while(1)

{

display(12);

}

}

多位数码管动态扫描protues仿真

实验题目:多位数码管动态扫描电路设计与调试 一、实验要求与目的 1、设计要求 8位数码管显示“8.8.8.8.8.8.8.8.”,即点亮显示器所有段,持续约500ms 之后,数码管持续约1s ;最后显示“HELLO —10”,保持。 2、实验目的 1、掌握数码管动态扫描显示原理及实现方法。 2、掌握动态扫描显示电路驱动程序的编写方法。 二、设计思路 1、在Proteus 中设计仿真电路原理图。 2、在Keil C51软件中编译并调试程序,程序后缀必须是.c 。调试时生成hex 文件,确认 无误后将生成的hex 文件添加到原理图的单片机中进行仿真。 3、观察电路仿真结果对程序进行更改直至达到预期结果 三、实验原理 p2[0..3] p0[0..7]p 00p 00p 07p 06p 0605p 02p 05p 04p 04p 03p 03p 02p 02p 01p 01p 07p 23p 22p 21p 20A 15B 14C 13D 12 01122334455667798109 11 U2 7445 A 02 B 018A 13B 117A 24B 216A 35B 315A 46B 414A 57B 513A 68B 612A 7 9 B 7 11 C E 19A B /B A 1 U3 74HC245 234567891 RP1 RESPACK-8 XTAL2 18 XTAL119 RST 9 P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD 17 P3.6/WR 16P3.5/T115AD[0..7]A[8..15] ALE 30EA 31PSEN 29 P1.0/T21 P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78 U4 AT89C52 图1 原理图

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)

C51四位数码管动态扫描让其中一位闪烁

思路说明:将显示程序放入定时器中断,设定一闪烁标志位。定时时间为2MS,定时时间到则将标志位取反,同时也可以将按键扫描程序放入该定时器,则在视觉上可以看到要求位的闪烁。 #include #define uchar unsigned char #define uint unsigned int uchar code num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar dbuf[4]; uchar outnum; bit flashflag=0; uchar flashbit=0; sbit key1=P3^2; void setint() { TMOD=0X01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET0=1; TR0=1; } void delayus(uint z) { uchar x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void display() { if(flashflag==1&&flashbit==1) { P0=0xff; } else {P0=num[dbuf[0]];} P1=0x01; delayus(20); P1=0x00;

if(flashflag==1&&flashbit==2) { P0=0xff; } else {P0=num[dbuf[1]];} P1=0x02; delayus(20); P1=0x00; if(flashflag==1&&flashbit==3) { P0=0xff; } else {P0=num[dbuf[2]];} P1=0x04; delayus(20); P1=0x00; if(flashflag==1&&flashbit==4) { P0=0xff; } else {P0=num[dbuf[3]];} P1=0x08; delayus(20); P1=0x00; } void keynum() { uchar temp; P2=0x0f; if(P2!=0xf0) { delayus(10); if(P2!=0xf0) { P2=0xf7; delayus(10); temp=P2; switch(temp) { case 0xe7:flashbit=1;break;

数码管显示程序(汇编语言)

实验三数码显示 一、实验目的 了解LED数码管动态显示的工作原理及编程方法。 二、实验内容 编制程序,使数码管显示“DJ--88”字样。 三、实验程序框图 四、实验步骤 联机模式: (1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM

文件夹,点击S6.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。 (2)数码管显示“DJ--88”字样。 脱机模式: 1、在P.态下,按SCAL键,输入2DF0,按EXEC键。 2、数码管显示“DJ--88”字样。 五、实验程序清单 CODE SEGMENT ;S6.ASM display "DJ--88" ASSUME CS:CODE ORG 2DF0H START: JMP START0 PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 BUF DB ?,?,?,?,?,? data1: db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0 c6h,0a1h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H START0: CALL BUF1 CON1: CALL DISP JMP CON1 DISP: MOV AL,0FFH ;00H MOV DX,PA OUT DX,AL MOV CL,0DFH ;显示子程序 ,5ms MOV BX,OFFSET BUF DIS1: MOV AL,[BX] MOV AH,00H PUSH BX MOV BX,OFFSET DATA1 ADD BX,AX MOV AL,[BX] POP BX MOV DX,PB

驱动大尺寸数码管的方法与电路

驱动大尺寸数码管的方法与电路 相信大家都见过数码管,数码管上面有abcdefg七个笔画,构成一个“日”字,一般还有一个小数点dp。 数码管的外形有不同的大小,其度量标准是其中“日”字的高度,单位一般都是英寸。 市场上数码管的尺寸范围一般为0.25~8 英寸。 图片链接:https://www.360docs.net/doc/052555313.html,/%D7%F6%B6%F8%C2%DB%B5%C0/album/驱动大尺寸数码管 在实验室中,常见的数码管是0.5 英寸的,它的高和宽分别为0.7 英寸和0.5 英寸。 这种数码管,每个笔画的内部,仅仅含有一个LED,驱动一个笔画,和驱动一个普通的发光二极管无异。 在大厅或者户外,就要使用大尺寸的数码管。 做而论道用过最大的数码管是8 英寸的。 8 英寸数码管中的每个笔画内部,都含有8 个LED,它们之间是两两并联后再串联;小数点dp的内部,仅仅用了两个LED 进行串联。

8 英寸共阳数码管内部的简图如下: 8 英寸数码管也有多种颜色,一般的工作参数如下: 每个笔段的导通电压约为8~10V;静态电流10~15mA;动态时,1/8动态扫描时,平均电流为8~10mA,峰值电流60~80mA。 小数点的电压、电流酌减,视亮度均衡情况而定。 要想驱动8 英寸数码管,显然不能用单片机本身的+5V电源,通常都是使用+12V。 想要驱动+12V的共阳数码管,电路设计,就是一个典型的电子线路方面的问题。 很多搞单片机的,编编软件还可以,设计电路时,明显暴露出不足。 很多搞电子的,并不明白单片机有高电平的输出能力问题,设计的电路结构,以及限流电阻、上拉电阻都不尽合理,呵呵 下面说说做而论道的设计思路。 对于+12V 到数码管之间的通断控制,显然应该用PNP 型的晶体管,用8550 最好。 为了控制8550 的截止与饱和,在其基极约要有+12V 的电压才行,单片机最大只能输出+5V,这就需要有电平转换电路。 +5V 到+12V 的转换,方法很多了: 可以使用NPN 型的晶体管,用8050 就可以; 可以使用集成电路74LS07,它是六同相OC输出的驱动门电路,输出端最大可以外接+30V;可以使用集成电路ULN2803(或ULN2003),它是八(七)反相OC输出的驱动门电路。这几种电路,做而论道都进行过实验和应用,都是成功的,安全性、可靠性均为100%。 下面看一段网络对话,即可看到大尺寸数码管的驱动电路与应用效果。 ===============================================

四位数码管动态显示c语言程序

//这就是一个四位数码管动态显示c语言程序,每隔一秒加一,直至加到9999为止//使用时需采用锁存器 #include #include"stdio、h" unsigned char code LED[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; unsigned char LEDbuff[]={0xff,0xff,0xff,0xff}; //定义数码管的位选段 sbit SEG_bit_1 = P0^1; sbit SEG_bit_2 = P0^2; sbit SEG_bit_3 = P0^3; sbit SEG_bit_4 = P0^4; unsigned int cnt=0; unsigned int sec =0; unsigned int mini=0; unsigned int hour=0; unsigned char i=0; /*void delay(unsigned int z ) { unsigned int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } */ void interrupttimer0() interrupt 1 /*设置中断函数*/ { TH0=0xfc; TL0=0x18; cnt++; //P1=0x80; //delay(1); switch(i) { case 0: SEG_bit_1 = 0;SEG_bit_4 = 1;P1=LEDbuff[0];i++;break; case 1: SEG_bit_4 = 0;SEG_bit_3 = 1;P1=LEDbuff[1];i++;break; case 2: SEG_bit_3 = 0;SEG_bit_2 = 1;P1=LEDbuff[2]&;i++;break; case 3: SEG_bit_2 = 0;SEG_bit_1 = 1;P1=LEDbuff[3];i=0;break; default:break; } } /************************************************ void serial_init() { //TMOD = 0x20; //定时器T/C1工作方式2 SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)

细说多位数码管的驱动方法

细说多位数码管的驱动方法 我们在制作项目时,会遇到多位数码管的显示问题.如何尽量减少硬件的使用数量和加快全部显示一轮的时间,是需要精心规划与安排的. 例如: 做万年历,就有年月日,时分,星期等内容需要显示,数码管数量多达 13 位以上.如果再带上秒,温度,农历什么的,位数就更多了. 例如: 做多功能电力仪表,显示位数也往往多达十几位以上. 尽管有专门用于这种多位显示的专门芯片可供选择,但是,往往一只这种芯片成本可能比使用的单片机本身还要高!例如市场上的 CH451 等 ,高达 6~8 元呢! 于是,可以考虑串行到并行的一些芯片,例如 HC164,HC595 等等,驱动也仅仅就二线制,但是,这么一来,外挂芯片也不少. 还有,可以使用一些 4 线到 7 线的驱动芯片,例如:CD4511,74LS247,CD4543 等等,它们除了节省一些源驱动引脚之外,使用数量恐怕也让人头痛! 类似于 HC373,HC374,HC573,HC574 的芯片,可以减少很多源驱动引脚,但是,芯片使用数量仍然太多! 还有一个附带问题,许多仪器仪表,往往是主印刷版与前面的显示/按键板是分离的,有些商品仪表,主板到前面板的引线就多达几十根,无论 如何,都会让人感觉又乱有多又不可靠,生产调试等都增加了困难. 说了那么多,我们就是希望:使用尽量少的硬件芯片,尽量少的过渡引线,尽量短的显示周期时间,尽量低的元器件费用!----当然,需要保证可靠性不能降低! 我们举例说明: 一个 2 * 4 位的仪器显示电路,有 8 位数码管,完全依靠单片机本身的端口来驱动,就有 2 种方案考虑:

图 1 的方法需要使用 22 个单片机端口. 图 2 方法需要使用 16 个单片机端口. 图 2 全部数码管显示一次的时间比图 1 长一半时间. 从仪器 2 个板子分离的情况来看,图 1 从主板到前面显示板的引线就相当多了!图 2 虽然少了一些,但是,加上供电,按键等,数量也不算少,很可能还会有发光管指示灯什么的,需要考虑的麻烦事就更多了! 从单片机端口的使用数量来看,它也大大影响到单片机的封装选择,引脚不是越大越好的,对焊接,成本,调试等都会有影响. 如果芯片带有 RS232 硬件功能,当然可以考虑使用串行驱动,虽然不过分影响单片机分时工作的速率,但是,上面提到过,串行芯片的数量也 是相当可观的. 数码管这种显示还要保证每秒不能少于 50 次以上,否则会有显示闪烁的感觉! 针对上面提及的问题,这里推荐一种比较好的方法:就是增加一只廉价的单片机,专门负责显示,主功能单片机与显示用途单片机仅仅 2 根引线就可以正常传送信号,这么一来,带来的后果是利大于弊! 我们这么做,还会最大限度地节省 2 个分离印刷板的引线,节省印刷板的布线难度,减少主单片机的引脚数量,加快系统的运行速率.对显示 用途的单片机的内部资源没有什么要求,完全可以使用最普通功能的单片机来担任显示任务! 这样就需要解决 2 个单片机之间的通信问题,这完全可以借鉴现成的一些 2 线制串行通信方式方法.也可以根据自己的情况自定义自己的 通信方法. 通常,主单片机只要保证每秒时间给显示单片机送入 4 次以上的数据,那么,对数码管显示的实时性来说就已经足够了!----当然,你就是增 加一倍二倍的传送次数,对主单片机来说,也是可以非常轻易做到了!因为,它犯不上去操心每秒显示 50 次以上的工作量了! 而对于显示单片机来说,则要求保证每秒时间内,完成全部数码管的 50 次以上的分时扫描显示..... 而对于显示单片机来说,则要求保证每秒时间内,完成全部数码管的 50 次以上的分时扫描显示..... 下面通过一个具体例子来说明. 图3 电路使用 SN8P2624 芯片,它与 EM78P447,PIC16C57 等芯片引脚排列兼容!而且价格低廉. 图3 电路除了预留 2 个端口作为数据通信之外,其余全部端口都用于数码管的显示.可以驱动 2*6 位数码管.笔段使用并行方式驱动,速度是最快的!

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. 电器特性

实验四八位七段数码管动态显示电路的设计

八位七段数码管动态显示电路的设计 一、实验目的 1、了解数码管的工作原理。 2、学习七段数码管显示译码器的设计。 3、学习VHDL的CASE语句及多层次设计方法。 二、实验原理 七段数码管是电子开发过程中常用的输出显示设备。在实验系统中使用的是两个四位一体、共阴极型七段数码管。其单个静态数码管如下图4-4-1所示。 图4-1 静态七段数码管 由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。反之则不亮。共阳极性的数码管与之相么。四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。 三、实验内容 本实验要求完成的任务是在时钟信号的作用下,通过输入的键值在数码管上显示相应的键值。在实验中时,数字时钟选择1024HZ作为扫描时钟,用四个拨动开关做为输入,当四个拨动开关置为一个二进制数时,在数码管上显示其十六进制的值。 四、实验步骤 1、打开QUARTUSII软件,新建一个工程。 2、建完工程之后,再新建一个VHDL File,打开VHDL编辑器对话框。 3、按照实验原理和自己的想法,在VHDL编辑窗口编写VHDL程序,用户可参照光 盘中提供的示例程序。 4、编写完VHDL程序后,保存起来。方法同实验一。

5、对自己编写的VHDL程序进行编译并仿真,对程序的错误进行修改。 6、编译仿真无误后,根据用户自己的要求进行管脚分配。分配完成后,再进行全编译 一次,以使管脚分配生效。 7、根据实验内容用实验导线将上面管脚分配的FPGA管脚与对应的模块连接起来。 如果是调用的本书提供的VHDL代码,则实验连线如下: CLK:FPGA时钟信号,接数字时钟CLOCK3,并将这组时钟设为1024HZ。 KEY[3..0]:数码管显示输入信号,分别接拨动开关的S4,S3,S2,S1。 LEDAG[6..0]:数码管显示信号,接数码管的G、F、E、D、C、B、A。 SEL[2..0]:数码管的位选信号,接数码管的SEL2、SEL1、SEL0。 8、用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。观察实验结果是否与 自己的编程思想一致。 五、实验现象与结果 以设计的参考示例为例,当设计文件加载到目标器件后,将数字信号源模块的时钟选择为1464HZ,拨动四位拨动开关,使其为一个数值,则八个数码管均显示拨动开关所表示的十六进制的值。

数码管动态显示教案

电子综合设计实训 题目数码管动态显示 _ 姓名 专业 学号 指导教师 郑州科技学院电气工程学院

目录 摘要.................................................................................................. I 1背景. (1) 1.1介绍 (1) 1.2设计步骤 (2) 2 设计思路 (3) 2.1方案对比 (3) 3元件的选择 (6) 3.1单片机 (6) 3.2 显示元器件的选择 (6) 4 设计原理及功能说明 (8) 4.1 各部分功能说明 (8) 5 装配与调试 (14) 5.1装配 (14) 5.2调试 (14) 6 总结 (15) 附录 (17) 附录一:元件清单 (17) 附录二:电路源程序 (17)

数码管动态显示的设计 摘要 本文介绍了一种基于AT89C51单片机的8个数码管滚动显示单个数字的设计,让八位数码管滚动显示0、1、2、3、4、5、6、7,我们以液晶显示技术的发展为背景,选择了比较常用的液晶数码管显示模块,利用了单片机控制数码管模块的显示机理。研究学习AT89C51单片机其功能,对学习过的单片机,C语言课程进行巩固,设计一款在8只数码管上流动显示单个数字的程序,并用PROTEUS进行电路设计和实时仿真。该电路有两部分组成:AT89C51单片机和显示模块组成。AT89C51单片机具有超低功耗和CPU外围的高度整合性;显示模块数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极,方便易用。实际应用中不需要外部任何元器件即可实现,具有接口电路简单、可靠,易于编程的特点,抗干扰性好等特点。 单片机技术使我们可以利用软硬件实现数码管准确显示各种数码。而且这种技术相对简单,性价比较高,在我们生活中应用很广泛,具有一定的发展前景。 关键词:AT89C51单片机;数码管;滚动显示

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;

8位数码管动态显示电路设计.

电子课程设计 — 8位数码管动态显示电路设计 学院:电子信息工程学院 专业、班级: 姓名: 学号: 指导老师: 2014年12月

目录 一、设计任务与要求 (3) 二、总体框图 (3) 三、选择器件 (3) 四、功能模块 (9) 五、总体设计电路图 (10) 六、心得体会 (12)

8位数码管动态显示电路设计 一、设计任务与要求 1. 设计个8位数码管动态显示电路,动态显示1、2、3、4、5、6、7、8。 2. 要求在某一时刻,仅有一个LED 数码管发光。 3. 该数码管发光一段时间后,下一个LED 发光,这样8只数码管循环发光。 4. 当循环扫描速度足够快时,由于视觉暂留的原因,就会感觉8只数码管是在持续发光。 5、研究循环地址码发生器的时钟频率和显示闪烁的关系。 二、总体框图 设计的总体框图如图2-1所示。 图2-1总体框图 三、选择器件 1、数码管 数码管是一种由发光二极管组成的断码型显示器件,如图1所示。 U13 DCD_HEX 图1 数码管 数码管里有八个小LED 发光二极管,通过控制不同的LED 的亮灭来显示出 不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个 74LS161计数器 74LS138译码 器 数码管

LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。 2、非门 非门又称为反相器,是实现逻辑非运算的逻辑电路。非门有输入和输出两个端,电路符号如图2所示,其输出端的圆圈代表反相的意思,当其输入端为高电平时输出端为低电平,当其输入端为低电平时输出端为高电平。也就是说,输入端和输出端的电平状态总是反相的。其真值表如表1所示。 图2 非门 表1 真值表 输入输出 A Y 0 1 1 0 3、5V电源 5V VCC电源如图3所示。 图3 5V电源

(完整版)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;

基于51单片机的LED数码管动态显示

基于51单片机的LED数码管动态显示 LED数码管动态显示就是一位一位地轮流点亮各位数码管,对于每一位LED数码管来说,每隔一段时间点亮一次,利用人眼的“视觉暂留"效应,采用循环扫描的方式,分时轮流选通各数码管的公共端,使数码管轮流导通显示。当扫描速度达到一定程度时,人眼就分辨不出来了。尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,认为各数码管是同时发光的。若数码管的位数不大于8位时,只需两个8位I/O口。 1 硬件设计 利用51单片机的P0口输出段码,P2口输出位码,其电路原理图如下所示。 在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。单击菜单命令“文件”→“新建设计”,选择DEFAULT模板,保存文件名为“DT.DSN”。在器件选择按钮中单击

“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示的元件。 51单片机AT89C51 一片 晶体CRYSTAL 12MHz 一只 瓷片电容CAP 22pF 二只 电解电容CAP-ELEC 10uF 一只 电阻RES 10K 一只 电阻RES 4.7K 四只 双列电阻网络Rx8 300R(Ω) 一只 四位七段数码管7SEG-MPX4-CA 一只 三极管PNP 四只 若用Proteus软件进行仿真,则上图中的晶振和复位电路以及U1的31脚,都可以不画,它们都是默认的。 在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER 和GROUND放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计。 2 软件设计 LED数码管动态显示是一位一位地轮流点亮各位数码管的,因此要考虑每一位点亮的保持时间和间隔时间。保持时间太短,则发光太弱而人眼无法看清;时间太长,则间隔时间也将太长(假设N位,则间隔时间=保持时间X(N-1)),使人眼看到的数字闪烁。在程序中要合理的选择合适的保持时间和间隔时间。而循环次数则正比于显示的变化速度。 LED数码管动态显示的流程如下所示。

LED数码管结构及工作原理

L E D数码管结构及工作原理-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

LED数码管的结构及工作原理 沈红卫 LED数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等....,LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。LED数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。下面将介绍常用LED数码管内部引脚图。 图1 这是一个7段两位带小数点 10引脚的LED数码管 图2 引脚定义 每一笔划都是对应一个字母表示 DP是小数点. 数码管分为共阳极的LED数码管、共阴极的LED数码管两种。下图例举的是共阳极的LED数码管,共阳就是7段的显示字码共用一个电源的正。led 数码管原理图示意:

图3 引脚示意图 从上图可以看出,要是数码管显示数字,有两个条件:1、是要在VT端(3/8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接低电平或“0”电平。这样才能显示的。 共阳极LED数码管的内部结构原理图图4: 图4 共阳极LED数码管的内部结构原理图共阴极LED数码管的内部结构原理图: 图5 共阴极LED数码管的内部结构原理图

数码管动态扫描显示01234567

实验5 数码管动态扫描显示01234567 原理图:8个数码管它的数据线并联接到JP5, 位控制由8个PNP型三级管驱动后由JP8引出。 相关原理: 数码管是怎样来显示1,2,3,4呢?数码管实际上是由7个发光管组成8字形构成的,加上小数点就是8个。我们分别把他命名为 A,B,C,D,E,F,G,H。

搞懂了这个原理, 我们如果要显示一个数字2, 那么 A,B,G,E,D这5个段的发光管亮就可以了。也就是把B,E,H(小数点)不亮,其余全亮。根据硬件的接法我们编出以下程序。当然在此之前,还必须指定哪一个数码管亮,这里我们就指定最后一个P2.7。 LOOP: CLR P2.7 ;选中最后的数码管 SETB P0.7 ;B段不亮 SETB P0.5 ;小数点不亮 SETB P0.1 ;C段不亮 CLR P0.2 ;其他都亮 CLR P0.3 CLR P0.4 CLR P0.6 CLR P0.0 JMP LOOP ;跳转到开始重新进行

END 把这个程序编译后写入单片机,可以看到数码管的最后一位显示了一个数字2。 也许你会说:显示1个2字就要10多行程序,太麻烦了。 显示数字2则是C,F,H(小数点)不亮,同时由于接法为共阳接法,那么为0(低电平)是亮 为1(高电平)是灭。从高往低排列,(p0.7_p0.0)写成二进制为01111110, 把他转化为16进制则为A2H。我们可以根据硬件的接线把数码管显示数字编制成一个表格, 以后直接调用就行了。 有了这个表格上面显示一个2的程序则可简化为: LOOP: CLR P2.7 ;选中左边的数码管 MOV P0,#0A2H ;送数字2的代码到P0口 JMP LOOP ;跳转到开始重新进行 END

七段数码管机器驱动七段数码管机器驱动七段数码管机器驱动

7段数码管管脚顺序及译码驱动集成电路74LS47,48 这里介绍一下7段数码管见下图7段数码管又分共阴和共阳两种显示方式。如果把7段数码管的每一段都等效成发光二极管的正负两个极,那共阴就是把abcdefg这7个发光二极管的负极连接在一起并接地;它们的7个正极接到7段译码驱动电路74LS48的相对应的驱动端上(也是abcdefg)!此时若显示数字1,那么译码驱动电路输出段bc为高电平,其他段扫描输出端为低电平,以此类推。如果7段数码管是共阳显示电路,那就需要选用74LS47译码驱动集成电路。共阳就是把abcdefg的7个发光二极管的正极连接在一起并接到5V电源上,其余的7个负极接到74LS47相应的abcdefg输出端上。无论共阴共阳7段显示电路,都需要加限流电阻,否则通电后就把7段译码管烧坏了!限流电阻的选取是:5V电源电压减去发光二极管的工作电压除上10ma到15ma得数即为限流电阻的值。发光二极管的工作电压一般在,为计算方便,通常选2V即可!发光二极管的工作电流选取在10-20ma,电流选小了,7段数码管不太亮,选大了工作时间长了发光管易烧坏!对于大功率7段数码管可根据实际情况来选取限流电阻及电阻的瓦数! 74ls48引脚图管脚功能表 74LS48芯 片是一种常用的七段数码管译码器驱动器,常用在各种数字电路和单片机系统的显示系统中,下面我就给大家介绍一下这个元件的一些参数与应用技术等资料。 74ls48引脚功能表—七段译码驱动器功能表 74LS47引脚图管脚功能表:共阳数码管管脚图三位共阳数码管管脚图以及封装尺寸四位数码管引脚图以及封装尺寸六位数码管引脚图门电路逻辑符号大全(三态门,同或门,异或门,或非门,与或非门, 传输门,全加器,半加器等) 常用集成门电路的逻辑符号对照表三态门,同或门,异或门,或非门,与或非门, 传输门,全加器,半加器,基本r s触发器,同步rs触发器,jk触发器,d触发器 7段数码管管脚顺序及驱动集成电路这里介绍一下7段数码管见下图 7段数码管又分共阴和共阳两种显示方式。如果把7段数码管的每一段都等效成发光二极管的正负两个极,那共阴就是把abcdefg这7个发光二极管的负极连接在一起

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); 五、硬件图

相关文档
最新文档