中南大学单片机

中南大学单片机
中南大学单片机

单片机实验报告

学院:信息科学与工程学院

专业班级:

姓名:

指导老师:杨迎泽

实验一单片机I/O口应用实验_P3.3口输入P1口输出

一、实验目的

1、掌握单片机P3口、P1口简单使用。

2、学习延时程序的编写和使用。

二、实验内容

1、P3.3口做输入口,外接一脉冲,每输入一个脉冲,P1口按十六进制加一输出。

2、P1口做输出口,编写程序,使P1口接的8个发光二极管L0—L7按16进制加一的

方式点亮发光二极管。

三、实验说明

1、P1口是准双向口,它作为输出口时与一般的双向口使用方法相同,由准双向口结

构可知:当P1口作为输入口时,必须先对它置高电平,使内部MOS管截止,因

内部上拉电阻是20KΩ—40KΩ,故不会对外部输入产生影响。若不先对它置高,

且原来是低电平,则MOS管导通,读入的数据不正确。

2、延时子程序的延时计算。

对于延时的程序

DELAY:MOV R6,#00H

DELAY1:MOV R7,#80H

DJNZ R7,$

DJNZ R6,DELAY1

查指令表可知MOV、DJNZ指令均需用两个机器周期,而一个机器周期时间长度为12/ 6.0MHZ,所以该段指令执行时间为:

(((128+1)×256)+1)×2×(12÷6000000)=132.1ms。

四、实验原理图

图(1-1)

五、实验程序框图

六、 实验步骤

1、P3.3用插针连至K1,JU2(P1.0~P1.7)用8芯线连至JL (L0~L7)。

2、调试、运行程序test1中的MCUIO.ASM 。

3、开关K1每拨动一次,L0~L7发光二极管按16进制方式加一点亮。

七、 实验程序

#include /*=== 头文件包含 ===*/

sbit P3_3=P3^3;

void time(void); main() {

P3.3真的为高吗?

P3.3为低吗?

开 始

P3.3为高吗? 延 时 延 时

A+1送P1口

循 环

N N N Y Y

Y

主程序: 图(1-2)

N

N

Y

R6设初值FFH

延时子程序: R7设初值FFH

R7-1=0否?

R6-1=0否?

返 回

Y

图(1-3)

B=0;

P1=0X00;

while (1)

{

while (1)

{

if (P3_3) continue;

time();

if (!P3_3) break;

}

while (1)

{

if (!P3_3) continue;

time();

if (P3_3) break;

}

B++;

ACC=B;

P1=ACC;

}

}

void time(void)

{

unsigned int i;

for (i=0;i<0xFFF;i++);

}

实验二单片机I/O口应用实验_工业顺序控制

一、实验目的

掌握工业顺序控制程序的简单编写和中断的使用。

二、实验预备知识

在工业控制中,像冲压、注塑、轻纺、制瓶等生产过程,都是一些断续生产过程,按某种程序有规律地完成预定的动作,对这类断续生产过程的控制称顺序控制,例:注塑机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机最易实现。

三、实验内容

8031的P1.0~P1.6控制注塑机的七道工序,现模拟控制七只发光二极管的点亮,高电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,低电平启动。P3.3为外故障输入模拟开关,P3.3为0时不断告警,P1.7为报警声音输出。

四、实验说明

实验中用外部中断0,编中断服务程序的关键是:

1、保护进入中断时的状态,并在退出中断之前恢复进入中断前的状态。

2、必须在中断程序中设定是否允许中断重入,即设置EX0位。

一般中断程序进入时应保护PSW 、ACC 以及中断程序中使用到的但并非其专用的寄存器,本实验中未涉及。 五、

实验接线图

图(2-1)

六、 实验程序框图

恢复现场

故障清除了吗?

返 回 报 警

保护现场

关输出

中断服务子程序:

Y

N

图(2-3)

主程序: 开始

· · · 中断、P1口、P3口初始化 P1口全低

工序2延时 工序1延时

等开工

工序7延时

· · · ·

图(2-2)

七、实验步骤

1、P3.4连K1,P3.3连K2,P1.0~P1.6分别连到L0~L6,P1.7连SIN(电子音响驱

动控制区),其卧式开关打在音乐上,短路片选择左边为蜂鸣器,下边为喇叭。

2、K1开关拨在上面,K2拨在上面。

3、调试、运行程序test2中的GYSX.ASM。

4、K1拨至下面(低电平),各道工序应正常运行。

5、K2拨至下面(低电平),应有声音报警(人为设置故障)。

6、K2拨至上面(高电平),即排除故障,程序应从刚才报警的那道工序继续执行。

八.实验程序

ORG 0000H

AJMP 0030H

ORG 0013H

LJMP HA2S3

ORG 0030H

HA2S: MOV P1,#0fFH

ORL P3,#00H

HA2S1: JB P3.4,HA2S1

ORL IE,#84H

ORL IP,#04H

MOV PSW,#00H

MOV SP,#53H

HA2S2: MOV P1,#081H

ACALL HA2S7

MOV P1,#082H

ACALL HA2S7

MOV P1,#084H

ACALL HA2S7

MOV P1,#088H

ACALL HA2S7

MOV P1,#090H

ACALL HA2S7

MOV P1,#0A0H

ACALL HA2S7

MOV P1,#0C0H

ACALL HA2S7

SJMP HA2S2

HA2S3: MOV B,R2

HA2S5: SETB P1.7

ACALL HA2S6

CLR P1.7

ACALL HA2S6

JNB P3.3,HA2S5

MOV R2,B

RETI

HA2S6: MOV R2,#06H

ACALL DELAY

RET

HA2S7: MOV R2,#30H

ACALL DELAY

RET

DELAY: PUSH 02H

DELAY1: PUSH 02H

DELAY2: PUSH 02H

DELAY3: DJNZ R2,DELAY3

POP 02H

DJNZ R2,DELAY2

POP 02H

DJNZ R2,DELAY1

POP 02H

DJNZ R2,DELAY

RET

END

实验五A/D 转换实验

一、实验目的

1、掌握A/ D转换与单片机的接口方法。

2、了解A/ D芯片0809转换性能及编程方法。

3、通过实验了解单片机如何进行数据采集。

二、实验内容

利用实验仪上的0809做A/ D转换实验,实验仪上的电位器提供模拟量输入。编制程序,将模拟量转换成数字量,通过显示接口芯片8279在七段数码管上显示。

三、实验说明

A/ D转换器大致分有三类:一是双积分A/ D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/ D转换器,精度、速度、价格适中;三是并行A/ D转换器,速度快,价格也昂贵。 实验用ADC0809属第二类,是8位A/ D转换器。

每采集一次一般需100μs 。由于ADC0809 A/D 转换器转换结束后会自动产生EOC 信号(高电平有效),取反后将其与8031的INT0相连,可以用中断方式读取A/ D 转换结果。

四、 实验接线图

显示部分原理图参考键盘显示控制器8279应用实验。

IN-026msb2-1

212-220IN-1272-3192-418IN-2282-582-615IN-312-714lsb2-8

17IN-4

2EO C

7IN-5

3AD D-A

25IN-64AD D-B 24AD D-C 23IN-7

5

AL E

22

ref(-)16EN AB LE 9STA R T 6ref(+)12

C L OC K 10

UB43

AD C 0809

1

2

3UB42A 74L S02

4

5

6

UB42B 74L S02

R D

W R

D0D1D2

GN D

D7D0

D1D2D3D4D5D6EO C

/EO C

5

6

U1C

74H C 04

R 08094.7K

VCC

VCC

IN0

Vou t

C L K_0809

500KHZ

C S_0809

Y0

图(5-1)

五、 实验程序框图

开 始

0809初始化 初始显示0809--00 0809通道0采样 数码管显示采样

图(5-2)

六、实验步骤

1、把0809的0通道IN0用插针线接至电位器模拟电压产生区V out插孔(0~5V)。

2、0809的时钟CLK_0809插孔与固定脉冲输出端500KHz相连。

3、0809的片选CS_0809连接至系统译码Y0。

4、将8279键盘接口显示部分的DU (a-h)用8芯线连接至数码管显示区的DU (a-h),

BIT (BIT0-BIT7)连接至数码管显示区的BIT(BIT0-BIT7);将8279CS连接到系统

译码Y6,8279CLK连接到固定脉冲的1MHZ。

5、调试、运行程序test5中AD0809.ASM,在数码管上显示当前采集的电压值转换

后的数字量,调节模拟电压的电位器,数码管显示将随着电压变化而相应变化,

典型值为:0V—00H,2.5V—80H,5V—FFH。

七、实验步骤

ORG 0000H

AJMP START

ORG 0030H ;?

START: LCALL FORMA T

MOV A,#00H

MOV DPTR,#8000H

MOVX @DPTR,A

LCALL DY1

MOVX A,@DPTR

LCALL CONVER

LCALL DISP8279

LCALL DELAY

AJMP START

FORMA T:

MOV 78H,#0H ; ;

MOV 79H,#8H ;

MOV 7AH,#0H ;

MOV 7BH,#9H ;

MOV 7CH,#12H ;-

MOV 7DH,#12H ;-

MOV 7EH,#0H ;0

MOV 7FH,#0H ;0

RET

CONVER:

MOV R0,A

ANL A,#0FH

MOV 7FH,A

MOV A,R0

SW AP A

ANL A,#0FH

MOV 7EH,A

RET

DISP8279: ;显示子程序,缓冲区为78H-7FH

C8279 EQU 0E001H ;)7fffH

D8279 EQU 0E000H ;7FFEH

MOV DPTR,#C8279

MOV A,#0H

MOVX @DPTR,A; 写8279方式字

MOV A,#2aH

MOVX @DPTR,A;写分频系数

MOV A,#0D0H

MOVX @DPTR,A;清显示

MOV A,#90H

MOVX @DPTR,A;设置从左边开始写入数据

DISP1: MOVX A,@DPTR

JB ACC.7,DISP1 ;读8279工作是否正常

MOV R0,#78H ;显示缓冲首址

MOV R1,#08H

DISP2: MOV A,@R0

MOV DPTR,#TAB

MOVC A,@A+DPTR ;查字型

MOV DPTR,#D8279

cpl a

MOVX @DPTR,A;送字型到8279显示

INC R0

DJNZ R1,DISP2

RET

;字型代码

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ;0,1,2,3,4,5,6,7 DB 80H,90H,88H,83H,0C6H,0A1H,86H,08EH ;8,9,A,B,C,D,E,F

DB 08CH,0C1H,0BFH,91H,89H,0C7H,0FFH,07FH ; P(10),U(11),-(12),Y(13),H(14),L(15),关(16) ,.(17)

CLEAR8279:MOV DPTR,#C8279 ;清显示子程序

MOV A,#0D0H

MOVX @DPTR,A

RET

DY: PUSH 02H ;延时子程序

DELAY1: PUSH 02H

DELAY2: PUSH 02H

DELAY3: DJNZ R2,DELAY3

POP 02H

DJNZ R2,DELAY2

POP 02H

DJNZ R2,DELAY1

POP 02H

DJNZ R2,DY

RET

DY1:MOV R7,#0FFh

DJNZ R7,$

RET

DELAY:MOV R6,#0FFh

DELY2:MOV R7,#0FFh

DELY1:DJNZ R7,DELY1

DJNZ R6,DELY2

RET

END

实验十电子音响实验

一、实验目的

了解计算机发出不同音调声音的编程方法。

二、实验内容

用定时器产生不同频率的方法,组成的乐谱由单片机进行信息处理,经过放大后用8031的P1.0口输出音乐。

三、预备知识

1、要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半

周期的时间,利用计时器计时(此半周期时间),计时到后即反向输出,重复此过程即得到此频率的脉冲。

2、让定时器工作在计数方式,改变计数值TH0及TL0,以产生不同的频率。

3、每个音符使用一个字节,字节的高四位代表音符的高低,低四位代表音符的节拍。

4、低音1至高音1所对应的频率(Hz)依次是:131、147、16

5、175、19

6、220、24

7、

262、294、330、349、392、440、494、523。乘以二就提升该声音一个八度音阶,减半则降一个八度。

四、实验线路图

RD 321K

GC419012

RD 3115

GN D

VCC

RD 335.6K

SIN

A 1

B 2

FM Q

1

23J3_1

LB1+

LB1-RD 32'1K

VCC

SPE AKER

P1.0

图(10-1)

五、

实验步骤

1、把P1.0用插针连至SIN 插孔上(电子音响驱动区的短路片连到右边LB ,选喇叭,开关SWT1拔在音乐上,如果是DVCC-51JB 机型没有这个开关)。

2、调试、运行程序test10中的MUSIC.ASM 。 将播放“新年好”歌曲。

六、 实验程序

org 0000h Sjmp MAIN org 000bh mov tl0,r0 cpl p1.0 RETI

MAIN:MOV TMOD,#01H MOV IE,#82H MOV DPTR,#TAB LOOP: CLR A

MOVC A,@A+DPTR MOV R1,A INC DPTR

CLR A

MOVC A,@A+DPTR MOV R0,A ORL A,R1 JZ NEXT0 MOV A,R0 ANL A,R1

CJNE A,#0FFH,NEXT SJMP MAIN NEXT : MOV TH0,R1 MOV TL0,R0 SETB TR0

SJMP NEXT1

NEXT0:CLR TR0

NEXT1: CLR A

INC DPTR

MOVC A,@A+DPTR

MOV R2,A

LOOP1: ACALL D200C

DJNZ R2,LOOP1

INC DPTR

AJMP LOOP

D200C:MOV R3,#81H

D200B:MOV A,#0FFH

D200A:DEC A

JNZ D200A

DEC R3

CJNE R3,#00H,D200B

RET

TAB: DB 0FEH,25H,04H,0FEH,25H,02H ;11 1 5

DB 0FEH,25H,02H,0FDH,80H,04H

DB 0FEH,84H,02H,0FEH,84H,02H;33 3 1

DB 0FEH,84H,04H,0FEH,25H,04H

DB 0FEH,25H,02H,0FEH,84H,02H;13 5 5

DB 0FEH,0C0H,04H,0FEH,84H,02H

DB 0FEH,98H,02H,0FEH,84H,02H;43 2 -

DB 0FEH,57H,08H,00H,00H,04H

DB 0FFH,0FFH

END

;1=131 262 523 1047

;2=147 294 587 1175

;3=165 330 659 1319

;4=175 349 698 1397

;5=196 392 784 1568

;6=220 440 880 1760

;7=247 494 988 1976

1 收获体会

本次微控制器综合设计基本上使用了所选微控制器的所有资源,进一步熟悉和加深了对中断、定时器和串行通信的理解和使用。

我觉得软件实验就是让我们初学者熟悉keil的使用,然后复习下汇编的思想和掌握程序的流程,所以软件实验可以很快的完成,并且慢慢熟悉调试的强大功能。硬件设计中,仿真

让我很有感触,感觉蛮好玩的,可以摒弃麻烦的实验硬件自己在寝室玩而且不受硬件状态的限制,即便出错了也不会损坏。当然更重要的是这种好习惯,仿真完后再去在实验板上验证会比直接要来的确切而且便捷,至少不要老是去插拔线。而且再做一个程序前腰先用protus 把硬件都设计好采取做软件才对。在做实验中在同学指导下我试用C语言来编写程序,确实发现比汇编语言容易编写也容易理解,以前的实验还是有参考资料的习惯,现在什么都开始自己写感觉还是很有成就感的,当然这是基于程序本身就那么几行很容易编写,也不是说参考不好。总而言之,这学期的单片机实验还是收获颇丰的。相信在以后的实验学习实践工作中都会有个潜移默化的作用的。

相关主题
相关文档
最新文档