好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

51单片机10个典型实验.docx

54页
  • 卖家[上传人]:hh****pk
  • 文档编号:357134787
  • 上传时间:2023-07-18
  • 文档格式:DOCX
  • 文档大小:530.05KB
  • / 54 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1. 闪烁灯2. 广告灯的左移右移3. 广告灯(利用取表方式)4. I/O并行口直接驱动LED显示5. 按键识别方法6. 动态数码显示技术7. 4x4矩阵式键盘识别技术8. 定时计数器TO作定时应用技术(一)9. 定时计数器TO作定时应用技术(二)10. 数字电子钟1. 闪烁灯1. 实验任务如图4. 1. 1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一 灭,一亮一灭的时间间隔为0. 2秒2. 电路原理图OO> Y1C2 1 3OpF^ 反DL.2345.O.7 PPPPPFPP图 4. 1. 13. 系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模 块”区域中的L1端口上4. 程序设计内容(1).延时程序的设计方法作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要 求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在 执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程 序是如何设计呢?下面具体介绍其原理:如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒MOV R6, #20 2个机器周期 22 + 2X248 = 498 20 XDI: MOV R7, #248 2个机器周期 2DJNZ R7,$ 2个机器周期 2X24849810002DJNZ R6, D1 2 个机器周期 2X20 = 40因此,上面的延时程序时间为10.002ms。

      由以上可知,当 R6 = 10、R7 = 248 时,延时 5ms, R6 = 20、R7 = 248 时, 延时10ms,以此为基本的计时单位如本实验要求0. 2秒=200ms, 10ms XR5 = 200ms,则R5 = 20,延时子程序如下:DELAY: MOV R5, #20 DI: MOV R6, #20 D2: MOV R7, #248DJNZ R7, $DJNZ R6, D2DJNZ R5, DI RET(2).输出控制如图1所示,当 平,即 P1. 0 = 1 的单向导电性可 L1熄灭;当P1. 0 P1.0 = 0 时,发 可以使用SETB 输出高电平,使P1.0端口输出高电 时,根据发光二极管 知,这时发光二极管 端口输出低电平,即 光二极管L1亮;我们 P1.0指令使P1.0端口 用CLR P1.0指令使Pl. 0端口输出低电平5. 程序框图如图4. 1. 2所示图 4. 1. 26. 汇编源程序ORG 0START: CLR Pl. 0LCALL DELAYSETB Pl. 0LCALL DELAYLJMP STARTDELAY: MOV R5, #20 ;延时子程序,延时0. 2秒DI: MOV R6, #20D2: MOV R7, #248DJNZ R7, $DJNZ R6, D2DJNZ R5, DIRETEND7. C语言源程序^include sbit L1=P1 0;void delay02s (void) 〃延时 0. 2 秒子程序 unsigned char i,j,k; for (i=20;i>0;i--) for(j=20; j>0; j—) for(k=248;k>0;k—);} void main(void)(while (1)(Ll=0;delay02s ();Ll=l;delay02s ();}}2. 广告灯的左移右移1. 实验任务做单一灯的左移右移,硬件电路如图4. 4. 1所示,八个发光二极管L1-L8 分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮,开始 时 Pl. 0-P1. 1—Pl. 2-P1. 3—--- P1. 7—P1. 6—…一P1. 0 亮,重复循环。

      2. 电路原理图vccR1 <»—g2Q-R3220R4220R5«•—CZ220R6 "~(220R7• >—«220R8220RS?—I220GHD•七C]wLOqFJ—<6R210K3OpF8 APl 0PO O/ADOPl IPO 1/AD1Pl.2PO.2/AD2Pl.3P0.3/AD3Pl 4PO 4/AD4Pl 5PO 5/AD5Pl 6PO 6/AD6Pl 7PO 7/AD7 ALE PSENP3 O/RXDP2.7/A15P3 1/TXDP2.6/A14P3 2/INTQP2 5/AI3P3 34NT1P2 4/A12P3 4/TOP2 3/AllP3 5/T1P2 2/A10P3.6/WRP2.1/A9P3.7/RDP2.0/A8R一 §R o30pF图 4. 4. 13. 系统板上硬件连线把“单片机系统”区域中的Pl. 0-P1.7用8芯排线连接到“八路发光二极管指 示模块”区域中的L1-L8端口上,要求:P1. 0对应着LI, Pl. 1对应着L2, ,P1. 7对应着L8o4. 程序设计内容我们可以运用输出端口指令MOV PL A或MOV PL #DATA,只要给累加器 值或常数值,然后执行上述的指令,即可达到输出控制的动作。

      每次送出的数据是不同,具体的数据如下表1所示:Pl. 7Pl. 6Pl. 5Pl. 4Pl. 3Pl. 2Pl. 1Pl. 0说明L8L7L6L5L4L3L2LI11111110LI亮11111101L2亮11111011L3亮11110111L4亮11101111L5亮11011111L6亮10111111L7亮01111111L8亮5.程序框图表1图 4. 4. 26.汇编源程序ORG 0START: MOV R2, #8MOV A, #OFEHSETB CLOOP: MOV Pl, ALCALL DELAYRLC ADJNZ R2, LOOPMOV R2, #8LOOP1: MOV Pl, ALCALL DELAYRRC ADJNZ R2, LOOP1LJMP STARTDELAY: MOV R5, #20DI: MOV R6, #20D2: MOV R7, #248DJNZ R7, $DJNZ R6, D2DJNZ R5, DIRETEND7. C语言源程序 ttinclude unsigned char i; unsigned char temp; unsigned char a, b;void delay(void)(unsigned char m, n, s; for(m=20;m>0;m一) for(n=20;n>0;n一) for (s=248;s>0;s一);}void main(void)(while(1)( temp=0xfe; Pl二temp; delay ();for(i=l;i<8;i++){a=temp<>(8~i);Pl=a|b;delay ();}for(i=l;i<8;i++){a=temp>>i;b=temp<<(8~i);Pl=a|b;delay ();}} }3. 广告灯(利用取表方式)1. 实验任务利用取表的方法,使端口 Pl做单一灯的变化:左移2次,右移2次,闪烁2次 (延时的时间0.2秒)。

      2. 电路原理图「Ll,C1 ■IOuFVCCAT89S51ooPl 4Pl 5Pl 6Pl.7P3 CMRXD P3.1/TXD P3.2/INTO P3 3HNT1 P3 4/TO P3.sm P3 P3 7/RD"Pl O8 A PO.O/ADO PO 1/AD1 PO 2/AD2 PO 3/AD3 PO.4/AD4 PO 5/AD5 PO 6/AD6 PO.7/AD7 ALE PSEN P2 7/A15 P2.6/A14 P2 5/A13 P2 4/A12 P2 3/A1 1 P2 2/A1O P2.1/A9 P2 O/A8 皇C2=±=12MH23OpF图 4. 5. 13. 系统板上硬件连线把“单片机系统”区域中的Pl. 0-P1.7用8芯排线连接到“八路发光二极 管指示模块”区域中的L1-L8端口上,要求:P1.0对应着LI, Pl. 1对应 着L2, , P1.7对应着L84. 程序设计内容在用表格进行程序设计的时候,要用以下的指令来完成(1) •利用MOV DPTR, #DATA16的指令来使数据指针寄存器指到表的开 头2) .利用MOVC A, @A+DPTR的指令,根据累加器的值再加上DPTR的 值,就可以使程序计数器PC指到表格内所要取出的数据。

      因此,只要把控制码建成一个表,而利用MOVC A, @A+DPTR做取码的操作, 就可方便地处理一些复杂的控制动作,取表过程如下图所示:5. 程序框图图 4. 5. 26. 汇编源程序 ORG 0START: MOV DPTR, STABLE LOOP: CLR A MOVC A, ©A+DPTR CJNE A, #01H, LOOP1 JMP STARTLOOP1: MOV Pl, A MOV R3, #20 LCALL DELAY INC DPTR JMP LOOPDELAY: MOV R4, #20 DI: MOV R5, #248 DJNZ R5, $ DJNZ R4, DI DJNZ R3, DELAYRETTABLE: DB OFEH, OFDH, OFBH, 0F7HDB OEFH, ODFH, OBFH, 07FHDB OFEH, OFDH, OFBH, 0F7HDB OEFH, ODFH, OBFH, 07FHDB 07FH, OBFH, ODFH, OEFHDB 0F7H, OFBH, OFDH, OFEHDB 07FH, OBFH, ODFH, OEFHDB 0F7H, OFBH, OFDH, OFEHDB OOH, OFFH, OOH, OFFHDB O1HEND7. C语言源程序ttinclude unsigned char code table [] = (Oxfe, Oxfd, Oxfb, 0xf7,Oxef, Oxdf, Oxbf, 0x7f,Oxfe, Oxfd, Oxfb, 0xf7,Oxef, Oxdf, Oxbf, 0x7。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.