流水灯控制实验报告及程序.doc

上传人:scccc 文档编号:13034535 上传时间:2021-12-12 格式:DOC 页数:7 大小:157KB
返回 下载 相关 举报
流水灯控制实验报告及程序.doc_第1页
第1页 / 共7页
流水灯控制实验报告及程序.doc_第2页
第2页 / 共7页
流水灯控制实验报告及程序.doc_第3页
第3页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《流水灯控制实验报告及程序.doc》由会员分享,可在线阅读,更多相关《流水灯控制实验报告及程序.doc(7页珍藏版)》请在三一文库上搜索。

1、流水灯控制实验报告及程序实验三流水灯控制实验姓名专业通信工程学号 成绩一、实验目的1. 掌握Keil C51软件与protues软件联合仿真调试的方法;2. 掌握如何使用程序与查表等方法实现流水效果;3. 掌握按键去抖原理及处理方法。二、实验仪器与设备1. 微机1台2. Keil C51集成开发环境3. Proteus仿真软件三、实验内容1. 用Proteus设计一流水灯控制电路。利用 P1 口控制8个发光二级管L1 L8。P3.3 口接一按 键K1。参考电路如下图所示。其中 74LS240为八反响三态缓冲器/线驱动器。2. 用中断或查询方式编写程序,每按动一次K1键,演示不同的流水效果。若用

2、 KEY表示按键的次数,则其对应的流水效果如下: KEY=0: L1-L8 全亮; KEY=1 : L1-L8先全灭,然后自右向左单管点亮,如此循环; KEY=2 : L1-L8先全灭,然后自右向左依次点亮,如此循环; KEY=3 : L1-L8先全亮,然后自左向右依次熄灭,如此循环; KEY=4 : L1-L8先全灭,然后整体闪烁,如此循环; KEY=5 :自行设计效果。以上移位及闪烁时间间隔均设置为 0.3秒,按动5次按键后,再按键时,流水效果从头开始循 环。四、实验原理1. 按键去抖原理:通常按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号 波形如下图所示。由于机械触点的弹

3、性作用,一个按键开关在闭合时不会马上稳定的接通, 在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。抖动时间的 长短由按键的机械特性决定,一般为 510ms按键抖动会引起一次按键被误读多次。为了确保CPU寸键的一次闭合仅做一次处理,必须去除按键抖动。在键闭合稳定时,读取键的状态, 并且必须判别;在键释放稳定后,再作处理。按键的抖动,可用硬件或软件两种方法消除。常用软件方法去抖动,即检测到按键闭合后执行一个510ms延时程序;让前沿抖动消失后,再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有按键按下。当检测到按键2. 74LS240八反相三态缓冲器/线驱动器引脚排列

4、图:SN74LS240Vo: X 1Y1 >4 m 2A32A2 g国i刑ii谄冋rii押i m ii議1冋订15 IA1 2Y4 142 2V3 U3 2Y2 U4 2Z1 GM?TRUTH TABLESSN74LS240INPUTSOUTPUTDii LH4LHLX(Z)H - 3H /CtX1? 创 + - -OA 代 T3;*X Z - M GH tmtrzzrc3. 中断原理:当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。 每次按键是一次外部中断,按下按键后,CPU利用s

5、witch case语句跳转到相应语句执行。五、实验步骤1. 用Proteus设计流水灯控制电路;2. 在Keil C51中编写流水灯控制程序,编译通过后,与Proteus联合调试;3. 按动K1键,观察是否达到演示效果;4. 试用中断和查询两种方式编写程序,比较二者区别。六、电路设计及调试1.实验电路3xg1918U1XTAL1XTAL2P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD422uFRSTP0.5/AD5P0.6/AD6P0.7/AD73938373635343332P2.0/A8U2:BR11k29PSEN30P2.1/A9P2.2/A10P2.3

6、/A11P2.4/A12P2.5/A132122_P1.0An“A0盘1.1A1k P5.2A1P7.3A319+5vALE31 pEAP1.0P2.1P3.2P4.3P5.4P6.5P7.6P8.7P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDY0Y1Y2Y397532324252627281011121314151617OE74LS240U2:AP1.4P1.5 A0 二P(16 A1 P178A3 -oOEY0Y1Y21816141274LS240自右向左单个点自右向左依次点自左

7、向右依次熄双灯循环右移2 程序设计与调试#in clude<reg51.h>#defi ne uchar un sig ned char#defi ne uint un sig ned intuchar i=O,j,k, m,n;uchar code table1=0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;亮二极管的代码uchar code table2=0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff;亮二极管的代码uchar code table3=0xff,0xfe,0xfc,0xf8,0

8、xf0,0xe0,0xc0,0x80,0x00;灭二极管的代码uchar code table4=0x00,0x03,0x06,0x0c,0x18,0x30,0x60,0xc0; void delay( uint a);void INT_1() in terrupt 2 _EX仁0;delay(20);EX仁1;if(i=6)i=0;void mai n()EA=1; /打开总中断EX仁1; /打开外部中断1IT仁1; /设置中断触发方式为下降沿触发方式while(1)switch(i)case 0:P1=0xff;break;case 1:P仁table1j;delay(500);j+; i

9、f(j=10) j=0;break;case 2:P1=table2k;delay(500);k+; if(k=10) k=0;break;case 3:P1=table3m;delay(500);m+; if(m=10) m=0;break;case 4:P1=0x00;delay(300);P1=P1;delay(300);break;case 5:P1=table4n;delay(500);n+; if(n=10) n=0;break;default:break;void delay( uint a)uchar b;for(a; a > 0; a-) /循环600*255次 机器在

10、这里执行需要一段时间也就达到了延时效果for(b = 255; b > 0; b-);在“ Options for target”的“ debug” 里选中“ Proteus VSM Simulator ” 并选择输出“ hex”文件进行联合调试。分别进行全速调试与单步调试,看是否出现编程所想要实现的效果。3. 实验结果按下不同的按键次数,执行不同的流水效果,自行设计效果为双灯循环右移。七、实验总结及问题通过本次流水灯控制实验,进一步掌握了 Keil C51软件与proteus联合仿真调试的方法,逐步 熟练了单步调试的方法。自己用中断方法完成了本次实验,也尝试用查询方法编写程序,知道中断 方法是在有中断请求时CPU再去处理,之前可一直忙于其他事情,而查询方法需一直查询标志位,CPU不能做其他事情,中断方法效率要比查询方式高而且较简单。第一次用按键控制电路,学习了按键的去抖原理及使用方法。在实验中,会出现未知效果,总体看来原因不明,只要进行单步调试就可找到问题所在。思考:如果不进行去抖处理,CPU可能会误判,按下后认为按键松开,多次执行相应程序,得不到想 要的控制效果。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1