51单片机------闪烁灯(实验报告)

发布者:快乐阳光最新更新时间:2021-08-02 来源: eefocus关键字:51单片机  闪烁灯  指令译码器 手机看文章 扫描二维码
随时随地手机看文章

一、实验目的


掌握51单片机开发板的使用步骤;

掌握51单片机开发板所需软件的安装过程;

以LED灯闪烁为例子,掌握软件KEIL4的使用方法。


二、实验设备

实验仪器设备:

计算机

软件:

Proteus仿真软件、KELL开发软件


三.实验任务

在单片机I/O口(P0.0)上外接一个发光二极管LED,通过程序实现LED闪烁显示,即不停的一亮一灭,亮,灭持续时间均为1秒。


四、实验内容及实验步骤

1.项目背景:

单片机原理:单片机的工作原理与计算机CPU的工作原理是一样的,主要是利用片内的半导体存储器存放用户的程序和数据,单片机的核心中央微处理器CPU中有指令寄存器、指令译码器,程序计数器等部件,由程序计数器寻找下一条要执行的指令,找到后,将指令送给指令寄存器,再由指令译码器翻译执行该指令,完成对指令功能的操作。


单片机的特点:

(1)高集成度,体积小,高可靠性

单片机将各功能部件集成在一块晶体芯片上,集成度很高,体积自然也是最小的。芯片本身是按工业测控环境要求设计的,内部布线很短,其抗工业噪音性能优于一般通用的CPU。单片机程序指令,常数及表格等固化在ROM中不易破坏,许多信号通道均在一个芯片内,故可靠性高。

(2)控制功能强

为了满足对对象的控制要求,单片机的指令系统均有极丰富的条件:分支转移能力,I/O口的逻辑操作及位处理能力,非常适用于专门的控制功能。

(3)低电压,低功耗,便于生产便携式产品

为了满足广泛使用于便携式系统,许多单片机内的工作电压仅为1.8V~3.6V,而工作电流仅为数百微安。

(4)易扩展

片内具有计算机正常运行所必需的部件。芯片外部有许多供扩展用的三总线及并行、串行输入/输出管脚,很容易构成各种规模的计算机应用系统。

(5)优异的性能价格比

单片机的性能极高。为了提高速度和运行效率,单片机已开始使用RISC流水线和DSP等技术。单片机的寻址能力也已突破64KB的限制,有的已可达到1MB和16MB,片内的ROM容量可达62MB,RAM容量则可达2MB。由于单片机的广泛使用,因而销量极大,各大公司的商业竞争更使其价格十分低廉,其性能价格比极高。


单片机的用途:

(1) 工业自动化:如数据采集,测控技术;

(2) 智能仪器仪表:如数字示波器,数字信号源,数字万用表,感应电流表等

(3) 消费类电子产品:洗衣机,电冰箱,空调,电视机,微波炉等

(4) 通信方面:如调制解调器,程控交换技术,手机,小灵通等

(5) 武器装备:飞机军舰,坦克,导弹,航天飞机等


单片机I/O口:

(1) 电源和时钟引脚,如VCC,GND,XTAL1,XTAL2;

(2) 编程控制引脚,如RST,PSEN,ALE/PROG,EA/VPP;

I/O口引脚,如P0,P1,P2,P3,四组I/O口;


2.需求分析:

Keil4——编程环境简介 Keil uVision是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。 在开发大型软件时更能体现高级语言的优势。与汇编相比,C语言在功能上、结构上、可读性、可维护性上有明显的优势,因而易学易用。Keil C51软件提供丰富的库函数和功能强大额集成开发调试工具,全Windows界面。达到接近于汇编的工作效率。


PROTEUS——仿真环境简介 Proteus 软件是来自英国Labcenter electronics 公司的EDA 工具软件,Proteus 软件有近20年的历史,在全球广泛使用。它除了具有和其它EDA 工具一样的原理布图、PCB 自动或人工布线及电路仿真的功能外,其革命性的功能是,它的电路仿真是交互的,可视化的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,可以测量仿真的波形及记录仿真数据。在不需要硬件设备投入的情况下,Proteus 软件可以建立完整的电子学习设计开发环境,缩短研发周期,并且降低开发成本。 Proteus 组合了高级原理布图、混合模式SPICE 仿真,PCB 设计以及自动布线来实现一个完整的电子设计系统。此系统受益于多年来的持续开发,被《电子世界》在其对PCB 设计系统的比较文章中评为最好产品—“The Route to PCB CAD”。Proteus 产品系列也包含了我们革命性的VSM 技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232 终端等动态外设模型来对设计进行交互仿真。其功能模块:—个易用而又功能强大的ISIS 原理布图工具;PROSPICE 混合模型SPICE 仿真; ARESPCB 设计。PROSPICE 仿真器的一个扩展PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LED 甚至LCD 显示CPU 模型。


3.项目内容及仿真软件:


(1)打开Keil软件,新建一个工程,命名为“LED”;

在这里插入图片描述

(2)选择芯片类型,虽然使用的是STC90C516RD 或 STC89C52RC的单片机,但这里选择ATMEL------AT89C51这个芯片就行。

在这里插入图片描述

(3)新建一个文件,输入LED闪烁灯实验的相关代码(代码绝对正确)这是用的C语言中的延时函数“delayxms(unsigned int xms)”;

在这里插入图片描述

(4)保存文件看,文件名为“01-闪烁灯.c”;

(5)右键单击“Source Group 1”,单击“Add Files to Group ‘Source Group 1’”,将刚刚生成的“01-闪烁灯.c”文件加入到工程中;

在这里插入图片描述

注:一定要将保存的文件加入到工程中,否者将会报错

(6)单击编译按钮 在这里插入图片描述 或按F7编译工程,结果如下则视为编译无误;

在这里插入图片描述

注:保存的代码文件一定要后缀“.c”。

(7)右键单击“Target1”→“Options for Target ‘Target 1’…”,选择对话框中“Output”选项卡,选中“Create HEX File”选项用于生成十六进制文件,再次单击按钮编译,成功后会生成同名的十六进制文件;

在这里插入图片描述
在这里插入图片描述

单击在这里插入图片描述若结果如下则视为已成功生成十六进制文件:

在这里插入图片描述

(8)运行Proteus软件,绘制出原理图(根据老师的要求,此处我所用的是P0.0I/O口)如下:

在这里插入图片描述

为AT89C51单片机添加“test.hex”文件单击所放置的芯片,如下:

在这里插入图片描述
在这里插入图片描述

4.测试过程:若如下图所示一样则视为试验成功:

在这里插入图片描述

五、实验收获与体会

做单片机硬件和软件结合的实验,在以前学过的编程语言基础上,学习用单片机编程实现点亮熄灭LED和单片机控制LED闪烁,在理解老师讲解的知识基础上和同学一起探讨交流,慢慢熟悉了一些新知识。操作过程中,软硬件方面都出现一些问题,实验中实验结果讨论遇到发光二极管不亮的情况,于是改用程序之后问题得以解决,因此实验中程序应该及时检查,不然会影响实验的顺利进行。

关键字:51单片机  闪烁灯  指令译码器 引用地址:51单片机------闪烁灯(实验报告)

上一篇:51单片机-------流水灯(实验报告)
下一篇:单片机学习笔记 —— 8位数码管动态扫描

推荐阅读最新更新时间:2024-11-19 17:42

51单片机基础之GPIO输出
代码: #include reg52.h //引用51单片机的头文件,包含寄存器等操作 sbit LED=P2^0; //定义P2^0引脚,这属于位操作,等下用于输出高低电平,以便于点亮LED灯 void delay(unsigned int u16) //unsigned是无符号类型,也就是非负数,这个函数可以实现0.6秒内的延时,本质上就是让CPU等待 { while(u16--); } void main(void) //主函数,程序都是从主函数开始执行的。 { while(1) //循环操作,一直执行程序 {
[单片机]
<font color='red'>51单片机</font>基础之GPIO输出
51单片机——ADC模数转换、DAC数模转换PWM C语言入门编程
ADC: ADC(analog to digital converter)也称为模数转换器,是指一个将模拟信号转变为数字信号。单片机在采集模拟信号时,通常都需要在前端加上A/D芯片。AD转换器(ADC)将模拟量转换为数字量通常要经过4个步骤:采样、保持、量化和编码。 ADC的分辨率是指对于允许范围内的模拟信号,它能输出离散数字信号值的个数。这些信号值通常用二进制数来存储,因此分辨率经常用比特作为单位,且 这些离散值的个数是 2 的幂指数。 例如:12位ADC的分辨率就是12位,或者说分辨率为满刻度的1/(2^12)。 一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V×1/(2^12 )=2.4mV
[单片机]
<font color='red'>51单片机</font>——ADC模数转换、DAC数模转换PWM C语言入门编程
51单片机中什么是bit和sbit?_bit和sbit区别
回顾C语言发现在单片机中有bit sbit sfr 等一些类型! 问题:什么是bit和sbit?他们有什么区别?   bit : 编译时分配空间 sbit 只能在外部定义全局变量。 sfr(特殊功能寄存器)的bit。SFR是系统指定的内存地址。   bit 动态分配的,有编译器来指定内存地址。   bit和sbit都是C51扩展的变量类型。   sbit 要在最外面定义,就是说必须定义成外部变量.sbit定义的是SFR(特殊功能寄存器)的bit   sbit更像是类型定义,不像是变量定义。   sbit: 指示说明性说明   bit 可以在外部或内部定义。
[单片机]
51单片机外围模块——DS18B20温度传感器
一. DS18B20简介 DS18B20数字温度传感器接线方便,封装后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。 二. DS18B20的特点 适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 DS18B20支持多点组
[单片机]
<font color='red'>51单片机</font>外围模块——DS18B20温度传感器
基于51单片机i2c多字节的读写
使用Keil的编译环境下载,确实能够下载,但是入口的地址是如下黄色的那行显示所示,如果单步执行(F11)或全速运行(F5),程序始终在原位置不动(0x1FFF4252),如果强制的将PC指针的值和SP的值修改为0x8000000与0x2000000,然后在点击运行,则能够跑到main()函数,再全速运行,能够看到客户板子上的LED灯的闪烁。 但是如果不强制修改PC和SP指针的值,则程序不执行。 所以问题就变成为什么程序下载进去后的地址是0x1FFF4252?0x1FFF4252又是什么地址呢?查阅相应的手册,发现0x1FFF4252是处在了Systemmemory区域。 用万用表测量了客户板上的Boot0引脚的电平,发
[单片机]
基于<font color='red'>51单片机</font>i2c多字节的读写
使用51单片机实现SHT11温湿度传感器检测的程序和电路图
下面是原理图: 下面是与MCU连接的典型电路: 下面是源代码: #include 《reg52.h》 #include 《intrins.h》 /******************************************************** 宏定义 ********************************************************/ #define uint unsigned int #define uchar unsigned char #define noACK 0 #define ACK 1 #define STATUS_REG_W 0x06 #define STATU
[单片机]
使用<font color='red'>51单片机</font>实现SHT11温湿度传感器检测的程序和电路图
51单片机与计算机进行通信的实现方法
51单片机 与计算机 通信 首先我们先来了解一下51单片机与计算机进行通信的实现方法。先来看一个实现这个功能的基本电路。 图中的P1就是 仿真 用的一个串口 接口 ,这个仿真电路要实现与计算机通信功能需要用到其他两个软件,一个是虚拟串口驱动软件,另外一个是串口助手软件,这两个软件在网上都很容易找到。我使用的是Virtual Serial Port Driver和丁丁串口助手,你也可以使用自己熟悉的软件,如果找不到或使用,安装这两个软件有问题可以私信。 虚拟串口驱动软件安装后配置两个成对的虚拟串口一个对应仿真电路中的串口接口,一个对应在串口助手软件上,这样就相当于将两个软件通过虚拟串口连接在一起了,将他们配置成相同的串口
[单片机]
<font color='red'>51单片机</font>与计算机进行通信的实现方法
基于51单片机家具门屉耐用性自动检测装置程序设计
#include reg52.h #define uint unsigned int #define uchar unsigned char #define ZKB 6 //占空比初始值设定 #define max_time 100 //设置超出时间 sbit gd1=P1^0; //光电开关被挡住是高电平,没有被挡住是低电平 sbit gd2=P1^1; //光电开关被挡住是高电平,没有被挡住是低电平 sbit en=P1^2; //步进电机使能端,高电平工作,低电平不工作 sbit zx=P1^3; //高电平步进电机正
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved