实验报告10.docx

上传人:b****3 文档编号:11723061 上传时间:2023-06-02 格式:DOCX 页数:27 大小:279.24KB
下载 相关 举报
实验报告10.docx_第1页
第1页 / 共27页
实验报告10.docx_第2页
第2页 / 共27页
实验报告10.docx_第3页
第3页 / 共27页
实验报告10.docx_第4页
第4页 / 共27页
实验报告10.docx_第5页
第5页 / 共27页
实验报告10.docx_第6页
第6页 / 共27页
实验报告10.docx_第7页
第7页 / 共27页
实验报告10.docx_第8页
第8页 / 共27页
实验报告10.docx_第9页
第9页 / 共27页
实验报告10.docx_第10页
第10页 / 共27页
实验报告10.docx_第11页
第11页 / 共27页
实验报告10.docx_第12页
第12页 / 共27页
实验报告10.docx_第13页
第13页 / 共27页
实验报告10.docx_第14页
第14页 / 共27页
实验报告10.docx_第15页
第15页 / 共27页
实验报告10.docx_第16页
第16页 / 共27页
实验报告10.docx_第17页
第17页 / 共27页
实验报告10.docx_第18页
第18页 / 共27页
实验报告10.docx_第19页
第19页 / 共27页
实验报告10.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

实验报告10.docx

《实验报告10.docx》由会员分享,可在线阅读,更多相关《实验报告10.docx(27页珍藏版)》请在冰点文库上搜索。

实验报告10.docx

实验报告10

实验一数码管实验

一、实验目的

掌握数码管的使用,了解数码管扫描的原理。

二、实验内容

1、实验原理

开发板设计了一个四位八段共阴极数码管。

P0~P7分别连接数码管的阳极,K0~K3分别连接四位的控制端。

由于四位数码管公用相同的阳极,要实现数码管每一位显示不同的数字,则必须通过扫描的方式来实现,也就是说某个时刻只有一个数码管处于点亮状态,由于人眼的视觉暂留,看到的效果是是四位数码管都是同时点亮的。

扫描的具体方法是:

P口输出第一位数码的段码,K口控制第一位导通其它三位不导通,延时5ms后,P口输出第二位数码管的段码,K口控制第二位导通其它三位不导通,如此直到扫描完第四位后,继续扫描第一位。

2、实验步骤

(1)用跳线帽将JP2的(QH~P7)、(QG~P6)、(QF~P5)、(QD~P3)、(QC~P2)、(QB~P1)、(QA~P0)插针短接,将BDM下载器连接到开发板上,打开开发板电源。

(2)打开光盘文件中的“演示代码\数码管扫描\BBIT_LED2.mcp”。

(3)点击(Debug)按钮,将源代码下载到单片机中,进入调试窗口。

(4)点击调试窗口的(Start)按钮,程序开始执行。

(5)观察实验现象,数码管显示“0000”延时一会之后,显示“1111”直到显示“9999”。

延时一会儿之后显示“0.0.0.0.”,延时显示“1.1.1.1.”直至“9.9.9.9.”,如此循环。

三、实验原理图

四、实验所用源程序(下划线部分为改动部分)

#include/*commondefinesandmacros*/

#include"derivative.h"/*derivative-specificdefinitions*/

#defineCONT1PORTK_PK3

#defineCONT2PORTK_PK2

#defineCONT3PORTK_PK1

#defineCONT4PORTK_PK0

#defineCONT1_dirDDRK_DDRK3

#defineCONT2_dirDDRK_DDRK2

#defineCONT3_dirDDRK_DDRK1

#defineCONT4_dirDDRK_DDRK0

#defineDATAPTP

#defineDATA_dirDDRP

#defineLEDCPUPORTK_PK4

#defineLEDCPU_dirDDRK_DDRK4

#defineBUS_CLOCK32000000//总线频率

#defineOSC_CLOCK16000000//晶振频率

byteshuma[20]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,//0~9对应的段码

0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//0~9后加小数点对应的段码

unsignedinti;

/*************************************************************/

/*初始化锁相环*/

/*************************************************************/

voidINIT_PLL(void)

{

CLKSEL&=0x7f;//setOSCCLKassysclk

PLLCTL&=0x8F;//DisablePLLcircuit

CRGINT&=0xDF;

#if(BUS_CLOCK==40000000)

SYNR=0x44;

#elif(BUS_CLOCK==32000000)

SYNR=0x43;

#elif(BUS_CLOCK==24000000)

SYNR=0x42;

#endif

REFDV=0x81;//PLLCLK=2×OSCCLK×(SYNDIV+1)/(REFDIV+1)=64MHz,fbus=32M

PLLCTL=PLLCTL|0x70;//EnablePLLcircuit

asmNOP;

asmNOP;

while(!

(CRGFLG&0x08));//PLLCLKisLockedalready

CLKSEL|=0x80;//setPLLCLKassysclk

}

/*************************************************************/

/*初始化端口*/

/*************************************************************/

voidINIT_port(void)

{

CONT1_dir=1;

CONT2_dir=1;

CONT3_dir=1;

CONT4_dir=1;

CONT1=0;

CONT2=0;

CONT3=0;

CONT4=0;

DATA_dir=0xff;

DATA=0x00;

}

/*************************************************************/

/*延时函数*/

/*************************************************************/

voiddelay(void)

{

unsignedinti,j;

for(j=0;j<100;j++)

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

}

/*************************************************************/

/*主函数*/

/*************************************************************/

voidmain(void){

DisableInterrupts;

INIT_PLL();

INIT_port();

LEDCPU_dir=1;

LEDCPU=0;

EnableInterrupts;

CONT1=1;//使能数码管的第一位

for(;;)

{

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

{

DATA=shuma[10-i];//循环显示数字

delay();

}

}

}

 

五、实验流程图

六、总结

1)了解了实验芯片的基本构造,实验板的电路。

2)学习了锁相环的倍频功能和实现方式

3)对于数码管显示的基本硬件原理作掌握并应用,将循环显示,改写为倒计时表

 

实验二ATD实验

一、实验目的

掌握XS128单片机模数转换(ATD)模块的使用。

二、实验内容

1、在调试窗口的DATA:

1窗口中显示了AD_in0和AD_in1两个AD输入通道的值,单击

AD_in0和AD_in1可以显示电压的实时值。

2、用螺丝刀转动滑动变阻器R45和R48,并单击AD_in0和AD_in1,则值会发生变化。

3、用万用表测量电路板上的测试点AD0和AD1的电压值并与AD_in0和AD_in1的值进行对比。

数值与电压的对应关系为:

ATDDR=(255*U)/5

其中U为测量的电压值,ATDDR为AD转换的数值。

三、实验原理图

 

四、实验所用源程序

#include/*commondefinesandmacros*/

#include"derivative.h"/*derivative-specificdefinitions*/

#defineLEDCPUPORTK_PK4

#defineLEDCPU_dirDDRK_DDRK4

unsignedcharAD_in1,AD_in0;

/*************************************************************/

/*初始化AD模块*/

/*************************************************************/

voidINIT_AD(void)

{

ATD0CTL2=0x40;//启动A/D模块,快速清零,禁止中断

ATD0CTL1_SRES=0;//选用8位模数转换

ATD0CTL3=0x88;//每次只转换一个通道

ATD0CTL4=0x01;//AD模块时钟频率为2MHz

}

/*************************************************************/

/*起动AD转换*/

/*************************************************************/

unsignedcharAD_capture(unsignedchars)

{

unsignedcharAD_data;

switch(s)

{

case1:

ATD0CTL5=0x01;//转换AD01

while(!

ATD0STAT2_CCF0);

AD_data=ATD0DR0L;

break;

case2:

ATD0CTL5=0x00;//转换AD00

while(!

ATD0STAT2_CCF0);

AD_data=ATD0DR0L;

break;

}

return(AD_data);

}

/*************************************************************/

/*延时函数*/

/*************************************************************/

/*************************************************************/

/*主函数*/

/*************************************************************/

voidmain(void){

DisableInterrupts;

LEDCPU_dir=1;

INIT_AD();

EnableInterrupts;

LEDCPU=0;

for(;;)

{

AD_in1=AD_capture

(1);

AD_in0=AD_capture

(2);

if(AD_in1>AD_in0)

for(;;)

{

LEDCPU=0;

delay();

LEDCPU=1;

delay();

}

else

LEDCPU=1;

}

}

五、实验流程图

 

六、总结

1)掌握AD转换的基本原理。

将输入电压信号同标定信号作二分式比较,如8位就是进行8次二分比较

2)对通道进行选择控制,对转换位数可选,对转换量进行比较,并通过led的亮灯情况输出比较结果,实现人的观察。

实验三液晶显示实验

一、实验目的

掌握12864液晶模块的使用。

二、实验内容

1、实验原理

XS128开发板上设计了一个带文字库的12864汉显液晶模块。

本开发板上的液晶模块有并口和IIC串口操作两种模式。

本实验对12864液晶模块进行了并口和模拟IIC串口的操作。

2、实验步骤

2.1并口操作液晶

(1)将液晶模块插到电路板上的J_LCD1接口上。

将BDM下载器连接到开发板上,打开开发板电源。

(2)打开光盘文件中的“演示代码\并口液晶\IO_LCD.mcp”。

(3)点击Debug按钮,将源代码下载到单片机中,进入调试窗口,将原程序进行一定的修改。

(4)点击调试窗口的Start按钮,程序开始执行。

(5)观察实验现象,液晶屏上显示出《三字经》部分内容,按下按键“KEY1”文字上翻,按下按键“KEY2”文字下翻。

2.2模拟IIC串口操作液晶

(1)将液晶模块插到电路板上的J_LCD1接口上。

将BDM下载器连接到开发板上,打开开发板电源。

(2)打开光盘文件中的“演示代码\并口液晶\IIC_LCD.mcp”。

(3)点击Debug按钮,将源代码下载到单片机中,进入调试窗口,将原程序进行一定的修改。

(4)点击调试窗口的Start按钮,程序开始执行。

(5)观察实验现象,液晶屏上显示出《三字经》部分内容,按下按键“KEY1”文字上翻,按下按键“KEY2”文字下翻。

三、实验原理图

四、实验所用源程序(下划线部分为改动部分)

}#include/*commondefinesandmacros*/

#include"derivative.h"/*derivative-specificdefinitions*/

#include"LCD.h"

#defineLEDCPUPORTK_PK4

#defineLEDCPU_dirDDRK_DDRK4

#defineKEY1PTIH_PTIH3

#defineKEY2PTIH_PTIH2

#defineKEY1_dirDDRH_DDRH3

#defineKEY2_dirDDRH_DDRH2

#defineBUS_CLOCK32000000//总线频率

#defineOSC_CLOCK16000000//晶振频率

char*poem[11]={

"人之初",

"性本善",

"性相近",

"习相远",

"苟不教",

"性乃迁",

"教之道",

"贵以专",

"昔孟母",

"择邻处",

"",

};

unsignedcharsingle=0;//液晶翻页的标志符

/*************************************************************/

/*初始化锁相环*/

/*************************************************************/

/************************************************************/

/*初始化ECT模块*/

/************************************************************/

/*************************************************************/

/*初始化按键*/

/*************************************************************/

voidinit_key(void)

{

KEY1_dir=0;//设置为输入

KEY2_dir=0;

PPSH=0x00;//极性选择寄存器,选择下降沿;

PIFH=0x0C;//对PIFH的每一位写1来清除标志位;

PIEH=0x0C;//中断使能寄存器;

}

/*************************************************************/

/*按键中断函数*/

/*************************************************************/

#pragmaCODE_SEG__NEAR_SEGNON_BANKED

interruptvoidPTH_inter(void)

{

if(PIFH!

=0)//判断中断标志

{

PIFH=0xff;//清除中断标志

if(KEY2==0)

{

delay1ms(5);

if(KEY2==0)

{

if(single<=0)

single=3;

elsesingle-=1

}

}

if(KEY1==0)

{

delay1ms(5);

if(KEY1==0)

{

if(single>=3)

single=0;

elsesingle+=1;

}

}

lcd_clear();

lcd_string(0,7,poem[single]);

lcd_string(0,6,poem[single+1]);

lcd_string(0,5,poem[single+2]);

lcd_string(0,4,poem[single+3]);

lcd_string(0,3,poem[single+4]);

lcd_string(0,2,poem[single+5]);

lcd_string(0,1,poem[single+6]);

lcd_string(0,0,poem[single+7]);

}

}

#pragmaCODE_SEGDEFAULT

/*************************************************************/

/*主函数*/

/*************************************************************/

voidmain(void)

{

DisableInterrupts;

INIT_PLL();

initialize_ect();

init_key();

INIT_PORT();

LEDCPU_dir=1;

LEDCPU=0;

EnableInterrupts;

delay1ms(100);

lcd_clear();

lcd_string(0,7,poem[0]);

lcd_string(0,6,poem[1]);

lcd_string(0,5,poem[2]);

lcd_string(0,4,poem[3]);

lcd_string(0,3,poem[4]);

lcd_string(0,2,poem[5]);

lcd_string(0,1,poem[6]);

lcd_string(0,0,poem[7]);

for(;;){

}

}

LCD.H改动、实现竖屏自右向左显示

/***************************************************************************/

/*向LCD发送字符串*/

/***************************************************************************/

voidlcd_string(unsignedcharrow,unsignedcharcol,char*data1)//row为写入数据所在的行数,col为写入数据所在的列数,*data1为写入的数据

{

for(;row<4&&(*data1)!

=0;row++)

{

for(;col<8&&(*data1)!

=0;col++)

{

write_command(adress_table[row*8+col]);

delay20us(4);//延时80us

write_Data(*data1++);

delay20us(4);//延时80us

write_Data(*data1++);

delay20us(4);//延时80us

}

col=0;

}

}

五、实验流程图

六、总结

1、学习LCD点阵字符原理,LCD集成化,能带字库为编程大大简化,利于在电脑编程,对字符显示分块在读懂后进行修改设计,对行列循环进行交换,实现三字经的显示,对于按键中断和翻页功能,继承其功能并对于三字经的简化特点,利用计数变量实现对字符翻动的实现避免了大段的枚举。

2、从实验中感悟到查芯片资料,解决问题的思想方法,面对不同问题,改动程序反复观察结果,反推思考代码。

实验四电子节气门半实物仿真

一、实验目的

以节气门为例,学习并掌握利用单片机进行半实物仿真的原理与方法。

二、实验内容

3、主板的P0/P1接驱动板IN1/IN2

4、上层板的VRM0接主板的AD2

5、节气门的4接主板的AD3

6、节气门的2接主板VCC

7、节气门的6接主板GND

8、节气门的电机线3/5接驱动板OUT1/2

三、实验原理图

控制框图

四、实验所用源程序

#include/*commondefinesandmacros*/

#include"derivative.h"/*derivative-specificdefinitions*/

#include

#include

#include

#include"LCD.h"

#defineBUS_CLOCK32000000//总线频率,改变总线频率直接在此处修改

#defineOSC_CLOCK16000000//晶振频率

#defineLEDCPUPORTK_PK4

#defineLEDCPU_dirDDRK_DDRK4

#defineDEGREE_MAX225

#defineDEGREE_MIN16

unsignedcharAD_in2,AD_in3;

charAD2Disp[20],AD3Disp[20],Degreestr[20];

//xiebinadd

#defineLEDPORTB

#defineLED_dirDDRB

/*************************************************************/

/*初始化锁相环*/

/*************************************************************/

/************************************************************/

/*初始化ECT模块*/

/************************************************************/

/****************************************

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2