收藏 分销(赏)

高级电工单片机实操教案.pdf

上传人:曲**** 文档编号:12564327 上传时间:2025-10-31 格式:PDF 页数:31 大小:653.65KB 下载积分:12 金币
下载 相关 举报
高级电工单片机实操教案.pdf_第1页
第1页 / 共31页
高级电工单片机实操教案.pdf_第2页
第2页 / 共31页


点击查看更多>>
资源描述
试题编号3301控制要求:在内部RAM中20H开始的区域中存有二十个无符号数,找出其中最大和最小数,分别送34H和35H单元。(注:目标程序于0800H单元开始)ORG0000HLJMPMAINORG0800HMAIN:MOVRO,#20H;从内部20H单元开始查找MOVR7,#19;20个数需要比较19次MOV34H,R0;将20H单元的内容同时送34H和35HMOV35H,R0LOOP:INCRO;指向下一个单元MOVA,R0;读取到ACCCJNEA,34H,B1;将读取的内容与34H的内容进行比较,不相等跳B1处SJMPEXIT;相等则不作其它比较跳EXIT处Bl:JCXIAO;若A的内容小于34H的内容则C为1,跳XIAO处MOV34H,A;C为0表明A大于34H的内容则替换掉34H的内容SJMPEXIT;替换后退出不作最小数比较XIAO:CJNEA,35H,B2;作最小数比较,不相等跳B2处SJMPEXIT;相等退出到EXIT处B2:JNCEXIT;若A的内容大于35H的内容跳EXIT处MOV35H,A;若A的内容小于35H的内容则替换掉35H的内容EXIT:DJNZR7,LOOP;判断比较次数是否完毕SJMP$;比较完毕原地等待END第1页共31页结束3102控制要求:利用8031定时器与中断功能控制一个“航标灯”,黑夜时发光二极管按指定频率 闪烁(如:亮2S,灭2S,循环);白天时发光二极管不亮。电路图:VTLEDP1.01 Ri9013 方R2200 Qq+5VWkQ803112INTO P3.2Rp WkQ vX光敏电阻电路工作原理:白天光敏电阻阻值小,使P3.2输入电位为高电平,不产生中断,使LED灭。晚上光敏 电阻阻值变大,使P3.2的输入电位为低电平,这时产生中断,中断使LED闪烁。只要 是在晚上要求LED一直闪烁。所以中断应该采用电平触发方式。调试方法:接好电路,编好程序,使光敏电阻暴露在光线下,调节Rp到最小值,这时LED应该 闪烁。慢慢调大Rp的阻值,使LED刚刚灭,保持Rp这时的阻值即可。当用手遮住光 敏电阻的光线,LED就会闪烁。编程思路:使用定时器T0,方式1。所以TMODROOO 000 1即:01H 使用指令:MOV TMOD,#01H每50ms中断一次当晶振为12MHz时,lus加一。50ms=50000uso所以赋初值为65536 50000=15536,将15536转换为十六进制为3CB0H 高八位送TH0,第八位 送 TL0.使用指令:MOV TH0,#3CHMOV TLO,#0B0H当晶振为6MHz时,2us加一。50ms=50000us,50000/2=25000 所以赋初值为6553625000=40536,将40536转换为十六进制为9E58H 高八位送TH0,第八位 送 TL0,使用指令:MOV TH0,#9EHMOV TLO,#58H第3页共31页当晶振为 11.0592MHZ 时,12/11.0592 us 加一。50ms=50000us,50000*11.0592/12=46080所以赋初值为6553646080=19456,将19456转换为十六进制为4C00H 高八位送TH0,第八位送 TL0,使用指令:MOV TH0,#4CHMOV TLO,#00H因为50ms闪烁一次太快,当要求2S进行一次闪烁时则需要中断2S/50 ms=40次。参考程序:(以12MHz为例)ORG0000HAJMPMAINORG0003H;外部中断0的中断入口地址AJMPHYSDMAIN:MOVTMOD,#01H;设置T0工作方式1,且为定时MOVIE,#81H;CPU开中断和外部中断0开中断BT:CLRP1.0SJMPBT;白天灭LED且等待中断HYSD:SETBP1.0;亮 LEDMOVR0,#40;定时40次,即:50ms*40=2S(这里亮2S)LP:MOVTHO,#3CH;赋初值MOVTLO,#OBOHSETBTRO;启动定时JNBTFO,$;等待50ms定时到,定时到后TFO为1CLRTFO;软件清除T0的溢出标志位TFODJNZR0,LP;判断是否有40次T0定时MOVR0,#20LP1:MOVTHO,#3CHMOVTLO,#OBOHSETBTROJNBTFO,$CLRTFODJNZR0,LP1JNBP3.2,HYSDRETI18句第4页共31页试题编号3105考题:循环点亮8个发光二极管。控制要求:利用左移或右移指令从左向右点亮并循环n次,或从右向左点亮并循环n次,循环 完毕全部熄灭。(循环顺序及次数由考评员现场指定)高电单片机实操程序1.电路原理图:+5VP1.0=1/40=i VccP1.1=2 39=Po.oP1.2=3 38=Po.lP1.3=4 37=P0.2P1.4=5 36=P0.3P1.5=6 35=P0.4P1.6=7 34=P0.5P1.7=8 33=P0.6RST/VPD=9 32=P0.7RXD P3.0=10 8031 31=EA/VppTXD P3.1=11 8051 30=ALE/PROGINTO P3.2=12 8751 29nPSENINTI P3.3=13 28=P2.7TO P3.4=14 27=P2.6T1 P3.5=15 26=P2.5WR P3.6=16 25=P2.4RD P3.7=17 24=P2.3XTAL2 18 23=P2.2XTATJ=19 22=P?1Vss=20 21=P2.0第5页共31页2.电路工作原理:根据电路原理图可知:当某位输出为高电平时对应的LED发光。要求从左向右移动时先 从P1 口输出10000000即:80H 这时LED7亮,其它灭,亮的时间可以通过延时确定。当向P1 口送01000000即:40H 这时LED6亮,其它灭,依次类推。所以可以通过RR A 指令实现。从左向右移动参考程序:ORG0000HMOVR7,#40;循环5次,一次需要依次点亮8个LED,所以为40MOVA,#80H;送初值给累加器ACC,如果向左移动就用MOV A,#01HLOOP:MOVPl,A;送Pl 口进行LED显示ACALL DELAY;显示的时间通过延时子程序决定RR A;将A的内容循环右移动一位,如果向左移动就用RL ADJNZR7,LOOP;判断循环是否完毕MOVPl,#00HSJMP$;完毕后等待DELAY:MOVR4,#5;延时 0.5S 子程序(fsc=6MHz),如 fosc=12Ms 川#10DO:MOVR5,#125;5*2usDI:MOVR6,#200;125*5*2*2usD2:DJNZR6,D2;200*125*5*2*2usDJNZR5,DI;125*5*2*2usDJNZR4,DO;5*2usRETEND从右向左移动参考程序:ORG0000HMOVR7,#32;循环4次,一次需要依次点亮8个LED,所以为32MOVA,#01H;送初值给累加器ACC用MOV A,#01H亮LEDOLOOP:MOVPl,A;送Pl 口进行LED显示ACALL DELAY;显示的时间通过延时子程序决定RL A;将A的内容循环左移动一位DJNZR7,LOOP;判断循环是否完毕MOVPl,#00HSJMP$;完毕后等待DELAY:MOVR4,#5;延时 0.5S 子程序(fsc=6MHz),如 fosc=12Ms 川#10DO:MOVR5,#125;5*2usDI:MOVR6,#200;125*5*2*2usD2:DJNZR6,D2;200*125*5*2*2usDJNZR5,DI;125*5*2*2usDJNZR4,DO;5*2usRETEND第6页共31页从左向右移动3次,然后从右向左移动2次参考程序:ORG 0000H;循环3次,一次需要依次点亮8个LED,所以为24;送初值给累加器ACCMOV R7,#24MOV A,#80HLOOP:MOV Pl,A;送P1 口进行LED显示ACALL DELAY;显示的时间通过延时子程序决定RR A;将A的内容循环右移动一位DJNZ R7,LOOPMOV Pl,#00H;判断循环是否完毕MOV R7,#16;循环2次,一次需要依次点亮8个LED,所以为16MOV A,#01H;送初值给累加器ACCLOOP1:MOV Pl,A;送P1 口进行LED显示ACALL DELAY;显示的时间通过延时子程序决定RL A;将A的内容循环右移动一位DJNZ R7,LOOP1MOV Pl,#00H;判断循环是否完毕SJMP$;完毕后等待DELAY:MOVR4,#5;延时 0.5S 子程序(fosc=6MHz),如 fsc=12Ms 用#10DO:MOVR5,#125;5*2usDI:MOVR6,#200;125*5*2*2usD2:DJNZR6,D2;200*125*5*2*2usDJNZR5,D1;125*5*2*2usDJNZR4,DO;5*2usRETEND第7页共31页高电实操3103:计数报警考题:利用8031计数器,当计数满n个后LED发光二极管发光报警。计数脉冲用消抖动开关产生。控制要求:按按钮开关n次,发光二极管发光。1.电路原理图:第8页共31页2.电路工作原理:考题要求,每按下一次按钮时计数一次,通过程序设定计数次数,按下次数到后LED亮(P1.0输出高电平)。根据硬件结构可知:按键输入为计数器TO。所以TO在这里不能作 为定时器,而是作为计数器。所以TMOD=0000 0100(13位计数器)采用指令 MOV TMOD,#04H或 TMOD=0000 0101(16 位计数器)采用指令 MOV TMOD,#05H或TMOD=0000 0110(自动重装入8位计数器)采用指令 MOV TMOD,#06H输入管脚P3.4如果直接通过开关接入的话,会有很大的干扰,也就是按下或松开时会有 抖动,造成按下一次可能会计数若干次。所以采用两个与非门组成一个触发器进行抗干扰(防 抖动电路)解法一:用模式1,不可循环START:MOVTMOD,#05H;设置TO为16位计数器MOVTHO,#OFFH;赋初值此处计数10次。因为16位最多可计数65536MOVTLO,#0F6H;次,初值赋 65536 10=65526=0FFF6HSETBTRO;启动计数器CLRP1.0;计数未到灭LEDJNBTFO,$;等待计数到。如果计数到则TFO自动变为“1”SETBP1.0;计数到亮LEDSJMPEND$;等待解法二:用模式2,可循环START:MOV TMO:D,#06H;模式2,自动重装入8位计数器CLR Pl.0;开始灭LED#0F6H;赋初值,模式2最多可计数256次。这里为10次#0F6H;初值为256 10=246=0F6H,模式2赋初值一样;启动计数器MOV THO,MOV TLO,SETB TROLP:JBC TFO,SJMP LPREP;计数未满顺序执行,满则跳REP同时将TFO清零。REP:CPL P1.0 SJMP LP END;将输出状态取反,;跳LP等待下次计数10次第9页共31页高电考题3104:数码管显示考题:利用8031串行口和74LS164移位寄存器驱动数码管。控制要求:数码管依次按指定的顺序循环并显示数字。1.电路原理图:+5VQ7Q6Q5Q4GND蓄1 14 FVCC2 13 1。3 12 Qi 1并4 n,Q2j 出5 10 卜Q3)6 9-CLR01H fosc=12MHzT0计数初值X:=10000H-12 X 50X 103/12=3CB0H用R0软件计数2s/50ms=40ORG0000HAJMPMAINORG0003HAJMPTNTMAIN:MOVTMOD,#01HMOVIE,#81HBT:CLRPl.0SJMPBTTNT:CPLPl.0MOVR0,#40LP:MOVTHO,#3CH;如果是 11.0592MHZ 贝U TH0=4BH TLO=FEHMOVTLO,#OBOH;如果是 6MHz 则 TH0=9EH TL0=58HSETBTROJNBTFO,$CLRTFODJNZR0,LPJNBP3.2,TNTRETI18句数码管显示(高电实操题3104)利用8031串行口和74LS164驱动一个数码管,要求:数码管依次按指定的顺序循环并 显示数字。例如:规定按1、3、5、7、9、2、4、6、8、0、A、B、C、D、E、F、P、熄灭顺序循环显示。法一.START:MOVSCON,#00HMOVR0,#0MOVDPTR,#TABLP:MOVA,R0MOVCA,A+DPTRMOVSBUF,AJNBTI,$CLRTIINCR0ACALLDELYCJNER0,#20,LPSJMPSTARTTAB:DB06H,4FH,6DH,07H,6FH,5BH,66H,7DH,7FH,3FH(共阴)第25页共31页DB 77H,7CH,39H,5EH,79H,71H,40H,73H,80H,OOHDELY:MOV R4,#10;延时 0.5s 子程序(fosc=12MHz)I I IRETMOV STARTMOVMOVMOV 35H脚RO:INCMOVRO,#20HRI,#19 34H,R0ROA,R0CJNE A,34H,MSJMP EXITM:JC NMOV 34H,ASJMP EXITN:CJNE A,35H,SSJMP EXITS:JNC EXITMOV 35H,AEXIT:DJNZ RI,STARTSJMP$END第26页共31页开始将查找数据块首地址送R0 将查找次数送R1将首地址的内容结束3102考核项目考核内容扣分标准配分扣分记录得分利用8031定 时器与中断 功能控制一 个“航标灯”。要求黑夜时 发光二级管 按指定频率 闪烁(例如;死2S。灭 2S):白天时 发光二级管 不亮原程序:(程序起始地址)(跳转到主程序入口)(中断入口)(等待中断请求)ORG 0000HAJMP MAINORG 0003HAJMP HYSDMAIN:MOV TMOD,#01H(C/T=0 定时 1 定时为 00000001)HYSD:MOV IE,#81HCLR P1.0 SJMP$SETB P1.0(允许外部中断0中断:10000001即EA=1 EX0=l)(关灯)(等待中断)(亮灯)DELY:ACALL DELYCLR P1.0ACALL DELYRETIMOV RO,#20(中断返回)(延时1S子程序)LP:MOV TH0,#3CH(置计数初值高位)晶振:1MOV TL0,#0B0H SETB TRO JNB TFO,$CLR TFO DJNZ R0,LP RET2 MH Z,#2 0=1 S 6 MHZ,#2 0=0.5 S(置计数初值低位)(启动计数器)(T0没有溢出,就地等待)(T0C产生溢出清标置位)(减1不为0转移指令)第28页共31页程序:方法一(循环5次)显示1到F 有三个不清楚是什么START:MOV RI,#5(循环 5 次)考核项目考核内容扣分标准配分扣分记录得分禾U用8 0 3 1串行口和 7 4 L S 1 6 4移位寄 存器驱动的 一个数码管。要求:数码管 依次按指定 的顺序循环 显示数字DJNZ R5,D1DJNZ R4,D0 RETLP0:MOV R0,#0(偏移量)(TAB表首地址送DPTR)MOV DPTR,#TABLP:MOV A,RO(RO里的内容送A)MOVC A,A+DPTR(取显示数据)MOV SBUF,A(数据送SBUF,启动串行口发送数据)JNB TI,$(等待一帧发送结束JNB为0跳转)CLR TI(清审行口中断)INC R0(显示值加1)ACALL DELY(调延时子程序)CJNE R0,#19,LP(19个数据显示完否?未完成跳LP,完了往下执行)DJNZ R1,LPOMOV Pl,#00H(循环完毕熄灯)SJMP$TAB:DELY:DO:DI:D2:DB 0C0H,0F9H90A4H,0B0H,99H,92HDB 82H,0F8H,80H,90HDB 88H,83H,OC6H,OA1HDB 86H,8EH,0BFH,7FH,0FFHMOV R4,#1 0MOV R5,#12 5MOV R6,#20DJNZ R6,D2第29页共31页方法二:START:MOV SCON,#OOH(设置审行口方式0 同步移位)LP:MOV R0,#0MOV DPTR,#TABMOV A,ROMOVC A,A+DPTRMOV SBUF,AJNB TI,$CLR TITAB:INC ROACALL DELYCJNE R0,#19,LPSJMP STARTDB 0C0H,0F9H,0A4H,0B0H,99H,92HDB 82H?0F8H,80H,90HDB 88H,83H,OC6H,OA1HDELY:DO:DI:D2:DB 86H,8EH,0BFH,7FH,0FFHMOVR4,#1MOV R5,#12MOV R6,#20DJNZ R6,D2DJNZ R5,D1DJNZ R4,D0RET第30页共31页第31页共31页
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服