51单片机实训指导_第1页
51单片机实训指导_第2页
51单片机实训指导_第3页
51单片机实训指导_第4页
51单片机实训指导_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上目 录基本I/O口实训1外部数据存储器的应用(6264)4外部数据存储器的应用(2864)6键盘显示接口芯片的应用8并口扩展的应用12A/D转换的实训14D/A转换的实训20采集温度21制作音乐盒27制作四字单色显示屏31控制微型打印机39实验一:基本I/O口的实训目的:通过对单片机的编程仿真,学会单片机仿真系统的基本工作过程。要求:用LED的亮/灭来体现单片机高/低电平的变化,连接单片机的基本I/O口,对单片机进行编程使其完成:(1)8个LED顺序点亮,顺序熄灭,依此循环4次。(2)8个LED,第1、3、5、7与2、4、6、8 LED交替点亮,依此循环4次。(3)(

2、1)和(2)无限次循环。原理:步骤:1,连接系统板的P1口到LED。 2,连接PC机和仿真机的串口线。 3,给仿真机接通电源。 4,打开仿真机的电源开关,电源灯亮表示仿真系统已经带电。 5,编程。 6,调试。 7,改换其它I/O口,调试程序。参考程序: ORG 0000H MAIN:MOV P1,#0FFH MOV R7,#04H BACK1:SETB P3.0 CLR P1.0 LCALL YS CLR P1.1 LCALL YS CLR P1.2 LCALL YS CLR P1.3 LCALL YS CLR P1.4 LCALL YS CLR P1.5 LCALL YS CLR P1.6

3、LCALL YS CLR P1.7 LCALL YS SETB P1.0 LCALL YS SETB P1.1 LCALL YS SETB P1.2 LCALL YS SETB P1.3 LCALL YS SETB P1.4 LCALL YS SETB P1.5 LCALL YS SETB P1.6 LCALL YS SETB P1.7 LCALL YS CLR P3.0 DJNZ R7,BACK1 MOV R7,#04H BACK2:SETB P3.0 CLR P1.1 CLR P1.3 CLR P1.5 CLR P1.7 LCALL YS LCALL YS SETB P1.1 SETB P

4、1.3 SETB P1.5 SETB P1.7 CLR P1.0 CLR P1.2 CLR P1.4 CLR P1.6 LCALL YS LCALL YS SETB P1.0 SETB P1.2 SETB P1.4 SETB P1.6 CLR P3.0 DJNZ R7,BACK2 LJMP MAIN YS: MOV TMOD,#01H MOV R5,#05H LOOP:MOV TH0,#4CH MOV TL0,#00H SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 DJNZ R5,LOOP RET SJMP $ END心得体会:实验二:外部数据存储器的应用(6264)目

5、的:学会用单片机和外部数据存储器进行交流,了解单片机和外部数据进行交换时的时序关系。要求:以6264数据存储器为实例,按照系统板上的硬件地址对其进行编程,写出 单片机与6264的接口地址,读出6264中连续16个字节的随机数,由小到大排序,然后再存放到6264的相应字节中。(由BC7281显示地址及数据,前四位地址,最后两位数据)原理: 步骤:1,连接PC机和仿真机的串口线。2,连接P1.0DAT,P1.1KEY,P1.2CLK。 3,给仿真机接通电源。 4,打开仿真机的电源开关,电源灯亮表示仿真机已经带电。 5,编程。 6,调试。参考程序:CCQ EQU 2000H;外部数据RAM的地址从2

6、000H开始到3FFFH结束BIT_COUNTDATA06FHTIMERDATA06EHTIMER1DATA06DHTEMPDATA06CHDATA_INDATA02FHDATA_OUTDATA02EHCLKBITP1.2 ;定义I/O口DATBITP1.0 ;KEYBITP1.1 ;ORG 0000HMAIN:LCALL XSFWMOVR0,#30HMOVR1,#10HMOV DPTR,#CCQBACK:MOVX A,DPTRMOVR0,AINCR0INCDPTRDJNZR1,BACKLCALLPAIXUMOVR0,#30HMOVR1,#10HMOV DPTR,#CCQ;外部数据RAM的地址

7、从2000H开始到3FFFH结束BACK1:MOV A,R0MOVXDPTR,AINCR0INCDPTRDJNZR1,BACK1LCALL XSSHJSJMP $PAIXU:MOV R0,#30H;排序子程序MOV R1,#31HMOV 40H,#0FHLOP:MOV 41H,40HLP:MOVA,R0CLRCYSUBB A,R1JC NEXTMOV A,R0XCH A,R1MOV R0,ANEXT:INC R1DJNZ 41H,LPINC R0MOV A,R0INC AMOV R1,ADJNZ 40H,LOPRET;*XSFW:MOV TIMER,#50START_DELAY:MOV TIM

8、ER1,#255;延时以确保BC728X完成复位START_DELAY1:DJNZ TIMER1,START_DELAY1DJNZ TIMER,START_DELAYMOV DATA_OUT,#12H;BC728X初始化LCALL SENDMOV DATA_OUT,#80H;设定为164模式, 不反相LCALL SENDRET;*;* 向BC728X发送一个字节子程序,待发送数据存于DATA_OUT;*SEND:CLRCLK;在CLK输出一脉冲SETBCLKWAIT1:JBDAT,WAIT1;等待DAT变为低电平CLRCLK;再输出一CLK脉冲SETBCLKWAIT2:JNBDAT,WAIT2

9、;等待DAT恢复高电平(输入状态)MOVBIT_COUNT,#8SEND_LOOP:MOVC,DATA_OUT.7;输出BIT7MOVDAT,CCLRCLK;输出一CLK脉冲SETBCLK MOVA,DATA_OUT RLA MOVDATA_OUT,A;DATA_OUT左移一位NOP;短暂延时NOP NOPDJNZBIT_COUNT,SEND_LOOPSETBDAT;恢复DAT为高电平RET;*;* 从BC728X接收一个字节子程序,接收到的数据存于DATA_IN;*RECEIVE:CLRCLK;发出一CLK脉冲SETBCLKWAIT3:JBDAT,WAIT3;等待DAT低电平响应信号CLRC

10、LK;再发出一CLK脉冲,准备接收数据SETBCLKMOVBIT_COUNT,#8RECV_LOOP:NOP;短暂延时NOPNOPNOPNOPNOPNOPNOP MOVA,DATA_INMOVC,DAT;读入一位 RLCAMOVDATA_IN,ACLRCLK;发出CLK脉冲SETBCLKDJNZBIT_COUNT,RECV_LOOPRETXSSHJ:MOVR0,#30HMOVR1,#10HMOV41H,#00HMOV DPTR,#CCQBACK3:MOVDATA_OUT,#15H;HEX译码指令LCALLSENDMOVA,DPHANLA,#0F0H;取键码的低4位SWAP AADD A,41H

11、MOVDATA_OUT,a;在第0位显示LCALLSENDMOV A,41HADD A,#10HMOV 41H,AMOVDATA_OUT,#15H;HEX译码指令LCALLSENDMOVA,DPHANLA,#0FH;取键码的低4位ADD A,41HMOVDATA_OUT,a;在第0位显示LCALLSENDMOV A,41HADD A,#10HMOV 41H,AMOVDATA_OUT,#15H;HEX译码指令LCALLSENDMOVA,DPLANLA,#0F0H;取键码的低4位SWAP AADD A,41HMOVDATA_OUT,a;在第0位显示LCALLSENDMOV A,41HADD A,#

12、10HMOV 41H,AMOVDATA_OUT,#15H;HEX译码指令LCALLSENDMOVA,DPLANLA,#0FH;取键码的低4位ADD A,41HMOVDATA_OUT,a;在第0位显示LCALLSENDMOV A,41HADD A,#30HMOV 41H,AMOVDATA_OUT,#15H;HEX译码指令LCALLSENDMOVA,R0ANLA,#0F0H;取键码的低4位SWAP AADD A,41HMOVDATA_OUT,a;在第0位显示LCALLSENDMOV A,41HADD A,#10HMOV 41H,AMOVDATA_OUT,#15H;HEX译码指令LCALLSENDM

13、OVA,R0ANLA,#0FH;取键码的低4位ADD A,41HMOVDATA_OUT,a;在第0位显示LCALLSENDINC R0INC DPTRLCALL YS2MOV41H,#00HDJNZR1,BACK2RETBACK2: LJMP BACK3YS:MOV 60H,#02HYS1:MOV 61H,#33HYS2:MOV62H,#33HYS3:DJNZ 62H,YS3DJNZ 61H,YS2DJNZ 60H,YS1RETEND心得体会:实验三:外部数据存储器的应用(2864)目的:学会单片机和外部程序存储器的交流,知道比较程序存储器和数据存储器的差异。要求:以2864数据存储器为实例,

14、按照系统板上的硬件地址对其进行编程,写出 单片机与2864的接口地址,读出2864中连续16个字节的随机数,由小到大排序,然后再存放到2864的相应字节中。(由BC7281显示地址及数据,前四位地址,最后两位数据)原理:步骤:1,连接PC机和仿真机的串口线。2,连接P1.0DAT,P1.1KEY,P1.2CLK。 3,给仿真机接通电源。 4,打开仿真机的电源开关,电源灯亮表示仿真机已经带电。 5,编程。 6,调试。参考程序:CCQ EQU 0000H;外部数据RAM的地址从0000H开始到1FFFH结束BIT_COUNTDATA06FHTIMERDATA06EHTIMER1DATA06DHTE

15、MPDATA06CHDATA_INDATA02FHDATA_OUTDATA02EHCLKBITP1.2 ;定义I/O口DATBITP1.0 ;KEYBITP1.1 ;ORG 0000HMAIN:LCALL XSFWMOVR0,#30HMOVR1,#10HMOV DPTR,#CCQ;外部数据RAM的地址从0000H开始到1FFFH结束BACK:MOVX A,DPTRMOVR0,AINCR0INCDPTRDJNZR1,BACKLCALLPAIXUMOVR0,#30HMOVR1,#10HMOV DPTR,#0050H;外部数据RAM的地址从0000H开始到1FFFH结束BACK1:MOV A,R0M

16、OVXDPTR,ALCALL YS4 INCR0INCDPTRDJNZR1,BACK1LCALL XSSHJSJMP $PAIXU:MOV R0,#30H;排序子程序MOV R1,#31HMOV 40H,#0FHLOP:MOV 41H,40HLP:MOVA,R0CLRCYSUBB A,R1JC NEXTMOV A,R0XCH A,R1MOV R0,ANEXT:INC R1DJNZ 41H,LPINC R0MOV A,R0INC AMOV R1,ADJNZ 40H,LOPRETYS4:MOV TMOD,#01H MOV R5,#01H LOOP:MOV TH0,#0CH MOV TL0,#00H

17、 SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 DJNZ R5,LOOP RET ;*XSFW:MOV TIMER,#50START_DELAY:MOV TIMER1,#255;延时以确保BC728X完成复位START_DELAY1:DJNZ TIMER1,START_DELAY1DJNZ TIMER,START_DELAYMOV DATA_OUT,#12H;BC728X初始化LCALL SENDMOV DATA_OUT,#80H;设定为164模式, 不反相LCALL SENDRET;*;* 向BC728X发送一个字节子程序,待发送数据存于DATA_OUT;*SEND:

18、CLRCLK;在CLK输出一脉冲SETBCLKWAIT1:JBDAT,WAIT1;等待DAT变为低电平CLRCLK;再输出一CLK脉冲SETBCLKWAIT2:JNBDAT,WAIT2;等待DAT恢复高电平(输入状态)MOVBIT_COUNT,#8SEND_LOOP:MOVC,DATA_OUT.7;输出BIT7MOVDAT,CCLRCLK;输出一CLK脉冲SETBCLK MOVA,DATA_OUT RLA MOVDATA_OUT,A;DATA_OUT左移一位NOP;短暂延时NOP NOPDJNZBIT_COUNT,SEND_LOOPSETBDAT;恢复DAT为高电平RET;*;* 从BC728

19、X接收一个字节子程序,接收到的数据存于DATA_IN;*RECEIVE:CLRCLK;发出一CLK脉冲SETBCLKWAIT3:JBDAT,WAIT3;等待DAT低电平响应信号CLRCLK;再发出一CLK脉冲,准备接收数据SETBCLKMOVBIT_COUNT,#8RECV_LOOP:NOP;短暂延时NOPNOPNOPNOPNOPNOPNOP MOVA,DATA_INMOVC,DAT;读入一位 RLCAMOVDATA_IN,ACLRCLK;发出CLK脉冲SETBCLKDJNZBIT_COUNT,RECV_LOOPRETXSSHJ:MOVR0,#30HMOVR1,#10HMOV41H,#00HM

20、OV DPTR,#CCQBACK3:MOVDATA_OUT,#15H;HEX译码指令LCALLSENDMOVA,DPHANLA,#0F0H;取键码的低4位SWAP AADD A,41HMOVDATA_OUT,a;在第0位显示LCALLSENDMOV A,41HADD A,#10HMOV 41H,AMOVDATA_OUT,#15H;HEX译码指令LCALLSENDMOVA,DPHANLA,#0FH;取键码的低4位ADD A,41HMOVDATA_OUT,a;在第0位显示LCALLSENDMOV A,41HADD A,#10HMOV 41H,AMOVDATA_OUT,#15H;HEX译码指令LCA

21、LLSENDMOVA,DPLANLA,#0F0H;取键码的低4位SWAP AADD A,41HMOVDATA_OUT,a;在第0位显示LCALLSENDMOV A,41HADD A,#10HMOV 41H,AMOVDATA_OUT,#15H;HEX译码指令LCALLSENDMOVA,DPLANLA,#0FH;取键码的低4位ADD A,41HMOVDATA_OUT,a;在第0位显示LCALLSENDMOV A,41HADD A,#30HMOV 41H,AMOVDATA_OUT,#15H;HEX译码指令LCALLSENDMOVA,R0ANLA,#0F0H;取键码的低4位SWAP AADD A,41

22、HMOVDATA_OUT,a;在第0位显示LCALLSENDMOV A,41HADD A,#10HMOV 41H,AMOVDATA_OUT,#15H;HEX译码指令LCALLSENDMOVA,R0ANLA,#0FH;取键码的低4位ADD A,41HMOVDATA_OUT,a;在第0位显示LCALLSENDINC R0INC DPTRLCALL YS2MOV41H,#00HDJNZR1,BACK2RETBACK2: LJMP BACK3YS:MOV 60H,#02HYS1:MOV 61H,#33HYS2:MOV62H,#33HYS3:DJNZ 62H,YS3DJNZ 61H,YS2DJNZ 60H,YS1RETEND心得体会:实验四:键盘显示接口芯片的应用目的:学会使用键盘显示接口芯片BC7281,了解键盘的工作原理,LED数码管的显示方式及工作原理。要求:从键盘输入信息,数码管显示对应按键键码。原理:步骤:1,连接PC机和仿真机的串口线。2,连接P1.0DAT,P1.1KEY,P1.2CLK。3,给仿真机接通电源。 4,打开仿真机的电源开关,电源灯亮表示仿真机已经带电。5,编程。6,调试。参考程序:#include /*

温馨提示

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

评论

0/150

提交评论