单片机最小系统实训报告.docx
- 文档编号:6357337
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:17
- 大小:17.89KB
单片机最小系统实训报告.docx
《单片机最小系统实训报告.docx》由会员分享,可在线阅读,更多相关《单片机最小系统实训报告.docx(17页珍藏版)》请在冰豆网上搜索。
单片机最小系统实训报告
单片机最小系统实训报告
一、实训目的
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;
}
}
}
}
}
七、实训心得
高职高专教育培养的是技术应用型人才,学校为了陪养我们的创新精神和工程实践能力,提高我们的综合素质,我们进行实训,在实践中相互学习和进步。
通过实践我们更清楚的认识了我们所学习专业在实践中的运用。
也感觉到理论和实践的差距。
八、附件
单片机最小系统生成原理图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 最小 系统 报告