利用51单片机统计脉冲个数,即时输出显示
;利用51单片机设计一个计数显示系统,要求8个数码管显示T1输入脉冲的个数。
;最好用汇编语言,加注释,尽量别太复杂。尽量快些哈!
;悬赏分:30 | 解决时间:2011-7-20 19:15 |
;=====================================================
;最佳答案:
;题目要求在T1端输入脉冲,统计脉冲个数,并即时输出显示,使用8个LED数码管,显示:0000 0000~9999 9999。
;计数、显示,很简单的。虽然要求的位数较多,但是循环一下,也就可以了。
;程序用汇编汇编语言编写好了,指令不超过50行,太简单了。
;题目只是要求在T1端输入脉冲,并没有指出显示电路,那么就设计一个仿真实验电路如下:
;图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/fcef1a2510f701644d088dd2.html#
;仿真图中使用了两种虚拟仪器:“信号发生器”和“计数器”,通过按键即可输入单次脉冲和连续脉冲。
;全部程序如下:
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%
提问者对于答案的评价:非常感谢!
原题网址:http://zhidao.baidu.com/question/293572049.html
;=====================================================
后记:
仿真时,信号发生器有个控制框,可以选择信号的输出频率、幅度等,屏幕截图如下:
图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/1bc67519aff072d14bedbcb6.html#
在仿真时,计数器是上升沿计数,而单片机是下降沿计数,所以,两者显示的数字,有一个时间差。
另外,刚刚启动时,计数器总要先计一个数,不知如何控制才好。
利用51单片机统计脉冲个数,即时输出显示相关推荐
- 利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第一篇“显示贪吃蛇”
利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第一篇"显示贪吃蛇" 完整的项目链接: https://github.com/linxinloningg/51_chip_ ...
- 利用51单片机演奏《猪猪侠》
今天的目标很明确,那就是我们如何使用51单片机演奏一首音乐. 先听一下演奏效果: 51单片机播放<猪猪侠>音乐(音频) 1.有一个很重要的问题,那就是如何将乐谱转换51单片机的16进制或十 ...
- 利用51单片机制作一个秒表的详细过程
利用51单片机制作一个秒表的详细过程 前面的话: 和很多朋友一样,在学51单片机的过程中我们肯定会涉及到制作一个秒表,牵涉到把单片机的多个部分组合起来使用,这对于我们初学者来说可能显得有些困难,我同大 ...
- 利用51单片机制作从左至右再从右制作的的流水灯
利用51单片机制作从左至右再从右制作的的流水灯 简述: 1.打开keil 4,新建工程 2.选择Atmel ,选择AT89C51芯片 3.新建文件另存为,将文件名末尾加上".c" ...
- c51单片机秒表程序c语言,利用51单片机制作秒表的详细过程
前面的话: 和很多朋友一样,在学51单片机的过程中我们肯定会涉及到制作一个秒表,牵涉到把单片机的多个部分组合起来使用,这对于我们初学者来说可能显得有些困难,我同大家一样,百思不得其解,最后头都弄大了才 ...
- 利用51单片机+0.96寸iic接口oled显示图片或动图
利用51单片机+0.96寸iic接口oled显示图片或动图 前言:之前讲过如何使用oled显示数字以及字符,但并未讲述如何显示BMP格式的图片, 这篇将在之前的基础上加以封装一些函数用来显示图片 硬件 ...
- 利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第二篇“自动运行函数”
利用51单片机+hc595芯片配合在led点阵上玩贪吃蛇 第二篇"自动运行函数" 完整的项目链接: https://github.com/linxinloningg/51_chip ...
- 用c语言编写振铃检测程序,利用51单片机2进8出的程控交换机C语言源码
这个是利用51单片机加上超长的语音芯片合为一体的2进8出的程控交换机C语言源码 /************************** 6-23日 修改总台来显 ******************* ...
- 基于51单片机的自动浇花系统设计/基于51单片机的智能抽奖系统控制设计/基于51单片机的数字时钟与日历显示控制设计 毕业设计
1147基于51单片机的自动浇花系统设计 设计思路:通湿度传感器实时监测湿度,通过LCD显示出实时的湿度采集值,可以通过按键设定目标界限,当达到这个界限值时,浇花系统的电机装置运行. 电路包含:LCD ...
最新文章
- Java 之String、StringBuffer 和 StringBuilder 三者区别介绍
- 云服务器木马文件该如何应对,云服务器被入侵如何处理
- python和c++哪个好学-C++和Python哪一个更好?
- UA MATH ECE636 信息论10 Group Testing简介
- 邮箱解决任务间资源共享问题
- 我的世界服务器端口文件夹,我的世界手机版服务器ip端口地址大全
- 【计算机网络】手动配置hosts文件解决使用GitHub和Coursera网站加载慢/卡的问题
- 如果唐代诗人有微博,简直就是真实版「梦回大唐」
- 解码(五):sws_getContext和sws_scale像素格式和尺寸转换函数详解
- LeetCode 71. Simplify Path
- uva 1395 Silm Span 【MST-Kruskal】
- VMware下安装Raspbian树莓派系统
- apache 服务器的 Option Indexes,AllowOverride,Order Allow,Deny 详解
- 充分利用计算机研究GIS,GIS在水文水资源领域中的应用研究
- 经济观察评论:现在是筑底时期, 对复苏仍可以保持乐观!]
- Spss-系统聚类手算实操
- Linux第二课 文件系统目录结构
- Android摇一摇振动效果Demo
- Java案例:因数平方和
- Mac OS编译C++库(XCode)