在proteus上模拟按键,需要用软件消抖动码?

mudongwu 2013-05-21 03:50:21
**********汇编**********
ORG 0000H
SJMP BEGIN
ORG 0003H
SJMP IN0T
ORG 0030H

BEGIN:
SETB EA
SETB EX0
SETB ET0

SETB P1.0
SJMP $

IN0T:CPL P1.0

RETI
*************************

我在P1.0接一个二极管,在INT0接了一个按钮!
本希望:按一下LED取反一次!但是好像单片机连续取反了好多次!

做延时能解决问题!!但以前在不做延时去抖动,在中断中调用一个子程序也能解决问题!

...全文
588 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaobr17622 2013-05-21
  • 打赏
  • 举报
回复
额,你自己检测的还挺快
mudongwu 2013-05-21
  • 打赏
  • 举报
回复
我回答这个问题!proteus仿真时,不需要延时,刚才是把SETB IT0写成SETB ETO!!一直得到不正确的结果~
单片机课程设计 题 目 基于单片机的 多功能秒表 目 录 1 设计概述 1 1.1 设计目的 1 1.2 设计要求 1 1.3 设计意义 1 2 系统总体方案及硬件设计 2 2.1 系统总体方案 2 2.2 硬件设计 2 2.3 时钟电路 3 2.4 复位电路 4 2.5 按键电路 5 2.6 显示电路 6 3 软件设计 7 3.1 设计思路 7 3.2 程序流程框图设计 7 4 PROTEUS软件仿真 9 5 课程设计体会 10 参考文献 12 附录1:总体电路原理图 13 附录2:元器件清单 14 附录3:实物图 15 附录4:源程序 16 1 设计概述 1.1 设计目的 设计一个单片机控制的秒表系统。利用单片机的定时器/计数器定时和记数的原理, 结合显示电路、LED数管以及按键来设计秒表。将软、硬件有机地结合起来,使得系统 能够正确地进行计时,同时具有开始/暂停,记录,上翻下翻,清零等功能。 1.2 设计要求 (1)共四位LED显示,显示时间为00:00~59.99 (2)共五个按键,分别是开始/暂停,记录,上翻,下翻,清零键; (3)能同时记录多个相对独立的时间并分别显示; (4)按上下翻按钮查看多个不同的计时值; 1.3 设计意义 (1)通过本次课程设计可以使我们进一步熟悉和掌握单片机内部结构和工作原理, 了解单片机应用系统设计的基本步骤和方法。 (2)通过利用AT89C51单片机,理解单片机在自动化仪表中的作用以及掌握单片机的 编程方法。 (3)通过设计一个简单的实际应用输入及显示模拟系统,掌握单片机仿真软件PROT EUS的使用方法。 (4)该实验通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统,拥 有正确的计时、暂停、清零、功能,并能同时记录多个相对独立的时间利用翻页按钮查看 多个不同的计时值,该种秒表在现实生活中应用广泛,具有现实意义。 2 系统总体方案及硬件设计 2.1 系统总体方案 本系统采用AT89C51单片机为中心器件,利用其定时器/计数器定时和记数的原理,结 合硬件电路如电源电路,晶振电路,复位电路,显示电路,以及一些按键电路等来设计 计时器,将软、硬件有机地结合起来。其中软件系统采用汇编语言编写程序,包括显示 ,计数,中断,延时,按键抖程序等,并在编程软件中调试运行,硬件系统利用PROT EUS强大的功能来实现,简单且易于观察,在仿真中就可以观察到实际的工作状态。 2.2 硬件设计 MCS- 51系列单片机是8位单片机产品,89C51是其中的典型代表,基本模块包括以下几个部分 : (1)CPU:89C51的CPU是8位的,另外89C51内部有1个位处理器 (2)R0M:4KB的片内程序存储器,存放开发调试完成的应用程序 (3)RAM:256B的片内数据存储器,容量小,但作用大 (4)I/O口:P0-P3,共4个口32条双向且可位寻址的I/O口线 (5)中断系统:共5个中断源,3个内部中断,2个外部中断 (6)定时器/计数器:2个16位的可编程定时器/计数器 (7)通用串行口:全双工通用异步接收器/发送器 (8)振荡器:89C51的外接晶振与内部时钟振荡器为CPU提供时钟信号 (9)总线控制:89C51对外提供若干控制总线,便于系统扩展 89C51单片机引脚图如图2-1所示: 图2-1 89C51单片机引脚图 2.3 时钟电路 89C51芯片内部有一个高增益反相放大器,用于构成振荡器。引线 XTAL1和XTAL2分别为反向放大器的输入和输出,两端跨接石英晶体及两个电容就可构成 稳定的自激振荡器。 这里,我们选用51单片机12MHZ的内部振荡方式,电容器C1,C2起稳定振荡频率,并 对振荡频率有微调作用,C1和C2可在20- 100PF之间取值,这里取33P,则时钟电路图如图2-2所示: 图2-2 时钟电路图 2.4 复位电路 采用上电加按键复位电路,上电后,由于电容充电,使RST持续一段高电平时间。当 单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电加 按键复位的操作。复位电路如图2-3所示: 图2-3 复位电路 2.5 按键电路 在按键电路中,我们可以在I/O口上直接接按键,或者通过I/O口设计一个键盘,然后 通过键盘扫描程序判断是否有键按下等。键盘扫描电路节省I/O口,但编程有些复杂,在 这里,由于我们所用的按键较少,且系统是一个小系统,有足够的I/O口可以使用,为了 使程序简化,我们采用按键电路,用部分P1口做开关,P1.0开始/暂停,P1.1记录,P1. 2上翻,P1.3下翻,P1.4清零。对于按键的设计,采用了防抖动的程序设计,使系统的性 能得到进一步的提升。当按键被按下时,相应的引脚被拉低,经扫描后,获得键值,并 执行键功能程序,因此按下不

27,383

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧