51配件接线图(旧版)

  • 格式:pdf
  • 大小:434.60 KB
  • 文档页数:13

51单片机学习板配件接线及演示程序1.步进电机把步进电机的插头插在学习板上标有“步进电机”的插座中,如下图所示,并把编写好程序下载到学习板的单片机中去,就可以看到步进电机运行相应的动作。

例子:步进电机正转AA: MOV P1,#11111110BLCALL KKMOV P1,#11111101BLCALL KKMOV P1,#11111011BLCALL KKMOV P1,#11110111BLCALL KKSJMP AA;延时KK:MOV R5,#01K1:MOV R6,#80HK2:MOV R7,#80HK3:NOPDJNZ R7,K3DJNZ R6,K2DJNZ R5,K1RET2.DS18B20温度传感器把DS18B20温度传感器的三个管脚对应插到学习板上黑色的标注“温度”插座,注意板上有一个弧度,传感器对应弧度方向,有字的一面向里面,弧度那面向外面插入。

如下图所示。

把编写好的程序下载到学习板的单片机中,从相应的数码管可看到当前温度的变化。

例子:两位数码管温度显示ORG 0000HSTART: MOV R5,#00HMOV P0,#00111111BMOV P2,#00001111BMOV R0,#24A5: MOV R1,#250A4: LCALL D1MSDJNZ R1,A4DJNZ R0,A5;-------------------单片机内存分配申明!TEMPER_L EQU 29H ;用于保存读出温度的低8位TEMPER_H EQU 28H ;用于保存读出温度的高8位FLAG1 EQU 38H ;是否检测到DS18B20标志位G_BIT EQU 20H ;数码管个位数存放内存位置S_BIT EQU 21H ;数码管十位数存放内存位置BG_BIT EQU 22HBS_BIT EQU 23HMAIN:LCALL GET_TEMPER ;调用读温度子程序,显示范围00到99度,显示精;度为1度,因为12位转化时每一位的精度为0.0625;度,我们不要求显示小数所以可以抛弃29H的低4;位将28H中的低4位移入29H中的高4位,这样获;得一个新字节,这个字节就是实际测量获得的温度;这个转化温度的方法非常简洁无需乘于0.0625系数 MOV A,29HMOV C,40H ;将28H中的最低位移入CRRC AMOV C,41HRRC AMOV C,42HRRC AMOV C,43HRRC AMOV 29H,ALCALL DISPLAY ;调用数码管显示子程序AJMP MAIN; 这是DS18B20复位初始化子程序INIT_1820:SETB P2.1NOPCLR P2.1;主机发出延时537微秒的复位低脉冲MOV R1,#3TSR1: MOV R0,#107DJNZ R0,$DJNZ R1,TSR1SETB P2.1 ;然后拉高数据线NOPNOPNOPMOV R0,#25HTSR2: JNB P2.1,TSR3 ;等待DS18B20回应DJNZ R0,TSR2LJMP TSR4 ;延时TSR3: SETB FLAG1 ;置标志位,表示DS1820存在CLR P1.7 ;检查到DS18B20就点亮P1.7LEDLJMP TSR5TSR4: CLR FLAG1 ;清标志位,表示DS1820不存在LJMP TSR7TSR5: MOV R0,#117TSR6: DJNZ R0,TSR6 ;时序要求延时一段时间TSR7: SETB P2.1RET; 读出转换后的温度值GET_TEMPER:SETB P2.1LCALL INIT_1820 ;先复位DS18B20JB FLAG1,TSS2RET ;判断DS1820是否存在?若DS18B20不存在则返回 TSS2: CLR P1.7 ;DS18B20已经被检测到!MOV A,#0CCH ;跳过ROM匹配LCALL WRITE_1820MOV A,#44H ;发出温度转换命令LCALL WRITE_1820;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,;12位的话750微秒LCALL DISPLAYLCALL INIT_1820 ;准备读温度前先复位MOV A,#0CCH ;跳过ROM匹配LCALL WRITE_1820MOV A,#0BEH ;发出读温度命令LCALL WRITE_1820LCALL READ_18200 ;将读出的温度数据保存到35H/36HCLR P1.7RET;写DS18B20的子程序(有具体的时序要求)WRITE_1820:MOV R2,#8 ;一共8位数据CLR CWR1: CLR P2.1MOV R3,#6DJNZ R3,$RRC AMOV P2.1,CMOV R3,#23DJNZ R3,$SETB P2.1NOPDJNZ R2,WR1SETB P2.1RET; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据READ_18200:MOV R4,#2 ;将温度高位和低位从DS18B20中读出MOV R1,#29H ;低位存入29H(TEMPER_L),高位存入28H(TEMPER_H) RE00: MOV R2,#8 ;数据一共有8位RE01: CLR CSETB P2.1NOPNOPCLR P2.1NOPNOPNOPSETB P2.1MOV R3,#9RE10: DJNZ R3,RE10MOV C,P2.1MOV R3,#23RE20: DJNZ R3,RE20RRC ADJNZ R2,RE01MOV @R1,ADEC R1DJNZ R4,RE00RET;显示子程序DISPLAY:MOV A,29H ;将29H中的十六进制数转换成10进制MOV B,#10 ;10进制/10=10进制DIV ABMOV S_BIT,A ;十位在AMOV G_BIT,B ;个位在BMOV DPTR,#TABMOV R0,#4DPL1: MOV R1,#250 ;显示1000次DPLOP: MOV A,G_BIT ;取个位数MOVC A,@A+DPTR ;查表MOV P0,ACLR P2.4LCALL D1MSSETB P2.4MOV A,S_BITMOVC A,@A+DPTRMOV P0,ACLR P2.5LCALL D1MSSETB P2.5;--------显示温度的同时检测温度是否在设定的温度范围内,是则仅仅是显示, ;不做别的操作。

否则,报警并且看温度过高还是过低,过高显示红灯,表示;加温。

过低显示黄灯,表示减温。

DJNZ R1,DPLOP ;100次没完循环DJNZ R0,DPL1 ;4个100次没完循环RET;1MS延时(按12MHZ算)D1MS: MOV R7,#80DJNZ R7,$RETTAB: DB 00111111BDB 00000110BDB 01011011BDB 01001111BDB 01100110BDB 01101101BDB 01111101BDB 00000111BDB 01111111BDB 01101111BEND3. 四路无线收发模块把接收模块插到学习板的单排七孔对应插座,天线部份朝外,如下图所示。

把编写好的程序下载到学习板的单片机中,运行后可通过无线发送遥控观察学习板程序相应的变化。

20PA B C D 路无线发送器10111213例子:无线收发模块AA: JNB P3.2,A1 JNB P3.3,A2 JNB P3.4,A3 JNB P3.5,A4 SJMP AAA1: MOV P1,#11111110BSJMP AAA2: MOV P1,#11111101BSJMP AAA3: MOV P1,#11111011BSJMP AAA4: MOV P1,#11110111BSJMP AA4.128*64液晶模块把液晶模块直接插到学习板上对应的插座,位置和方向如下图所示。

把编写好的程序下载到学习板的单片机中,运行后可以从液晶屏上看到效果,如需调节液晶屏的亮度,可通过单片机晶振旁边的蓝色可调电阻调节。

5.直流电机把直流电机的插头插到学习板上标注“直流电机”的插座上,如下图所示,把编写好的程序下载到学习板的单片机中,运行后可以观察直流电机相应的变化。

6.16*16点阵显示器例子:静态显示三个字TT EQU 150;定义显示时间长短 MOV P3,#00H;初始化 MOV P2,#00H;初始化 AA: MOV R2,#TT;控制汉字静态显示时间 MOV DPTR,#TAB1;调用第一个汉字的字码表 A3: LCALL JTXS;调用静态显示子程序 DJNZ R2,A3; MOV R2,#TT;控制汉字静态显示时间 MOV DPTR,#TAB2;调用第二个汉字的字码表 A4: LCALL JTXS;调用静态显示子程序 DJNZ R2,A4; MOV R2,#TT;控制汉字静态显示时间 MOV DPTR,#TAB3 ;调用第三个汉字的字码表A5: LCALL JTXS ;调用静态显示子程序DJNZ R2,A5 ;LJMP AA ;重复开始;静态显示子程序JTXS:MOV R0,#00H ;从第一列开始扫描MOV R1,#00H ;从第一组代码开始送数SETB P3.0 ;打开控制上半部字码显示A2: MOV P1,R0 ;列扫描A1: LCALL CB ;调用查表子程序INC R1 ;下一代码INC R0 ;下一列CJNE R1,#16,A2 ;是否完成上半部字码显示CLR P3.0 ;关闭控制上半部字码显示MOV R0,#00H ;从第一列开始扫描SETB P3.1 ;打开控制下半部字码显示a22: MOV P1,R0 ;列扫描LCALL CB ;调用查表子程序INC R1 ;下一代码INC R0 ;下一列CJNE R1,#32,A22 ;是否完成下半部字码显示CLR P3.1 ;关闭控制下半部字码显示RET ;返回;查表子程序CB: MOV A,R1 ;查字码表MOVC A,@A+DPTR ;MOV P2,A ;查出结果送P2口显示LCALL KK ;调用一个代码显示时间RET;延时子程序KK: MOV R7,#180K1: NOPDJNZ R7,K1RET;汉字字码表TAB1: DB 20h,20h,20h,20h,20h,20h,0A0h,7Fh,0A0h,20h,20h,20h,20h,20h,20h,00h DB 00h,80h,40h,20h,10h,0Ch,03h,00h,01h,06h,08h,30h,60h,0C0h,40h,00hTAB2: DB 00h,18h,04h,14h,94h,94h,0D5h,0B6h,14h,14h,94h,04h,14h,0Ch,04h,00h DB 00h,29h,29h,15h,14h,4Ah,89h,44h,3Fh,06h,09h,09h,10h,30h,10h,00hTAB3: DB 10h,10h,0F0h,1Fh,10h,0F0h,80h,82h,82h,82h,0F2h,8Ah,86h,82h,80h,00h DB 80h,43h,22h,14h,0Ch,73h,20h,00h,40h,80h,7Fh,00h,00h,00h,00h,00hEND。