当前位置:
文档之家› 51单片机实验报告94890
51单片机实验报告94890
实验题目:基本指令实验
实验类型:验证性实验课时:2时间:2016年11月1日
1、实验内容和要求
了解单片机的硬件基础知识
LED灯闪烁的程序
二、实验结果及分析
1、去耦电容
电容有缓冲和稳定的作用,有了这个电容,可以说我们的电压和电流就会很稳定了,不会产生大的波动。
2、74HC138三八译码器
在我们设计单片机电路的时候,单片机的 IO 口数量是有限的,有时并满足不了我们的设计需求,比如我们的 STC89C52 一共有 32 个 IO 口,但是我们为了控制更多的器件,就要使用一些外围的数字芯片,这种数字芯片由简单的输入逻辑来控制输出逻辑,比如 74HC138三八译码器。如图所示。
unsigned long sec = 0;
ENLED = 0;
ADDR3 = 1;
TMOD = 0x01;
TH0 = 0xFC;
TL0 = 0x67;
TR0 = 1;
while (1)
{
if (TF0 == 1)
{
TF0 = 0;
TH0 = 0xFC;
TL0 = 0x67;
cnt++;
if (cnt >= 1000)
LedBuff[5] = LedChar[sec/100000%10];
}
if (i == 0)
{ ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; i++; P0 = LedBuff[0]; }
else if (i == 1)
{ ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; i++; P0 = LedBuff[1]; }
for(i = 0; i<=3000; i++); //延时
}
}
三、心得体会
做好一件事的前提条件是你对自己所要做的事情有充分的了解和认识,做好完全的准备才能够有保证将这件事做好,学习也是如此,想要做好一个程序,就要将他的工作过程以及条件搞清楚才能将程序编好编清楚。
实验题目:定时器/计数器实验
实验类型:验证性实验课时:3时间:2016年11月8日
{ ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; i++; P0 = LedBuff[4]; }
else if (i == 5)
{ ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; i++; P0 = LedBuff[5]; }
}
}
三、心得体会通过在实验课的学习,了解到了51单片机中中断的概念以及中断处理系统的工作原理。学习知识也应该经常复习。也让我感受到他是一门综合性实践性较强的课程,也是我体会到要想综合运用所学的理论知识、提高设计能力,还需增加实际操作的环节。
一、实验内容和要求
学习和了解单片机中的定时器、及其寄存器
学习数码管的相关知识
编写数码管的静态显示的相关程序
二、实验结果及分析
1、数码管
数码管示意图: 数码管结构图:
2、数码管静态显示的程序
#include <reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
实验题目:输入接口实验
实验类型:验证性实验课时:5时间:2016年11月22日
一、实验内容和要求
掌握函数调用、函数形式参数和实际参数的相关知识
学习单片机中按键的相关知识
编写简易加法计算器程序
二、实验结果及分析
1、按键
独立按键原理图:
矩阵按键原理图:
按键的扫描程序:
#include <reg52.h>
};
unsigned char LedBuff[6] = {
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
unsigned char flagls = 0;
void main()
{
unnt = 0;
unsigned long sec = 0;
实验题目:中断实验
实验类型:验证性实验课时:4时间:2016年11月15日
一、实验内容和要求
复习C语言中的数组、if语句和switch语句
学习数码管的动态显示相关知识
掌握单片机中断系统
二、实验结果及分析
1、数码管的动态显示程序
(switch语句)
#include <reg52.h>
sbit ADDR0 = P1^0;
ENLED = 0;
ADDR3 = 1;
TMOD = 1;
TH0 = 0x01;
TL0 = 0xFC;
TL0 = 0x67;
TR0 = 1;
while (1)
{
if (TF0 ==1)
{
TF0 = 0;
TH0 = 0xFC;
TL0 = 0x67;
cnt ++;
if (cnt >=1000)
{
cnt = 0;
case 5: ADDR2=1; ADDR1=0; ADDR0=1; i=0; P0=LedBuff[5]; break;
default: break;
}
}
}
}
2、中断系统程序
(if...else语句)
#include <reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void main()
{
ENLED = 0;
ADDR3 = 1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
LED = 0; //点亮小灯
while (1); //程序停止
}
2、程序下载
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
unsigned char code LedChar[] = {
0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
首先,我们要把硬件连接好,把板子插到我们的电脑上,打开设备管理器查看所使用的COM 口,如图所示:
然后 STC 系列单片的下载软件——STC-ISP,端口为上一步查到的端口,其余选项改成如图所示:
打开程序文件下载后当软件显示“已加密”就表示程序下载成功了,如下图所示:
3、心得体会
通过对单片机的初步学习和认识,我了解到了单片机的工作流程,还有通过自己编写单片机的程序,也让我对单片机的学习有了更大的兴趣,虽然过程中遇到了些许的困难,但这也让自己意识到还有很多不足,通过接下来的学习,希望对单片机的课程有更加深入的了解。
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
void main()
{
ENLED = 0;
ADDR3 = 1;
ADDR2 = 0;
ADDR1 = 0;
ADDR0 = 0;
P0 = 0xF9;
while (1);
}
三、心得体会
通过这次实验课,我对定时器有了更加深刻的了解,也让我知道了对教材应该更熟悉,因为教材是基础的,只有把基础搞好了才能够进行其他层次的学习。有时候也可以通过软件的仿真来验证书上的一些理论性的东西。实现自己想要的效果。
一、实验内容和要求
点亮一个LED小灯
程序下载到单片机中
二、实验结果及分析
1、点亮一个LED小灯
点亮LED小灯的程序:
#include <reg52.h> //包含特殊功能寄存器定义的头文件
sbit LED = P0^0;
sbit ADDR0 = P1^0; //sbit必须小写,P必须大写
sbit ADDR1 = P1^1;
{
unsigned int i = 0; //定义一个无符号整型变量i,赋初始值为0
ENLED = 0;
ADDR3 = 1;
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
while(1)
{
LED = 0; //点亮小灯
for(i = 0; i<=3000; i++); //延时
LED = 1; //熄灭小灯
《单片机与接口技术》实验报告
信息工程学院
2016年9月
辽东学院信息技术学院
《单片机与接口技术》实验报告
姓名:王瑛
学号:0913140319
班级:B1403
专业:网络工程
层次:本科
2016年9月
实验题目:实验环境的初识、使用及调试方法(第一章)
实验题目:单片机工程初步实验(第二章)
实验题目:基本指令实验(第三章)4
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
unsigned char code LedChar[] = {
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;