单片微机原理与接口技术实验指导ok.docx
《单片微机原理与接口技术实验指导ok.docx》由会员分享,可在线阅读,更多相关《单片微机原理与接口技术实验指导ok.docx(39页珍藏版)》请在冰豆网上搜索。
单片微机原理与接口技术实验指导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_();
i=43;
j=6;
k=203;
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)理解STC单片机与PC机USB接口的通信线路及学会加载USB转串口的驱动程序。
(2)学会用STC-ISP在线编程工具给单片机加载用户程序与在系统调试。
(3)学会应用KeilmVision4开发工具与STC15实验板进行用户程序的在线仿真调试。
(1)预习3.2节内容,理解STC单片机与PC机USB接口的通信线路,以及加载USB转串口驱动程序的方法。
(2)预习3.2节内容,掌握用STC_ISP在线编程工具下载用户程序的方法。
(3)预习3.2节内容,掌握STC单片机在线仿真的方法,包括如何设置仿真芯片以及KeilmVision4开发工具在线硬件仿真的设置。
(4)分析demo.c的程序功能。
3.实验参考程序(demo.c)
/*---------1ms延时函数,从STC-ISP工具中获得---------*/
voidDelay1ms()//@11.0592MHz
unsignedchari,j;
i=11;
j=190;
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)用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新增特殊功能寄存器的定义文件,详见附录六ORG0000HLJMPMAINORG0003HLJMPINT0_ISRORG0013HLJMPINT1_ISRMAIN:LCALLGPIO;调用初始化程序SETBIT0SETBIT1SETBEX0SETBEX1SETBEASJMP$INT0_ISR:CPLP1.7RETIINT1_ISR:CPLP4.7RETI$include(gpio.inc);STC15I/O口的初始化文件END(2)int01.c#include//包含支持IAP15W4K58S4单片机的头文件#include#include//I/O初始化文件#defineucharunsignedchar#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.ASM$include(stc15.inc);STC15新增特殊功能寄存器的定义文件ORG0000HLJMPMAINORG001BHLJMPT1_ISRMAIN:LCALLGPIO;调用初始化程序MOVR3,#20;置50ms计数循环初值MOVTMOD,#00H;设定时器1为方式0定时MOVTH1,#3CH;置50ms定时器初值MOVTL1,#0B0HSETBET1;开放T1中断SETBEASETBTR1;启动T1SJMP$;原地踏步T1_ISR:DJNZR3,T1_QUIT;未到1s继续循环MOVR3,#20CPLP1.6CPLP1.7CPLP4.6CPLP4.7T1_QUIT:RETI$include(gpio.inc);STC15I/O口的初始化文件END(2)Flash.c#include//包含支持IAP15W4K58S4单片机的头文件#include#include//I/O初始化文件#defineucharunsignedchar#defineuintunsignedintuchari=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新增特殊功能寄存器的定义文件,详见附录六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,#50H;8位数据,可变波特率ORLAUXR,#40H;定时器1时钟为Fosc,即1TANLAUXR,#0FEH;串口1选择定时器1为波特率发生器ANLTMOD,#0FH;设定定时器1为16位自动重装方式MOVTL1,#0E0H;设定定时初值MOVTH1,#0FEH;设定定时初值CLRET1;禁止定时器1中断SETBTR1;启动定时器1RETDELAY100MS:;@11.0592MHz,从STC-ISP工具中获得NOPNOPNOPPUSH30HPUSH31HPUSH32HMOV30H,#4MOV31H,#93MOV32H,#152NEXT:DJNZ32H,NEXTDJNZ31H,NEXTDJNZ30H,NEXTPOP32HPOP31HPOP30HRET$include(gpio.inc);STC15I/O口的初始化文件END(2)uart.c#include//包含支持IAP15W4K58S4单片机的头文件#include#include//I/O初始化文件#defineucharunsignedchar#defineuintunsignedintuchartemp;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,即1TAUXR&=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清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)通
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)用KeilmVision2开发工具编辑、编译demo.c程序,并生成机器代码。
(2)用STC_ISP在线编程工具给STC15单片机开发板下载用户程序,运行用户程序,验证程序功能是否符合程序要求。
(3)应用KeilmVision2开发工具与STC15实验板进行用户程序的在线仿真调试,验证程序功能是否符合程序要求。
6.程序调试及效果分析
(1)在系统调试,分析程序运行效果。
(2)在线仿真调试,分析程序运行效果。
7.实验报告要求
(1)总结STC单片机在线编程的操作步骤与在系统调试方法。
(2)总结STC单片机在线仿真方法。
(3)总结STC单片机在线仿真有什么优势?
实验三IAP15W4K58S4单片机外部中断的应用编程与调试
(1)进一步掌握中断技术的原理。
(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
$include(gpio.inc);STC15I/O口的初始化文件
END
(2)int01.c
#include//包含支持IAP15W4K58S4单片机的头文件
#include//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。
(1)FLASH.ASM
$include(stc15.inc);STC15新增特殊功能寄存器的定义文件
ORG001BH
LJMPT1_ISR
MOVR3,#20;置50ms计数循环初值
MOVTMOD,#00H;设定时器1为方式0定时
MOVTH1,#3CH;置50ms定时器初值
MOVTL1,#0B0H
SETBET1;开放T1中断
SETBTR1;启动T1
SJMP$;原地踏步
T1_ISR:
DJNZR3,T1_QUIT;未到1s继续循环
MOVR3,#20
CPLP1.6
CPLP4.6
T1_QUIT:
(2)Flash.c
uchari=0;
GPIO();//初始化函数
TMOD=0x00;
TH1=0x3c;
TL1=0xb0;
ET1=1;
TR1=1;
voidT1_isr()interrupt3
i++;
if(i==20)
i=0;
P16=~P16;//LED灯的驱动取反输出
P46=~P46;
基于STC15开发板,采用数码管显示秒表值。
完成SECOND.ASM与second.c程序的编辑、编译与调试。
(1)调试SECOND.ASM程序,观察与记录程序运行结果。
(2)调试second.c程序,观察与记录程序运行结果。
(1)以IAP15W4K58S4单片机定时器/计数器方式0的电路结构,分析IAP15W4K58S4单片机定时器/计数器的工作原理。
(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
ORG0023H
LJMPS_ISR
LCALLGPIO
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;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
PUSH30H
PUSH31H
PUSH32H
MOV30H,#4
MOV31H,#93
MOV32H,#152
NEXT:
DJNZ32H,NEXT
DJNZ31H,NEXT
DJNZ30H,NEXT
POP32H
POP31H
POP30H
(2)uart.c
uchartemp;
uchartemp1;
voidDelay100ms()//@11.0592MHz
i=5;
j=52;
k=195;
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
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<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总中断
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)通
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1