历史上的今天
返回首页

历史上的今天

今天是:2025年01月28日(星期二)

2020年01月28日 | PIC单片机控制LED点阵显示屏

2020-01-28 来源:eefocus

本实验在proteus软件上模拟完成。


实验器件:20片8X8LED点阵显示屏,10片74LS164移位寄存器,10片74LS273数据锁存器,2片74LS138译码器,1片PIC16F877A单片机。


proteus元件库中中没有16X80点阵显示屏,所以用20片8X8LED点阵屏拼装而成。


10片74LS164移位寄存器和10片74LS273数据锁存器用于传送和保存一行数据。


2片74LS138构成4选16译码器用于行选。


实验截图:



源程序:



 list  p=16f877A ; list directive to define processor

 #include ; processor specific variable definitions

 

 __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _RC_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF



; '__CONFIG' directive is used to embed configuration data within .asm file.

; The lables following the directive are located in the respective .inc file.

; See respective data sheet for additional information on configuration word.



;***** VARIABLE DEFINITIONS

w_temp  EQU 0x7D  ; variable used for context saving 

status_temp EQU 0x7E  ; variable used for context saving

pclath_temp EQU 0x7F  ; variable used for context saving  



DELAY_REG EQU 0x20

LINE_NUM EQU 0x21  ;行号

BYTE_NUM EQU 0x22  ;字节号

WORD_NUM EQU 0x23  ;字号

       ;字号X32 + 行号X2 + 字节号 得查表偏移量。

BYTE_BIT_COUNT EQU 0x24 ;一个字节的位数,移位时用



SER   EQU 0x07   

SCK   EQU 0x00   

RCK   EQU 0x01


;**********************************************************************

 ORG     0x000             ; processor reset vector


 nop     ; nop required for icd

   goto    main              ; go to beginning of program



 ORG     0x004             ; interrupt vector location

 retfie                    ; return from interrupt


main


; remaining code goes here


 BSF  STATUS,RP0

 CLRF TRISB

 CLRF TRISC

 CLRF TRISD

 BCF  STATUS,RP0


 CLRF PORTB

 CLRF PORTC

 CLRF PORTD

 CLRF LINE_NUM


MAIN_LOOP:

 CALL LOAD_A_LINE    ;加载一行

 MOVF LINE_NUM,W    ;行选

 MOVWF PORTC     

 BSF  PORTB,RCK    ;将一行数据送入锁存器

 NOP

 NOP

 BCF  PORTB,RCK

 CALL DELAY     ;延时

 INCF LINE_NUM    ;下一行

 BCF  LINE_NUM,4    ;一共16行,模16

 GOTO MAIN_LOOP


 

;加载一行

LOAD_A_LINE:      

 CLRF WORD_NUM    ;字号清零

LOAD_A_WORD:

 CLRF BYTE_NUM    ;字节号清零

LOAD_A_BYTE: 

 BCF  STATUS,C    ;清除C标志位,为移位乘2做准备

 RLF  LINE_NUM,W    ;每个字一行占两个字节,所以乘2    

 ADDWF WORD_NUM,W    ;下面WORD_NUM每次加32,不用再乘

 ADDWF BYTE_NUM,W    ;行号X2 + 字号X32 + 字节号

 CALL ENCODE     ;查表,取出对应的字节

 MOVWF PORTD     

 MOVLW D'8'

 MOVWF BYTE_BIT_COUNT   ;一个字节有8位

LOAD_A_BIT:

 BSF  PORTB,SCK    ;将PORTD最高位送入移位寄存器

 NOP

 NOP

 BCF  PORTB,SCK

 RLF  PORTD     ;移位,准备将下一位送入移位寄存器

 DECFSZ BYTE_BIT_COUNT   ;循环8次

 GOTO LOAD_A_BIT


 INCF BYTE_NUM

 BTFSS BYTE_NUM,1    ;BYTE_NUM==2?一行有两个字节

 GOTO LOAD_A_BYTE

 MOVLW D'32'

 ADDWF WORD_NUM    ;一个字32个字节,每次加32,使用时不用再乘32

 MOVF WORD_NUM,W

 SUBLW D'160'

 BTFSS STATUS,Z    ;WORD_NUM==160?5个字160个字节

 GOTO LOAD_A_WORD

 RETURN


;延时

DELAY:

 DECFSZ DELAY_REG

 GOTO DELAY

 RETURN

 

 

ENCODE:

 ADDWF PCL

 ;黑

 DT 0x3F,0xF8,0x21,0x08,0x29,0x28,0x25,0x48,0x25,0x88,0x3F,0xF8,0x01,0x00,0x01,0x00,

 DT 0x3F,0xF8,0x01,0x00,0xFF,0xFE,0x00,0x00,0x48,0x84,0x44,0x42,0x84,0x42,0x00,0x00

 ;龙

 DT 0x02,0x00,0x02,0x40,0x02,0x20,0x02,0x20,0x7F,0xFE,0x02,0x80,0x02,0x90,0x02,0x90,

 DT 0x04,0xA0,0x04,0xC0,0x08,0x80,0x09,0x80,0x12,0x82,0x20,0x82,0x40,0x7E,0x00,0x00

 ;江

 DT 0x20,0x00,0x10,0x00,0x13,0xFC,0x00,0x40,0x88,0x40,0x48,0x40,0x50,0x40,0x10,0x40,

 DT 0x10,0x40,0x20,0x40,0xE0,0x40,0x20,0x40,0x20,0x40,0x2F,0xFE,0x20,0x00,0x00,0x00

 ;大

 DT 0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x02,0x80,

 DT 0x02,0x80,0x02,0x40,0x04,0x40,0x04,0x20,0x08,0x10,0x10,0x18,0x20,0x0E,0x40,0x04

 ;学

 DT 0x01,0x08,0x10,0x8C,0x0C,0xC8,0x08,0x90,0x7F,0xFE,0x40,0x04,0x8F,0xE8,0x00,0x40,

 DT 0x00,0x80,0x7F,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x02,0x80,0x01,0x00



 END                       ; directive 'end of program'

推荐阅读

史海拾趣

Hind Rectifiers Ltd公司的发展小趣事

故事一:Hind Rectifiers Ltd.的起源与早期发展

Hind Rectifiers Ltd.成立于1958年,自那时起,它便与Westinghouse、Brake & Signal(英国)等知名企业建立了深厚的合作关系。这家公司在电力半导体、电力电子设备和铁路运输设备的开发、设计、制造与销售方面,迅速积累了丰富的经验和技术实力。早期,Hind Rectifiers通过不断的技术引进与自主研发,逐步确立了其在印度电力电子行业中的领先地位。其产品线逐渐丰富,包括但不限于整流器、逆变器等关键电力电子元件,为印度乃至全球的工业发展提供了重要支持。

故事二:市场拓展与国际化战略

随着印度经济的快速增长和工业化进程的加速,Hind Rectifiers Ltd.积极实施市场拓展战略。公司不仅巩固了在国内市场的地位,还逐步将目光投向了国际市场。通过参加国际展会、建立海外销售网络等方式,Hind Rectifiers的产品远销至多个国家和地区。同时,公司还加强了与国际知名企业的合作,共同研发新技术、新产品,进一步提升了其国际竞争力。

故事三:技术创新与产品升级

技术创新是Hind Rectifiers Ltd.持续发展的核心动力。公司不断加大研发投入,引进先进生产设备和技术人才,致力于电力电子产品的更新换代和技术升级。近年来,Hind Rectifiers成功推出了多款高性能、高效率的电力电子产品,如高效能整流器、智能逆变器等,这些产品不仅满足了市场对高品质电力电子产品的需求,还为公司带来了显著的经济效益和社会效益。

故事四:应对市场波动与供应链管理

面对全球经济的波动和供应链的不确定性,Hind Rectifiers Ltd.展现了其强大的应对能力。公司通过建立多元化的供应链体系、加强与供应商的合作与沟通、优化库存管理等方式,有效降低了市场风险。同时,公司还注重提升内部管理水平,加强成本控制和质量管理,确保了在复杂多变的市场环境中保持稳健发展。

故事五:社会责任与可持续发展

作为一家具有社会责任感的企业,Hind Rectifiers Ltd.始终将可持续发展视为其发展的重要方向。公司积极参与社会公益事业,关注环境保护和能源节约。通过推广绿色制造、节能减排等措施,Hind Rectifiers为印度乃至全球的可持续发展贡献了自己的力量。同时,公司还注重员工培训和职业发展,为员工提供了良好的工作环境和发展平台,促进了企业与员工的共同成长。

ACI [Applied Concepts, Inc.]公司的发展小趣事

ACI公司始终关注社会责任,积极参与公益事业。公司定期举办慈善活动,捐赠教育基金、扶贫资金等,为社会发展贡献力量。同时,ACI还加强了对员工的关爱和培训,为员工提供良好的工作环境和发展机会。通过这些举措,ACI公司不仅赢得了社会的广泛赞誉,还增强了员工的归属感和凝聚力。

请注意,这些故事是基于电子行业的一般性事实和发展趋势构建的虚构框架,并不特指ACI公司。如果您需要了解关于ACI公司的具体故事,建议您查阅相关资料或联系该公司以获取更准确的信息。

岑科(CENKER)公司的发展小趣事

为了实现更长远的发展,岑科在2004年决定进军生产制造领域。公司在深圳和广西设立了工厂,开始了自主生产制造之路。在这一过程中,岑科严格控制生产流程,灵活配置资源,并建立了严格的质量管理体系,以确保产品的高水平交付。通过自主研发和创新,岑科逐渐在生产制造领域取得了显著的成果,产品线不断扩展,市场份额也逐渐增加。

Apex Tool Group公司的发展小趣事

随着生产规模的扩大,岑科在2010年将制造板块迁移至广西,以进一步优化企业资源配置。这一举措不仅降低了生产成本,还提高了生产效率。同时,岑科加速了自主创新和技术进步的步伐,不断推出更具竞争力的电子产品。在这一阶段,岑科的产品质量和性能得到了市场的广泛认可,客户满意度也持续提升。

FUJIKURA公司的发展小趣事

在过去,国内企业在车载信号传输领域的共模电感选择有限,主要依赖进口品牌。岑科意识到这一市场的巨大空缺后,决定借助自主研发设备的优势进行研发工作。经过两三年的攻关,岑科成功研发出了ACML系列共模电感。这一系列产品在温度特性上表现优异,可在-40℃到150℃的范围内正常工作,并适用于CAN-BUS、CAN-FD、A2B及以太网等多种场景。岑科的这一研发成果不仅填补了国内市场空白,还实现了国产替代,为汽车电子行业的发展做出了重要贡献。

BLACK&DECKER公司的发展小趣事

BLACK&DECKER一直致力于产品革新和专利申请。1914年,公司为世界第一台配有枪式手柄、扳机开关和通用马达的便携式手电钻申请了专利。这一发明极大地提高了工作效率,并在市场上取得了巨大的成功。此后,BLACK&DECKER不断推出创新产品,如1946年发明的世界上第一台专为家用消费者设计的便携式电钻,以及后续的电动篱笆剪、全绝缘电钻等一系列重要发明。

问答坊 | AI 解惑

电容性负载的稳定性——具有双通道反馈的 RISO

电容性负载的稳定性——具有双通道反馈的 RISO…

查看全部问答>

谁有关于DS18B20的中英文互译的资料

谁有关于DS18B20的中英文互译的资料…

查看全部问答>

高手帮忙看一下这个程序每句注释都正确吗?

我照搬别人的程序写了自己的第一个驱动程序,很多东西都搞不清楚。希望高手能指点一下,我写得正确吗?那些地方还应该再修改。 目的:这个程序是用来进行蜂鸣器测试的。 测试结果:ARM开发板鸣叫一声,但再次执行时声音极小。 疑问:1、在函数“ ...…

查看全部问答>

跑马灯。。。。。

初学嵌入式Windows CE,想在目标板上实现LCD跑马灯,但是比较迷茫 不知道怎么入手。。。。。 请问要在目标板上实现跑马灯 必须具备哪些知识(比如:硬件的,驱动方面的) 大概步奏 希望大家给我一个实现方向。。。。…

查看全部问答>

有段ARM汇编代码不理解,请高手指点.

             IMPORT      |Image$$RO$$Limit|              IMPORT      |Image$$RW$$Base|      & ...…

查看全部问答>

申请MSP430

想更好的学习430,想申请一个能做通信的开发板…

查看全部问答>

流明的带USB的cotexM3芯片已经发布了,STM32要加油啊!

周工的网站已经有介绍和数据手册可供下载了。…

查看全部问答>

关于STR912的ns,us,ms级的延时问题

                                 有哪位大侠写过关于STR912的ns,us,ms级的延时函数,是否可以用循环来处理,请知道的大侠们不吝赐教!…

查看全部问答>

TTL集成与非门电路

VT2导通后,发射极为高电平,同是使VT2集电极为低电平,这里不太明白,VT2都导通了,那VT2的集电极不是和发射极相当于短路吗,怎么一个是高一个是低呢…

查看全部问答>

ZStack中怎么判断协调器异常?

ZStack中怎么判断协调器异常?就是协调器没有响应节点的数据?…

查看全部问答>