东南大学单片机实验报告测控技术与仪器_第1页
东南大学单片机实验报告测控技术与仪器_第2页
东南大学单片机实验报告测控技术与仪器_第3页
东南大学单片机实验报告测控技术与仪器_第4页
东南大学单片机实验报告测控技术与仪器_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机实验报告2015/1/5 单片机应用系统设计实验报告 姓 名: 学 号: 院 系:仪器科学与工程学院 专 业: 测控技术与仪器 实 验 室: 机械楼5楼 同组人员: 评定成绩: 审阅教师: 软件实验一 数据传送实验一、 实验目的1、熟悉单片机仿真开发器的使用;2、掌握编程方法;3、掌握8051内部RAM的数据操作二、 实验内容内部RAM 40H4FH单元置数A0HAFH,然后将40H4FH单元内容送到内部RAM50H5FH单元中。编辑、编译、运行程序,检查内部RAM中的结果。三、 实验程序 46 / 46 ORG 0000HRESET: AJMP MAIN ORG 003FHMAIN:

2、MOV R0,#40H MOV R2,#10H ;提高时将10H改为20H MOV A,#0A0H ;提高时将0A0H改为00HA1: MOV R0,A INC R0 INC A DJNZ R2,A1 MOV R0,#40H MOV R1,#50H ;提高时将50H改为60H MOV R2,#10H ;提高时将10H改为20HA2: MOV A,R0 MOV R1,A INC R0 INC R1 DJNZ R2,A2A3: SJMP A3四、 实验结果实验显示RAM的40H4FH以及50H5FH的内容都为A0HAFH。五、 实验提高修改程序:将所置的数改为00H1FH,置数单元和传送单元分别改

3、为内部RAM的40H5FH、60H7FH。见实验程序注释部分。六、实验思考 熟悉了伟福单片机系统的使用方法,在仿真器中查看寄存器内容变化,了解了51单片机内部RAM寻址方式:立即数寻址、寄存器寻址等。 软件实验二 多字节十进制加法实验一、 实验目的掌握MCS-51汇编语言程序设计方法二、实验内容多字节十进制加法;加数存储单元首地址由R0指出,被加数和结果的存储单元首地址由R1指出,字节数由R2指出;编辑、编译、运行程序,检查内部RAM中的结果。三、实验程序加数存储单元为:31H、30H,被加数存储单元为:21H、20H,结果存储单元为:22H、21H、20H。 ORG 0000HRESET:

4、AJMP MAIN ORG 0100HMAIN: MOV SP,#60H MOV R0,#31HMOV R0,#22H ;提高时将加数高位改为自定义的数的高位(如66H)DEC R0MOV R0,#33H ;提高时将加数低位改为自定义的数的低位(如77H)MOV R1,#21HMOV R1,#44H ;提高时作为被加数的高位被修改(如改为44H)DEC R1MOV R1,#55H ;提高时作为被加数的低位被修改(如改为55H)MOV R2,#02HACALL DACEHERE: SJMP HEREDACE: CLR CDAL: MOV A,R0 ADDC A,R1DA AMOV R1,AINC

5、 R0INC R1DJNZ R2,DALCLR AMOV ACC.0,CMOV R1,ARET四、实验结果 被加数单元地址 (21H)(20H)加数单元地址 (31H)(30H) +) 结果单元地址 (22H)(21H)(20H) 被加数数值 44H 55H加数数值 22H 33H +) 结果数值 00H 66H 88H五、实验提高修改加数和被加数(十进制数),重复运行程序。思考:见程序注释部分,改过之后结果如下:被加数数值 44H 55H加数数值 66H 77H +) 结果数值 01H 11H 32H 六、实验思考学习了多字节十进制加法,其中DA这条汇编指令是实现十进制加法的关键,当用BCD

6、码十进制数进行加法运算时,其运算结果的和数不一定仍为十进制的BCD码,必须用DA指令调整成十进制的BCD码。软件实验三 十进制数排序实验一、实验目的掌握十进制数的排序方法二、实验内容本程序用的是“冒泡排序”法,是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。再进行下一轮比较,找出第二大数据,直到全部数据有序,即从小到大排序。三、实验程序SIZE EQU 10ARRAY EQU 40HCHANGE EQU 0SORT: MOV R0,#ARRAYMOV R7,#SIZE-1CLR CHANGEGOON: MOV A,R0MOV R2,A

7、INC R0MOV B,R0CJNE A,B,NOTEQUALSJMP NEXTNOTEQUAL: JC NEXT;提高时将“JC” 改为“JNC”SETB CHANGEXCH A,R0DEC R0XCH A,R0INC R0NEXT: DJNZ R7,GOONJB CHANGE,SORTLJMP $END四、实验结果实验时,运行程序前手动更改RAM 50H59H的内容为任意10个无序的数,如00H,09H,0FH,0AH,04H,C0H,B1H,34H,25H,FFH。运行程序后可以看到50H59H的内容变为00H,04H,09H,0AH,0FH,25H,34H,B1H,C0H,FFH即按升

8、序排列的10个数。五、实验提高修改程序,按照从小到大的顺序排列。结果:只要将NOTEQUAL子程序中的JC改为JNC即可实现。运行后的数据将按照从大到小排列。六、实验思考本实验使用的是冒泡排序,冒泡排序是很经典的排序算法,通过依次比较前后两个数大小从而将整个序列排序。这个方法算法思想直观易懂,实现方式简单,但是由于需要多次循环所以整个过程很繁琐,尤其是数据较多时需要处理的时间就会大大加长。硬件实验一 I/O口输入/输出及控制实验 、I/O口输入/输出实验一、实验目的1、学习单片机I/O口的使用方法;2、学习延时子程序的编写和使用。二、实验内容1、I/O口输出:P1口做输出口,接八只发光二极管,

9、编写程序让发光二极管循环点亮。2、I/O口输入/输出:P1.0、P1.1做输入口接两个拨动开关;P1.2、P1.3做输出口,接两个发光二极管。编写程序读取开关状态,将此状态在发光二极管上显示出来。编程时应注意P1.0、P1.1作为输入口时应先置1,才能正确读入值。三、实验步骤1、I/O口输出硬件连接连线连接孔1连接孔21P1.0L02P1.1L13P1.2L24P1.3L35P1.4L46P1.5L57P1.6L68P1.7L7MCS51的P1口循环点灯2、I/O口输入/输出硬件连接连线连接孔1连接孔21K4P1.02K5P1.13P1.2L44P1.3L5MCS51的P1口输入/输出3、分别

10、连接硬件并执行相关程序,记录结果。四、实验程序1、I/O口输出(P1口循环点灯)LOOP: MOV A,#01H ;提高时将01H改为55H MOV R2,#8OUTPUT: MOV P1,A RL A CALL DELAY DJNZ R2,OUTPUT LJMP LOOPDELAY: MOV R6,#0 MOV R7,#0DELAYLOOP: DJNZ R6,DELAYLOOP DJNZ R7,DELAYLOOP RETEND2、I/O口输入/输出(P1口输入/输出)KEYLEFT EQU P1.0 KEYRIGHT EQU P1.1 LEDLEFT EQU P1.2 LEDRIGHT EQ

11、U P1.3 SETB KEYLEFT SETB KEYRIGHTLOOP: MOV C,KEYLEFT MOV LEDLEFT,C MOV C,KEYRIGHT MOV LEDRIGHT,C LJMP LOOPEND六、实验结果I/O口输出实验,运行程序后可以看到LED从右向左循环点亮;I/O口输入/输出实验,运行程序并置1后,拨动某一个开关后会看到对应的LED发光。七、实验提高修改I/O口输出程序,改成先1,3,5,7灯亮,再2,4,6,8灯亮。思考:只要将程序第一行的01H 改为55H即可,55H即0101 0101B,最初1,3,5,7灯亮,右循环后变为1010 1010B,2,4,6

12、,8灯亮。八、实验思考 本实验第一次使用延时程序,对于程序DELAY:MOV R6, #0HMOV R7, #0HDELAYLOOP:DJNZ R6, DELAYLOOPDJNZ R7, DELAYLOOPRET查指令表可知MOV和DJNZ指令均需两个指令周期,在12MHz晶振时,一个机器周期时间为:12/12MHZ = 1ms,该延时子程序延时:(256X256+2)X2X12/12=130ms。由于DJNZ指令是先对寄存器内容减1再与0比较,所以给R6R7赋值0可以获得最长延时。 、 继电器控制实验一、实验目的1、学习I/O端口的使用方法;2、掌握继电器控制的基本方法;3、了解用弱电控制强

13、电的方法。二、实验内容用单片机端口,输出电平控制继电器的吸合和断开,实现对外部装置的控制。三、实验步骤1、硬件连线连线连接孔1连接孔21P1.0继电器输入25V继电器常闭输入3L0继电器中间输入2、实验说明本实验采用的继电器其控制电压是5V,控制端为高电平时,继电器工作常开触点吸合,连接触点的LED灯被点亮。当控制端为低电平时,继电器不工作,LED灯灭。3、分析并执行程序四、实验程序OUTPUT EQU P1.0 ; P1.0 PORTLOOP: CLR C MOV OUTPUT, C CALL DELAY SETB C MOV OUTPUT, C CALL DELAY LJMP LOOPDE

14、LAY: ;提高时为了修改延时时间,只要更改2个立即数0即可。 MOV R6, #0 MOV R7, #0DLOOP: DJNZ R7, DLOOP DJNZ R6, DLOOP RETEND五、实验结果运行程序后可以看到LED灯呈亮、灭、亮、灭的循环。六、实验提高1、修改程序,改变继电器吸合的时间间隔;更改DELAY子程序中的两个立即数即可。2、查询资料,了解其他弱电控制强电的方法。弱电控制强电是通过低压系统的设备如定时器、传感器等设备对强电(220V以上)供电系统实现自动延时开启或关闭功能,有固体继电器、可控硅、光电耦合可控硅等等。七、实验思考这次试验比较简单,初步了解了继电器及其使用方法

15、。硬件实验二 数据输入/输出口扩展实验 、 用74HC245读入数据一、实验目的1、了解CPU数据总线的使用;2、掌握利用74HC245数据输入/输出的方法。二、实验内容利用试验箱上的74HC245输入电路,用总线方式读入开关状态。三、实验步骤1、硬件连接连线连接孔1连接孔21K0245-I02K1245-I13K2245-I24K3245-I35K4245-I46K5245-I57K6245-I68K7245-I79CS0CS2452、实验说明一般情况下,CPU的总线会挂有很多器件,如何使这些器件不造成冲突,这就要使用一些总线隔离器件,例如74HC245就是一种。74HC245是三态总线收发

16、器,利用它既可以输出也可以输入数据。本实验74HC245的片选地址为CS0,即8000H,读这个地址,就是从74HC245读回开关的值。可以用单步的方式执行程序,改变开关状态,观察读回的值。3、分析并执行程序,观察并记录实验结果。四、实验程序CS245 EQU 8000HORG 0000HLOOP: MOV DPTR,#CS245 MOVX A,DPTR LJMP LOOP END五、实验结果程序执行后,拨动八位开关,开为1,闭为0,开关状态表示8位二进制数,相应的寄存器显示对应的结果。六、实验提高连接拨动开关,利用发光二极管显示拨动开关的状态。如果利用74HC245输出,如何设计电路?将二极

17、管与开关一一对应相连即可。其中开关连接74HC245的输入端,LED连接74HC245的输出端。八、实验思考 这次试验第一次访问了外部RAM,使用MOVX指令,将外部RAM地址放入数据指针DPTR间接寻址,寻址范围可达64KB。 、 74HC273扩展数据输出一、实验目的1、学习在单片机系统中扩展简单I/O接口的方法;2、学习数据输出程序的设计方法;3、了解数据锁存的概念和方法。二、实验内容利用实验箱上的273输出电路,从总线上输出I/O口信号,控制八个LED灯。三、实验步骤1、硬件连接连线连接孔1连接孔21L0273-I02L1273-I13L2273-I24L3273-I35L4273-I

18、46L5273-I57L6273-I68L7273-I79CS0CS2732、实验说明本实验用74HC273扩展I/O端口。方法是:通过片选信号和写信号将数据总线上的值锁存在273中,同时在273的输出端口输出。当数据总线上的值撤销后,由于273能够锁存信号,所以273的输出端保持不变,直到下次有新的数据被锁存。本实验中,在数据输出同时输出片选信号和写信号。3、分析并执行程序,观察并记录结果。四、实验程序CS273 EQU 8000HMOV DPTR,#CS273MOV A,#1LOOP: MOVX DPTR,A MOV R6,#0FFH MOV R7,#0FFHDELAYLOOP: DJNZ

19、 R6,DELAYLOOP DJNZ R7,DELAYLOOP NOPRL A ;提高时将RL改为RR LJMP LOOPDELAY: ENDCS273 EQU 8000H MOV DPTR, #CS273 MOV A, #1LOOP: MOVX DPTR,A RL A ;提高时将RL改为RR NOP LJMP LOOPEND五、实验结果执行程序后可以看到LED灯从右向左循环点亮。六、实验提高增加延时程序,让LED灯由左向右循环点亮。见程序注释。七、实验思考74HC273具有八路边沿触发,D 型触发器,带独立的D输入和Q输出。273带锁存,这样D输入的信号可以锁住保持在输出端,保持LED的驱动

20、是固定的电平状态,所以当总线数据撤销后,输出端的值可以保持不变。硬件实验四 显示器/键盘实验 、八段数码管显示实验一、实验目的1、了解数码管动态显示的原理;2、了解用总线方式控制数码管显示。二、实验内容利用实验仪提供的显示电路,动态显示一行数据。三、实验步骤1、硬件连接连线连接孔1连接孔21KEY/LED_CSCS02、实验说明注意:当用总线方式驱动八段显示管时,请将八段的驱动方式选择开关拨到“内驱”位置;当用I/O方式驱动八段显示管时,请将开关拨到“外驱”位置。本实验仪提供了6 位8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。8位段

21、码、6位位码是由两片74LS374输出。位码经MC1413或ULN2003倒相驱动后,选择相应显示位。本实验仪中 8位段码输出地址为0X004H,位码输出地址为 0X002H。此处X是由KEY/LED CS 决定,参见地址译码。做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。以便用相应的地址来访问。例如,将KEY/LED CS 接到CS0上,则段码地址为08004H,位码地址为08002H。七段数码管的字型代码表如下表: 显示字形gfedcba段码001111113fh1000011006h210110115bh310011114fh4110011066h51101101

22、6dh611111017dh7000011107h811111117fh911011116fhA111011177hb11111007chC011100139hd10111105ehE111100179hF111000171h3、分析并执行程序,观察并记录结果。四、实验程序OUTBIT EQU 08002HOUTSEG EQU 08004HIN EQU 08001HLEDBUF EQU 60HNUM EQU 70HDELAYT EQU 75HLJMP STARTLEDMAP: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5

23、EH,79H,71HDELAY: MOV R7,#0DELAYLOOP: DJNZ R7,DELAYLOOP DJNZ R6, DELAYLOOP RETDISPLAYLED: MOV R0,#LEDBUF MOV R1, #6 MOV R2, #00100000BLOOP: MOV DPTR,#OUTBIT MOV A,#0 MOVX DPTR,A MOV A,R0 MOV DPTR,#OUTSEG MOVX DPTR,A MOV DPTR,#OUTBIT MOV A,R2 MOVX DPTR,A MOV R6,#05 CALL DELAY MOV A,R2 RR A MOV R2,A IN

24、C R0 DJNZ R1,LOOP MOV DPTR,#OUTBIT MOV A,#0 MOVX DPTR,A RETSTART: MOV SP,#40H MOV NUM, #0 MLOOP: INC NUM MOV A,NUM MOV B,A MOV R0,#LEDBUFFILLBUF: MOV A,B ANL A,#0FH MOV DPTR,#LEDMAP MOVC A,A+DPTR MOV R0,A INC R0 INC B CJNE R0,#LEDBUF+6,FILLBUF MOV DELAYT,#30DISPAGAIN: CALL DISPLAYLED DJNZ DELAYT,DIS

25、PAGAIN LJMP MLOOP END五、实验结果数码管动态地012345、123456、234567、·······、F012345、0123456、······不断循环显示。六、实验提高修改程序,显示1、2、3、4、5、6或A、B、C、D、E、F。去掉MLOOP: INC NUM一句,NUM的值一直是1或者A,主程序结尾处也不要跳转回MLOOP,我让程序在结尾处一直循环DISPLAYLED子程序。七、思考多个数码管扫描显示利用了人眼的视觉暂留现象,单片机一次

26、位选一个数码管,点亮一个字符,然后位选下一个数码管,这时候上一个数码管其实灭了,但是单片机扫描速度非常快,人眼看到的现象就是多个数码管同时亮了。 、 键盘扫描显示实验一、实验目的1、掌握键盘和显示器的接口方法和编程方法。2、掌握键盘扫描和LED八段码显示器的工作原理。二、实验内容在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。实验程序可分成三个模块。键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。显示模块:将显示单元的内容在显示器上动态显示。主程序:调用键输入模块和显示模块。三、实验步骤1、硬件连接

27、连线连接孔1连接孔21KEY/LED_CSCS0列码(0X002H)读回行码(0X001H)数据总线2、实验说明本实验仪提供了一个6×4的小键盘,向列扫描码地址(0X002H)逐列输出低电平,然后从行码地址(0X001H)读回。如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,相应行码为高。在判断有键按下后,要有一定的延时,防止键盘抖动。再通过输出的列码和读取的行码来判断按下的是什么键。地址中的X是由KEY/LED CS 决定,参见地址译码。做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。以便用相应的地址来访问。例如将KEY/LED CS信号接CS

28、0上,则列扫描地址为08002H,行码地址为08001H。列扫描码还可以分时用作LED的位选通信号(参见键盘显示电路)。3、分析并执行程序,观察并记录结果。四、实验程序OUTBIT EQU 08002HOUTSEG EQU 08004HIN EQU 08001HLEDBUF EQU 60HLJMP STARTLEDMAP: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDELAY: MOV R7,#0DELAYLOOP: DJNZ R7,DELAYLOOP DJNZ R6, DELAYLOOP RETD

29、ISPLAYLED: MOV R0,#LEDBUF MOV R1, #6 MOV R2, #00100000BLOOP: MOV DPTR,#OUTBIT MOV A,#0 MOVX DPTR,A MOV A,R0 MOV DPTR,#OUTSEG MOVX DPTR,A MOV DPTR,#OUTBIT MOV A,R2 MOVX DPTR,A MOV R6,#1 CALL DELAY MOV A,R2 RR A MOV R2,A INC R0 DJNZ R1,LOOP RETTESTKEY: MOV DPTR,#OUTBIT MOV A,#0 MOVX DPTR,A MOV DPTR,#I

30、N MOVX A,DPTR CPL A ANL A,#0FH RETKEYTABLE: DB 16H,15H,14H,0FFH DB 13H,12H,11H,10H DB 0DH,0CH,0BH,0AH DB 0EH,03H,06H,09H DB 0FH,02H,05H,08H DB 00H,01H,04H,07HGETKEY: MOV DPTR,#OUTBIT MOV P2,DPH MOV R0,#LOW(IN) MOV R1,#00100000B MOV R2,#6KLOOP: MOV A,R1 CPL A MOVX DPTR,A CPL A RR A MOV R1,A MOVX A,R0

31、 CPL A ANL A,#0FH JNZ GOON1 DJNZ R2,KLOOP MOV R2,#0FFH SJMP EXITGOON1: MOV R1,A MOV A,R2 DEC A RL A RL A MOV R2,A MOV A,R1 MOV R1,#4LOOPC: RRC A JC EXIT INC R2 DJNZ R1,LOOPCEXIT: MOV A,R2 MOV DPTR,#KEYTABLE MOVC A,A+DPTR MOV R2,AWAITRELEASE: MOV DPTR,#OUTBIT CLR A MOVX DPTR,A MOV R6,#10 CALL DELAY C

32、ALL TESTKEY JNZ WAITRELEASE MOV A,R2 RETSTART: MOV SP,#40H MOV LEDBUF+0,#0 MOV LEDBUF+1,#0 MOV LEDBUF+2,#0 MOV LEDBUF+3,#0 MOV LEDBUF+4,#0 MOV LEDBUF+5,#0MLOOP: CALL DISPLAYLED CALL TESTKEY JZ MLOOP CALL GETKEY ANL A,#0FH MOV DPTR,#LEDMAP MOVC A,A+DPTR MOV LEDBUF+5,A LJMP MLOOP END五、实验结果键盘按下一个键后,数码管

33、就显示相应的键值。六、实验提高1、修改程序,使键值在数码管上从右向左移动显示。检测键盘,有键按下就获取键值,将键值存在寄存器A中,调用上一个实验中的数码管的程序。2、设计程序 ,每按一次键,数码管显示加1,实现099的自加。主程序:START:MOV SP,#40HMOV LEDBUF,#0MOVCOUNT,#0MLOOP: CALL DISPLAYLED CALL TESTKEY JZ MLOOP INCCOUNTMOVA,COUNT MOV DPTR,#LEDMAP MOVC A,A+DPTR MOV LEDBUF,ACALL DELAY LJMP MLOOPEND七、实验思考扩展实验第二

34、个,每检测到一次按键并且计数加一显示,要注意加一个延时,在进行下一次检测和显示,人手按键时间对于程序来说太慢,一次按键,可能计数很多次。硬件实验五 串行口实验 、串行数据转换并行数据实验一、实验目的1、掌握MCS51/MCS96串行口方式0工作方式及编程方法;2、掌握用MCS51/MCS96的P1口的I/O功能,输出串行数据;3、掌握利用串行口入I/O口,扩展I/O通道的方法。二、实验内容利用单片机的串行口和I/O端口串行输出,利用板上的74HC164串转并电路,移位转换成并行数据,接在LED灯上显示。三、实验步骤1、硬件连接连线连接孔1连接孔21L0164-Q02L1164-Q13L2164

35、-Q24L3164-Q35L4164-Q46L5164-Q57L6164-Q68L7164-Q79RXD(P3.0)164-AB11TXD(P3.1)164-CLK2、实验说明串行口工作在方式0时,可通过外接移位寄存器实现串并行转换。在这种方式下,数据为8位,只能从RXD端输入输出,TXD端总是输出移位同步时钟信号,其波特率固定为Fosc/12。3、分析并执行程序,观察记录结果。四、实验程序串口0方式:MOV SCON,#0MOV A,#0AAHMOV SBUF,AJNB T1,$CLR T1LJMP $ENDI/O口方式 DAT EQU P1.0 CLK EQU P1.1 MOV A,#55

36、H SETB CLK MOV R7,#8NEXT: RRC A MOV DAT,C CLR CLK SETB CLK DJNZ R7,NEXT LJMP $END 五、实验结果LED灯的L0,L2,L4,L6亮,L1,L3,L5,L7灭。六、实验提高将串行数据转换成并行数据,驱动八段LED显示器,即利用串行口扩展LED显示器,画出线路图并说明工作过程。七、实验思考串口工作方式0是同步串口通讯。其特点是:在有效数据信息开始传输前需用同步字符来指示有效数据信息传输的开始,其接收/发送的数据信息必须由时钟信号来进行严格的同步。 、 并行数据转换串行数据实验一、实验目的掌握并行数据转换为串行数据的方法

37、。二、实验内容利用板上的74HC165并转串电路,读入外部的并行数据,移位转换成串行数,利用单片机串行口和P1口串行读入。三、实验步骤1、硬件连接连线连接孔1连接孔21K0165-P02K1165-P13K2165-P24K3165-P35K4165-P46K5165-P57K6165-P68K7165-P79P1.1165-Q710P1.2165-CLK11P1.0165-LOAD2、实验说明串行口工作在方式0时,可通过外接移位寄存器实现串并行转换。在这种方式下,数据为8位,只能从RXD端输入输出,TXD端总是输出移位同步时钟信号,其波特率固定为晶振频率Fosc/12。利用P1.0控制74H

38、C165护具输入/锁存。3、分析并执行程序,观察记录结果。四、实验程序 LD EQU P1.0 CLR LD SETB LD MOV SCON,#00010000BWAIT: JNB RI,WAIT MOV A,SBUF CLR RI LJMP $ ENDI/O口方式 LD EQU P1.0 DAT EQU P1.1 CLK EQU P1.2 SETB CLK CLR LD SETB LD MOV R7,#8NEXT: RR A MOV C,DAT MOV ACC.7,C CLR CLK SETB CLK DJNZ R7,NEXT LJMP $ END五、实验结果通过改变开关的开闭情况使累加器

39、输出此时的开关值。例如当开关的输入为10011001B时,可以看到累加器A的值为1六、实验思考74HC165是8位并行输入串行输出移位寄存器,可在末级得到互斥的串行输出(Q0和Q7),当并行读取(PL)输入为低时,从D0到D7口输入的并行数据将被异步地读取进寄存器内。而当PL为高时,数据将从DS输入端串行进入寄存器,在每个时钟脉冲的上升沿向右移动一位(Q0 Q1 Q2,等等)。利用这种特性,只要把Q7输出绑定到下一级的DS输入,即可实现并转串扩展。硬件实验六 计数器/定时器实验 、计数器实验一、实验目的学习单片机内部定时/计数器使用方法。二、实验内容MCS51内部定时计数器T0,按计数器模式和

40、方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。三、实验步骤1、硬件连接连线连接孔1连接孔21P1.0L02P1.1L13P1.2L24P1.3L35单脉冲输出P3.4(T0)2、实验说明本实验中内部计数器起计数器的作用。外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。3、分析并执行程序,观察记录结果。四、实验程序MOV TMOD,#00000

41、101BMOV TH0,#0MOV TL0,#0SETB TR0LOOP:MOV P1,TL0LJMP LOOPEND五、实验结果根据脉冲输入,从0开始,按一下脉冲输入,计数加1,并在LED上反映出来。六、实验提高1、修改程序,连接八个LED灯用于计数显示;在原有的连线基础上将P1.4P1.7与L4L7连接2、修改程序,要求将计数器中的数值以十进制的形式显示。扩展主程序:START:movtmod,#00000101bmovth0,#0movtl0,#0setbtr0movr0,#LEDBUFloop:movp1,tl0 MOV A,tl0 ;数码管显示开始 ANL A,#0FH MOV DP

42、TR,#LEDMAP MOVC A,A+DPTRmovr0,a CALL DISPLAYLED LJMP loop END使用了之前数码管实验的程序八、实验思考 熟悉了单片机定时器的计数功能,学会配置寄存器TMOD,单片机定时器最常用的功能是定时功能,其工作在计数模式时,其计数信号来自于外部事件提供给端口TX(x=0,1)上的负跳变脉冲。在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。 、 定时器(秒脉冲发生器)实验一、实验目的1、学习

43、单片机内部计数器/定时器的使用和编程方法;2、进一步掌握中断处理程序的编程方法。二、实验内容用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转。三、实验步骤1、硬件连接连线连接孔1连接孔21P1.0L02、实验说明1、 关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器。2、 定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。3、 内部

44、计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是6MHZ,本程序工作于方式2,即8位自动重装方式定时器, 定时器100us中断一次, 所以定时常数的设置可按以下方法计算:机器周期=12÷6MHZ=2uS(256-定时常数)×2uS=100us定时常数=206. 然后对100us中断次数计数10000次,就是1秒钟.4、 在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。3、分析并执行程序,观察记录结果。四、实验程序TICKEQU 5000T10

45、0USEQU 256-100C100USEQU 30HLEDBUFEQU 0LEDEQU P1.0LJMPSTARTORG000BHTOINT:PUSHPSWMOV A,C100US+1JNZGOONDECC100USGOON:DECC100US+1MOV A,C100USORLA,C100US+1JNZEXITMOVC100US,#HIGH(TICK)MOVC100US+1,#LOW(TICK)CPLLEDBUFEXIT:POPPSWRETISTART:MOVTMOD,#01HMOVTH0,#T100USMOVTL0,#T100USMOVIE,#10000010BSETBTR0CLRLEDBUFCLRLED

温馨提示

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

评论

0/150

提交评论