单片机实训指导书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实训项目一让单片机动起来
1、实训目的及要求:
1)掌握单片机开发板的使用方法(驱动识别,程序下载)
2)掌握单片机程序开发软件KEIL的使用
3)掌握单片机程序烧录软件STC-ISP下载软件的使用
2、实训内容
1)根据实训报告内容编写单片机程序
2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中
3)观察实验现象并记录
4)完成实训报告内容
3、实训准备
硬件:单片机开发板、电脑、杜邦线
软件:keil uvision4 、STC-ISP
4、实训过程
1)流程图
2)实训程序一:
#include "reg52.h"
sbit LED=P1^0;
void main()
{
LED=0;
while(1);
}
实训程序二:
#include "reg52.h"
#define LED P1;
void main()
{
LED=0xaa;
while(1);
}
3)实训步骤
①打开KEIL软件编写LED控制程序。

②程序调试无误后,使用KEIL生产HEX文件。

③将生产的HEX文件烧录到单片机芯片中,并观察实验现象。

3)实验现象记录
实训程序一:。

实训程序二:。

4)实训报告要求
①将实训程序中的注释补充完整,了解每条语句作用。

实训项目二LED的闪烁
1、实训目的及要求:
1)掌握单片机控制LED点亮和熄灭的方法。

2)了解单片机延时程序的原理及设计。

3)了解单片机中常用的变量类型及其定义方法。

2、实训内容
1)根据实训报告内容编写单片机程序
2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中
3)观察实验现象并记录
4)完成实训报告内容
3、实训准备
硬件:单片机开发板、电脑、杜邦线
软件:keil uvision4 、STC-ISP
4、实训过程
1)流程图
2)实训程序:
#include "reg52.h"
#define uchar unsigned char //定义uchar为定义字符型变量,范围
#define uint unsigned int //定义uint为定义整型变量,范围
sbit LED=P1^0;
uint i;//定义整型变量i
void main()
{
while(1)
{
LED=0;
for(i=0;i<20000;i++);
LED=1;
for(i=0;i<20000;i++);
}
}
3)实训步骤
①打开KEIL软件编写LED闪烁控制程序。

②程序调试无误后,使用KEIL生产HEX文件。

③将生产的HEX文件烧录到单片机芯片中,并观察实验现象。

3)实验现象记录。

4)实训报告要求
①将实训程序中的注释补充完整,了解每条语句作用。

②完成如下思考题
程序中定义的变量类型为整型,是否可以将变量类型改为字符型变量,若不能,请说出原因。

③拓展练习:参考本实训任务及上一课实训程序二,试编写程序实现LED间隔闪烁。

(完成拓展任务,可在原总分基础上额外增加10分)
实训项目三跑马灯
1、实训目的及要求:
1)掌握单片机延时程序的设计
2)掌握单片机程序变量的定义及使用
3)了解子程序的定义及调用
4)了解左移、右移函数的应用及移位原理
5)了解局部变量和全局变量的区别
2、实训内容
1)根据实训报告内容编写单片机程序
2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中3)观察实验现象并记录
4)完成实训报告内容
3、实训准备
硬件:单片机开发板、电脑、杜邦线
软件:keil uvision4 、STC-ISP
4、实训过程
1)流程图
2)实训程序:
#include "reg52.h"
#include “intrins.h”
#define uchar unsigned char
#define uint unsigned int
uint i;
void delay()//声明延时子程序
{
uchar j,k;
for(j=0;j<200;j++)
{
for(k=0;k<100;k++);
}
}
void main()
{
i=0xfe;
while(1)
{
P1=i;
delay();
i=_crol_(i,1);
}
}
3)实训步骤
①打开KEIL软件编写跑马灯控制程序。

②程序调试无误后,使用KEIL生产HEX文件。

③将生产的HEX文件烧录到单片机芯片中,并观察实验现象。

3)实验现象记录。

将程序中的i=_crol_(i,1);修改为i=_cror_(i,1);并观察实验现象。

将程序中的i=_crol_(i,1);修改为i=_crol_(i,2);并观察实验现象。

将程序中的i=_crol_(i,1);修改为i=i<<1;并观察实验现象。

4)实训报告要求
①将实训程序中的注释补充完整,了解每条语句作用。

②完成如下思考题
程序中定义的的<<、>>与_crol_、_cror_指令有何区别。

程序中定义的的<<、>>与_crol_、_cror_指令是否可以通过基本逻辑运算实现相同功能,若可以,如何实现。

③拓展练习:
参考本实训任务,试将如下程序实现补充完整实现跑马灯效果。

(完成拓展任务,可在原总分基础上额外增加10分)
#include "reg52.h"
#include “intrins.h”
#define uchar unsigned char
#define uint unsigned int
uint i,m;
void delay()//声明延时子程序
{
uchar j,k;
for(j=0;j<200;j++)
{
for(k=0;k<100;k++);
}
}
void main()
{
m=
while(1)
{
for(i=0;i<8;i++)
{
P1=
delay();
i=_crol_(0xfe, );
}
}
实训项目四花样彩灯
1、实训目的及要求:
1)掌握子程序的定义及调用
2)了解具有参数的子函数的调用
3)了解数组及其应用
2、实训内容
1)根据实训报告内容编写单片机程序
2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中
3)观察实验现象并记录
4)完成实训报告内容
3、实训准备
硬件:单片机开发板、电脑、杜邦线
软件:keil uvision4 、STC-ISP
4、实训过程
1)流程图
2)实训程序:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
uint i,m;
uchar tab[ ]={ 0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e}; //定义数组
void delay(uchar ms)//声明延时子程序
{
uchar j,k;
for(j=0;j<ms;j++)
{
for(k=0;k<100;k++);
}
}
void main()
{
while(1)
{
for(i=0;i<7;i++)
{
P1=tab[i];
delay(200);
}
}
}
3)实训步骤
①打开KEIL软件编写跑马灯控制程序。

②程序调试无误后,使用KEIL生产HEX文件。

③将生产的HEX文件烧录到单片机芯片中,并观察实验现象。

4)实训报告要求
①将实训程序中的注释补充完整,了解每条语句作用。

②完成如下思考题
程序中的延时子程序和我们前面学过的延时子程序有什么区别?
程序中P1=tab[i]有何作用
如果我们需要改变彩灯显示的样式,让彩灯从两边往中间点亮,需要如何修改数组?
③拓展练习:
我们是否可以在不改变数组内容的情况下实现上一题的控制要求,若可以,则如何修改主程序(请将修改的语句写在原语句后)
void main()
{
while(1)
{
for(i=0;i<7;i++)
{
P1=tab[i];
delay(200);
}
}
}
实训项目五交通灯
1、实训目的及要求:
1)掌握具有参数的子函数的应用
2)熟练运用各种方法控制LED
3)了解C语言中基本逻辑运算的应用
2、实训内容
1)根据实训报告内容编写单片机程序
2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中3)观察实验现象并记录
4)完成实训报告内容
3、实训准备
硬件:单片机开发板、电脑、杜邦线
软件:keil uvision4 、STC-ISP
4、实训过程
1)流程图
2)实训程序:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
uint i;
void delay(uchar ms)
{
uchar j,k;
for(j=0;j<ms;j++)
{
for(k=0;k<100;k++);
}
}
void main()
{
while(1)
{
P1=0xde;
delay(60);
P1=0xdd;
for(i=0;i<6;i++)
{
delay(5);
P1=P1^0x02;
}
P1=0xf3;
delay(60);
P1=0xf9;
for(i=0;i<6;i++)
{
delay(5);
P1=P1^0x08;
}
}
}
3)实训步骤
①打开KEIL软件编写跑马灯控制程序。

②程序调试无误后,使用KEIL生产HEX文件。

③将生产的HEX文件烧录到单片机芯片中,并观察实验现象。

4)实训报告要求
①将实训程序中的注释补充完整,了解每条语句作用。

②完成如下思考题
在C语言中,需要将数据的某些位置0,其余位保持不变应如何处理?在C语言中,需要将数据的某些位置1,其余位保持不变应如何处理?
在C语言中,需要将数据的某些位取反,其余位保持不变应如何处理?
实训项目六单个数码管显示数字0-9
1、实训目的及要求:
1)掌握具数码管工作原理及编码方法
2)掌握数组及其应用
2、实训内容
1)根据实训报告内容编写单片机程序
2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中
3)观察实验现象并记录
4)完成实训报告内容
3、实训准备
硬件:单片机开发板、电脑、杜邦线
软件:keil uvision4 、STC-ISP
4、实训过程
1
注:每个笔端用数字0和1表示亮灭,0为灭,1为亮
2)流程图
3)实训程序:
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit wei=P2^7;//定义位码
sbit duan=P2^6;/定义段码
uint i;
uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//数码管编码表
void delay(uchar ms)
{
uchar j,k;
for(j=0;j<ms;j++)
{
for(k=0;k<100;k++);
}
}
void main()
{
while(1)
{
wei=1;
P0=0xfe;
wei=0;
for(i=0;i<10;i++)
{
duan=1;
P0=tab[i];
duan=0;
delay(200);
}
}
}
3)实训步骤
①打开KEIL软件编写跑马灯控制程序。

②程序调试无误后,使用KEIL生产HEX文件。

③将生产的HEX文件烧录到单片机芯片中,并观察实验现象。

4)实训报告要求
①完成数码管编码表
②将实训程序中的注释补充完整,了解每条语句作用。

③完成如下思考题
如何修改程序将数码管显示位置更换(在源程序中用横线划出需要修改语句,并将修改后语句写在下方
如何修改程序将实现9-0倒计数(在源程序中用横线划出需要修改语句,并将修改后语句写在下方
如何采用if语句实现程序功能,并将程序记录在下方
实训项目七数码管动态显示数字12345678
1、实训目的及要求:
1)了解数码管动态显示工作原理及方法
2)熟练掌握数码管编码方法
3)数量掌握数组应用
2、实训内容
1)根据实训报告内容编写单片机程序
2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中
3)观察实验现象并记录
4)完成实训报告内容
3、实训准备
硬件:单片机开发板、电脑、杜邦线
软件:keil uvision4 、STC-ISP
4、实训过程
1)流程图
2)实训程序:
#include "reg52.h"
#include “intrins.h”
#define uchar unsigned char
#define uint unsigned int
sbit wei=P2^7;//定义位码
sbit duan=P2^6;/定义段码
uint i;
uchar m,n;
uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管编码表
void delay(uchar ms)
{
uchar j,k;
for(j=0;j<ms;j++)
{
for(k=0;k<100;k++);
}
}
void main()
{
while(1)
{
m=0xfe;
for(n=0;n<8;n++)
{
P0=m;
wei=1;wei=0;
P0=tab[n];
duan=1;duan=0;
m=_crol_(m,1);
}
}
}。

相关文档
最新文档