74hc164驱动控制8个数码管程序
74HC164机器设备简述
8 位串入、并出移位寄存器
74HC16474HC164、74HCT164 是快速硅门 CMOS 元器件,与功耗低肖特基型 TTL (LSTTL) 元器件的脚位兼容。74HC164、74HCT164 是 8 位边缘触发式移位寄存器,串行通信键入数据信息,随后并行处理輸出。数据信息根据2个键入端(DSA 或 DSB)之一串行通信键入;任一键入端能够作为上拉电阻也就能端,操纵另一键入端数据信息键入。2个键入端或是联接在一起,或是把不需要的键入线接上拉电阻,一定不必悬在空中。
数字时钟 (CP) 每一次由低变高时,数据信息偏移一位,键入到 Q0, Q0 是2个数据信息输进端(DSA 和 DSB)的逻辑,它将升高数字时钟沿以前维持一个创建時间的长短。
主校准 (MR) 键入端上的一个低电频将使其他全部键入端都失效,与此同时非同歩地消除存储器,强制性全部的输入输出为低电频。
数码显示管
数码显示管,也称之为辉光管,是一种能够表明数据和其它信息内容的电子产品。玻璃试管中包含一个金属丝网制品做成的阳极氧化和数个负极。绝大多数数码显示管负极的形态为数据。管内充以低电压汽体,一般绝大多数为氖再加上一些汞和/或氩。给某一个负极电池充电,数码显示管便会传出色调光,似乎管中的空气而定,一般全是橘色或翠绿色。
数码显示管也称LED数码显示管,不一样领域的人对数码显示管的叫法不一样,实际上全是相同的商品。
按发光二极管模块接口方式可分成共阳极氧化数码显示管和共负极数码显示管。共阳数码显示管就是指将全部发光二极管的阳极氧化收到一起产生公共性阳极氧化(COM)的数码显示管,共阳数码显示管在使用时要将公共性极COM收到 5V,当某一字段名发光二极管的负极为高电平时,相对应字段名就照亮,当某一字段名的负极为上拉电阻时,相对应字段名也不亮。共阴数码显示管就是指将全部发光二极管的负极收到一起产生公共性负极(COM)的数码显示管,共阴数码显示管在使用时要将公共性极COM收到接地线GND上,当某一字段名发光二极管的阳极氧化为上拉电阻时,相对应字段名就照亮,当某一字段名的阳极氧化为高电平时,相对应字段名也不亮。
八只74HC164操纵八只数码显示管程序流程
ORG0000H
JMPMAIN
ORG0013H
AJMPBreak_2
MAIN: ;源程序
MOVSP,#60H;设置堆栈指针
MOVTCON,04H
MOVIE,84H
MOVSCON,#00H;设置串口通信为0方法,同歩移位寄存器,串口波特率Fosc/12,0:单机版对单机版,接受操纵严禁
START:;
JNBP3.2,DISPLAY_09
CALLDISPLAY_0;启用表明程序段
CALLDELAY;启用延迟程序段
DISPLAY_0:;表明程序段
MOVR7,#2
MOVR6,#2
MOVR5,#2
L0:
MOVA,#0;先推送十位数的LED数码显示管段选码
MOVDPTR,#TABLE;十位数的LED数码显示管段选时速表详细地址送寄存器地址表针DPTR
MOVCA,@A DPTR;挑选十位数电子计数器COUNT2,第二个LED数码显示管段选码送A
MOVSBUF,A;推送挑选十位数电子计数器COUNT2,第二个LED数码显示管段选码
L0_1:
JBCTI,L0_2;推送操纵位TI=1,推送结束自动跳转到DATA1,并将TI清0
JMPL0_1;推送操纵位TI=0,未推送结束自动跳转到LOOPD0,再次检验TI位
L0_2:
DJNZR7,L0
MOVR7,#2
MOVA,#0;先推送十位数的LED数码显示管段选码
MOVDPTR,#TABLE_1;十位数的LED数码显示管段选时速表详细地址送寄存器地址表针DPTR
MOVCA,@A DPTR;挑选十位数电子计数器COUNT2,第二个LED数码显示管段选码送A
MOVSBUF,A;推送挑选十位数电子计数器COUNT2,第二个LED数码显示管段选码
L0_3:
JBCTI,L0_4;推送操纵位TI=1,推送结束自动跳转到DATA1,并将TI清0
JMPL0_3;推送操纵位TI=0,未推送结束自动跳转到LOOPD0,再次检验TI位
L0_4:DJNZR6,L0
L0_5:
MOVA,#0;先推送十位数的LED数码显示管段选码
MOVDPTR,#TABLE;十位数的LED数码显示管段选时速表详细地址送寄存器地址表针DPTR
MOVCA,@A DPTR;挑选十位数电子计数器COUNT2,第二个LED数码显示管段选码送A
MOVSBUF,A;推送挑选十位数电子计数器COUNT2,第二个LED数码显示管段选码
L0_6:
JBCTI,L0_7;推送操纵位TI=1,推送结束自动跳转到DATA1,并将TI清0
JMPL0_6;推送操纵位TI=0,未推送结束自动跳转到LOOPD0,再次检验TI位
L0_7:
DJNZR5,L0_5
RET
DISPLAY_09:
MOVCOUNT1,#0;个位电子计数器COUNT1置0
MOVCOUNT2,#0;十位数电子计数器COUNT2置2
MOVCOUNT3,#0;百位数电子计数器COUNT3置8
MOVCOUNT4,#0;百位数电子计数器COUNT3置8
MOVCOUNT5,#0;百位数电子计数器COUNT3置8
MOVCOUNT6,#0;百位数电子计数器COUNT3置8
MOVCOUNT7,#0;百位数电子计数器COUNT3置8
MOVCOUNT8,#0;百位数电子计数器COUNT3置8
START_09:
CALLDISPLAY;启用表明程序段
CALLDELAY;启用延迟程序段
W1:
INCCOUNT1;个位电子计数器COUNT1加1
MOVA,COUNT1
CJNEA,#10,START_09;检验个位是不是转变 10次,假如不足10次,自动跳转到程序流程逐渐表明处START
W10:
INCCOUNT2;十位数电子计数器COUNT2加1
MOVCOUNT1,#0;个位电子计数器COUNT1置0
MOVA,COUNT2;
CJNEA,#6,START_09;检验个位是不是转变 10次,假如不足10次,自动跳转到程序流程逐渐处
W100:
INCCOUNT3;百位数电子计数器COUNT3加1
MOVCOUNT2,#0;十位数电子计数器COUNT2置0
MOVCOUNT1,#0;个位电子计数器COUNT1置0
MOVA,COUNT3;
CJNEA,#1,START_09;检验个位是不是转变 10次,假如不足10次,自动跳转到程序流程逐渐处
W1000:
INCCOUNT4;千十位数电子计数器COUNT4加1
MOVCOUNT3,#0;百位数电子计数器COUNT3置0
MOVCOUNT2,#0;十位数电子计数器COUNT2置0
MOVCOUNT1,#0;个位电子计数器COUNT1置0
MOVA,COUNT4;
CJNEA,#10,START_09;检验个位是不是转变 10次,假如不足10次,自动跳转到程序流程逐渐处
W10000:
INCCOUNT5;万十位数电子计数器COUNT5加1
MOVCOUNT4,#0;千十位数电子计数器COUNT4置0
MOVCOUNT3,#0;百位数电子计数器COUNT3置0
MOVCOUNT2,#0;十位数电子计数器COUNT2置0
MOVCOUNT1,#0;个位电子计数器COUNT1置0
MOVA,COUNT5;
CJNEA,#6,START_09;检验个位是不是转变 10次,假如不足10次,自动跳转到程序流程逐渐处
W100000:
INCCOUNT6;十万十位数电子计数器COUNT6加1
MOVCOUNT5,#0;千十位数电子计数器COUNT5置0
MOVCOUNT4,#0;千十位数电子计数器COUNT4置0
MOVCOUNT3,#0;百位数电子计数器COUNT3置0
MOVCOUNT2,#0;十位数电子计数器COUNT2置0
MOVCOUNT1,#0;个位电子计数器COUNT1置0
MOVA,COUNT6;
CJNEA,#1,START_09;检验个位是不是转变 10次,假如不足10次,自动跳转到程序流程逐渐处
W1000000:
INCCOUNT7;上百万十位数电子计数器COUNT7加1
MOVCOUNT6,#0;千十位数电子计数器COUNT6置0
MOVCOUNT4,#0;千十位数电子计数器COUNT4置0
MOVCOUNT3,#0;百位数电子计数器COUNT3置0
MOVCOUNT2,#0;十位数电子计数器COUNT2置0
MOVCOUNT1,#0;个位电子计数器COUNT1置0
MOVA,COUNT7;
CJNEA,#10,START_09;检验个位是不是转变 10次,假如不足10次,自动跳转到程序流程逐渐处
W10000000:
INCCOUNT8;千万十位数电子计数器COUNT7加1
MOVCOUNT7,#0;万十位数电子计数器COUNT7加1
MOVCOUNT6,#0;千十位数电子计数器COUNT6置0
MOVCOUNT4,#0;千十位数电子计数器COUNT4置0
MOVCOUNT3,#0;百位数电子计数器COUNT3置0
MOVCOUNT2,#0;十位数电子计数器COUNT2置0
MOVCOUNT1,#0;个位电子计数器COUNT1置0
MOVA,COUNT8;
CJNEA,#10,L1;检验个位是不是转变 10次,假如不足10次,自动跳转到程序流程逐渐处AJMPW0
L1:AJMPSTART
W0:
MOVCOUNT1,#0;个位电子计数器COUNT1置0
MOVCOUNT2,#0;十位数电子计数器COUNT2置0
MOVCOUNT3,#0;百位数电子计数器COUNT3置0
上一篇:介绍场效应管的分类