单片机实验报告 - 图文

更新时间:2024-06-27 15:58:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机实验报告

学 院:信息工程学院

专业班级:生物医学工程111班

姓 名: 学 号:

南昌大学实验报告

实验一 I/O 口输入、输出实验

学生姓名: 学 号: 班级: 生医111班

实验类型:□ 验证 □ 综合 ■ 设计 □ 创新 实验日期: 2013.11.26 实验成绩:

一、实验目的

掌握单片机P1口、P3口的使用方法。

二、实验内容

以 P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。以 P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。

三、实验说明和电路原理图

P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。因为内部上拉电阻阻值是20K~40K,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。

四、实验步骤

1)系统各跳线器处在初始设置状态。

用导线连接八位逻辑电平输出模块的 K0 到 CPU 模块的 RXD(P3.0 口); 用 8 位数据线连接八位逻辑电平显示模块的 JD4B 到 CPU 模块的 JD8(P1 口)。

2)启动 PC 机,打开 THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。

3)观察发光二极管显示跑马灯效果,拨动 K0 可改变跑马灯的方向。

五、实验程序

DIR BIT P3.0 Delay: ORG 0000H mov r6,#0 LJMP START DelayLoop1:

ORG 0100H mov r7,#0 DelayLoop2 START: NOP Output1: NOP mov a, #0fEH djnz r7,DelayLoop2 mov r5, #8 djnz r6,DelayLoop1 loop1: ret CLR C end mov C,DIR JC Output2 mov P1, a rl a

Acall Delay djnz r5, loop1 Sjmp Output1

Output2:

mov a, #07fH mov r5, #8 loop2:

CLR C mov C,DIR JNC Output1 mov P1, a rr a Acall Delay djnz r5,loop2 Sjmp Output2

六、实验总结

本次试验初步了解了实验箱的模块部分,对单片机接线也有了解,实验程序也看的懂,对阅读一个完整的程序有很大帮助,一些常用的语句有更深的掌握,例如CLR,ORG,LJMP,JC等语句。

南昌大学实验报告

实验二 交通灯控制实验

学生姓名: 学 号:班级: 生医111班

实验类型:□ 验证 □ 综合 ■ 设计 □ 创新 实验日期: 2013.12.03 实验成绩:

一、实验目的

掌握十字路口交通灯控制方法。

二、实验内容

利用系统提供的双色 LED 显示电路,和四位静态数码管显示电路模拟十字路口交通信号灯。4位LED数码管显示时间,LED显示红绿灯状态。

三、实验说明和电路原理图

交通信号灯控制逻辑如下:假设一个十字路口为东西南北走向。开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后(20 秒),东西路口的绿灯,闪烁若干次后(3 秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2 秒),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(20 秒),南北路口的绿灯闪烁若干次后(3 秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2 秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。

四、实验步骤

1)系统各跳线器处在初始设置状态。

P10 同时接 G1、G3;P11 同时接 R1、R3;P1.2 同时接 G2、G4;P1.3 同时接 R2、R4; P1.6、P1.7 分别接静态数码显示的 DIN、CLK。

2)启动 PC 机,打开 THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下

载程序运行。

3)观察十字路口交通灯效果。

五、实验程序

7个状态的程序:

STATE0: ;状态0 STATE4: ;状态4 MOV P1,#0 CLR LED_G1

CLR LED_G1 SETB LED_R1 ;东西红灯亮 SETB LED_R1 ;东西红灯亮 SETB LED_G2 ;南北绿灯亮 CLR LED_G2 CLR LED_R2 SETB LED_R2 ;南北红灯亮 RET

RET STATE5: ;状态5 CLR LED_G1 STATE1: ;状态1 SETB LED_R1 SETB LED_G1 ;东西绿灯亮 CLR LED_R2 CLR LED_R1 RET CLR LED_G2 STATE6: ;状态6 SETB LED_R2 ;南北红灯亮 CLR LED_G1 RET SETB LED_R1 ;东西红灯亮 SETB LED_G2 STATE2: ;状态2 SETB LED_R2 ;南北黄灯亮 CLR LED_R1 RET CLR LED_G2

SETB LED_R2 ;南北红灯亮 RET

STATE3: ;状态3 SETB LED_G1

SETB LED_R1 ;东西黄灯亮 CLR LED_G2

SETB LED_R2 ;南北红灯亮 RET

六、实验总结

实验中LED_R为高电平红灯亮,LED_G为高电平绿灯亮,LED_R,LED_G都为高电平则两个灯都亮,即为黄灯,LED_R,LED_G为低电平则不亮。状态0为开机状态全红,状态1,2,3,4,5,6为工作状态,循环执行。

本实验程序比较长,花了很长时间理解,其工作过程已了解,对学习单片机程序有了很大帮助。

南昌大学实验报告

实验三 定时计数器实验

学生姓名: 学 号: 班级: 生医111班

实验类型:□ 验证 □ 综合 ■ 设计 □ 创新 实验日期: 2013.12.10 实验成绩:

一、实验目的

学习 MCS-51 内部计数器的使用和编程方法。

二、实验内容

使用 MCS-51 内部定时/计数器,定时一秒钟,CPU 运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。

三、实验说明和电路原理图

定时器有关的寄存器有工作方式寄存器 TMOD 和控制寄存器 TCON。TMOD 用于设置定时器/计数器的工作方式 0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是 12 个振荡器周期。假设实验系统的晶振是 12MHZ,程序工作于方式 2,即 8 位自动重装方式定时器, 定时器 100uS中断一次, 所以定时常数的设置可按以下方法计算:

机器周期=12÷12MHz=1uS (256-定时常数)×1uS=100uS

定时常数=156。然后对 100uS 中断次数计数 10000 次,就是 1 秒钟。

四、实验步骤

1)系统各跳线器处在初始设置状态,用导线连接 CPU 模块 P10 到八位逻辑电平显示模块的L0。

2)启动 PC 机,打开 THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。

3)运行程序观察发光二极管隔一秒点亮一次,点亮时间为一秒。

五、实验程序

Tick equ 10000 ; 10000 x 100us = 1s T100us equ 156 ; 100us时间常数(6M) C100us equ 30h ; 100us记数单元 LEDBuf bit 20h

org 0 ljmp Start org 000bh

T0Int:

push PSW

mov a, C100us+1 jnz Goon dec C100us Goon:

dec C100us+1 mov a, C100us orl a, C100us+1

jnz Exit ; 100us 记数器不为0, 返回 mov C100us, #27H ; #high(Tick) mov C100us+1, #10H ; #low(Tick)

cpl LEDBuf ; 100us 记数器为0, 重置记数器 ; 取反LED Exit:

pop PSW reti Start:

mov TMOD, #02h ; 方式2, 定时器 mov TH0, #t100us mov TL0, #t100us

mov IE, #10000010b ; EA=1, IT0 = 1 setb TR0 ; 开始定时 clr LEDBuf clr P1.0

mov C100us, #27H ;#high(Tick) mov C100us+1, #10H ;#low(Tick) Loop:

mov c, LEDBuf mov P1.0, c ljmp Loop

end

六、实验总结

实验中T0Int,Goon两个模块完成计数10000次,时间常数2710H即10000,Start模块启动计时器方式2,时间常数156,完成计数100次,晶振是 12MHZ所以机器周期为12÷12MHz=1uS,完成一次循环需要10000*100*1uS=1s。

实验应用定时计数器完成时间的计时,对TMOD格式,工作方式等有了更多的学习。

南昌大学实验报告

实验四 串行 AD 转换实验

学生姓名: 学 号: 班级: 生医111班

实验类型:□ 验证 □ 综合 ■ 设计 □ 创新 实验日期: 2013.12.17 实验成绩:

一、实验目的

1.熟悉八位串行AD转换器TLC549的性能及转换过程。 2.掌握单片机和TLC549硬件联接及软件编程。

二、实验内容

使用 TLC549 实现单片机模数转换。模拟信号为 0~5V 电位器分压输出,单片机读取模拟信号,并在数码管上用十六进制形式显示出来。

三、实验说明和电路原理图

内部系统时钟和I/O CLOCK可独立使用。应用电路的设计只需利用I/O时钟启动转换或读出转换结果。当CS为高电平时,DATA OUT处于高阻态且I/O时钟被禁止。

当CS变为低电平时,前次转换结果的最高有效位(MSB)开始出现在DATA OUT端。在接下来的7个I/O CLOCK周期的下降沿输出前次转换结果的后7位,至此8位数据已经输出。然后再将第8个时钟周期加至I/O CLOCK,此时钟周期的下跳沿变使芯片进行下一轮的AD转换。在第8个I/O CLOCK周期之后,CS必须变为高电平,并且保持高电平直至转换结束为止(>17uS),否则CS的有效高电平至低电平的转换将引起复位。

四、实验步骤

1)系统各跳线器处在初始设置状态。

用导线对应连接串行模数转换模块的 CS_549、DATA、CLK 到 CPU 模块的 P12、

P10、P11;电位器模块的输出端接串行模数转换模块的 AIN; CPU 模块的 P16、P17 接串行静态数码显示模块 DIN、CLK。

2)启动 PC 机,打开 THGMW-51 软件,输入源程序,并编译源程序。编译无误

后,下载程序运行。

3)数码管以十六进制形式显示模拟量,手动调节输入电位器,改变输入模拟量电压

的大小,数码管显示将随之变化。

五、实验程序 CLR DAT BIT P1.0 CLK NOP CLK BIT P1.1 CS BIT P1.2 DJNZ R6,ADLOOP SETB CS DBUF EQU 30H SETB CLK TEMP EQU 40H RET AD_DATA EQU 50H DISPLAY: DIS_DOUT BIT P1.6 MOV R0,#DBUF DIS_CLK BIT P1.7 MOV R1,#TEMP ORG 0000H MOV R2,#4 LJMP START DP10: MOV DPTR,#SEGTAB ORG 0100H MOV A,@R0 START: MOVC A,@A+DPTR MOV DBUF+3,#0AH ;显示“A” MOV @R1,A MOV DBUF+2,#0DH ;显示“D” INC MOV SP,#60H R0 INC R1 ACALL TLC549_ADC

DJNZ MOV AD_DATA,A ;存转换结果 R2,DP10 MOV R0,#TEMP MOV B,A

MOV R1,#4 SWAP A DP12: MOV R2,#8 ANL A,#0FH MOV A,@R0 MOV DBUF+1,A ; DP13: RLC INC R0 A MOV MOV A,B I DIS_DOUT,C CLR ANL A,#0FH DIS_CLK SETB DIS_CLK MOV DBUF,A ; DJNZ R2,DP13 ACALL DISPLAY ;

INC R0 ACALL DELAY

SJMP START DJNZ R1,DP12 RET TLC549_ADC:

,1,2,3,4,5 CLR A SEGTAB:DB 3FH,6,5BH,4FH,66H,6DH ;0 DB 7DH,7,7FH,6FH,77H,7CH ;6,7,8,9,A,B CLR CLK

,D,E,F,- CLR CS DB 58H,5EH,79H,71H,0,00H ;C R4,#0FFH MOV R6,#8 DELAY: MOV ADLOOP: DELOOP: SETB CLK MOV R5,#0FFH DJNZ R5,$ NOP

DJNZ R4,DELOOP NOP

RET MOV C,DAT

END RLC A

六、实验总结

本次实验学习了怎样通过改变输入的电压值,TLC549转换器相应的输出值变化的过程,并且显示模块也有了更多的学习,对一些常用寄存器,A,C,R等都更加熟悉。

本文来源:https://www.bwwdw.com/article/e383.html

Top