单片机及其接口技术试验报告_第1页
单片机及其接口技术试验报告_第2页
单片机及其接口技术试验报告_第3页
单片机及其接口技术试验报告_第4页
单片机及其接口技术试验报告_第5页
已阅读5页,还剩32页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机及接口技术实验报告实验一数据传送程序、实验目的1、掌握汇编语言设计和调试方法。2、掌握DVCC实验系统的操作步骤。.、 实验内容1、编程实现,把 7000H-70FFH单元的内容清零。2、编程实现,把源地址为6000H开始的单元内容,传送到目的地址 7000H开始的单元中, 传送个数为0FFFH个。:、DVCC实验系统操作说明1、 接通DVCC实验系统电源,在DVCC实验箱上应显示闪动的 “P”,否则按Reset 键。2、 运行DVCC软件。(程序 f DVCC598H实验系统 f DVCC实验系统)3、 单击工具栏上“新建”或“打开”按钮,编写源程序。单击“编译”按钮,使其形成可执行文

2、件。4、 单击工具栏上“联接”按钮,同时按下DVCC实验箱上PCDBG键(键盘上最右边第2个),实现PC机和实验箱的联接。 联机成功,屏幕上出现:.反汇编窗口、 寄存器标示位窗口。5、 在成功联机后,单击工具栏上“调试”按钮,把最终目标文件装载到实验系统RAM区;或者通过单击菜单栏中的“动态调试”,选择“传送(.EXE)文件”来实现。6、 单击工具栏上“运行”或“单步”按钮,运行实验程序。7、 单击工具栏上“窗口” ,选择“显示内部数据窗口”或“显示外部数据窗口”可显示数据窗口。鼠标右击数据窗口的数据,可设置数据块新地址;鼠标左键单 击数据,可修改数据数值。8、 运行完毕,先按实验箱上的复位按

3、钮Reset键,再按PCDBG键,并且点击屏幕上OK,即可退出运行状态。四、实验程序代码1、把7000H70FFH单元的内容清零。程序代码:ORG 0000HORG 70HSTART:MOVP2,#70HMOVR0,#00HCLRALOOP:MOVXR0, AINCR0AJMP START;送地址高8位到P2端口;R0=00H,表地址低 8位;将累加器A清0;将A送入以R0内容为地址的外部 RAM.;R0+1->R0CJNER0,#00H,LOOP;比较条件转移指令,若R0不等于0,则跳转到LOOPAJMP $;暂停END2、 编程实现,将源地址为 6000H开始的单元,传送到目的地址7

4、000H开始的单元,传送个数为0FFFH个。程序代码:ORG 0000HAJMP STARTORG 50HSTART: MOV DPTR, #6000HMOV P2,#70HMOV R0,#00HLOOP: MOVX A, DPTRMOVX R0, AINC DPTRINC R0CJNE R0,#00H,LOOP;比较条件转移,若 R0不等于0,则程序循环,执行 100P.INC P2MOV R1,P2CJNE R1,#80H,LOOP; 若R1不等与80h,则程序循环执行 100P.AJMP $END五、实验结果1、把7000H70FFH单元的内容清零。2、编程实现,将源地址为 6000H开

5、始的单元,传送到目的地址7000H开始的单元,传送个数为0FFFH个。3C+lp *17 ItiFuJ 、记&*。工 IcJi 西卡 口® *t'41口忘w-nf一再-仙卡4?)+II 、,白跑耳机厂fid iTF亲无单寸羊w 后行SD, R 口口通LOOP 1比较堇砰抨番.百加不肇于,第拜号rjWEmemrwoqnc比111M2朋一#EL?等早力,二跑程中樟球飘行AOKPENS>升甘熟如V 口 tti fmd再” *1。 suit “m cm “riFlUHFCFV.1. SI1i.Dc l.卜 * JI.H JI .白才4T,融。 6«4S m t

6、r»nii 电. = h * 工.Qfe0rltr T«ild£r .iu.i 修就 i”*Iff实*+.M上图是左下角的窗口显示的是存储器源地址为6000H开始的单元里的内容。Ui . 0000 MfeTHP 3TUTOfLu SDBCTAPT: MIV >PTL #6000 ft HW吟 r'QHKEFF孙和口日也p PJPTft H«VX gQd JL in pPTn IBC%I3NE M. #1川.,光取鑫 珠转ifH不齐,强生疗W K HW P.l, FZ CJSK自L鞋UH. LOOP 谷N-? *与,口,三,宣子M处剧 在L;

7、.A.TK& 卞 EDTT州簿做中口册"门副”又口 1 ill0150mirQ口口口鼻Q2aB£4LJKP3:24iH0QDS血4m 二24归QQQTMX30I0iJCTB口叫 m”H口。口46SF1:P.LAr0F7Haaoe0Amni瓦般QgSPSTVBA.F5aoar0DMOFu .»ur4100MIM020 NaaiiMTO-A-i-IFUPlj FT?血5MCtXfe>,OPFSl-n1H5鸿*DC"5aaic £TW 二gcso。10 OCHS 0由1A QC1£ 0 7 ir QOIE aair gcisi

8、 aza5flu c- D4-匕r:;7-:-:ftx厘 H叫a 网”AMfl IjOBSJIMOF suit dos in WKP Q«WH MCtX 0口,EHK,i旧内程用内加依上图是程序运行后,存储器源地址为7000H开始的单元里的内容。经比较可以看出传送成功。六、问题与讨论在做实3内容1时编译现在第10行出错,后来将第 9和第10行后的注释都删除就编译通 过了。实验二 并行口实验一、实验目的1、掌握P3 口、P1 口简单使用。2、学习延时程序的编写和使用。二、实验内容1、编写程序用P1.0输出1kHz和500Hz的音频信号,以驱动扬声器作为报警信号。要 求1kHz信号响10

9、0ms, 500Hz信号响200ms,交替进行。P1.7接一开关,进行控制。当开 关合上,报警信号响;当开关断开,报警信号停止。(教材单片机原理、接口及应用一一嵌入式系统技术基础P75例4-3)2、P3 口做输入口, P1 口做输出口。 P3.3外接一脉冲,P1.0P1.7接的8个发光二极管 L1 -L8o编写程序,使 P3.3每输入一个脉冲,P1 口按16进制加一方式逐次点亮发光二极 管。三、实验接线图(实验内容二接线图)Pi.OLI 2g 。 UJPI I _Pl.2 一一L3 6L5 11L7 1512 3 4 1 2A A A A>AJi- - 一12 3 4 JI 2 vr-T

10、VI Y- 1111 11P1 7L8 17P3 3GNDQ '2 川 VCC3 42A2A1G2GXI 2 274LS240梃H口2M白o5 ir" 7C'3 - M-"680*8n VCC g tJR1四、实验步骤1、编写程序用P1.0输出1kHz和500Hz的音频信号,以驱动扬声器作为报警信号。要P1.7接一开关,进行控制。当开求1kHz信号响100ms, 500Hz信号响200ms,交替进行。关合上,报警信号响;当开关断开,报警信号停止。由于实验箱单片机 P1.0是坏的,编程 P1.1为输出,其他不变。程序代码:ORG 00hSTART:SETBP1

11、.7;P1.7 置 1JBP1.7, $;若P1.7为高电平,则循环检测,否则向卜执行MOVR1,#200;LOOP:ACALLD500;CPLP1.1;产生 1KHz的频率,P1.1取反输出DJNZR1,LOOP; R1 减 1,不为0时转移到LOOP,响100msMOV R2,#200LOOP1:ACALLD500;ACALLD500;CPLP1.1;产生500Hz的频率,P1.1取反输出DJNZR2,LOOP1; R2减1,不为0时转移到 LOOP,响200msSJMPSTART ;跳转至 STARTD500:MOV R6,#125 ;延迟 500usDJNZ R6,$RETEND2、P

12、3 口做输入口, P1 口做输出口。 P3.3外接一脉冲,P1.0P1.7接的8个发光二极管L1 -L8o编写程序,使 P3.3每输入一个脉冲,P1 口按16进制加一方式逐次点亮发光二极 管。实验2接了 4个口,从P1.1到P1.4,两次脉冲,灯变化程序代码:ORG 00HCLR ASETB P3.3 ;将 P3.3 置 1BEG:JB P3.3, $ACALL D500;JNB P3.3,$ACALL D500INC AMOV P1,A ; P1 口输出SJMP BEGD500:MOVR7,#125 ;延日500us (6Mhz)DJNZ R7,$RETEND五.问题与讨论1、做实验内容1时

13、,刚开始用P1.0 口输出,铃总是不响,接示波器也不输出波形。经 测试铃是好的,怀疑程序有问题,就将程序改成一直只输出1KHz的频率,还是不出波形。最后换成P1.1 口输出,调试程序运行铃就响了。2、实验内容2要求P1 口输出接8个LED管,为节省时间,接4个输出观察实验结果就行了。我们实验箱接的是P1.1 -P1.4,实验结果有所不同,P3.3每输入两个脉冲,P1 按4进制加一方式逐次点亮发光二极管。实验三 中断实验一、实验目的1)掌握中断程序的编程方法。2)进一步掌握 P1、P3 的双功能使用方法。二、实验内容正常情况下,仅绿灯亮。有故障发生时,绿灯灭,同时红灯闪烁;故障排除后,拨上总开关

14、,恢复正常,绿灯亮,红灯灭。可由P1.0控制绿灯的亮灭;P3.3接外部中断源,模拟故障发生; P1.1控制红灯的亮灭;P1.2读取总开头的状态。编写程序实现以上功能。(P3.3复用为外部中断1输入,即为INT1。其中断向量地址为 0013H,使用下降沿触发中断。)三、实验程序框图主程序:中断服务程序:四、实验步骤1、由P1.1控制绿灯的亮灭;P3.3接外部中断源,模拟故障发生; P1.2控制红灯的亮 灭;P1.3读取总开头的状态。P3.3复用为外部中断1输入,即为INT1。其中断向量地址为 0013H,使用下降沿触发中断。程序代码:ORG 0000hAJMPMAIN;主程序ORG0013H;中

15、断矢量表 p211AJMP IRPRO;中断服务程序入口ORG 0050H ;主程序MAIN:CLR P1.2;红灯灭SETB P1.1 ;绿灯亮SETB IT1 ;设置INT1负边缘触发p206(定时器控制寄存器 TCON)SETB EX1 ;外部中断1有效p208(中断容许控制器IE)SETB EA ;开中断p208(中断容许控制器IE)LOOP2:JNB P1.3,LOOP2SETB P1.1SJMP LOOP1AL1:AJMP AL1;中断服务程序IRPRO:PUSH PSWPUSH ACCCLR P1.1;灭绿灯LOOP3:SETB P1.2;亮红灯ACALL D500CPL P1.

16、2ACALL D500JNB P1.3,LOOP3 ;这里用P1.2进行监视,若开关没有闭合,则红灯一直 闪烁。POP ACCPOP PSWRETID500:MOV R6,#255;延时子程序DELAY:MOV R7,#0FFHDJNZ R7,$DJNZ R6,DELAYRETEND实验接线:P1.1接绿灯;P1.2接红灯;P1.3开关K1; P3.3接点触开关SP2、将实验内容1中的外部中断源换成INT0 ,其中断向量地址为 0003H,使用下降沿触 发中断。程序代码:ORG 0000hAJMP MAIN;主程序ORG0003H;中断矢量表 p211AJMP IRPRO;中断服务程序入口OR

17、G 0050H ;主程序MAIN:CLR P1.2;红灯灭SETB P1.1;绿灯亮SETB IT0 ;设置INT0负边缘触发p206(定时器控制寄存器 TCON)SETB EX0;外部中断0有效p208(中断容许控制器IE)SETB EA ;开中断p208(中断容许控制器IE)LOOP1:JB P1.1, LOOP1LOOP2:JNB P1.3,LOOP2SETB P1.1SJMP LOOP1AL1:AJMP AL1;中断服务程序IRPRO:PUSH PSWPUSH ACCCLR P1.1;灭绿灯LOOP3:SETB P1.2;亮红灯ACALL D500CPL P1.2ACALL D500J

18、NB P1.3,LOOP3 ;这里用P1.3进行监视,若开关没有闭合,则红灯一直 闪烁。POP ACCPOP PSWRETI ;中断返回D500:MOV R6,#255;延时子程序DELAY:MOV R7,#0FFHDJNZ R7,$DJNZ R6,DELAYRETEND实验接线:P1.1接绿灯;P1.2接红灯;P1.3开关K1; P3.2接点触开关SP3、在实验内容1的实现功能中加上有故障发生时,绿灯灭,红灯闪烁同时报警; 程序代码:ORG0000hAJMPMAIN;主程序ORG0013H;中断矢量表p211AJMPIRPRO;中断服务程序入口ORG 0050H;主程序MAIN:CLR P1

19、.2;红火火SETB P1.1;绿灯亮SETB IT1;设置INT1负边缘触发p206(定时器控制寄存器SETB EX1;外部中断1有效p208(中断容许控制器IE)SETB EA;开中断p208(中断容许控制器IE)TCON)LOOP1:JB P1.1, LOOP1LOOP2:JNB P1.3,LOOP2SETB P1.1SJMP LOOP1AL1:AJMP AL1;中断服务程序IRPRO:PUSH PSWPUSH ACCCLR P1.1;灭绿灯LOOP3:SETB P1.2;亮红灯ACALL D500CPL P1.2MOV R1,#200;CPL P1.4;P1.4取反输出DJNZ R1,

20、LOOP ;R1减1,不为0时转移到 LOOPJNB P1.3,LOOP3 ;这里用P1.2进行监视,若开关没有闭合,则红灯一直 闪烁。POP ACCPOP PSWRETID500:MOV R6,#255;延时子程序DELAY:MOV R7,#0FFHDJNZ R7,$DJNZ R6,DELAYRETD500U:MOV R5,#125 涎迟 500usDJNZ R5,$RETEND实验接线:P1.1接绿灯;P1.2接红灯;P1.3开关K1; P1.4接响铃;P3.3接点触开关SP 五、问题与讨论1、实验内容1要注意P3.3复用为外部中断 1输入,即为INT1。其中断向量地址为 0013H,使用

21、下降沿触发中断将 IT1置1,开总中断将EA置1,开外部中断1将EX1置1.2、实验内容2要注意P3.2复用为外部中断 0输入,即为INT0O其中断向量地址为0003H ,使用下降沿触发中断将 IT0置1,开总中断将EA置1,开外部中断1将EX0置1.3、实验内容3要加上一个输出接响铃,加上的响铃代码必须加在中断服务程序中红灯闪烁的那一段。响铃的声音要大一点,输出频率就要变大,最简单的方法就是加上一个延时子程序,响铃时调用。因为原有的延时子程序是使红灯闪烁,频率很低。实验四定时/计数实验一、实验目的1、熟悉8031定时/计数功能。2、掌握定时/计数初始化编程方法。二、实验内容1、选才i T1工

22、作于模式0定时,在P1.0脚上输出周期为4ms的方波,单片机采用6MHZ 晶振。分析:输出周期为4ms的方波,即高低电平的持续时间均为 2ms,那么只要使P1.0脚 上的电平每隔2ms取反一次,就可得到周期为4ms的方波。将T1设为定日方式0:GATE=0, C/T=0, M1M0=00 ; T0不用,可为任意,只要不使其进入方式3 (此时,定时器1对外停止计数),一般取0即可。计数初值的计算:单片机系统默认的定时/计数器的工作时钟是晶振经12分频的,即T=12/ (6*106),所以计数初值为X=(2 13-2ms/T)=2 13-(2*10 -3*6*10 6)/12=8192-1000=

23、7192=1110000011000B因为是13位计数器,所以X的高8位装入TH1 ,X的低5位装入TL1的低5位,即TH1=0E0H ,TL1=18H。思考:T1计数结束采用中断工作方式,程序应如何编写?1秒,2、在P1.7端接一个发光二极管 LED ,要求利用定时器控制,使 LED亮1秒、灭周而复始,设fosc=6MHZ 。三、实验内容一参考程序框图:初焙化i+撤器T1甚计数初I直启动丁 1工作定就时可到? TP1=l?停止T1工作P1.0 蛔重新党初值|自动门工件6MHZLOOP2:MOVTH1,#0E0H 晌Timer1中载入计数的初始值MOVTL1,#18HSETBTR1;启动AGA

24、IN:JBC TF1,LOOP1 ;定时时间到否?没有则继续查询,到了则输出,并清TF1位等。四、实验步骤1、选才i T1工作于型式0定时,q P1.0脚上输出周期为4ms的方波,单片机采用 晶振。(查询方式)程序代码:ORG 0000HMOVTMOD,#00H ;设定Timeri工作在模式 0下SJMP AGAINLOOP1:CPL P1.0SJMP LOOP2END思考:T1计数结束采用中断工作方式程序代码:ORG 0000H ;中断方式:选择 T1工作,方式 0AJMPORGMAIN001BHAJMPTIMER_1ORG0030HMAIN:SETBP1.0; P1.0输出为高电平MOVT

25、MOD,#00H;设置定时器1,工作在定时方式 0MOVTH1,# 0E0H;输入时间初始常数MOVTL1,#18HSETBTR1;启动 Timer1SETBEA;开中断SETBET1;容许Timer1中断WAIT:SJMPWAITTIMER_1: CPLP1.0MOVTH1,#0FCHMOVTL1,#18HRETIEND2、在Pi.7端接个发光二极管 LED ,要求利用定时器控制,使 LED亮1秒、周nti复始,设 fosc osc=6MHZ 。灭1秒,程序代码:ORG 00H;查询方式AJMPMAINMAIN: MOVTMOD,#10H;选i T1 工作,方式 1SETBP1.0SETBT

26、R1;启动定时器LOOP1: MOVR2,#20;设置调用延时的次数为20次LOOP2: CALLDELAY;调用50ms的延时DJNZR2,LOOP2;若调用延时次数不到,则继续调用延时程序CPLP1.0;取反,输出AJMPLOOP1DELAY: MOVTH1,#9EH;50ms的延时子程序MOVTL1,#58HLOOP:JBC TF1,NEXTSJMPLOOPNEXT: RETEND用中断方式实现:ORG 0000H;中断方式:选择 T1工作,方式 1 ,TEST4_4AJMPMAINORG001BHAJMPTIMER_1ORG0030HMAIN:SETBP1.0;主程序MOVTMOD,#

27、10HMOVTH1,#09eHMOVTL1,#58HSETBTR1SETBEASETBET1MOVR2,#20;设置循环次数WAIT:SJMPWAITTIMER_1: DJNZR2, LOOP;中断服务程序MOVR2,#20CPL P1.0LOOP:MOVTH1,#9EHMOVTL1,#58HRETIEND实验五串行口应用实验、实验目的掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。、实验内容1、重复发送同一个数据,观察 TXD端输出的波形。将8031串口设为工作方式 1,即10位异步收发,发送时钟由计数器控制;计数器T1设为定时工作,工作方式 2,即自动重装8位计数器;波特率取 1

28、200 bps,不加倍;单片机采用6MHZ晶振。计数初值的计算:TH1=256-(1+0)*fosc/(12*32*BPS)P3.1复用为串行发送端 TXD ,将其接至示波器,观察输出波形。注意观察8位数据位前后的起始位和停止位。2、自发自收。将代码段中定义的10个数据09,通过串口发送和接收,存放在外部存储器7000H开始的单元中。实验内容一参考程序框图:三、实验步骤及结果1、重复发送同一个数据,观察 TXD端输出的波形。程序代码:START:ORGMOVMOVMOVMOVSETBMOVMOV00HSCON,#50H;设置串口工作在模式 1,接收使能TMOD,#20H;使用T1工作在模式 2

29、下TH1,#0F3H;波特率 1200bpsTL1,#0F3H;TR1;A,#0DH ;将数据赋给ACCSBUF,A ;发送数据送缓冲区WAIT:JNB TI,$;等待发送CLR TI;若发送完,则清TIMOV SBUF,A;未发完,则继续发送AJMP WAIT;循环发送END结果: 将P3.1 口接到示波器观察会有二进制0101100001的波形。2、自发自收。将代码段中定义的10个数据09,通过串口发送和接收,存放在外部存储器7000H开始的单元中。程序代码:ORG00HSTART:LOOP:WAIT:MOV MOV MOV MOVMOV MOV SETB CLR MOVINCCJNE S

30、JMPMOV JNB CLR MOVMOV JNB CLR MOVMOVX INC JMP ENDSCON,#50H;设置串口工作在模式 1,接收使能TMOD,#20H;使用T1工作在模式 2下DPTR,#7000H;将外部存储器初始地址赋给DPTRR0,#00H;将 0 赋给 R0TH1,#0F3H;波特率 1200bpsTL1,#0F3H;TR1;A;清 ACCA,R0;将待发数据赋给 AR0; R0+1 - R0R0,#0BH,WAIT;判断是否发送完$;停机SBUF,A;数据发送到缓冲区TI,$;等待发送TI;数据发送完,则清TISBUF,A;未发完,则继续发送A,SBUF;接收数据R

31、I,$;等待接收RI;接收完,则清RIA,SBUF;未接收完,则继续接收DPTR,A;将接收的数据送到指定位置DPTR ;DPTR 自增 1LOOP;跳回到LOOP,向串行口载入新数据。结果:程序运行前地址DO0102Q304_0507012345EIhonoQC00S3OOco40one.,7000E204Z7ooIS0000,口.7010009C00J5103S0000.SD>.701BOO3400SB2C1500OS7020004FDO61DA510Don.o.a.Q.7029ooQC8050016BnoP, wu7030QU8504砧OO9904眄 « II- I &#

32、187; 外部独据窗口地址:丁口皿运行后很明显看出完成能实验要求,将0-9通过串行通信存到外部存储器7000H开始的单元。四、问题与讨论做串口自发自收的实验时,一定要将P3.0 口与P3.1 口用导线连起来,还有数据发送和接收都用查询方式。刚开始用查表的方式将待发数据送A,这样就多次应用了 DPTR寄存器,效率不高也很麻烦,后来用寄存器R0每次发送完后加1来实现将数据0-9赋给A。还有接收程序部分开始作为子程序调用,后来不用,直接放在发送程序后面就行了,整段程序变得 很简单明了。附:实验六装药生产线仿真一、 实验目的1)掌握仿真软件 Proteus的应用。2)掌握系统设计的方法。3)掌握程序编

33、写与调试。4)学会对系统进行改进。二、实验内容生产过程:制药厂有一条装药丸的生产线,单片机的P3.4脚,即Timer0的外部事件输入端T0与生产线上的药丸漏斗上的红外传感器相连,每一颗药丸通过漏斗颈时,红外传感器都会检测到,并会向单片机的T0 口输入一个脉冲信号。单片机的P1.0 口控制阀门打开(1),或关闭(0),以控制药丸掉落到药瓶中的个数。每个药瓶装满20粒药丸后,单片机的 P1.1口输出一个高电平,使得履带电机转动,履带则运送下一个空瓶到漏斗下,准备装药。P0口驱动一个2位的七段数码管,显示已经装好药丸的瓶数。设计完整系统模拟上述生产过程,并运用Proteus软件进行仿真。三、实验程序

34、框图TF0=0四、实验步骤1、用LED模拟阀门和履带,用脉冲开关模拟药丸装入,数码管显示包装的瓶数。每输入20个脉冲,瓶数加1。程序代码:;装药丸出产线的程序,使用Timer做计数器。ORG 00H;START:CLR A ;累加器ACC清0MOVP0,A;七段数码管开始显示 00SETUP:LOAD:MOVTMOD,#05H;设置Timer0工作在计数器模式 1下MOVTH0,#0FFH;往TH0中载入计数初始值MOVTL0,#0ECH;往TL0中载入计数初始值RESTART:SETBTR0 ;启动 Timer 0CHECK:SETBP1.0 ;打开阀门JNB TF0,CHECK;检测Tim

35、er溢出标志,当 TF0=1时,跳出CLR TR0 ;关闭 Timer0CLR TF0 ;将 TF0 清 0CLR P1.0 ;关闭阀门DISPLAY:ADDA,#01H ;显示数据+1DA A;十进制调整MOVP0,A;输出到七段数码管显示DRIVE:SETB P1.1置P1.1为1 ,履带传动。CALL DELAY ;延时CLR P1.1 ;p1.1清0,履带停止JMP LOAD;循环DELAY: MOV R5,#10;延时 5 秒D500:MOV R6,#255D1:MOV R7,#0FFHDJNZ R7,$DJNZ R6,D1DJNZ R5,D500RETEND仿真结果:2、要求显示4

36、位,两位显示药粒,两位显示瓶数。改动:(1)硬件,要加两个数码管和 74LS47 (BCD-7段数码管译码器/驱动器)P2 口用于和扩展的这两个数码管相连。(2)软件,若还用定时计数器,那计数器的数字为1,时间常数为FFFF(工作在方式1)程序代码:ORG00H;START:SETUP:CLR A ;累加器ACC清0MOVP0,A;七段数码管开始显示 00MOVP2,AMOV30H,A;30H单元中,放药粒数MOV31H,A;31单元中,放瓶数LOAD1:MOV TMOD,#05H;设置Timer。工作在计数器模式 1下CLRACLR P1.1 ;关闭履带SETB P1.0 ;打开阀门LOAD

37、2:MOV TH0,#0FFH;往TH0中载入计数初始值MOV TL0,#0FFH;往TL0中载入计数初始值,计数一次, SETBTR0 ;启动 Timer 0CHECK:JNB TF0,CHECK;检测Timer溢出标志,当 TF0=1时,跳出 CLR TR0 ;关闭 Timer0 CLR TF0 ;将 TF0 清 0DISPLAY:MOVA,30H;计数药粒ADD A,#01 DA A ;十进制调整 MOV 30H,AMOV P2,A;输出到七段数码管显示;CJNE A, #20H, LOAD2;如果没有到20粒,再计数,到了清零,重新计数。 CLR A MOV P2,A;清零 MOV 3

38、0H,A MOVA,31H;取出瓶数ADD A,#01 DA A MOV31H,A;保存瓶数MOVP0,A;输出瓶数DRIVE:CLR P1.0 ;关闭阀门SETB P1.1 ;置P1.1为1,履带传动。 CALL DELAY ;延时 CALL DELAY CLR P1.1 ;p1.1清0,履带停止 JMP LOAD1 ;循环DELAY:MOVR5,#10;延时2 秒D500:MOVR6,#255;D1:MOVR7,#0FFHDJNZ R7,$DJNZ R6,D1 DJNZ R5,D500 RETEND仿真结果:3、简化系统,应用 741LS595串入并出程序代码:ST1 EQUP1.2ST2

39、 EQUP1.3ORG 00H;START:MOV 30H,A ;30H单元中,放颗粒数MOV 31H,A;31单元中,放瓶数MOVscon,#00H;设置串口工彳在模式 0下。SETUP:MOV TMOD,#05H;设置Timer。工作在计数器模式 1下LOAD1: CLR ACLR P1.1 ;关闭履带SETB P1.0打开阀门LOAD2:MOV TH0,#0FFH;往TH0中载入计数初始值MOV TL0,#0FFH;往TL0中载入计数初始值,计数一次,SETB TR0 ;启动 Timer 0CHECK:JNB TF0,CHECK;检测Timer溢出标志,当 TF0=1时,跳出CLR TR0 ;关闭 Timer0CLR TF0 ;将 TF0 清 0DISPLAY:MOV A,30H;计数药粒,(30H)单元中存放十进制的药粒数。ADD A,#01DA A;十进制调整MOV 30H,AMOVR0,A;ANLA,#0FH;MOV40H,A;(40H)和(41H)单元中是存放的对应的(30H)的 拆分后的BCD码,MOVA,R0SWAPAANLA,#0FHMOV41H,A;MOV DPTR,#TAB;取 LED 段码MOVA,40HMOVC A,A+DPTRMOV 50HA(50H)和(51H)单元存放的是药粒

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论