• 个人简历下载
  • 职场资讯
  • 求职攻略
  • 求职面试技巧
  • 面试题
  • 笔试题
  • 职业规划
  • 职场法则
  • 职场培训
  • 升迁之路
  • 劳动法规
  • 跳槽注意事项
  • 当前位置: 工作范文网 > 职场 > 职业规划 > 正文

    单片机实验报告七

    时间:2020-09-27 08:43:51 来源:工作范文网 本文已影响 工作范文网手机站

    南昌大学实验报告

    学生姓名: 曾华兆 学号: 6110116078 专业班级: 电子163班

    实验类型:? 验证 ? 综合 ?设计 ? 创新 实验日期: 2018.6.1 实验成绩:

    实验七 单片机串口通信实验

    (一)实验目的

    掌握单片机双机或多机通信工作原理,熟练掌握单片机通信编程。

     掌握单片机定时器的初始化和定时模式编程。

    (二)设计要求

    串口全双工中断方式收发通讯。串口设置为:115200/8/n/1。通过单片机(或者是PC)向单片机发送数据,单片机收到后通过串口把收到的数据原样返回。

    (三)实验原理

    MCS-51 串行口的结构、原理及各种工作方式参阅教材相关内容。本实验使用串行口工作方式 1,通过定时器 1(T1)产生波特率时钟,通过查询串行口收发中断标志 RI 和 TI 来判断单片机串行口数据收发的状态。

    (四)实验设备

    STC高性能单片机实验箱、电脑(软件:Keil?uVision5、stc-isp-15xx-v6.86J)

    实验结果

    (六)结果讨论与心得体会

    本次实验中解决了如何判断数据是发送还是接收的问题和如何判断数据是否发送或接受完成的问题,通过实验中的讨论和研究书.上关于串行口的内容,我们通过中断标志位和循环很好的解决了这个问题。这个实验让我认识到单片机中中断的巨大作用,它不仅可以省去很多繁琐的设计步骤,还可以帮助我们解决许多设计上的问题。另外,我觉得这是一次较为综合性的实验,按键,消抖,数码管显示,定时,串行口中断,串行口数据的收发这些内容都在本次实验中体现出来了,也算是让我们进行了一个小复习,让我们站在一个更高的平台上去编写程序。

    (七)附录:实验源代码

    AUXREQU08EH?

    P1M0 EQU 91H

    P1M1? EQU?92H

    P4 DATA?0C0H

    P5 DATA?0C8H

    P_HC595_SER BIT?P4.0 ;

    P_HC595_RCLK BIT?P5.4 ;

    P_HC595_SRCLK? BIT?P4.3 ;

    LED8 DATA 30H ;

    display_ index DATA 38H ;

    ?ORG? 0000H

    ?AJMP? MAIN

    ?ORG? 000BH

    ?LJMP Timer0_Interrupt

    ?ORG? 0023H

    ?LJMP? Serial_ ISR

    ?ORG? 0100H

    MAIN:LCALL LED_INIT

    ?MOV display_ index,?#7

    ?MOV TL0,#0BFH

    ?MOV?TH0,#0FFH

    ?MOV?SCON,#50H

    ?//ANL?AUXR,#0BFH

    ?MOV?AUXR,#00H

    ?MOV?TMOD,#00H

    ?MOV?TL1,#0FEH

    ?MOV?TH1,#0FFH

    ?CLR?ET1

    ?SETB?ET0

    ?SETB?TR0

    ?SETB?TR1

    ?SETB ES

    ?SETB EA

    ?CLR TI

    ?CLR RI

    KEY_UP:

    ?LCALL? KS

    ?JNZ? S1

    ?AJMP? KEY_UP

    ?S1:?LCALL? DELAY_10MS

    LCALL? KS

    ?JNZ? S2

    ?AJMP? KEY_UP

    ?S2:?MOV? R2,#0FEH

    ? ?MOV? R4,#00H

    ?S3:?MOV? P0,R2

    ? ?JB P0.4,L1

    ?MOV A,#0

    ?AJMP LK

    ?L1:?JB P0.5,L2

    MOV A,#4

    ?AJMPLK

    ?L2:?JB P0.6,L3

    ? ?MOV A,#8

    ?AJMP LK

    ?L3:?JB P0.7,NEXT

    ? ?MOV A,#12

    ?LK:?ADD? A,R4

    MOV SBUF,A

    ?MOV B,?#10

    ?DIV AB

    ?MOV LED8+6,?A ;?

    ?MOV LED8+7,?B

    NEXT:INC R4

    ?MOV A,R2

    ?JNB ACC.3,S4

    ?RL A

    ?MOV R2,A

    ?AJMP S3

    S4:LCALL? KS

    ? ?JNZ S4

    ?AJMP? KEY_UP

    ?KS:MOV P0,#0F0H

    ?MOV A,P0

    ?XRL A,#0F0H

    RET

    DELAY_10MS:

    ?MOV?R5,#2

    DELAY10MS1:

    ?MOV?R6,#250

    ?DJNZ?R6,$

    ?DJNZ?R5,DELAY10MS1

    ?RET

    T_ Display:

    DB 03FH,006H,05BH,04FH,066H,06DH,07DH,007H,07FH,06FH

    ?T_COM:

    DB 001H,002H,004H,008H,010H,020H,040H,080H

    F_Send_595:

    MOV R2,?#8

    L_Send_595_Loop:

    CLR C

    RLC A

    MOV P_HC595_SER,C

    SETB P_HC595_SRCLK

    CLR P_HC595_SRCLK

    DJNZ R2,?L_Send_595_Loop

    RET

    PTR,?#T_COM

    MOV A,F_ DisplayScan:

    MOV D?display_ index

    MOVC A,?@A+DPTR

    CPL A

    LCALL F_Send_595

    MOV DPTR,?#T_ Display

    MOV A,?display_ index

    ADD A,?#LED8

    MOV R0,?A

    MOV A,?@R0

    MOVC A,?@A+DPTR

    LCALL F_Send_595

    SETB P_HC595_RCLK

    CLR P_HC595_RCLK

    ?DEC display_ index

    MOV A, display_ index

    CJNE?A,#5,F_DisplayScan?

    MOV display_ index,?#7;

    RET

    LED_INIT: MOV?LED8,#0

    MOV?LED8+1,#0

    MOV?LED8+2,#0

    MOV?LED8+3,#0

    MOV?LED8+4,#0

    MOV?LED8+5,#0

    MOV?LED8+6,#0

    MOV?LED8+7,#0

    RET

    Serial_ ISR: JB RI,R_DATA

    JB TI,T_DATA

    SJMP?ISR_OUT

    T_DATA:?CLR TI

    SJMP ISR_OUT

    R_DATA:?CLR RI

    MOV A,SBUF

    PUSH?ACC

    MOV B,#16

    DIV AB

    MOV LED8+6,?A

    MOV LED8+7,?B

    POP ACC

    MOV?SBUF,A

    ISR_OUT:?RETI

    Timer0_Interrupt:

    PUSH PSW

    PUSH ACC

    LCALL F_ DisplayScan

    POP ACC

    POP PSW

    RETI

    有关的专题