收藏 分享(赏)

实验任务.txt

上传人:myw993772 文档编号:4067680 上传时间:2018-12-06 格式:TXT 页数:31 大小:23.83KB
下载 相关 举报
实验任务.txt_第1页
第1页 / 共31页
实验任务.txt_第2页
第2页 / 共31页
实验任务.txt_第3页
第3页 / 共31页
实验任务.txt_第4页
第4页 / 共31页
实验任务.txt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、文档来自网络,是本人收藏整理的,如有遗漏,差错,还请大家指正!1 闪烁灯 1 实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒2 电路原理图 图4.1.1 3 系统板上硬件连线 把“单片机系统“区域中的P1.0端口用导线连接到“八路发光二极管指示模块“区域中的L1端口上4 程序设计内容 (1) 延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这 的延时程序是如 设计 原理: 如

2、图4.1.1所示的 为12MHz,因此,1个机 为1微秒 机 微秒 MOV R6#20 2个 2 D1: MOV R7#248 2个 2 2 2248 498 20 DJNZ R7$ 2个 2248 (498 DJNZ R6D1 2个 220 40 10002 因此,上 的延时程序时间为10.002ms以上 , R6 10 R7 248时,延时5ms,R6 20 R7 248时,延时10ms以此为 本的计时单 如本实验要求0.2秒 200ms,10msR5 200ms, R5 20,延时 程序如 : DELAY: MOV R5#20D1: MOV R6#20D2: MOV R7#248DJNZ

3、 R7$DJNZ R6D2DJNZ R5D1RET (2) 如图1所示, P1.0端口 电,P1.0 1时,发光二极管的单导电 ,这时发光二极管L1灭currency1 P1.0端口 电,P1.0 0时,发光二极管L1亮currency1我们 以使用SETB P1.0指令使P1.0端口 电,使用CLR P1.0指令使P1.0端口 电5程序“图 如图4.1.2所示 图4.1.2 6 程序ORG 0START: CLR P1.0LCALL DELAYSETB P1.0LCALL DELAYLJMP STARTDELAY: MOV R5#20 ;延时 程序,延时0.2秒D1: MOV R6#20D2

4、: MOV R7#248DJNZ R7$DJNZ R6D2DJNZ R5D1RETEND7 Cfifl程序#include sbit L1=P10;void delay02s(void) /延时0.2秒 程序unsigned char ijk;for(i=20;i0;i-)for(j=20;j0;j-)for(k=248;k0;k-);void main(void)while(1)L1=0;delay02s();L1=1;delay02s();2 模 灯 1 实验任务 如图4.2.1所示,K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上) 示,如上,L1亮,”,L1灭2

5、电路原理图 图4.2.1 3 系统板上硬件连线 (1) 把“单片机系统“区域中的P1.0端口用导线连接到“八路发光二极管指示模块“ 区域中的L1端口上currency1 (2) 把“单片机系统“区域中的P3.0端口用导线连接到“路“区域中的K1端口上currency1 4 程序设计内容 (1) 的 程 单片机对的 相对于单片机来说,是单片机的P3.0端口 入, 入的有 电电, K1上 , 入 电,相 , K1 , 入电,相 单片机 以 用JB BIT,REL是JNB BIT,REL指令来对的 (2) 如图3所示, P1.0端口 电,P1.0 1时,发光二极管的单导电 ,这时发光二极管L1灭cu

6、rrency1 P1.0端口 电,P1.0 0时,发光二极管L1亮currency1我们 以使用SETB P1.0指令使P1.0端口 电,使用CLR P1.0指令使P1.0端口 电5 程序“图 图4.2.2 6 程序 ORG 00HSTART: JB P3.0LIGCLR P1.0SJMP STARTLIG: SETB P1.0SJMP STARTEND 7 Cfifl程序#include sbit K1=P30;sbit L1=P10;void main(void)while(1)if(K1=0)L1=0; /灯亮elseL1=1; /灯灭 3 路指示 1 实验任务 如图4.3.1所示,AT

7、89S51单片机的P1.0 P1.3接个发光二极管L1 L4,P1.4 P1.7接 个K1 K4,程 的 到发光二极管上(,对 的灯亮,对 的灯灭)2 电路原理图 图4.3.1 3 系统板上硬件连线 (1 把“单片机系统“区域中的P1.0 P1.3用导线连接到“八路发光二极管指示模块“区域中的L1 L4端口上currency1 (2 把“单片机系统“区域中的P1.4 P1.7用导线连接到“路“区域中的K1 K4端口上currency1 4 程序设计内容 (1 对于 ,相对单片机来说,是 入系,我们 个, 个的 相的发光二极管指示, 以 用JB P1.X,RELJNB P1.X,REL指令来cu

8、rrency1 以一 路, 指示, 以 用MOV A,P1指令一 把P1端口的 入, 4 的来指示(2 的, 发光二极管L1 L4来指示,我们 以用SETB P1.XCLR P1.X指令来, 以 用MOV P1, 1111XXXXB方法一 指示5 程序“图 P1口数到ACC中 ACC内容 4 ACC内容 F0H相 ACC内容入P1口 图4.3.2 6 方法一(程序)ORG 00HSTART: MOV AP1ANL A#0F0HRR ARR ARR ARR AXOR A#0F0HMOV P1ASJMP STARTEND7 方法一(Cfifl程序)#include unsigned char te

9、mp;void main(void)while(1)temp=P14;temp=temp | 0xf0;P1=temp;8 方法二(程序)ORG 00HSTART: JB P1.4NEXT1CLR P1.0SJMP NEX1NEXT1: SETB P1.0NEX1: JB P1.5NEXT2CLR P1.1SJMP NEX2NEXT2: SETB P1.1NEX2: JB P1.6NEXT3CLR P1.2SJMP NEX3NEXT3: SETB P1.2NEX3: JB P1.7NEXT4CLR P1.3SJMP NEX4NEXT4: SETB P1.3NEX4: SJMP STARTEND

10、9 方法二(Cfifl程序)#include void main(void)while(1)if(P1_4=0)P1_0=0;elseP1_0=1;if(P1_5=0)P1_1=0;elseP1_1=1;if(P1_6=0)P1_2=0;elseP1_2=1;if(P1_7=0)P1_3=0;elseP1_3=1; 4 灯的 1 实验任务 单一灯的 ,硬件电路如图4.4.1所示,八个发光二极管L1 L8 接在单片机的P1.0 P1.7接口上, “0“时,发光二极管亮, 时P1.0P1.1P1.2P1.3 P1.7P1.6 P1.0 亮, 2 电路原理图 图4.4.1 3 系统板上硬件连线 把“

11、单片机系统“区域中的P1.0 P1.7用8 线连接到“八路发光二极管指示模块“区域中的L1 L8端口上,要求:P1.0对 L1,P1.1对 L2,P1.7对 L84 程序设计内容 我们 以 用 端口指令MOV P1,AMOV P1, DATA,要 数, 执行上 的指令, 达到 的作 的数是不 , 的数如 1所示 P1.75程序“图 图4.4.2 6 程序ORG 0START: MOV R2#8MOV A#0FEHSETB CLOOP: MOV P1ALCALL DELAYRLC ADJNZ R2LOOPMOV R2#8LOOP1: MOV P1ALCALL DELAYRRC ADJNZ R2L

12、OOP1LJMP STARTDELAY: MOV R5#20 ;D1: MOV R6#20D2: MOV R7#248DJNZ R7$DJNZ R6D2DJNZ R5D1RETEND7 Cfifl程序#include unsigned char i;unsigned char temp;unsigned char ab;void delay(void)unsigned char mns;for(m=20;m0;m-)for(n=20;n0;n-)for(s=248;s0;s-);void main(void)while(1)temp=0xfe;P1=temp;delay();for(i=1;i

13、(8-i);P1=a|b;delay();for(i=1;ii;b=tempunsigned char code table=0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f0x7f0xbf0xdf0xef0xf70xfb0xfd0xfe0x7f0xbf0xdf0xef0xf70xfb0xfd0xfe0x000xff0x000xff0x01;unsigned char i;void delay(void)unsigned char mns;for(m=20;m0;m-)for(n=20;n0;n-)for(s=24

14、8;s0;s-);void main(void)while(1)if(tablei!=0x01)P1=tablei;i+;delay();elsei=0; 6 报警产生 1 实验任务 用P1.0 1KHz500Hz的音频驱扬声 ,作报警,要求1KHz响100ms,500Hz响200ms交替进行,P1.7接一进行 , 上响报警, 警停止, 程序2 电路原理图 图4.6.1 3 系统板上硬件连线 (1 把“单片机系统“区域中的P1.0端口用导线连接到“音频放大模块“区域中的SPK IN端口上currency1 (2 在“音频放大模块“区域中的SPK OUT端口上接上一个8欧的是16欧的喇叭curr

15、ency1 (3 把“单片机系统“区域中的P1.7/RD端口用导线连接到“路“区域中的K1端口上currency1 4 程序设计内容 (1 产生的方法 500Hz 为2ms,电为 1ms变 1 ,1KHz的 为1ms,电 500us变 1currency1 5 程序“图 图4.6.2 6 程序FLAG BIT 00HORG 00HSTART: JB P1.7STARTJNB FLAGNEXTMOV R2#200DV: CPL P1.0LCALL DELY500LCALL DELY500DJNZ R2DVCPL FLAGNEXT: MOV R2#200DV1: CPL P1.0LCALL DEL

16、Y500DJNZ R2DV1CPL FLAGSJMP STARTDELY500: MOV R7#250LOOP: NOPDJNZ R7LOOPRETEND7 Cfifl程序#include #include bit flag;unsigned char count;void dely500(void)unsigned char i;for(i=250;i0;i-)_nop_();void main(void)while(1)if(P1_7=0)for(count=200;count0;count-)P1_0=P1_0;dely500();for(count=200;count0;count-)

17、P1_0=P1_0;dely500();dely500(); 7 I/O并行口直接驱LED 示 1. 实验任务 如图13所示,利用AT89S51单片机的P0端口的P0.0 P0.7连接到一个共阴数码管的a h的笔段上,数码管的公共端接地在数码管上 示0 9数字,时间间隔0.2秒2. 电路原理图 图4.7.1 3. 系统板上硬件连线 把“单片机系统“区域中的P0.0/AD0 P0.7/AD7端口用8 线连接到“路静数码 示模块“区域中的任一个数码管的a h端口上currency1要求:P0.0/AD0 a相连,P0.1/AD1 b相连,P0.2/AD2 c相连,P0.7/AD7 h相连4. 程序

18、设计内容 (1 LED数码 示原理 七段LED 示 内 七个条形发光二极管一个小圆点发光二极管组,各管的极管的接线形式, 共阴极型共阳极型LED数码管的ga七个发光二极管因正电压发亮,因零电压不以发亮,不 亮暗的组就能形不的字形,这组称之为字形码, 共阴极的字形码见 2 “0“这 我们按 数字0 9的顺序,把 个数字的笔段代码按顺序好!建立的 格如 所示:TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH 5程序“图 图4.7.2 6 程序ORG 0START: MOV R1#00HNEXT: MOV AR1MOV DPTR#TABLEMOVC A

19、A+DPTRMOV P0ALCALL DELAYINC R1CJNE R1#10NEXTLJMP STARTDELAY: MOV R5#20D2: MOV R6#20D1: MOV R7#248DJNZ R7$DJNZ R6D1DJNZ R5D2RETTABLE: DB 3FH06H5BH4FH66H6DH7DH07H7FH6FHEND7 Cfifl程序#include unsigned char code table=0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f;unsigned char dispcount;void delay02s(void)unsi

20、gned char ijk;for(i=20;i0;i-)for(j=20;j0;j-)for(k=248;k0;k-);void main(void)while(1)for(dispcount=0;dispcountunsigned char count;void delay10ms(void)unsigned char ij;for(i=20;i0;i-)for(j=248;j0;j-);void main(void)while(1)if(P3_7=0)delay10ms();if(P3_7=0)count+;if(count=16)count=0;P1=count;while(P3_7=

21、0);9 一键 能按键识 1实验任务 如图4.9.1所示,SP1接在P3.7/RD管 上,在AT89S51单片机的P1端口接有个发光二极管,上电的时候,L1接在P1.0管 上的发光二极管在闪烁, 一 按 SP1的时候,L2接在P1.1管 上的发光二极管在闪烁,再按 SP1的时候,L3接在P1.2管 上的发光二极管在闪烁,再按 SP1的时候,L4接在P1.3管 上的发光二极管在闪烁,再按 SP1的时候, 到L1在闪烁 ,如此 2电路原理图 图4.9.1 3系统板上硬件连线 (1 把“单片机系统“区域中的P3.7/RD端口连接到“独立式键盘“区域中的SP1端口上currency1 (2 把“单片机

22、系统“区域中的P1.0 P1.4端口用8 线连接到“八路发光二极管指示模块“区域中的“L1 L8“端口上currency1要求,P1.0连接到L1,P1.1连接到L2,P1.2连接到L3,P1.3连接到L4上4程序设计方法 (1 设计 想 来 在我们生 中,我们很容 通 这个 , 个 , 一个是currency1 是因为 个人有不 的 ,我们就很 , ,对于要通 一个按键来识 不 的 能,我们 个不 的 能模块用不 的ID识,这 , 按 一 按键,ID的是不相 的,所以单片机就很容 识 不 能的 (2 设计方法 上 的要求我们 以看 ,L1到L4发光二极管在 个时刻的闪烁的时间是currenc

23、y1SP1来 ,我们L1到L4闪烁的时段定 不 的ID, L1在闪烁时,ID 0currency1 L2在闪烁时,ID 1currency1 L3在闪烁时,ID 2currency1 L4在闪烁时,ID 3currency1很 ,要 按 K1时, 不 的ID我们就能“上 的任务 有程序设计的“图5程序“图 图4.9.2 6 程序ID EQU 30HSP1 BIT P3.7L1 BIT P1.0L2 BIT P1.1L3 BIT P1.2L4 BIT P1.3ORG 0MOV ID#00HSTART: JB K1RELLCALL DELAY10MSJB K1RELINC IDMOV AIDCJN

24、E A#04RELMOV ID#00HREL: JNB K1$MOV AIDCJNE A#00HIS0CPL L1LCALL DELAYSJMP STARTIS0: CJNE A#01HIS1CPL L2LCALL DELAYSJMP STARTIS1: CJNE A#02HIS2CPL L3LCALL DELAYSJMP STARTIS2: CJNE A#03HIS3CPL L4LCALL DELAYSJMP STARTIS3: LJMP STARTDELAY10MS: MOV R6#20LOOP1: MOV R7#248DJNZ R7$DJNZ R6LOOP1RETDELAY: MOV R

25、5#20LOOP2: LCALL DELAY10MSDJNZ R5LOOP2RETEND7 Cfifl程序#include unsigned char ID;void delay10ms(void)unsigned char ij;for(i=20;i0;i-)for(j=248;j0;j-);void delay02s(void)unsigned char i;for(i=20;i0;i-)delay10ms();void main(void) while(1) if(P3_7=0)delay10ms();if(P3_7=0)ID+;if(ID=4)ID=0;while(P3_7=0);sw

26、itch(ID) case 0:P1_0=P1_0;delay02s();break;case 1:P1_1=P1_1;delay02s();break;case 2:P1_2=P1_2;delay02s();break;case 3:P1_3=P1_3;delay02s();break; 10 00 99计数 1 实验任务 利用AT89S51单片机来 作一个手计数 ,在AT89S51单片机的P3.7管 接一个触,作为手计数的按,用单片机的P2.0 P2.7接一个共阴数码管,作为00 99计数的个 数 示,用单片机的P0.0P0.7接一个共阴数码管,作为00 99计数的 数 示currency

27、1硬件电路图如图19所示2 电路原理图 图4.10.1 3 系统板上硬件连线 (1 把“单片机系统“区域中的P0.0/AD0 P0.7/AD7端口用8 线连接到“路静数码 示模块“区域中的任一个a h端口上currency1要求:P0.0/AD0对 a,P0.1/AD1对 b,P0.7/AD7对 h(2 把“单片机系统“区域中的P2.0/A8 P2.7/A15端口用8 线连接到“路静数码 示模块“区域中的任一个数码管的a h端口上currency1 (3 把“单片机系统“区域中的P3.7/RD端口用导线连接到“独立式键盘“区域中的SP1端口上currency1 4 程序设计内容 (1 单片机对

28、按键的识 的 程处理 (2 单片机对正fi识 的按键进行计数,计数fl时, 零 计数currency1 (3 单片机对计的数要进行数码 示,计得的数是进数, 有 个 ,我们要把 个 这 的 个 数到对 的数码管上 示如 个 我们 以把所计得的数对10求, 个 数字,对10整除, 得到 数字 (4 通 方式, 示 个 数字5程序“图 图4.10.2 6 程序Count EQU 30HSP1 BIT P3.7ORG 0START: MOV Count#00HNEXT: MOV ACountMOV B#10DIV ABMOV DPTR#TABLEMOVC AA+DPTRMOV P0AMOV ABMO

29、VC AA+DPTRMOV P2AWT: JNB SP1WTWAIT: JB SP1WAITLCALL DELY10MSJB SP1WAITINC CountMOV ACountCJNE A#100NEXTLJMP STARTDELY10MS: MOV R6#20D1: MOV R7#248DJNZ R7$DJNZ R6D1RETTABLE: DB 3FH06H5BH4FH66H6DH7DH07H7FH6FHEND7 Cfifl程序#include unsigned char code table=0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f;unsigne

30、d char Count;void delay10ms(void)unsigned char ij;for(i=20;i0;i-)for(j=248;j0;j-);void main(void)Count=0;P0=tableCount/10;P2=tableCount%10;while(1)if(P3_7=0)delay10ms();if(P3_7=0)Count+;if(Count=100)Count=0;P0=tableCount/10;P2=tableCount%10;while(P3_7=0); 11 00 59秒计时 (利用软件延时) 1 实验任务 如 图所示,在AT89S51单片

31、机的P0P2端口 接有个共阴数码管,P0口驱 示秒时间的,P2口驱 示秒时间的个 2 电路原理图 图4.11.1 3 系统板上硬件连线 (1 把“单片机系统“区域中的P0.0/AD0 P0.7/AD7端口用8 线连接到“路静数码 示模块“区域中的任一个a h端口上currency1要求:P0.0/AD0对 a,P0.1/AD1对 b,P0.7/AD7对 h(2 把“单片机系统“区域中的P2.0/A8 P2.7/A15端口用8 线连接到“路静数码 示模块“区域中的任一个a h端口上currency1要求:P2.0/A8对 a,P2.1/A9对 b,P2.7/A15对 h4 程序设计内容 (1 在

32、设计 程中我们用一个存单 作为秒计数单 , 一秒到来时,就 秒计数单 1, 秒计数达到60时,就自到0,秒计数(2 对于秒计数单 中的数要把” 数个数 ,方法 用对10整除对10求(3 在数码上 示,通 的方式(4 一秒时间的产生在这我们 用软件fi延时的方法来,经 fi计 得到1秒时间为1.002秒DELY1S: MOV R5#100 D2: MOV R6#20 D1: MOV R7#248 DJNZ R7$ DJNZ R6D1 DJNZ R5D2 RET 5 程序“图 图4.11.2 6 程序Second EQU 30HORG 0START: MOV Second#00HNEXT: MOV

33、 ASecondMOV B#10DIV ABMOV DPTR#TABLEMOVC AA+DPTRMOV P0AMOV ABMOVC AA+DPTRMOV P2ALCALL DELY1SINC SecondMOV ASecondCJNE A#60NEXTLJMP STARTDELY1S: MOV R5#100D2: MOV R6#20D1: MOV R7#248DJNZ R7$DJNZ R6D1DJNZ R5D2RETTABLE: DB 3FH06H5BH4FH66H6DH7DH07H7FH6FHEND7 Cfifl程序#include unsigned char code table=0x3f

34、0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f;unsigned char Second;void delay1s(void)unsigned char ijk;for(k=100;k0;k-)for(i=20;i0;i-)for(j=248;j0;j-);void main(void)Second=0;P0=tableSecond/10;P2=tableSecond%10;while(1)delay1s();Second+;if(Second=60)Second=0;P0=tableSecond/10;P2=tableSecond%10; 12 4 计数 1 实验任

35、务 利用AT89S51单片机的P1.0 P1.3接个发光二极管L1 L4,用来指示 计数的数currency1用P1.4 P1.7作为 数的 入端,接个K1 K4,用P3.6/WRP3.7/RD端口接个触,用来作计数计数的电路原理图如 图所示 2 电路原理图 图4.12.1 3 系统板上硬件连线 (1 把“单片机系统“区域中的P1.0 P1.3端口用8 线连接到“八路发光二极管指示模块“区域中的L1L4上currency1要求:P1.0对 L1,P1.1对 L2,P1.2对 L3,P1.3对 L4currency1 (2 把“单片机系统“区域中的P3.0/RXD,P3.1/TXD,P3.2/I

36、NT0,P3.3/INT1用导线连接到“路“区域中的K1 K4上currency1 (3 把“单片机系统“区域中的P3.6/WR,P3.7/RD用导线连接到“独立式键盘“区域中的SP1SP2上currency14 程序设计内容 (1 个独立式按键识 的处理 程currency1 (2 的问题 (3 LED 指示 5 程序“图 图4.12.2 6 程序COUNT EQU 30HORG 00HSTART: MOV AP3ANL A#0FHMOV COUNTAMOV P1ASK2: JB P3.6SK1LCALL DELY10MSJB P3.6SK1INC COUNTMOV ACOUNTCJNE A

37、#16NEXTMOV AP3ANL A#0FHMOV COUNTANEXT: MOV P1AWAIT: JNB P3.6WAITLJMP SK2SK1: JB P3.7SK2LCALL DELY10MSJB P3.7SK2DEC COUNTMOV ACOUNTCJNE A#0FFHNEXMOV AP3ANL A#0FHMOV COUNTANEX: MOV P1AWAIT2: JNB P3.7WAIT2LJMP SK2DELY10MS: MOV R6#20MOV R7#248D1: DJNZ R7$DJNZ R6D1RETEND7 Cfifl程序#include unsigned char cu

38、rcount;void delay10ms(void)unsigned char ij;for(i=20;i0;i-)for(j=248;j0;j-);void main(void)curcount=P3 P1=curcount;while(1)if(P3_6=0)delay10ms();if(P3_6=0)if(curcount=15)curcount=15;elsecurcount+;P1=curcount;while(P3_6=0);if(P3_7=0)delay10ms();if(P3_7=0)if(curcount=0)curcount=0;elsecurcount-;P1=curcount;while(P3_7=0); ?

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

当前位置:首页 > 中等教育 > 中学实验

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报