单片机最小系统实训报告.docx

上传人:b****2 文档编号:3288570 上传时间:2023-05-05 格式:DOCX 页数:19 大小:18.03KB
下载 相关 举报
单片机最小系统实训报告.docx_第1页
第1页 / 共19页
单片机最小系统实训报告.docx_第2页
第2页 / 共19页
单片机最小系统实训报告.docx_第3页
第3页 / 共19页
单片机最小系统实训报告.docx_第4页
第4页 / 共19页
单片机最小系统实训报告.docx_第5页
第5页 / 共19页
单片机最小系统实训报告.docx_第6页
第6页 / 共19页
单片机最小系统实训报告.docx_第7页
第7页 / 共19页
单片机最小系统实训报告.docx_第8页
第8页 / 共19页
单片机最小系统实训报告.docx_第9页
第9页 / 共19页
单片机最小系统实训报告.docx_第10页
第10页 / 共19页
单片机最小系统实训报告.docx_第11页
第11页 / 共19页
单片机最小系统实训报告.docx_第12页
第12页 / 共19页
单片机最小系统实训报告.docx_第13页
第13页 / 共19页
单片机最小系统实训报告.docx_第14页
第14页 / 共19页
单片机最小系统实训报告.docx_第15页
第15页 / 共19页
单片机最小系统实训报告.docx_第16页
第16页 / 共19页
单片机最小系统实训报告.docx_第17页
第17页 / 共19页
单片机最小系统实训报告.docx_第18页
第18页 / 共19页
单片机最小系统实训报告.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机最小系统实训报告.docx

《单片机最小系统实训报告.docx》由会员分享,可在线阅读,更多相关《单片机最小系统实训报告.docx(19页珍藏版)》请在冰点文库上搜索。

单片机最小系统实训报告.docx

单片机最小系统实训报告

 

单片机最小系统实训报告

一、实训目的

1、掌握并理解单片机最小系统的原理及制作,牢记最小系统中各元器件的参数及各元器的作用./

2、掌握单片机芯片内部的组成及存储机构。

3、理解常用指令的功能和使用方法。

4、掌握单片机的中断源,中断控制寄存器,中断响应过程,定时/计数器的电路结构、功能我使用方法,定时器/计数控制寄存器.

5、复习利用Keil51软件对程序进行编译。

6、用protel软件绘制“单片机最小系统”电路,并用测试程序进行仿真。

7、会根据实际功能,正确选择单片机功能接线,编制正确程序。

对实验结果能做出不分析我解释,能学出符合规格的实验报告。

二、实训工具

1、点偏激测试平台:

PC机,串口线,并口线,单片机开发板

2、软件:

keil51测试软件,protel仿真软件,DXP2004软件。

三、实训要求

通过实训,学生应达到以下经济方面的要求:

素质要求

1、以积极认真的态度对待本次实训,遵章守纪、团结协作。

2、善于发现数字电路中存在的问题、分析问题、解决问题,努力培养独立工作能力。

能力要求

1、模拟电路的理论知识

2、脉冲与数字电路的理念知识

3、通过模拟、数字电路实验有一定的动手能力

4、能熟练的制作单片机最小系统

5、嫩熟练的编写8951单片机汇编程序

6、能够熟练的运用仿真软件对单片机最小系统仿真

四、实训内容

1、掌握并理解“单片机最小系统”的原理及制作,牢记最小系统中各元器件的参数及格元器件的作用。

2、用keil51测试元件编写8951单片机汇编程序

3、用peotel软件绘制“单片机最小系统”单路原理图。

4、运用仿真软件对单片机最小系统进行仿真。

五.实训基本步骤

1、用peotel乳酸钠几十年绘制“单片机最小系统”单路原理图。

2、根据原理图生成pcb图、GB文件。

钻孔文件

3、绘制印刷电路板。

4、根据原理图焊接元件,生成单片机开发板。

5、用keil51软件编写单片机最小系统测试程序。

6、用仿真软件绘制单片机最小系统原理图,测试测量程序。

7、把测试程序拷贝到单片机里进行实物测试。

8、观察测试结果。

六、51单片机C编语言程序测试

测试程序流水灯1:

//用定时器做流水灯测试

//为定时显示做准备

//P1-0-----PF1.3L0-----L3

#include

#include

#defineunitunsignedint

#defineuncharunsignedchar

sbitL0=P1^0;

sbitL1=P1^1;

sbitL2=P1^2;

sbitL3=P1^3;

unsignedchardataBUFFER[1]={0};

 

voidmain(void)

{

P2=0X0F;

EA=1;

IT0=1;

ET0=1;

TMOD=0X01;

TH0=-5000/256;

TL0=-5000%256;

TR0=1;

while

(1)

{

};

}

//定时器0中断服务程序//

voidtimer0(void)interrupt1using1

{

TH0=-5000/256;

TL0=-5000%256;

BUFFER[0]=BUFFER[0]+1;

if(BUFFER[0]==100)

{

L3=!

L3;

L2=!

L2;

L1=!

L1;

L0=!

L0;

}

}

测试程序流水灯2:

//此程序为了做花样流水灯的

//采用了C的宏定义X可以实现一改全改

#include

#include

#defineunitunsignedint

#defineuncharunsignedchar

#defineX16//

unsignedinttime=0;

 

unsignedinta[X]={

0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80,

0X18,0X24,0X42,0X81,0X42,0X24,0X18,0X00,

};

voidmain(void)

{

P1=0X0f;

EA=1;

IT0=1;

ET0=1;

TMOD=0X01;

TH0=9000/256;

TL0=9000%256;

TR0=1;

while

(1)

{

P1=a[time];

};

}

//定时器0中断服务程序//

voidtimer0(void)interrupt1using1

{

TH0=9000/256;

TL0=9000%256;

time++;

if(time==X)time=0;

}

//此程序来测试数码管

//P0.0--P0.7ABCDEFGdp

//P2.0--P2.7C0M0--------C0M8

#include

#include

#defineunitunsignedint

#defineuncharunsignedchar

unsignedchardataBUFFER[1]={0};

unsignedcharX=0;

//共阳极码表数码管

unsignedcharleddata[]={

0xC0,//"0"

0xF9,//"1"

0xA4,//"2"

0xB0,//"3"

0x99,//"4"

0x92,//"5"

0x82,//"6"

0xF8,//"7"

0x80,//"8"

0x90,//"9"

0x88,//"A"

0x83,//"B"

0xC6,//"C"

0xA1,//"D"

0x86,//"E"

0x8E,//"F"

0x89,//"H"

0xC7,//"L"

0xC8,//"n"

0xC1,//"u"

0x8C,//"P"

0xA3,//"o"

0xBF,//"-"

0xFF,//熄灭

0xFF//自定义

};

unsignedcharcom[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};

voidDelay(unsignedcharcnt)

{

while(cnt--);

}

voidxian_shi(unsignedcharcp)

{

unsignedchari;

unsignedintz=cp;

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

{

P0=leddata[z%10];

P2=com[i];

Delay(200);

z=z/10;

}

}

voidmain(void)

{

P0=0X00;

P2=0Xff;

EX0=1;

IT0=1;

EA=1;

while

(1)

{

xian_shi(X);

};

}

//定时器0中断服务程序//

voidtimer0(void)interrupt1using1

{

X++;

if(X==25)

{

X=0;

}

}

此程序测试键盘

//P3.0---P3.3L0-------L3

//从左到有显示为0123P3.4/

//上///4567P3.5/

//到///89ABP3.6/

//下///CDEFP3.7/

//P3.4--=P3.7H0----H3

#include

#defineucharunsignedchar

#defineuintunsignedint

unsignedcharled_data[]={

0xC0,//"0"

0xF9,//"1"

0xA4,//"2"

0xB0,//"3"

0x99,//"4"

0x92,//"5"

0x82,//"6"

0xF8,//"7"

0x80,//"8"

0x90,//"9"

0x88,//"A"

0x83,//"B"

0xC6,//"C"

0xA1,//"D"

0x86,//"E"

0x8E,//"F"

0x89,//"H"

0xC7,//"L"

0xC8,//"n"

0xC1,//"u"

0x8C,//"P"

0xA3,//"o"

0xBF,//"-"

0xFF,//熄灭

0xFF//自定义

};

 

voiddelay(uinti)

{

while(i--);

}

 

ucharkeyscan(void)//

{

ucharcord_h,cord_l;//行列值中间变量

P3=0x0f;//行线输出全为0

cord_h=P3&0x0f;//读入列线值

if(cord_h!

=0x0f)//先检测有无按键按下

{

delay(100);//去抖

if(cord_h!

=0x0f)

{

cord_h=P3&0x0f;//读入列线值

P3=cord_h|0xf0;//输出当前列线值

cord_l=P3&0xf0;//读入行线值

return(cord_h+cord_l);//键盘最后组合码值

}

}

return0xFF;

}

 

voidmain()

{

ucharkey;

P2=0xbb;//1数码管亮按相应的按键,会显示按键上的字符

while

(1)

{

key=keyscan();//调用键盘扫描,

switch(key)

{

case0xEE:

P0=led_data[0];break;//0按下相应的键显示相对应的码值

case0xED:

P0=led_data[1];break;//1

case0xEB:

P0=led_data[2];break;//2

case0xE7:

P0=led_data[3];break;//3

case0xDE:

P0=led_data[4];break;//4

case0xDD:

P0=led_data[5];break;//5

case0xDB:

P0=led_data[6];break;//6

case0xD7:

P0=led_data[7];break;//7

case0xBE:

P0=led_data[8];break;//8

case0xBD:

P0=led_data[9];break;//9

case0xBB:

P0=led_data[10];break;//a

case0xB7:

P0=led_data[11];break;//b

case0x7E:

P0=led_data[12];break;//c

case0x7D:

P0=led_data[13];break;//d

case0x7B:

P0=led_data[14];break;//e

case0x77:

P0=led_data[15];break;//f

}

}

}

//此程序用来测试中断键盘P3.2INT0

//下跳沿触发

//

#include

#include

#defineunitunsignedint

#defineuncharunsignedchar

sbitL0=P1^0;

sbitL1=P1^1;

sbitL2=P1^2;

sbitL3=P1^3;

unsignedinttimes=0;

voiddelay(unsignedintcp)

{

unsignedinti=cp;

while(i--);

}

 

unsignedcharleddata[]={

0xC0,//"0"

0xF9,//"1"

0xA4,//"2"

0xB0,//"3"

0x99,//"4"

0x92,//"5"

0x82,//"6"

0xF8,//"7"

0x80,//"8"

0x90,//"9"

0x88,//"A"

0x83,//"B"

0xC6,//"C"

0xA1,//"D"

0x86,//"E"

0x8E,//"F"

0x89,//"H"

0xC7,//"L"

0xC8,//"n"

0xC1,//"u"

0x8C,//"P"

0xA3,//"o"

0xBF,//"-"

0xFF,//熄灭

0xFF//自定义

};

unsignedcharcom[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};

voidxian_shi(unsignedcharcp)

{

unsignedchari;

unsignedintz=cp;

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

{

P0=leddata[z%10];

P2=com[i];

delay(200);

z=z/10;

}

}

voidmain(void)

{

P1=0Xdd;

EX0=1;

IT0=1;

EA=1;

while

(1)

{

xian_shi(times);

};

}

 

//INT0低电平中断服务程序//

voidintersvr0(void)interrupt0using1

{

L0=!

L0;

L1=!

L1;

L2=!

L2;

L3=!

L3;

times++;

}

//最简单的24小时显示

#include

#include

#defineunitunsignedint

#defineuncharunsignedchar

unsignedchardataBUFFER[1]={0};

unsignedchartime[3]={0};

unsignedcharleddata[]={

0xC0,//"0"

0xF9,//"1"

0xA4,//"2"

0xB0,//"3"

0x99,//"4"

0x92,//"5"

0x82,//"6"

0xF8,//"7"

0x80,//"8"

0x90,//"9"

0x88,//"A"

0x83,//"B"

0xC6,//"C"

0xA1,//"D"

0x86,//"E"

0x8E,//"F"

0x89,//"H"

0xC7,//"L"

0xC8,//"n"

0xC1,//"u"

0x8C,//"P"

0xA3,//"o"

0xBF,//"-"

0xFF,//熄灭

0xFF//自定义

};

unsignedcharcom[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};

voidDelay(unsignedcharcnt)

{

while(cnt--);

}

voidxian_shi(void)

{

unsignedchari;

unsignedintSS=time[0]+100*time[1]+10000*time[2];

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

{

P0=leddata[SS%10];

P2=com[i];

Delay(200);

SS=SS/10;

}

}

voidmain(void)

{

P0=0X00;

P2=0Xff;

EA=1;

IT0=1;

ET0=1;

TMOD=0X01;

TH0=0xec;

TL0=0x78;

TR0=1;

while

(1)

{

xian_shi();

};

}

//定时器0中断服务程序//

voidtimer0(void)interrupt1using1

{

TH0=0xec;

TL0=0x78;

BUFFER[0]=BUFFER[0]+1;

if(BUFFER[0]==100)

{

time[0]++;

BUFFER[0]=0;

if(time[0]==60)

{

time[0]=0;

time[1]++;

if(time[1]==60)

{

time[1]=0;

if(time[1]==60)

{

time[1]=0;

time[2]++;

if(time[2]==24)time[2]=0;

}

}

}

}

}

七、实训心得

高职高专教育培养的是技术应用型人才,学校为了陪养我们的创新精神和工程实践能力,提高我们的综合素质,我们进行实训,在实践中相互学习和进步。

通过实践我们更清楚的认识了我们所学习专业在实践中的运用。

也感觉到理论和实践的差距。

八、附件

单片机最小系统生成原理图

 

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

当前位置:首页 > 解决方案 > 学习计划

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

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