单片微机原理与接口技术实验指导.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//STC15系列单片机头文件
#include
#include//I/O初始化文件,详见附录六
#defineucharunsignedchar
#defineuintunsignedint
ucharx=0xfe;
/*1000ms延时函数,从STC-ISP工具中获得*/
voidDelay1000ms()//@11.0592MHz
{
unsignedchari,j,k;
_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)理解STC单片机与PC机USB接口的通信线路及学会加载USB转串口的驱动程序。
(2)学会用STC-ISP在线编程工具给单片机加载用户程序与在系统调试。
(3)学会应用KeilVision4开发工具与STC15实验板进行用户程序的在线仿真调试。
(1)预习3.2节内容,理解STC单片机与PC机USB接口的通信线路,以及加载USB转串口驱动程序的方法。
(2)预习3.2节内容,掌握用STC_ISP在线编程工具下载用户程序的方法。
(3)预习3.2节内容,掌握STC单片机在线仿真的方法,包括如何设置仿真芯片以及KeilVision4开发工具在线硬件仿真的设置。
(4)分析demo.c的程序功能。
3.实验参考程序(demo.c)
/*1ms延时函数,从STC-ISP工具中获得*/
voidDelay1ms()//@11.0592MHz
{unsignedchari,j;
i=11;
j=190;
do
while(--j);
/*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)ORG0000HLJMPMAINORG0003HLJMPINT0_ISRORG0013HLJMPINT1_ISRMAIN:LCALLGPIOSETBIT0SETBIT1SETBEX0SETBEX1SETBEASJMP$INT0_ISR:CPLP1.7RETI;STC15新增特殊功能寄存器的定义文件,详见附录六;调用初始化程序INT1_ISR:CPLP4.7RETI$include(gpio.inc)END;STC15I/O口的初始化文件(2)int01.c#include#include#include#defineucharunsignedchar//包含支持IAP15W4K58S4单片机的头文件//I/O初始化文件 #defineuintunsignedintvoidex01_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.ASMRETI$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新增特殊功能寄存器的定义文件,详见附录六ORG0000HLJMPMAINORG0023HLJMPS_ISRMAIN:LCALLGPIOLCALLUARTINITSETBESSETBEAORLP3,#00001100BLOOP:MOVA,P3ANLA,#00001100BMOVSBUF,AJNBTI,$CLRTILCALLDELAY100MS;设置发送间隔SJMPLOOPS_ISR:PUSHACCJNBRI,S_QUITCLRRIMOVA,SBUFANLA,#00001100BCJNEA,#00H,NEXT1CLRP1.7SETBP1.6SETBP4.7SETBP4.6SJMPS_QUITNEXT1:CJNEA,#04H,NEXT2SETBP1.7CLRP1.6SETBP4.7SETBP4.6SJMPS_QUITNEXT2:CJNEA,#08H,NEXT3SETBP1.7SETBP1.6CLRP4.7SETBP4.6SJMPS_QUITNEXT3:SETBP1.7SETBP1.6SETBP4.7CLRP4.6S_QUIT:POPACCRETIUARTINIT:;9600bps@11.0592MHz,从STC-ISP工具中获得MOVSCON,#50HORLAUXR,#40HANLAUXR,#0FEHANLTMOD,#0FHMOVTL1,#0E0HMOVTH1,#0FEHCLRET1SETBTR1RET;8位数据,可变波特率淀时器1时钟为Fosc,即1T;串口1选择定时器1为波特率发生器;设定定时器1为16位自动重装方式;设定定时初值;设定定时初值;禁止定时器1中断;启动定时器1DELAY100MS:NOPNOPNOPPUSH30HPUSH31HPUSH32HMOV30H,#4MOV31H,#93MOV32H,#152NEXT:DJNZ32H,NEXTDJNZ31H,NEXTDJNZ30H,NEXTPOP32HPOP31HPOP30HRET$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;//启动定时器1voidmain(){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;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清0adc_value=ADC_RES*256+ADC_RESL;//保存10位A/D转换结果,范围为0~1023ADC_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)
Delay1ms();
P17=0;
delay(1000);
P17=1;
P16=0;
P16=1;
P47=0;
P47=1;
P46=0;
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)进一步掌握中断技术的原理。
(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
$include(gpio.inc)
END
;STC15I/O口的初始化文件
(2)int01.c
//包含支持IAP15W4K58S4单片机的头文件
//I/O初始化文件
voidex01_init()
IT0=1;
IT1=1;
EX0=1;
EX1=1;
EA=1;
voidmain()
ex01_init();
(1);
voidint0_isr()interrupt0
P17=~P17;
voidint1_isr()interrupt2
P47=~P47;
基于STC15单片机开发板实施,采用LED7、LED9显示,采用SW17、SW18输入外部中断0和外部中断1中断请求信号。
(1)完成INT01.ASM程序的编辑、编译与调试。
(2)完成int01.c程序的编辑、编译与调试。
(1)调试INT01.ASM程序,记录与分析程序运行效果。
(2)调试int01.c程序,记录与分析程序运行效果。
(1)总结外部中断的触发方式设置与工作特点。
(2)总结按键输入外部中断请求信号存在的问题与解决方法。
实验四IAP15W4K58S4单片机定时器/计数器定时功能的应用编程
与调试
(1)进一步掌握IAP15W4K58S4单片机定时器/计数器的电路结构与工作原理。
(2)掌握IAP15W4K58S4单片机定时器/计数器定时功能的应用编程。
(1)预习8.1〜8.3节内容,掌握IAP15W4K58S4单片机定时器/计数器TMOD、TCON的设置与应用编程。
(2)预习8.4节内容,分析参考程序FLASH.ASM与flash.c。
3.
实验参考程序
(1)FLASH.ASM
(2)Flash.c
#defineucharunsigned#defineuintunsigneduchari=0;
//I/O初始化文件charint
GPIO();//初始化函数
TMOD=0x00;
TH1=0x3c;
TL1=0xb0;
ET1=1;
TR1=1;
voidT1_isr()interrupt3
i++;
if(i==20)
i=0;
P16=~P16;//LED灯的驱动取反输出P17=~P17;
P46=~P46;
基于STC15开发板,采用数码管显示秒表值。
完成SECOND.ASM与second.c程序的编辑、编译与调试。
(1)调试SECOND.ASM程序,观察与记录程序运行结果。
(2)调试second.c程序,观察与记录程序运行结果。
IAP15W4K58S4
(1)以IAP15W4K58S4单片机定时器/计数器方式0的电路结构,单片机定时器/计数器的工作原理。
(2)分析FLASH.ASM.ASM与flash.c的程序功能。
实验五IAP15W4K58S4单片机双机通信的应用编程与调试
(1)巩固串行通信的基本概念与基本知识。
(2)掌握IAP15W4K58S4单片机串行口1工作方式的设置与应用编程。
(1)预习9.1节内容,掌握串行通信的基本知识。
(2)预习9.2节内容,掌握IAP15W4K58S4单片机串行口1的工作方式与应用编程。
(3)分析例参考程序UART.ASM与uart.c,根据程序功能制定程序的调试方案。
(1)UART.ASM
$include(stc15.inc);STC15新增特殊功能寄存器的定义文件,详见附录六
ORG0000H
LJMPMAIN
ORG0023H
LJMPS_ISR
LCALLUARTINIT
SETBES
ORLP3,#00001100B
LOOP:
MOVA,P3
ANLA,#00001100B
MOVSBUF,A
JNBTI,$
CLRTI
LCALLDELAY100MS;设置发送间隔
SJMPLOOP
S_ISR:
PUSHACC
JNBRI,S_QUIT
CLRRI
MOVA,SBUF
CJNEA,#00H,NEXT1
CLRP1.7
SETBP1.6
SETBP4.7
SETBP4.6
SJMPS_QUIT
NEXT1:
CJNEA,#04H,NEXT2
SETBP1.7
CLRP1.6
NEXT2:
CJNEA,#08H,NEXT3
CLRP4.7
NEXT3:
CLRP4.6
S_QUIT:
POPACC
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
PUSH30H
PUSH31H
PUSH32H
MOV30H,#4
MOV31H,#93
MOV32H,#152
NEXT:
DJNZ32H,NEXT
DJNZ31H,NEXT
DJNZ30H,NEXT
POP32H
POP31H
POP30H
(2)uart.c
#defineucharunsignedchar#defineuintunsignedintuchartemp;
;@11.0592MHz,从STC-ISP工具中获得
uchartemp1;
voidDelay100ms()//@11.0592MHz
_nop_();_nop_();
i=5;
j=52;
k=195;
//8位数据,可变波特率
//定时器1时钟为Fosc,即1T
//串口1选择定时器1为波特率发生器//设定定时器1为16位自动重装方式
TL1=0xE0;//设定定时初值
TH1=0xFE;//设定定时初值
ET1=0;//禁止定时器1中断
TR1=1;//启动定时器1
UartInit();
ES=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;
基于STC15单片机开发板实施,采用LED7~LED10采用,采用SW17、SW18输入控制信号。
甲机的P3.0与乙机的P3.1相连,甲机的P3.1与乙机的P3.0相连,甲机的地线与乙机的地线相连。
(1)完成UART.ASM程序的编辑、编译与调试。
(2)完成uart.c程序的编辑、编译与调试。
(3)改用串行口2实现双机通信,试编写程序并调试。
(1)调试UART.ASM程序,改变甲机SW17、SW18的输入状态,观察乙机LED7~LED10的状态,并记录与分析;反之,改变乙机SW17、SW18的输入状态,观察甲机LED7~LED10的状态,并记录与分析。
(2)调试uart.c程序,改变甲机SW17、SW18的输入状态,观察乙机LED7~LED10的状态,并记录与分析;反之,改变乙机SW17、SW18的输入状态,观察甲机LED7~LED10的状态,并记录与分析。
(3)调试用串行口2实现双机通信的程序。
(1)总结串行口1的工作方式与工作特性。
(2)双机通信的调试结果与分析。
(3)用串行口2实现双机通信,画出用串行口实现双机通信的电路图,列出实验程序与调试记录,分析调试结果。
实验六IAP15W4K58S4单片机AD转换模块的应用编程与调试
(1)掌握IAP15W4K58S4单片机AD转换模块的编程应用。
(2)通过实验理解IAP15W4K58S4单片机AD转换模块如何进行数据采集,如何实现模拟量到数字量的转换。
(3)了解IAP15W4K58S4单片机AD转换模块在各种领域的应用。
(1)复习IAP15W4K58S4单片机AD转换模块的结构以及寄存器的控制使用。
(2)复习IAP15W4K58S4单片机8位或10位AD转换结果在两种不同存储格式下分别的计算方法。
(3)复习IAP15W4K58S4单片机AD转换模块的应用编程要点与思路,分析ad.c程序
的功能。
3.实验参考程序(ad.c)
#include//包含支持IAP15W4K58S4单片机的头文件
#include//I/O初始化文件
#include<595hc.h>
uintadc_value;voidmain(void){
//定义无符号字符型变量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;
//打开ADC中断
//打开CPU总中断
//秒值送显示缓冲区
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转换
将STC15实验板W1电位器的中间抽头(P5.5)接AD转换的输入端P1.1,转换后结果送数码管显示(0〜1023)。
(1)完成ad.c程序的编辑、编译与调试。
(2)如果AD模块采用查询方式进行转换,编写程序并验证效果。
(3)如果AD模块采用定时方式进行转换,编写程序并验证效果。
(1)通过编译软件keil编写源程序代码,编译通过没有错误,生成十六进制目标文件。
(2)通过STC单片机下载软件STC-ISP将十六进制目标文件下载到STC学习板的单片机芯片IAP15W4K58S4,验证实验效果。
(3)调节W1,观察数码管的显示值并记录。
(1)总结IAP15W4K58S4单片机AD转换模块的软、硬件设计原理与方法;
(2)写出所作实验程序的源代码,给每行语句加上详细的注释,在预习报告的基础上完善程序流程图;
(3)叙述程序调试过程中遇到的问题以及解决方法,写出本次实验的收获和心得体会。
实验七键盘与数码LED显示接口的应用编程与调试
(1)掌握独立按键的编程应用。
(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"595hc.h"//包含数码管显示头文件
sbitSW17=P3A2;//定义按键-
sbitSW18=P3A3;//定义按键+
voidDelay(unsignedintv)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1