当前位置:文档之家› 单片机实训指导书

单片机实训指导书

实训项目一让单片机动起来1、实训目的及要求:1)掌握单片机开发板的使用方法(驱动识别,程序下载)2)掌握单片机程序开发软件KEIL的使用3)掌握单片机程序烧录软件STC-ISP下载软件的使用2、实训内容1)根据实训报告内容编写单片机程序2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中3)观察实验现象并记录4)完成实训报告内容3、实训准备硬件:单片机开发板、电脑、杜邦线软件:keil uvision4 、STC-ISP4、实训过程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-ISP4、实训过程1)流程图2)实训程序:#include "reg52.h"#define uchar unsigned char //定义uchar为定义字符型变量,范围#define uint unsigned int //定义uint为定义整型变量,范围sbit LED=P1^0;uint i;//定义整型变量ivoid 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-ISP4、实训过程1)流程图2)实训程序:#include "reg52.h"#include “intrins.h”#define uchar unsigned char#define uint unsigned intuint 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 intuint 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-ISP4、实训过程1)流程图2)实训程序:#include "reg52.h"#define uchar unsigned char#define uint unsigned intuint 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)熟练运用各种方法控制LED3)了解C语言中基本逻辑运算的应用2、实训内容1)根据实训报告内容编写单片机程序2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中3)观察实验现象并记录4)完成实训报告内容3、实训准备硬件:单片机开发板、电脑、杜邦线软件:keil uvision4 、STC-ISP4、实训过程1)流程图2)实训程序:#include "reg52.h"#define uchar unsigned char#define uint unsigned intuint 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-91、实训目的及要求:1)掌握具数码管工作原理及编码方法2)掌握数组及其应用2、实训内容1)根据实训报告内容编写单片机程序2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中3)观察实验现象并记录4)完成实训报告内容3、实训准备硬件:单片机开发板、电脑、杜邦线软件:keil uvision4 、STC-ISP4、实训过程1注:每个笔端用数字0和1表示亮灭,0为灭,1为亮2)流程图3)实训程序:#include "reg52.h"#define uchar unsigned char#define uint unsigned intsbit 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软件编写跑马灯控制程序。

相关主题