输入电话号码数码管流动显示protues仿真 汇编代码

功能:可以通过矩阵键盘按键输入电话号码

一次只能输入一位

按确定键之后可以输入下一位

按下播放键之后数码管流动显示

播放之后不能返回

keil代码

AUXR DATA 08EH;辅助功能寄存器SH_CP EQU P2.0
DSSSS EQU P2.1
ST_CP EQU P2.2DATA_INPUT  EQU 41H;片内rom直接访问
SEG_SELECT  EQU 42H
SCANCODE  EQU 44H
KEY_INDEX EQU 45H
KEY_NUM   EQU 46HTEL_NUM_ADR EQU 6DH
TEL_BLANK2  EQU 5CH
TEL_BLANK1  EQU 5BH
TEL_NUM_10  EQU 5AH
TEL_NUM_09  EQU 59H
TEL_NUM_08  EQU 58H
TEL_NUM_07  EQU 57H
TEL_NUM_06  EQU 56H
TEL_NUM_05  EQU 55H
TEL_NUM_04  EQU 54H
TEL_NUM_03  EQU 53H
TEL_NUM_02  EQU 52H
TEL_NUM_01  EQU 51H
TEL_NUM_00  EQU 50H
TEL_BLANK0  EQU 4FHCOUNT_1 EQU 60H
COUNT_2 EQU 61HORG 0000H
LJMP START;定时器中断
ORG 000BH
LJMP TIMER0ORG 0100H
START:MOV TEL_BLANK0,#10HMOV TEL_NUM_00,#01HMOV TEL_NUM_01,#03HMOV TEL_NUM_02,#01HMOV TEL_NUM_03,#05HMOV TEL_NUM_04,#05HMOV TEL_NUM_05,#08HMOV TEL_NUM_06,#02HMOV TEL_NUM_07,#05HMOV TEL_NUM_08,#09HMOV TEL_NUM_09,#01HMOV TEL_NUM_10,#02HMOV TEL_BLANK1,#10HMOV TEL_BLANK2,#10HMOV TEL_NUM_ADR,#TEL_NUM_00;获取号码的一个地址LCALL TIMER0INIT;MOV COUNT_1,#60HMAIN_LOOP:;矩阵键盘检测LCALL KEYSCAN;显示一位静态数码管LCALL DS_ONE_SEGLJMP MAIN_LOOPSECOND_LOOP:;动态显示MOV 43H,#08H;DS_LOOP:MOV A,43HCLR C;消除借位标志SUBB A,#01H;查表位置消除偏移MOV DPTR,#SEG_COMMOVC A,@A+DPTRMOV SEG_SELECT,A;查表选择数码管MOV A,43HCLR C;消除借位标志SUBB A,#01H;查表位置消除偏移ADD A,TEL_NUM_ADR;获取对应键值地址MOV R1,AMOV DATA_INPUT,@R1LCALL HC_SER;LCALL DELAY3MS;加3ms延时来延时显示MOV DATA_INPUT, #10H;消隐LCALL HC_SERDJNZ 43H,DS_LOOP;减1不为0转移,可以转移1次LJMP SECOND_LOOP;显示一位静态数码管
DS_ONE_SEG:MOV SEG_SELECT,#0FEH;选择数码管MOV R1,TEL_NUM_ADR;获取对应键值地址MOV DATA_INPUT,@R1LCALL HC_SERRETTIMER0INIT:           ;1毫秒@11.0592MHzORL AUXR,#80H       ;定时器时钟1T模式ANL TMOD,#0F0H        ;设置定时器模式MOV TL0,#0CDH       ;设置定时初始值MOV TH0,#0D4H       ;设置定时初始值CLR TF0         ;清除TF0标志SETB TR0        ;定时器0开始计时SETB ET0//SETB EA;开启中断RETTIMER0:;计时2sPUSH ACCPUSH PSWDJNZ COUNT_1,UNFINSH_COUNTMOV COUNT_1,#60H;DJNZ COUNT_2,UNFINSH_COUNT;MOV COUNT_2,#14HCPL P2.4MOV A,TEL_NUM_ADRCJNE A,#TEL_NUM_04,FINSH_INCMOV TEL_NUM_ADR,#4EHFINSH_INC:INC TEL_NUM_ADRUNFINSH_COUNT:POP PSWPOP ACCRETI;74HC595数字输入,串行输出
;A是十进制数字
;转换成对应码段
FIND_HC:MOV DPTR,#SEG_CC;查表操作MOVC A,@A+DPTRRET;入口SEG_SELECT,DATA_INPUT,并行输出
;使用到的内存变量40H
;74HC595芯片输出模块
;两块芯片串联
HC_SER:;高八位数据先输入MOV A,SEG_SELECTMOV 40H,#08HHC_LOOP1:RLC A;A左移MOV DSSSS,C;串行输入CLR SH_CP;上升沿串行输出一位SETB SH_CP;DJNZ 40H,HC_LOOP1;减1不为0转移,可以转移7次;第二位数码管显示;低八位数据后输入MOV A,DATA_INPUT;将对应输入数据转换为码段LCALL FIND_HCMOV 40H,#08HHC_LOOP2:RLC A;A左移MOV DSSSS,C;串行输入CLR SH_CP;上升沿串行输出一位SETB SH_CP;DJNZ 40H,HC_LOOP2;减1不为0转移,可以转移7次CLR ST_CP;上升沿并行输出SETB ST_CP;RET;矩阵键盘检测
KEYSCAN:MOV P1,#0FH;读行高四位,先送低四位高电平MOV A,P1CJNE A,#0FH,KEY_DOWNRET;无键按下KEY_DOWN:;LCALL DELAY10MSMOV A,P1CJNE A,#0FH,KEY_REZRET;无键按下KEY_REZ:MOV SCANCODE,AMOV P1,#0F0HNOP NOPMOV A,P1ADD A,SCANCODEMOV SCANCODE,AKEY_UP:MOV A,P1CJNE A,#0F0H,KEY_UP;LCALL DELAY10MSMOV A,P1CJNE A,#0F0H,KEY_UPMOV DPTR,#KEY_CODEMOV KEY_INDEX,#0KEY_LOOP:MOV A,KEY_INDEXMOVC A,@A+DPTRCJNE A,SCANCODE,NEXTKEYMOV KEY_NUM,KEY_INDEXMOV A,KEY_NUMCJNE A,#0AH,NUM_SEC_DS;按键为10,选择下一个MOV A,TEL_NUM_ADRCJNE A,#TEL_BLANK1,FINSH_INC1MOV TEL_NUM_ADR,#TEL_BLANK0FINSH_INC1:INC TEL_NUM_ADRRETNUM_SEC_DS:CJNE A,#0BH,NUM_SEC;按键为11,选择流动显示MOV TEL_NUM_ADR,#TEL_BLANK0SETB EA;开启中断LJMP SECOND_LOOPNUM_SEC:MOV R0,TEL_NUM_ADRMOV @R0,ARETNEXTKEY:INC KEY_INDEXLJMP KEY_LOOPDELAY3MS:            ;@11.0592MHzNOPNOPNOPNOPPUSH 30HPUSH 31HMOV 30H,#26MOV 31H,#204
NEXT2:DJNZ 31H,NEXT2DJNZ 30H,NEXT2POP 31HPOP 30HRET;共阴极数码管码段表
SEG_CC:
DB 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07
DB 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
DB 0x00SEG_COM:
DB 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7FKEY_CODE:
DB  0EEH, 0EDH, 0EBH, 0E7H, 0DEH, 0DDH, 0DBH, 0D7H
DB  0BEH, 0BDH, 0BBH, 0B7H, 07EH, 07DH, 07BH, 077H
END

protued仿真截图

实现思路

矩阵键盘线反转法检测

数码管通过74HC595两片串联驱动

输入位选和段选数据之后并行显示(理论上来讲不需要消隐)

实现思路

矩阵键盘线反转法检测

数码管通过74HC595两片串联驱动

输入位选和段选数据之后并行显示(理论上来讲不需要消隐)

然后通过按键的输入值进行各种操作

输入电话号码数码管流动显示protues仿真 汇编代码相关推荐

  1. 三、51单片机 使用Proteus仿真实现8位数码管滚动显示(仿真及代码)

    1,目标 使用51单片机控制8位数码管,分别滚动显示单个数字0~7,程序运行之后,单片机先控制最左边的第一位数码管显示0,其他的熄灭,延时一段时间之后,控制左边第二个数码管显示1,其它熄灭,以此类推, ...

  2. FPGA数码管流动显示学号

    主要功能:通过FPGA的6个数码管流动显示7位学号 工程放在下边 链接:https://pan.baidu.com/s/14ILTfXZ5AZa98r7p7w39UQ 提取码:3aho

  3. 51单片机定时器累加计数(000-999)+4位数码管(循环显示)+Proteus仿真

    51单片机定时器累加计数(000-999)+4位数码管(循环显示)+Proteus仿真 说明:为什么采用4位的数码管,因为Proteus里面没有3位的数码管器件可选,也可以采用2+1,或者1+1+1, ...

  4. 51单片机16×16点阵led屏滚动显示+protues仿真+按键功能(史上最全)

    文章目录 前言 一.protues仿真 安装软件 绘制原理图 二.keil程序编写 1. 三.仿真示例 前言 本次任务:基于protues仿真实现at89c51控制16×16点阵led屏实现流水文字滚 ...

  5. 数码管流动显示(自己的单片机)

    /********************************************************************************** * 标题: 试验数码管上显示数字 ...

  6. 基于ADC0832模数转换+数码管/LCD显示+proteus仿真

    目录 前言: ADC0832时序图: ADC0832模数转换 数码管显示函数代码 LCD1602显示函数 主函数 proteus仿真图 前言: 模数A/D转换理论知识持续学习:2022--7--24 ...

  7. 单片机课设-数码管倒计时显示(仿真图,代码全)

    proteus单片机数码管显示 要求: 单片机AT89C51外接6个共阳LED数码管,P3.0和P3.1引脚分别外接一独立按键.开机时数码管显示123456,在按下P3.0按键时,数值减一,在按下P3 ...

  8. c语言数码管流动显示一个数,51单片机数码管动态显示 - 数码管动态扫描显示01234567程序(三种方案)...

    数码管动态扫描显示01234567程序二--51单片机动态显示共阳数码管01234567 原理图 c语言程序 程序如下: #include #define uint unsigned int #def ...

  9. 实验五 数码管扫描显示电路

    5.1实验目的 熟练掌握时序逻辑电路的设计.掌握计数器,数码管扫描显示电路以及秒表的原理.实现并仿真: 1)数码管扫描显示电路: 2)秒表电路. 5.2实验内容 (1)按照要求的解决方案,将四个输入在 ...

最新文章

  1. 女生适合发型测试软件,推荐10款适合女生用的APP,绝对让你感到惊艳
  2. 小说的逻辑与反逻辑_毕飞宇北大演讲:“走”与“走”——小说内部的逻辑与反逻辑...
  3. 【算法竞赛学习】数据分析达人赛3:汽车产品聚类分析
  4. js如何提高for循环的效率_如何提高rv减速机的散热效率
  5. 【转载】linux tail命令的使用方法详解
  6. c语言程序设计基础第三版答案,清华大学出版社-图书详情-《C语言程序设计上机指导与习题解答(第3版)》...
  7. SI4463模块技术研究(结束)
  8. 浅谈各大搜索引擎蜘蛛
  9. 工作日志Android,android Locat工作日志的使用
  10. excel相乘再相加_excel现乘积再求和如何自动生成
  11. rust编程 UI框架 -druid -Selector选择器
  12. 浅谈软件测试行业的前景,就业方向和薪资待遇
  13. Promise构造函数的方法1:Promise.resolve()和Promsie.reject()
  14. 《大数据时代:生活、工作与思维的大变革》读书笔记3(完)
  15. 2020年远程面试全攻略
  16. 现在智能机怎么玩Java游戏,教你如何用安卓机玩JAVA老游戏
  17. 学计算机要学数学么,学计算机数学要求高吗 数学不好怎么办?
  18. IE11离线安装包ie离线升级ie11离线安装ie11补丁
  19. VRRP(虚拟路由器冗余协议)
  20. 人工智能的进展、挑战与未来

热门文章

  1. Python小程序——将彩色图片转变为手绘效果
  2. Echarts图表清空
  3. chatgpt对接微信公众号
  4. A+精准营销软件系列之Q群营销助手软件功能说明
  5. Padans Timedelta时间差
  6. 1号店与京东双剑合璧 否认10月“关门”
  7. python制作会动的表情包_只要3步,菜鸟也能用Python做个逗逼的表情包
  8. volatile能保持线程安全吗_Java线程安全(volatile synchronized)
  9. python os复制文件_用Python复制文件的九种方法
  10. PD虚拟机 18 for Mac全新功能介绍(支持m1/macos13系统)