单片微机原理与接口技术实验指导ok.docx

上传人:b****6 文档编号:7701084 上传时间:2023-01-25 格式:DOCX 页数:39 大小:29.71KB
下载 相关 举报
单片微机原理与接口技术实验指导ok.docx_第1页
第1页 / 共39页
单片微机原理与接口技术实验指导ok.docx_第2页
第2页 / 共39页
单片微机原理与接口技术实验指导ok.docx_第3页
第3页 / 共39页
单片微机原理与接口技术实验指导ok.docx_第4页
第4页 / 共39页
单片微机原理与接口技术实验指导ok.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

单片微机原理与接口技术实验指导ok.docx

《单片微机原理与接口技术实验指导ok.docx》由会员分享,可在线阅读,更多相关《单片微机原理与接口技术实验指导ok.docx(39页珍藏版)》请在冰豆网上搜索。

单片微机原理与接口技术实验指导ok.docx

单片微机原理与接口技术实验指导ok

单片微机原理与接口技术实验指导

实验一用户程序的编辑、编译与仿真调试

1.实验目的

(1)学会给keilC集成开发环境添加STC系列单片机型号、头文件以及在线仿真驱动数据库。

(2)学会用keilC集成开发环境编辑、编译用户程序,并生成用户程序的机器代码。

(3)学会用keilC集成开发环境模拟仿真调试用户程序。

2.预习与思考

预习3.1节内容,并根据实验内容制定好实验步骤。

3.实验电路原理及硬件连线

本实验只需PC机和keilC集成开发环境工具,无须其它硬件电路。

2.4.实验内容

(1)实验程序功能与参考程序

本实验程序功能是一流水灯控制,控制信号从P1口输出,低电平驱动,轮流点亮P1控制的LED灯,时间间隔为1s,参考程序如下:

#include//STC15系列单片机头文件

#include

#include//I/O初始化文件,详见附录六

#defineucharunsignedchar

#defineuintunsignedint

ucharx=0xfe;

/*---------1000ms延时函数,从STC-ISP工具中获得---------*/

voidDelay1000ms()//@11.0592MHz

{

unsignedchari,j,k;

_nop_();

_nop_();

i=43;

j=6;

k=203;

do

{

do

{

while(--k);

}while(--j);

}while(--i);

}

/*------------主函数---------------*/

voidmain(void)

{

GPIO();

while

(1)

{

P1=x;

Delay1000ms();

x=_crol_(x,1);

}

}

(2)用KeilmVision2开发工具输入、编辑与编译上述实验程序,并生成该程序的机器代码。

(3)用KeilmVision2开发工具的软件模拟仿真功能调试本实验程序。

5.程序调试及效果分析

(1)从项目文件夹中,查看生成的机器代码,默认情况下,其默认文件名取决于哪里。

(2)用KeilmVision2开发工具的软件模拟仿真功能调试本实验程序的效果。

6.实验报告要求

(1)总结给KeilmVision2开发工具添加STC系列单片机型号、头文件以及STC在线仿真驱动数据库的方法。

(2)总结应用KeilmVision2开发工具编辑、编译用户程序,生成用户程序机器代码的操作步骤。

 

实验二用户程序的在线编程与在线仿真

1.实验目的

(1)理解STC单片机与PC机USB接口的通信线路及学会加载USB转串口的驱动程序。

(2)学会用STC-ISP在线编程工具给单片机加载用户程序与在系统调试。

(3)学会应用KeilmVision4开发工具与STC15实验板进行用户程序的在线仿真调试。

2.预习与思考

(1)预习3.2节内容,理解STC单片机与PC机USB接口的通信线路,以及加载USB转串口驱动程序的方法。

(2)预习3.2节内容,掌握用STC_ISP在线编程工具下载用户程序的方法。

(3)预习3.2节内容,掌握STC单片机在线仿真的方法,包括如何设置仿真芯片以及KeilmVision4开发工具在线硬件仿真的设置。

(4)分析demo.c的程序功能。

3.实验参考程序(demo.c)

#include

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

/*---------1ms延时函数,从STC-ISP工具中获得---------*/

voidDelay1ms()//@11.0592MHz

{

unsignedchari,j;

_nop_();

_nop_();

_nop_();

i=11;

j=190;

do

{

while(--j);

}while(--i);

}

/*------------xms延时函数---------------*/

voiddelay(uintx)//@11.0592MHz

{

uinti;

for(i=0;i

{

Delay1ms();

}

}

/*------------主函数---------------*/

voidmain(void)

{

GPIO();

while

(1)

{

P17=0;

delay(1000);

P17=1;

P16=0;

delay(1000);

P16=1;

P47=0;

delay(1000);

P47=1;

P46=0;

delay(1000);

P46=1;

}

}

4.实验电路原理及硬件连线

本实验基于STC15开发板上实施,硬件线路包括STC单片机与PC机USB接口的通信线路,以及LED7、LED8、LED9、LED10等LED灯。

5.实验内容

(1)用KeilmVision2开发工具编辑、编译demo.c程序,并生成机器代码。

(2)用STC_ISP在线编程工具给STC15单片机开发板下载用户程序,运行用户程序,验证程序功能是否符合程序要求。

(3)应用KeilmVision2开发工具与STC15实验板进行用户程序的在线仿真调试,验证程序功能是否符合程序要求。

6.程序调试及效果分析

(1)在系统调试,分析程序运行效果。

(2)在线仿真调试,分析程序运行效果。

7.实验报告要求

(1)总结STC单片机在线编程的操作步骤与在系统调试方法。

(2)总结STC单片机在线仿真方法。

(3)总结STC单片机在线仿真有什么优势?

 

实验三IAP15W4K58S4单片机外部中断的应用编程与调试

1.实验目的

(1)进一步掌握中断技术的原理。

(2)掌握外部中断触发方式的设置与应用编程。

2.预习与思考

预习7.1~7.3节内容,分析INT01.ASM与int01.c,根据程序功能制定程序调试方案。

3.实验参考程序

(1)INT01.ASM

$include(stc15.inc);STC15新增特殊功能寄存器的定义文件,详见附录六

ORG0000H

LJMPMAIN

ORG0003H

LJMPINT0_ISR

ORG0013H

LJMPINT1_ISR

MAIN:

LCALLGPIO;调用初始化程序

SETBIT0

SETBIT1

SETBEX0

SETBEX1

SETBEA

SJMP$

INT0_ISR:

CPLP1.7

RETI

INT1_ISR:

CPLP4.7

RETI

$include(gpio.inc);STC15I/O口的初始化文件

END

(2)int01.c

#include//包含支持IAP15W4K58S4单片机的头文件

#include

#include//I/O初始化文件

#defineucharunsignedchar

#defineuintunsignedint

voidex01_init()

{

IT0=1;

IT1=1;

EX0=1;

EX1=1;

EA=1;

}

voidmain()

{

GPIO();

ex01_init();

while

(1);

}

voidint0_isr()interrupt0

{

P17=~P17;

}

voidint1_isr()interrupt2

{

P47=~P47;

}

4.实验电路原理及硬件连线

基于STC15单片机开发板实施,采用LED7、LED9显示,采用SW17、SW18输入外部中断0和外部中断1中断请求信号。

5.实验内容

(1)完成INT01.ASM程序的编辑、编译与调试。

(2)完成int01.c程序的编辑、编译与调试。

6.程序调试及效果分析

(1)调试INT01.ASM程序,记录与分析程序运行效果。

(2)调试int01.c程序,记录与分析程序运行效果。

7.实验报告要求

(1)总结外部中断的触发方式设置与工作特点。

(2)总结按键输入外部中断请求信号存在的问题与解决方法。

实验四IAP15W4K58S4单片机定时器/计数器定时功能的应用编程与调试

1.实验目的

(1)进一步掌握IAP15W4K58S4单片机定时器/计数器的电路结构与工作原理。

(2)掌握IAP15W4K58S4单片机定时器/计数器定时功能的应用编程。

2.预习与思考

(1)预习8.1~8.3节内容,掌握IAP15W4K58S4单片机定时器/计数器TMOD、TCON的设置与应用编程。

(2)预习8.4节内容,分析参考程序FLASH.ASM与flash.c。

3.实验参考程序

(1)FLASH.ASM

$include(stc15.inc);STC15新增特殊功能寄存器的定义文件

ORG0000H

LJMPMAIN

ORG001BH

LJMPT1_ISR

MAIN:

LCALLGPIO;调用初始化程序

MOVR3,#20;置50ms计数循环初值

MOVTMOD,#00H;设定时器1为方式0定时

MOVTH1,#3CH;置50ms定时器初值

MOVTL1,#0B0H

SETBET1;开放T1中断

SETBEA

SETBTR1;启动T1

SJMP$;原地踏步

T1_ISR:

DJNZR3,T1_QUIT;未到1s继续循环

MOVR3,#20

CPLP1.6

CPLP1.7

CPLP4.6

CPLP4.7

T1_QUIT:

RETI

$include(gpio.inc);STC15I/O口的初始化文件

END

(2)Flash.c

#include//包含支持IAP15W4K58S4单片机的头文件

#include

#include//I/O初始化文件

#defineucharunsignedchar

#defineuintunsignedint

uchari=0;

voidmain(void)

{

GPIO();//初始化函数

TMOD=0x00;

TH1=0x3c;

TL1=0xb0;

ET1=1;

EA=1;

TR1=1;

while

(1);

}

voidT1_isr()interrupt3

{

i++;

if(i==20)

{

i=0;

P16=~P16;//LED灯的驱动取反输出

P17=~P17;

P46=~P46;

P47=~P47;

}

}

4.实验电路原理及硬件连线

基于STC15开发板,采用数码管显示秒表值。

5.实验内容

完成SECOND.ASM与second.c程序的编辑、编译与调试。

6.程序调试及效果分析

(1)调试SECOND.ASM程序,观察与记录程序运行结果。

(2)调试second.c程序,观察与记录程序运行结果。

7.实验报告要求

(1)以IAP15W4K58S4单片机定时器/计数器方式0的电路结构,分析IAP15W4K58S4单片机定时器/计数器的工作原理。

(2)分析FLASH.ASM.ASM与flash.c的程序功能。

 

实验五IAP15W4K58S4单片机双机通信的应用编程与调试

1.实验目的

(1)巩固串行通信的基本概念与基本知识。

(2)掌握IAP15W4K58S4单片机串行口1工作方式的设置与应用编程。

2.预习与思考

(1)预习9.1节内容,掌握串行通信的基本知识。

(2)预习9.2节内容,掌握IAP15W4K58S4单片机串行口1的工作方式与应用编程。

(3)分析例参考程序UART.ASM与uart.c,根据程序功能制定程序的调试方案。

3.实验电路原理及硬件连线

(1)UART.ASM

$include(stc15.inc);STC15新增特殊功能寄存器的定义文件,详见附录六

ORG0000H

LJMPMAIN

ORG0023H

LJMPS_ISR

MAIN:

LCALLGPIO

LCALLUARTINIT

SETBES

SETBEA

ORLP3,#00001100B

LOOP:

MOVA,P3

ANLA,#00001100B

MOVSBUF,A

JNBTI,$

CLRTI

LCALLDELAY100MS;设置发送间隔

SJMPLOOP

S_ISR:

PUSHACC

JNBRI,S_QUIT

CLRRI

MOVA,SBUF

ANLA,#00001100B

CJNEA,#00H,NEXT1

CLRP1.7

SETBP1.6

SETBP4.7

SETBP4.6

SJMPS_QUIT

NEXT1:

CJNEA,#04H,NEXT2

SETBP1.7

CLRP1.6

SETBP4.7

SETBP4.6

SJMPS_QUIT

NEXT2:

CJNEA,#08H,NEXT3

SETBP1.7

SETBP1.6

CLRP4.7

SETBP4.6

SJMPS_QUIT

NEXT3:

SETBP1.7

SETBP1.6

SETBP4.7

CLRP4.6

S_QUIT:

POPACC

RETI

UARTINIT:

;9600bps@11.0592MHz,从STC-ISP工具中获得

MOVSCON,#50H;8位数据,可变波特率

ORLAUXR,#40H;定时器1时钟为Fosc,即1T

ANLAUXR,#0FEH;串口1选择定时器1为波特率发生器

ANLTMOD,#0FH;设定定时器1为16位自动重装方式

MOVTL1,#0E0H;设定定时初值

MOVTH1,#0FEH;设定定时初值

CLRET1;禁止定时器1中断

SETBTR1;启动定时器1

RET

DELAY100MS:

;@11.0592MHz,从STC-ISP工具中获得

NOP

NOP

NOP

PUSH30H

PUSH31H

PUSH32H

MOV30H,#4

MOV31H,#93

MOV32H,#152

NEXT:

DJNZ32H,NEXT

DJNZ31H,NEXT

DJNZ30H,NEXT

POP32H

POP31H

POP30H

RET

$include(gpio.inc);STC15I/O口的初始化文件

END

(2)uart.c

#include//包含支持IAP15W4K58S4单片机的头文件

#include

#include//I/O初始化文件

#defineucharunsignedchar

#defineuintunsignedint

uchartemp;

uchartemp1;

voidDelay100ms()//@11.0592MHz

{

unsignedchari,j,k;

_nop_();

_nop_();

i=5;

j=52;

k=195;

do

{

do

{

while(--k);

}while(--j);

}while(--i);

}

voidUartInit(void)//9600bps@11.0592MHz

{

SCON=0x50;//8位数据,可变波特率

AUXR|=0x40;//定时器1时钟为Fosc,即1T

AUXR&=0xFE;//串口1选择定时器1为波特率发生器

TMOD&=0x0F;//设定定时器1为16位自动重装方式

TL1=0xE0;//设定定时初值

TH1=0xFE;//设定定时初值

ET1=0;//禁止定时器1中断

TR1=1;//启动定时器1

}

voidmain()

{

GPIO();

UartInit();

ES=1;

EA=1;

while

(1)

{

temp=P3;

temp=temp&0x0c;

SBUF=temp;

while(TI==0);

TI=0;

Delay100ms();

}

}

voiduart_isr()interrupt4

{

if(RI==1)

{

RI=0;

temp1=SBUF;

switch(temp1&0x0c)

{

case0x00:

P17=0;P16=1;P47=1;P46=1;break;

case0x04:

P17=1;P16=0;P47=1;P46=1;break;

case0x08:

P17=1;P16=1;P47=0;P46=1;break;

default:

P17=1;P16=1;P47=1;P46=0;break;

}

}

}

4.实验电路原理及硬件连线

基于STC15单片机开发板实施,采用LED7~LED10采用,采用SW17、SW18输入控制信号。

甲机的P3.0与乙机的P3.1相连,甲机的P3.1与乙机的P3.0相连,甲机的地线与乙机的地线相连。

5.实验内容

(1)完成UART.ASM程序的编辑、编译与调试。

(2)完成uart.c程序的编辑、编译与调试。

(3)改用串行口2实现双机通信,试编写程序并调试。

6.程序调试及效果分析

(1)调试UART.ASM程序,改变甲机SW17、SW18的输入状态,观察乙机LED7~LED10的状态,并记录与分析;反之,改变乙机SW17、SW18的输入状态,观察甲机LED7~LED10的状态,并记录与分析。

(2)调试uart.c程序,改变甲机SW17、SW18的输入状态,观察乙机LED7~LED10的状态,并记录与分析;反之,改变乙机SW17、SW18的输入状态,观察甲机LED7~LED10的状态,并记录与分析。

(3)调试用串行口2实现双机通信的程序。

7.实验报告要求

(1)总结串行口1的工作方式与工作特性。

(2)双机通信的调试结果与分析。

(3)用串行口2实现双机通信,画出用串行口实现双机通信的电路图,列出实验程序与调试记录,分析调试结果。

 

实验六IAP15W4K58S4单片机AD转换模块的应用编程与调试

1.实验目的

(1)掌握IAP15W4K58S4单片机AD转换模块的编程应用。

(2)通过实验理解IAP15W4K58S4单片机AD转换模块如何进行数据采集,如何实现模拟量到数字量的转换。

(3)了解IAP15W4K58S4单片机AD转换模块在各种领域的应用。

2.预习与思考

(1)复习IAP15W4K58S4单片机AD转换模块的结构以及寄存器的控制使用。

(2)复习IAP15W4K58S4单片机8位或10位AD转换结果在两种不同存储格式下分别的计算方法。

(3)复习IAP15W4K58S4单片机AD转换模块的应用编程要点与思路,分析ad.c程序的功能。

3.实验参考程序(ad.c)

#include//包含支持IAP15W4K58S4单片机的头文件

#include

#include//I/O初始化文件

#defineucharunsignedchar

#defineuintunsignedint

#include<595hc.h>

uintadc_value;//定义无符号字符型变量adc_value用于保存ADC值

voidmain(void)//主程序

{

uinti;//定义整型变量i用于适当延时

ADC_CONTR|=0x80;//打开A/D转换电源

for(i=0;i<1000;i++);//适当延时

P1ASF=0x02;//设置ADC1(P1.1)为模拟量输入功能

CLK_DIV|=0x20;//ADRJ=1,设置A/D转换结果的存储格式

ADC_CONTR=0x89;//选择选择输入通道ADC1(P1.1)并启动A/D转换

EADC=1;//打开ADC中断

EA=1;//打开CPU总中断

while

(1)

{

Dis_buf[7]=adc_value%10;//秒值送显示缓冲区

Dis_buf[6]=adc_value/10%10;

Dis_buf[7]=adc_value/100%10;//秒值送显示缓冲区

Dis_buf[6]=adc_value/1000%10;

display();//调显示函数

}

}

voidADC_int(void)interrupt5//ADC中断服务子程序

{

ADC_CONTR=0x81;//将ADC_FLAG清0

adc_value=ADC_RES*256+ADC_RESL;//保存10位A/D转换结果,范围为0~1023

ADC_CONTR=0x89;//重新启动A/D转换

}

4.实验电路原理及硬件连线

将STC15实验板W1电位器的中间抽头(P5.5)接AD转换的输入端P1.1,转换后结果送数码管显示(0~1023)。

5.实验内容

(1)完成ad.c程序的编辑、编译与调试。

(2)如果AD模块采用查询方式进行转换,编写程序并验证效果。

(3)如果AD模块采用定时方式进行转换,编写程序并验证效果。

6.程序调试及效果分析

(1)通

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1