实验二中断实验.docx

上传人:牧羊曲112 文档编号:5175159 上传时间:2023-06-11 格式:DOCX 页数:17 大小:435.70KB
返回 下载 相关 举报
实验二中断实验.docx_第1页
第1页 / 共17页
实验二中断实验.docx_第2页
第2页 / 共17页
实验二中断实验.docx_第3页
第3页 / 共17页
实验二中断实验.docx_第4页
第4页 / 共17页
实验二中断实验.docx_第5页
第5页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《实验二中断实验.docx》由会员分享,可在线阅读,更多相关《实验二中断实验.docx(17页珍藏版)》请在三一办公上搜索。

1、实验报告实验二中断实验学院:电信学院专业:电子信息科学与技术班级:_学生:学号:指导教师:实验时间:2014年4月30日实验二中断实验Mi一、实验目的1、掌握数码管的静态和动态扫描显示法。2、掌握单片机系统中断的原理及使用方法。3、理解键盘去抖动的原理。二、实验原理1. 发光二极管的工作原理发光二极管简称为LED(Light Emiting Diode)。通常所说的LED显示器由7 个发光二极管组成,因此也称之为七段LED显示器,其排列形状如图8.15(a) 所示。此外,显示器中还有一个小圆点型发光二极管(在图中以dp表示),用于 显示小数点。通过七段发光二极管亮暗的不同组合,可以显示多种数字

2、、字母以 及其它符合。LED显示器中的发光二极管共有两种连接方法,一种是共阴极连接,另一种 共阳极连接。其连接图如图8.15(b)所示。t1il:。1iio11电。 ifa1 Ig11业 o1 h=1fbe1:E 1 Gliza te 4&inzil=也图七段LED显示器使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符, 必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为 LED显示器提供的编码正好是一个字节。用LED显示器显示16进制数的编码 己列在表7-4所示。表 LED显示器16进制数编码字:型其阳源t俱其陶损代码0OCOH3FH1i:F9HU6H20

3、J14H5EH5OB OH4FH43 3H66H59 2H6HHE8 2HTHH7LUSH07Heson7FH字型共阳坡代码其削极代何330H6FHA湖7 7KB83HrcHc0C6H3 9KD5 EHESBHF8EH7LHAUFFH0 UH通常使用的LED显示器都是多位的。对多位LED显示器,通常采用动态 扫描的方法进行显示,即逐个循环点亮各位显示器。为了实现LED显示器的动态扫描除了要给显示器提供段码(字形编码)的 输入之外,还要对显示器加位的控制(控制LED显示器亮灭),这就是通常所说 的位控和段控。2 、中断知识在计算机系统中,中断可以由各种硬件设备产生,以便请求服务或报告故障等。 此

4、外,中断也可由处理器自身产生,例如,程序错误或对操作系统的请求做出响 应等。89C51的中断系统具有5个中断源,即2个外部中断、2个定时器中断 和1个串行中断。中断源入口地址INTo0003HT A0000BHINTi0013HT1001BHS0023H(三)、按键抖动抖动的原因:目前大部分按键或键盘都是利用机械触电的合、断作用。机械触 点在闭合及断开瞬间由于弹性作用的影响,在闭合及断开瞬间均有抖动过程,从而使电压 信号也出现抖动,抖动时间的长短与开关的机械特性有关,一般为510ms。而单片机对键盘 扫描一次仅需几百微妙。这样,将会对键盘扫描产生误判。为了保证单片机对按键闭合仅 作一次输入处理

5、,必须去除抖动的影响。去抖动的方法:1、外加硬件电路,用RS触发器或单稳态电路构成的去抖动电路,或键盘扩展专 用芯片。2、在检测按键按下时,执行约10ms的延时程序后(避开抖动前沿区域),再确 认按键是否仍然保持闭合状态。三、实验内容1、见图一,利用静态扫描显示法,让数码管显示数字6。(数码管元件7SEG-MPX1-CA,共阴极数码管)代码:#include #define uc unsigned char#define ui unsigned intvoid main()P0=0x7d;while(1)2、见图一,利用静态扫描显示法,让数码管显示数字0。间隔时间1秒后,显 示数字1。间隔时间

6、1秒后,显示数字2。 间隔时间1秒后,显示数字F。 间隔时间1秒后,显示数字0。周而复始,循环不息。图一代码:#include #define uc unsigned char#define ui unsigned intuc code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay(ui x)ui y;for(x;x0;x-)for(y=125;y0;y-);void main()uc i=0;while(1)P0=tablei;delay(10

7、00);i+;if(i=16)i=0;.-3、见图二,利用动态扫描显示法,让数码管显示数字1234。6606660XTALIFDJ.DaFn.D3FD.WD4-FU.MWM皿汹网HSTP07lXDrAiescsiPZUfflC pzm UEftinF8EUP2Al? P2fM.I L PZT-fti?P122 P13 P1.4 P15 F 5 P1Jra.i.iMD图二代码:#include #define uc unsigned char #define ui unsigned int uc code table= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x

8、07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;sbit LS1=P2A0;sbit LS2=P2A1;sbit LS3=P2A2;sbit LS4=P2A3; void main() uc i,j;while(1)for(i=0;i4;i+) switch(i)case(0):LS1=0;LS2=1;LS3=1;LS4=1;P0=table1;break;case(1):LS1=1;LS2=0;LS3=1;LS4=1;P0=table ;break;case(2):LS1=1;LS2=1;LS3=0;LS4=1;P0=table3;break;cas

9、e(3):LS1=1;LS2=1;LS3=1;LS4=0;P0=table4;break;for(j=0;j10;j+);P0=0x00;项,:j.1.- .截图:4、见图二,利用动态扫描显示法,让数码管显示初始数字0000,每隔一秒,数 字变化加1,直到9999。周而复始,循环不息。代码:#include #define uc unsigned char#define ui unsigned intuc code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;sbit

10、 LS1=P2人0;sbit LS2=P2人1;sbit LS3=P2人2;sbit LS4=P2A3;uc aa=0;void display(ui shu)uc i,j;for(i=0;i4;i+)switch(i)case(0):LS1=0;LS2=1;LS3=1;LS4=1;P0=tableshu/1000;break;case(1):LS1=1;LS2=0;LS3=1;LS4=1;P0=tableshu%1000/100;break;case(2):LS1=1;LS2=1;LS3=0;LS4=1;P0=tableshu%100/10;break;case(3):LS1=1;LS2=1

11、;LS3=1;LS4=0;P0=tableshu%10;break;for(j=0;j PDZ- C FQ _0 PQ+0 F&0- PEH- - - - RE2TE6T8EL1POD/ADDPi 1i1P02/AD2:TAL2P0.3/wn3P0 5/AD5PO &灿3E5THD7/.AiifAT89C51胃.朦P2.2/AWPSENP2.3/A11fiLEP2 4/A12EAP2 5/A13F2.6/A14P2.7/A15H.DP3.0/RXD?1.1Pj.ljWDP1.2P2.2/INT.-IP1.3P3.3/INT131.4P3.4.TjP1.5P3.5.-T1?1.tiP3.ti/W

12、E.P1.7P17/RD2951 中nt图三代码:#include #define uc unsigned char #define ui unsigned int uc code table= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;sbit LS1=P2A2;sbit LS2=P2A3;uc aa=0;void int0() interrupt 0EA=0;aa+;if(aa=100) aa=0;EA=1;void main()uc i,j;IT0=1;EX0=1;

13、EA=1;while(1)for(i=0;i2;i+)switch(i)case(0):LS1=0;LS2=1;P0=tableaa/10;break;case(1):LS1=1;LS2=0;P0=tableaa%10;break;for(j=0;j10;j+);P0=0x00;U1iJPO+ 一10 皿 r-ORK(KiOODOOBaBBaBapour颂 PO.Ii.flDI pom顿 PO.J 皿 厦出 P0.flTO PD.7f.flDTR$1ATS9C51 psruja FL1J司 Pl 网 i KL婀1 P2.VAJ2 P2.: P1&伽 P2.T/A15ps.mn p如皿 PUff

14、lll P3.MNTIP3MDR-:.4jH 0上顺 Rl.TiTID21Tr.截图:6、见图四。利用中断完成:A、开关SW1未按下时,LED灯全灭。B、开关按下第一次,LED正向流水点亮。间隔时间300ms.C、开关按下第二次,反向流水点亮。间隔时间300ms.D、开关按下第三次,全亮。E、开关按下第四次,LED闪烁,(亮200ms灭200ms)。如此循环。代码:#include #include #define uc unsigned char#define ui unsigned intuc aa=0;uc flag=0;uc temp=0xff;void main()TMOD=0x01

15、;TH0=0x3c;TL0=0xb0;ET0=1;IT1=1;EX1=1;EA=1;TR0=1;while(1)P1=temp;if(flag=1)if(aa=6)aa=0;temp=_crol_(temp,1);if(flag=2)if(aa=6)aa=0;temp=_cror_(temp,1);if(flag=4)if(aa=4)aa=0;temp=temp;void timer0() interrupt 1 TH0=0x3c;TL0=0xb0;aa+;void int1() interrupt 2EA=0;flag+;aa=0;if(flag=1)temp=0xfe;if(flag=2)

16、temp=0x7f;if(flag=3)temp=0x00;if(flag=4)temp=0x00;if(flag=5)flag=0;temp=0xff;EA=1;截图:VCC . g:TF. ! P-VETwl - L _虹心.U1C3If.山R2.匚t巨:m.-STB-:. :T-H.L1pniTACinFa.ir.HiuFQjj-ADZXT-HL2PmD3PgM.D*pnsH.DsPO.Sh.DSpp:TPO TADTFEME那四PZIih.IDFcEIFE37i.11h.LEFZ.Mh.IZ声FZiAnP2.&H1 +pm.*Pi jF3IVRWDF1 1P3 inxnP1_2IUF1

17、 _P1.+PM.nTDF1MF3JiT1P1J5PZljafiTIHF1.TP3.TiTHi-SFWF2一BEgEm1DFFFP,-iQ . .lEk . =th:-l:SW1 1土 TEE30PFU1C13对C2XTAL1P0.0/AD0P0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9PSENP2.2/A10P2.3/A11ALE EAP2.4/A12P2.5/A13P2.6/A14P2.7/A15P1.0P3.0/RXDP1.1P1.2P3.1/TXDP3.2/+NT0P1.3P3

18、.3/INT1P1.4P3.4/T0P1.5P1.6P3.5/T1P3.6/WRP1.7P3.7/RDAT89C513 3|03书Kr121314-5-6 17o1kR10图四7、见图四。不利用中断完成题6的相同功能。代码:#include #include #define uc unsigned char#define ui unsigned intsbit K1=P3A3;uc aa=0;uc flag=0;uc temp=0xff;void delay(ui x)ui y;for(x;x0;x-)for(y=125;y0;y-);void Key_Press()if(Kl=0)delay

19、(5);if(K1=0)flag+;aa=0;if(flag=1)temp=0xfe;if(flag=2)temp=0x7f;if(flag=3)temp=0x00;if(flag=4)temp=0x00;if(flag=5)flag=0;temp=0xff;while(!K1);delay(5);while(!K1);void main()TMOD=0x01;TH0=0x3c;TL0=0xb0;ET0=1;EA=1;TR0=1;while(1)P1=temp;Key_Press();if(flag=1)if(aa=6)aa=0;temp=_crol_(temp,1);if(flag=2)if

20、(aa=6)aa=0;temp=_cror_(temp,1);if(flag=4)if(aa=4)aa=0;temp=temp;void timer0() interrupt 1TH0=0x3c;TL0=0xb0;aa+;截图:心得体会:hXTALIpwPUj RVyrAL T 口 F3P 1XTALZFCIXiTU 口 FD.ICAH F02ih.iZ FOJH.Ea F口.心* FOSH.ff; FD.9AM FI3WAD7p云旦心PSiA-U rzjfAii rz.wA-iz rzjsAia FS.&AU F2.7W1SF3JJRXDFi.irrytPJIW IUjuhTKTTr.H.nn P3J.T1r-j.TTTC pa.TrW通过本次单片机实验让我更加了解单片机是如何实行中断功能的,而且对中断功能的用途和用法都有了一定的提高。

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号