单片微机原理与接口技术实验指导.docx
- 文档编号:2866052
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:51
- 大小:168.37KB
单片微机原理与接口技术实验指导.docx
《单片微机原理与接口技术实验指导.docx》由会员分享,可在线阅读,更多相关《单片微机原理与接口技术实验指导.docx(51页珍藏版)》请在冰点文库上搜索。
单片微机原理与接口技术实验指导
单片微机原理与接口技术实验指导
实验一用户程序的编辑、编译与仿真调试
1.实验目的
(1)学会给keilC集成开发环境添加STC系列单片机型号、头文件以及在线仿真驱动数据库。
(2)学会用keilC集成开发环境编辑、编译用户程序,并生成用户程序的机器代码。
(3)学会用keilC集成开发环境模拟仿真调试用户程序。
2.预习与思考
预习3.1节内容,并根据实验内容制定好实验步骤。
3.实验电路原理及硬件连线
本实验只需PC机和keilC集成开发环境工具,无须其它硬件电路。
2.4.实验内容
P1
(1)实验程序功能与参考程序本实验程序功能是一流水灯控制,控制信号从P1口输出,低电平驱动,轮流点亮控制的LED灯,时间间隔为1s,参考程序如下:
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharx=0xfe;
/*1000ms延时函数,从STC-ISP工具中获得*/
voidDelay1000ms()//@11.0592MHz
{
unsignedchari,j,k;
_nop_();
_nop_();
i=43;
j=6;
k=203;
dodo
{
while(--k);
}while(--j);
}while(--i);
}
/*主函数*/
voidmain(void)
{
GPIO();
while
(1)
{
P1=x;
Delay1000ms();
x=_crol_(x,1);
}
}
(2)用KeilVision2开发工具输入、编辑与编译上述实验程序,并生成该程序的机器代码。
(3)用KeilVision2开发工具的软件模拟仿真功能调试本实验程序。
5.程序调试及效果分析
(1)从项目文件夹中,查看生成的机器代码,默认情况下,其默认文件名取决于哪里。
(2)用KeilVision2开发工具的软件模拟仿真功能调试本实验程序的效果。
6.实验报告要求
(1)总结给KeilVision2开发工具添加STC系列单片机型号、头文件以及STC在线仿真驱动数据库的方法。
(2)总结应用KeilVision2开发工具编辑、编译用户程序,生成用户程序机器代码的操作步骤。
实验二用户程序的在线编程与在线仿真
1.实验目的
(1)理解STC单片机与PC机USB接口的通信线路及学会加载USB转串口的驱动程序。
(2)学会用STC-ISP在线编程工具给单片机加载用户程序与在系统调试。
(3)学会应用KeilVision4开发工具与STC15实验板进行用户程序的在线仿真调试。
2.预习与思考
(1)预习3.2节内容,理解STC单片机与PC机USB接口的通信线路,以及加载USB转串口驱动程序的方法。
(2)预习3.2节内容,掌握用STC_ISP在线编程工具下载用户程序的方法。
(3)预习3.2节内容,掌握STC单片机在线仿真的方法,包括如何设置仿真芯片以及KeilVision4开发工具在线硬件仿真的设置。
(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)用KeilVision2开发工具编辑、编译demo.c程序,并生成机器代码。 (2)用STC_ISP在线编程工具给STC15单片机开发板下载用户程序,运行用户程序,验证程序功能是否符合程序要求。 (3)应用KeilVision2开发工具与STC15实验板进行用户程序的在线仿真调试,验证程序功能是否符合程序要求。 6.程序调试及效果分析 (1)在系统调试,分析程序运行效果。 (2)在线仿真调试,分析程序运行效果。 7.实验报告要求 1)总结STC单片机在线编程的操作步骤与在系统调试方法。 2)总结STC单片机在线仿真方法。 3)总结STC单片机在线仿真有什么优势? 实验三IAP15W4K58S4单片机外部中断的应用编程与调试 1.实验目的 (1)进一步掌握中断技术的原理。 (2)掌握外部中断触发方式的设置与应用编程。 2.预习与思考 预习7.1〜7.3节内容,分析INT01.ASM与intOl.c,根据程序功能制定程序调试方案。 3.实验参考程序 (1)INT01.ASM$include(stc15.inc) ORG0000HLJMPMAINORG0003H LJMPINT0_ISR ORG0013H LJMPINT1_ISR MAIN: LCALLGPIO SETBIT0 SETBIT1 SETBEX0 SETBEX1 SETBEA SJMP$ INT0_ISR: CPLP1.7 RETI ;STC15新增特殊功能寄存器的定义文件,详见附录六 ;调用初始化程序 INT1_ISR: CPLP4.7 RETI $include(gpio.inc) END ;STC15I/O口的初始化文件 (2)int01.c #include #include #include #defineucharunsignedchar //包含支持IAP15W4K58S4单片机的头文件 //I/O初始化文件 #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 RETI $include(gpio.inc) END ;STC15I/O口的初始化文件 //包含支持IAP15W4K58S4单片机的头文件 (2)Flash.c #include #include #include #defineucharunsigned#defineuintunsigneduchari=0; voidmain(void) //I/O初始化文件charint { 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.实验报告要求 IAP15W4K58S4 (1)以IAP15W4K58S4单片机定时器/计数器方式0的电路结构,单片机定时器/计数器的工作原理。 (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 ORLAUXR,#40H ANLAUXR,#0FEH ANLTMOD,#0FH MOVTL1,#0E0H MOVTH1,#0FEH CLRET1 SETBTR1 RET ;8位数据,可变波特率 淀时器1时钟为Fosc,即1T ;串口1选择定时器1为波特率发生器;设定定时器1为16位自动重装方式;设定定时初值;设定定时初值 ;禁止定时器1中断;启动定时器1 DELAY100MS: 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) END (2)uart.c #include #include #include #defineucharunsignedchar#defineuintunsignedintuchartemp; ;@11.0592MHz,从STC-ISP工具中获得 ;STC15I/O口的初始化文件 //包含支持IAP15W4K58S4单片机的头文件 //I/O初始化文件 uchartemp1; voidDelay100ms()//@11.0592MHz { unsignedchari,j,k; _nop_();_nop_(); i=5; j=52; k=195; do //8位数据,可变波特率 //定时器1时钟为Fosc,即1T //串口1选择定时器1为波特率发生器//设定定时器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 #include #include #defineucharunsignedchar #defineuintunsignedint #include<595hc.h> uintadc_value;voidmain(void){ uinti; //定义无符号字符型变量adc_value用于保存ADC值//主程序 //定义整型变量i用于适当延时 ADC_CONTR|=0x80;for(i=0;i<1000;i++); P1ASF=0x02; CLK_DIV|=0x20; ADC_CONTR=0x89; //打开A/D转换电源 //适当延时 //设置ADC1(P1.1)为模拟量输入功能 //ADRJ=1,设置A/D转换结果的存储格式 //选择选择输入通道ADC1(P1.1)并启动A/D转换 EADC=1; EA=1; //打开ADC中断 //打开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)通过编译软件keil编写源程序代码,编译通过没有错误,生成十六进制目标文件。 (2)通过STC单片机下载软件STC-ISP将十六进制目标文件下载到STC学习板的单片机芯片IAP15W4K58S4,验证实验效果。 (3)调节W1,观察数码管的显示值并记录。 7.实验报告要求 (1)总结IAP15W4K58S4单片机AD转换模块的软、硬件设计原理与方法; (2)写出所作实验程序的源代码,给每行语句加上详细的注释,在预习报告的基础上完善程序流程图; (3)叙述程序调试过程中遇到的问题以及解决方法,写出本次实验的收获和心得体会。 实验七键盘与数码LED显示接口的应用编程与调试 1.实验目的 (1)掌握独立按键的编程应用。 (2)掌握数码管的编程应用。 2.预习与思考 (1)预习13.2.1内容。 (2)预习13.2.1、13.2.3内容。 (4)画出独立按键电路原理图。 (5)画出串行数据动态扫描数码管显示电路原理图。 (6)分析595hc.h头文件(见附录)和key-display.c的程序功能。 3.实验参考程序(key-display.c)#include"stc15.h"//包含单片机头文件 #include"GPIO.h"//包含初始化I/O端口头文件 #include #defineucharunsignedchar #include"595hc.h"//包含数码管显示头文件 sbitSW17=P3A2;//定义按键- sbitSW18=P3A3;//定义按键+ voidDelay(unsignedintv)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片 微机 原理 接口 技术 实验 指导