当前位置:文档之家› 单片机实训报告

单片机实训报告

单片机原理及应用




班级:应电14.2班
摘要:
《单片机应用系统设计项目化教程》这本书根据教育部新的教学改革要求和企业岗位技能需求,以高技能应用型人才专业能力培养为目标,结合作者多年的教学经验与课程改革成果进行编写。

全书通过6个典型项目任务,着重介绍单片机基本原理及应用系统的设计方法与技巧,包括流水灯控制系统设计、简易数字时钟设计、数字电压表设计、低频信号发生器设计、数据存储及回放系统设计和窗帘智能控制系统设计等。

本书采用“理实一体、项目化教学”模式进行容编排,将单片机原理及应用系统设计的相关知识点融入项目中进行讲解,易教易学,效果良好。

目录
摘要·· 2
目录·· 2
实训名称·· 3
实训地点·· 3
实训时间·· 3
实训目的·· 3
实训项目·· 3
项目1· 3
项目2· 4
项目3· 5
项目4· 6
实训总结·· 7
实训名称:单片机原理及应用
实训地点:行政楼523
实训时间:2016.6.27—6.30
实训目的:
1、掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本
思路和方法。

2、掌握C的基本概念和基础知识。

3、通过训练能够读懂较为复杂的C语言源程序并具备基本C语言程序设
计的能力。

4、熟练掌握各种常用类的定义继承文件的应用,为更好的理解面向对象
打下更好的基础。

5、掌握面向对象的基本原理,提高学生综合程序设计的能力。

6、培养自己独立解决问题,找资料的能力。

同学之间相互帮助、相互交
流、相互合作的团队精神。

7、通过实训检查自己学习上的不足,达到熟练掌握C语言的基本知识和
技能。

实训项目:
项目1
点亮一个LED,每隔一定时间循环熄灭、点亮…
设计思路:端口送高电平,led熄灭,延时1s,端口送低电平,led点亮,延时1s,就这样一直循环。

程序
#include<reg52.h>
typedef unsigned char UINT8; typedef unsigned int UINT16;
void DelayMs( UINT16 Ms ) {
UINT8 i;
while (Ms--)
{
for ( i = 0; i < 114; i++ );
}
} void main (void)
{
while(1)
{
L2 = 1;
DelayMs(1000);
L2 = 0;
DelayMs(1000);
}
}
原理图
项目2
点亮一个LED,让它每隔一定时间循环左移(课使用delay函数进行延时)
设计思路:在项目1的的基础上,用dalay函数进行延时,用<<来表示左移,添加一个左移的函数。

通俗一点的讲的话,就如天天天同一些人排队领东西,领完了返回队位继续排(当然一只是这几个人排)。

程序
#include<reg51.h> void delay(unsigned int z)
{
unsigned int j,i;
for(i=0;i<z;i++)
for(j=0;j<1000;j++); }
void main()
{
unsigned LED,i;
LED=0xfe;
while(1)
{
for(i=0;i<7;i++)
{
delay(100);
LED=(LED<<1)|0x01;
P3=LED;
}
}
}
原理图
项目3
将任务二中delay延时改用定时器延时,且延时一秒
设计思路:在项目2的的基础上,用定时器来进行延时,首先设置定时器工作方式也就是TMOD,在设置TH0/1,TL0/1的初值,也就是定时时间的设置,然后设置中断允许,并开中断。

用中断来控制。

程序
#include <reg51.h>
char j=0,i=0;
void main()
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1);
}
void T0_time() interrupt 1 {
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; j++;
if(j==5)
{
j=0;
P1=~(0x01<<i);
if(++i==8)
i=0;
}
}
原理图
项目4
四位数码管并排显示,从左到右依次为分、秒十位、秒各位、0.1秒,相当于移动可计时9分59.9秒,使用一个按键,当按键第一次按下,启动秒表,第二次按下,停止,第三次按下,清零。

(数码管可选共阴极、共阳极,至于对应数字的段选可参考教材)
设计思路:用delay函数来进行延时,用部中断来控制T1,用外部中断来实现计数、暂停、清零这三个功能。

程序
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dp=P0^7;
uchar code Tab[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90}; uchar xiao,miao,fen; uchar t,swnum=0; void delay(uint z) {
uint x,y;
.
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
void dihplay()
{
P1=0xfd;
P0=Tab[xiao%10];
delay(1);
}
void display()
{
P1=0xfb;
P0=Tab[miao/10];
delay(1);
P1=0xfe;
P0=Tab[miao%10];
dp=0;delay(1);
}
void dimplay()
{
P1=0xf7;
P0=Tab[fen%10];
dp=0;delay(1);
}
void main()
{
EA = 1;
EX0 = 1;
IT0 = 1;
ET0=1;
TMOD=0x01;
TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=0;
xiao=0;miao=0;fen=0; while(1) {
display();delay(1); dimplay();delay(1); dihplay();delay(1);
}
}
void timer0() interrupt 1 {
xiao++;
if(xiao==10)
{ xiao=0;
miao++;
if(miao==59)
{ miao=0;
fen++;
if(fen==10) { fen=0;
}
}
}
}
void ex0_int0() interrupt 0 {
swnum++;
if(swnum == 1)
{
TR0= 1;
}
if(swnum == 2)
{
TR0 = 0;
}
if(swnum == 3)
{
xiao = 0;
miao = 0;
fen = 0;
swnum=0;
}
}
.
原理图
实训总结:
通过今次单片机实训,使我对单片机的认识有了更深刻的理解。

系统以51单片机为核心部件,利用C语言编程,通过对led灯控制到用数码管实现秒表功能、中断控制功能,能实现本设计题目的基本要求和发挥部分。

由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。

踉踉跄跄地忙碌了一周,我的程序终于编译成功。

当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。

我相信其中的酸甜苦辣最终都会化为甜美的甘泉。

但在这次实训中同时使我对C语言有了更深的认识。

当我第一次接触
.
C语言就感觉很难,特别是今次实训要用到C语言,尽管困难重重,可我们还是克服了。

这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。

这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。

希望这次的经历能让我在以后学习中激励我继续进步。

.。

相关主题