首页 > 应用 > 单片机应用
[导读]
;利用51单片机设计一个计数显示系统,要求8个数码管显示T1输入脉冲的个数。;最好用汇编语言,加注释,尽量别太复杂。尽量快些哈!;悬赏分:30 | 解决时间:2011-7-20 19:15 |;========================

;利用51单片机设计一个计数显示系统,要求8个数码管显示T1输入脉冲的个数。
;最好用汇编语言,加注释,尽量别太复杂。尽量快些哈!
;悬赏分:30 | 解决时间:2011-7-20 19:15 |
;=====================================================
;最佳答案:
;题目要求在T1端输入脉冲,统计脉冲个数,并即时输出显示,使用8个LED数码管,显示:0000 0000~9999 9999。
;计数、显示,很简单的。虽然要求的位数较多,但是循环一下,也就可以了。
;程序用汇编汇编语言编写好了,指令不超过50行,太简单了。
;题目只是要求在T1端输入脉冲,并没有指出显示电路,那么就设计一个仿真实验电路如下:

本文引用地址: http://www.21ic.com/app/mcu/201806/764429.htm


;仿真图中使用了两种虚拟仪器:“信号发生器”和“计数器”,通过按键即可输入单次脉冲和连续脉冲。

;全部程序如下:

NUM_B EQU 30H ;计数、显示单元起始地址
NUM_N EQU 8 ;计数、显示单元的字节数

ORG 0000H
JMP START
ORG 001BH
JMP T1_INT
;------------------------
START:
MOV TMOD, #60H ;T1计数方式2
MOV TH1, #255 ;初始值为FF
MOV TL1, #255 ;当收到一个输入,立刻引起中断
SETB TR1 ;启动T1
MOV IE, #10001000B;允许中断
MOV SP, #40H ;设置堆栈
;------------------------
M_LOOP:
CALL DISP
SJMP M_LOOP
;------------------------
DISP:
MOV R0, #NUM_B ;30H
MOV R2, #1 ;先显示最低位
D_LOOP:
MOV A, @R0
ADD A, #(D_TAB - $ - 3)
MOVC A, @A + PC
MOV P2, #0 ;关闭显示,消隐
MOV P0, A ;输出段码
MOV P2, R2 ;输出位码
CALL DL1MS
MOV A, R2 ;修改位码
RL A
MOV R2, A
INC R0 ;修改显示指针
CJNE R0, #NUM_B + NUM_N, D_LOOP
RET
;------------------------
D_TAB: ;共阳极段码
DB 0C0H,0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H
DB 80H, 90H, 88H, 83H,0C6H,0A1H, 86H, 8EH,0FFH;FF是空白的代码
;------------------------
DL1MS: ;延时
MOV R7, #242
DJNZ R7, $
DJNZ R7, $
RET
;------------------------
T1_INT: ;T1中断程序
PUSH PSW ;保护现场
SETB RS0 ;换用工作区
MOV R0, #NUM_B
T1_LOOP:
INC @R0 ;数字加一
CJNE @R0, #10, T1_END ;不到10就退出
MOV @R0, #0 ;到10就清零
INC R0 ;转去下一位
CJNE R0, #NUM_B + NUM_N, T1_LOOP
T1_END:
POP PSW ;恢复现场
RETI
;------------------------
END
;=====================================================
回答时间:2011-7-18 07:56
回答者: 做而论道 | 十五级  采纳率:43%
提问者对于答案的评价:非常感谢!
;=====================================================
后记:
仿真时,信号发生器有个控制框,可以选择信号的输出频率、幅度等,屏幕截图如下:


在仿真时,计数器是上升沿计数,而单片机是下降沿计数,所以,两者显示的数字,有一个时间差。
另外,刚刚启动时,计数器总要先计一个数,不知如何控制才好。


换一批

延伸阅读

[单片机应用] avr单片机proteus仿真第四课:控制继电器

avr单片机proteus仿真第四课:控制继电器

继电器(Relay),作用是用弱电控制强电。比如,我们用avr单片控制一个220V电压的灯泡,这就必须用到继电器。本课用avr单片机来控制继电器的吸合与断开。Proteus仿真实验器件:1 atmega128一块2 button,按键一个3......

关键字:avr单片机 proteus仿真 控制继电器

[单片机应用] PIC32MX单片机外设库使用(Ⅰ)- 系统时钟及I/O口基本设置

PIC32MX单片机外设库使用(Ⅰ)- 系统时钟及I/O口基本设置

开发环境:MAPLAB X IDE v1.85编译器:MPLAB XC 321.使用说明:PIC32外设库提供用于设置和控制32位外设的函数和宏。希望使用外设库的应用程序只需在其源文件中包含一个头文件即可访问任意受支持的函数和宏。 备注:......

关键字:PIC32MX 单片机 外设库 系统时钟 基本设置

[单片机应用] 51单片机学习笔记:定时器产生PWM可调方波,控制led灯亮度

51单片机学习笔记:定时器产生PWM可调方波,控制led灯亮度

使用定时器T0产生PWM方波,用按键调整占空比,20级可调控制led灯的亮度等级.C代码#include"my51.h"#include"timer0.h"#definegrading20//亮度20......

关键字:51单片机 定时器 PWM 可调方波 led灯亮度

[单片机应用] 单片机 Modbus 多机通信程序设计

单片机 Modbus 多机通信程序设计

给从机下发不同的指令,从机去执行不同的操作,这个就是判断一下功能码即可,和我们前边学的实用串口例程是类似的。多机通信,无非就是添加了一个设备地址判断而已,难度也不大。我们找了一个 Modbus 调试精灵,通过......

关键字:单片机 Modbus 多机通信

[单片机应用] STC单片机掉电断电失电瞬间EEPROM数据保存处理办法

STC单片机掉电断电失电瞬间EEPROM数据保存处理办法

  由于客户在请人设计开发一设备,但是设备用户处总停电,造成设备及其周边耗材损耗严重,因此请我司在现有STC为主要芯片的基础上做掉电瞬间EEPROM里的20个参数保存,上电后通过读取EEPROM中的参数回到掉电的状态,......

关键字:STC单片机 掉电断电 失电瞬间 EEPROM 数据保存

[单片机应用] 51单片机(STC89C52RC)小综合实验

51单片机(STC89C52RC)小综合实验

  这个实验包含以下几个内容:51单片机最小系统单片机外接继电器整流桥的使用lm393电压比较器的使用  首先先上实验结果图:前面两个继电器,中间是最小系统,最下脚是整流器和lm393电压比较器.好,下面来说这个板子制......

关键字:51单片机 STC89C52RC 小综合实验

[单片机应用] 单片机与PC之间串行通信实验 仿真及程序

单片机与PC之间串行通信实验 仿真及程序

单片机与PC之间串行通信实验作业 包括DSN .C .HEX文件源程序:#include sbit button=P3^5; void init_tx() {TMOD=0x20; TH1=0xfd; TL1=0xfd; ......

关键字:单片机 PC 串行通信

[测试测量] 投入式液位计产品特点及使用维护注意事项

投入式液位计产品特点及使用维护注意事项

投入式液位计是根据测量液体的静态压力与此所测量液体介质的高度成正比的原理,采用扩散硅或陶瓷敏感元件的压阻效应,通过增加温度补偿和线性校正,此所测量物理量变化转换成为4-20mADC标准电流信号输出,通过此标准......

关键字:投入式 液位计 产品特点 注意事项

我 要 评 论

网友评论

芯闻号

技术子站

更多

项目外包

更多

推荐博客