【单片机原理及应用】实验: 8位数码显示器

目录

一、实验目的

二、实验内容

三、实验步骤

四、记录与处理

五、思考

六、成果文件提取链接


一、实验目的

 学习8位数码管串行扩展原理,掌握74HC595与动态显示编程方法。


二、实验内容

 

参照图表

    

(1)创建一个包含80C51固件,且采用Keil for 8051编译器的新项目。

(2)按照图3.54和表2.18完成实验的电路图绘制。

(3)编写C51源程序,要求实现如下功能:

  • 8个数码管的所有笔段整体全亮1秒(以便检查有无缺画);
  • 按照从左至右的顺序以0.5秒间隔逐位显示数字7,6,5,4,3,2,1,0;
  • 8个数码管整体显示自己学号前4位+后4位

(4)完成源程序编译和动态调试,实现实验7的控制功能要求。

(5)完成实验7报告的撰写。提交实验报告并包括如下内容:实验步骤,含电路原理图及其分析,74HC595原理阐述,C51源程序(含注释语句);记录与处理(仿真运行截图),实验小结。

(6)C51源程序源代码压缩后以附件形式提交。


三、实验步骤

 

    

  

(1)创建一个包含80C51固件,且采用Keil for 8051编译器的新项目。

(2)按照图示完成实验的电路图绘制。

(3)编写C51源程序,要求实现如下功能:

  • 8个数码管的所有笔段整体全亮1秒(以便检查有无缺画);
  • 按照从左至右的顺序以0.5秒间隔逐位显示数字7,6,5,4,3,2,1,0;
  • 8个数码管整体显示自己学号前4位+后4位。即2250+0184

根据实验要求我们可以编写出以下代码:

sbit SH_CP=P2^0;	// 模拟SH_CP信号输出端
sbit DS=P2^1; 		//模拟DS数据输入端
sbit ST_CP=P2^2; 	//模拟SH_CP信号输出端void Delayms(unsigned int t){	//延时约1毫秒函数:unsigned int x,y;for(x=t;x>0;x--)for(y=120;y>0;y--);	
}void DisplayChar(unsigned char segmd,unsigned char bitd ){ //数码管段码和数码管位码unsigned char i,j;unsigned int dat;dat=bitd;dat=dat<<8|segmd; 	for(i=0;i<16;i++){	SH_CP = 0;		DS=(dat & 0x8000)?1:0; 	SH_CP=1;   		for(j=0; j<2; j++);	dat<<=1;   		}ST_CP=0; 		ST_CP=1;  		}void main(void){unsigned char j;DisplayChar(0xff,0x00);	//数码管全亮Delayms(1000);			//延时2秒for(j=0;j<8;j++) {		DisplayChar(segmcode[7-j],bitcode[j]);Delayms(500);}  	while(1){unsigned char school_number[] = {2, 2, 5, 0, 0, 1, 8, 4}; // 存储学号数字  for(j=0; j<8; j++){  DisplayChar(segmcode[school_number[j]], bitcode[j]); // 取出段码和位码由595输出  // 这里不需要延时,因为我们要整体显示学号  }  }
}

(4)完成源程序编译和动态调试,实现实验7的控制功能要求。

  • 8个数码管的所有笔段整体全亮1秒(以便检查有无缺画);

  • 按照从左至右的顺序以0.5秒间隔逐位显示数字7,6,5,4,3,2,1,0;

  • 8个数码管整体显示自己学号前4位+后4位。即2250+0184


四、记录与处理

 

  • 8个数码管的所有笔段整体全亮1秒(以便检查有无缺画);

  • 按照从左至右的顺序以0.5秒间隔逐位显示数字7,6,5,4,3,2,1,0;

  • 8个数码管整体显示自己学号前4位+后4位。即2250+0184


五、思考

 

1.74HC595是一款高性能、低功耗的CMOS技术芯片,具有8位串行输入、8位并行输出的移位寄存器,以及一个8位的数据存储寄存器。以下是其原理的详细介绍:

串行输入:在SH_CP(移位寄存器时钟)的上升沿,串行数据从DS(串行数据输入端)输入到内部的8位移位寄存器,并在Q7'(级联输出端)输出。

并行输出控制:当OE(输出使能控制端)为低电平时,并行输出端的输出值等于存储寄存器中的值。这使得74HC595可以直接驱动数码管或其它显示设备。

锁存功能:ST_CP(输出存储器锁存时钟线)的上升沿将移位寄存器中的数据锁存到存储寄存器中,从而实现数据的稳定输出。这个特性使得74HC595非常适合动态显示控制。

复位与清除:/MR(主复位端)可以实现对移位寄存器的异步清零,这通常连接到VCC以防止意外的数据清除。

级联使用:通过将Q7'连接到下一个74HC595的DS端,可以实现多个芯片的级联,以控制更多的输出。这种配置可以扩展I/O端口,适用于需要大量输出的应用场合。

输出能力:74HC595具备较强的输出能力,可以驱动多种类型的负载,如LED数码管等。同时,其100MHz的移位频率使得数据传输更加高效。

74HC595通过其独特的串入并出结构,为微控制器系统提供了一个节省I/O端口、高效率和灵活控制的方案。它广泛应用于数码管驱动、LED点阵控制、继电器控制等多种场景,是实现多路输出控制的理想选择。

2.在本次实验中,我深入学习并实践了如何使用51单片机控制多个LED数码管的显示。通过编写程序,我掌握了对数码管动态显示的控制技巧,以及如何利用74HC595移位寄存器芯片来减少对单片机I/O端口的使用。

3.实验过程中,我首先实现了8个数码管的所有笔段整体全亮1秒的功能,这有助于检查数码管是否存在缺画问题。随后,按照从左至右的顺序逐位显示数字7至0,每个数字显示间隔为0.5秒。这个步骤让我理解了如何通过循环和延时函数来控制显示顺序和时间间隔。

4.最后,我尝试将我的学号“2250+0184”分两次显示在8个数码管上。这个环节考验了我对数码管编码和位控制的理解,同时也加深了我对数组、循环等编程基础概念的应用能力。

5.在实验中,我也遇到了一些问题,通过查阅资料和多次调试,我逐渐弄清楚了其工作机制,并成功修正了程序。此外对延时函数的准确性也进行了反复验证,确保每个显示状态能够准确停留预设的时间。


六、成果文件提取链接

链接:https://pan.baidu.com/s/1vih-osSS5LE-I0vk-Imugg?pwd=ugmx 
提取码:ugmx  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/52993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络】WebSocket协议详解

WebSocket协议详解 一 、WebSocket 诞生背景二、WebSocket 特点三、WebSocket 的握手环节四、WebSokect 的数据格式1、 第一个字节2、第二个字节3、Masking-key4、playload Data5、一些注意细节 WebSocket 的官方文档 WebSocket 的中文文档(非官方) 一 、WebSocket 诞生背景 在…

进阶SpringBoot之 Shiro(2)环境搭建

Spring Boot 创建 Web 项目&#xff0c;pom.xml 导入 Thymeleaf 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency> resources 目录下 templates 包新…

tomcat 相关

使用内置JDK jdk免配置环境变量&#xff0c;内置tomcat里面启动_64位自带1.8jdk tomcat,无需配置环境变量直接启动-CSDN博客 乱码&#xff1a; 打开tomcat文件下的conf文件&#xff0c;打开logging.properties文件&#xff1b; 然后java.util.logging.ConsoleHandler.encod…

WiFi标签注册(电脑版)

安装WiFi-Tool工具 需要windows系统电脑并且有WiFi功能 下载软件安装包&#xff1a;http://a.picksmart.cn:8088/picksmart/app/WiFi-Tool-Setup-V1.0.37.zip 配置操作流程 登录WiFi标签管理系统到设备管理-产品管理&#xff0c;复制“产品ApiKey”参数&#xff0c;打开“WiFi-…

ip地址变化是什么意思?手机地址ip一直变化怎么办

IP地址作为互联网设备的唯一标识&#xff0c;‌其稳定性对于网络连接至关重要。‌然而&#xff0c;‌手机IP地址频繁变动可能带来一系列问题。‌本文将深入探讨IP地址变化的含义、‌IP地址频繁变动的原因&#xff0c;‌以及提供手机地址IP一直变化的有效应对策略。‌ 一、IP地址…

当AI遇上制药:加速跑向未来的快车道,还是布满荆棘的征途?

01 在全球科技领域&#xff0c;AI的崛起无疑掀起了一场变革的风暴&#xff0c;其影响力已渗透至各行各业&#xff0c;促使各领域积极寻求与AI技术的深度融合&#xff0c;以提升效率、创新产品及优化服务。在医疗健康领域&#xff0c;AI与制药的结合自2007年起航&#xff0c;历…

计网_整体概念逻辑简单过一遍

1. 简述四层TCP/IP 网络模型 由于 OSI 模型实在太复杂&#xff0c;提出的也只是概念理论上的分层&#xff0c;并没有提供具体的实现方案。 事实上&#xff0c;我们比较常见&#xff0c;也比较实用的是四层模型&#xff0c;即 TCP/IP 网络模型&#xff0c; 1.1 应用层 在四…

WPF ToolkitMVVM IOC IServiceConllection

用微软自带的 IOC 需要安装 using Microsoft.Extensions.DependencyInjection; using System.Configuration; using System.Data; using System.Windows;namespace WpfApp3 {/// <summary>/// Interaction logic for App.xaml/// </summary>public partial class…

EXO:StandardNode _process_tensor

目录 EXO:StandardNode _process_tensor EXO:StandardNode _process_tensor 这段代码是在处理某种分片(sharding)逻辑时使用的,特别是在处理大型模型或数据处理任务时,这些任务被分割成多个较小的部分(即分片)来并行处理。这里,代码片段关注于根据特定的调试级别(DEBU…

Windows系统安装MySQL

下载MySQL 打开网址MySQL :: Download MySQL Community Server点击图下所示位置Download 进入图下所示界面&#xff0c;点击图下所示位置不登录下载 已下载完成 安装MySQL 将下载好的压缩包解压到一个专门的位置&#xff0c;该软件为绿色版软件&#xff0c;解压即可使用 配置…

若依,前后端分离项目,部署到服务器

1.后端项目用maven打包 正式服的话&#xff0c;测试不用加。 application.yml加上context-path: /prod-api 一定要选择root的ruoyi&#xff0c;他会把你自动打包其他模块的依赖 全部成功。然后去ruoyi-admin拿到这个包&#xff0c;java -jar ruoyi-admin.jar就可以了 将jar上…

VM ware虚拟机下载安装教程

1.安装包下载 目前VM ware官网无法直接下载虚拟机安装包&#xff0c;需要跳转到Broadcom&#xff08;点击此处&#xff09;官网进行下载 点击链接自动进入登录界面&#xff0c;没有注册过可以通过邮箱进行注册&#xff0c;接下来将为您介绍注册流程。 Username即注册邮箱&…

Mac/Linux系统matplotlib中文支持问题

背景 matplotlib是python中最常用的数据可视化分析工具&#xff0c;Mac和Linux系统无中文字体&#xff0c;不支持中文显示&#xff08;希望后续可以改进&#xff09;&#xff0c;需要进行字体的下载和设置才能解决。笔者经过实践&#xff0c;发现Mac系统和Linux系统解决方案略…

raw.githubusercontent.com未能解析” 解决方案

1.操作场景 通过windows11 powershell 下载依赖包 2.报错信息如下 irm : 未能解析此远程名称: raw.githubusercontent.com 所在位置 行:1 字符: 27 & ([scriptblock]::Create((irm "https://win11debloat.raphi.re/"))) ~~~~~~~~~…

SpringBoot SSM vue在线作业考试系统

SpringBoot SSM vue在线作业考试系统 首页 图片轮播 作业信息 通知公告 登录注册 留言板 个人中心 我的收藏 后台管理 登录注册 个人中心 教师信息管理 学生信息管理 学院信息管理 专业信息管理 班级信息管理 作业信息管理 作业提交管理 通知公告管理 试卷管理 试题管理 系统…

【C++ 第十八章】C++11 新增语法(4)

前情回顾&#xff1a; 【C11 新增语法&#xff08;1&#xff09;&#xff1a;1~6 点】 C11出现与历史、花括号统一初始化、initializer_list初始化列表、 auto、decltype、nullptr、STL的一些新变化 【C11 新增语法&#xff08;2&#xff09;&#xff1a;7~8 点】 右值引用和…

基于ASO-BP原子探索优化BP神经网络实现数据预测Python实现

本文提出了一种基于ASO算法优化BP神经网络的数据预测方法。通过ASO算法对BP神经网络的权值和阈值进行优化&#xff0c;克服了BP神经网络易陷入局部最优解和对初始权值敏感的缺点。实验结果表明&#xff0c;优化后的BP神经网络在预测精度上得到了显著提升&#xff0c;为数据预测…

Java 入门指南:Java 并发编程 —— 线程安全问题与锁机制

线程安全的概念 线程安全可以简单理解为在多线程环境下&#xff0c;一个方法或实例在并发执行时能够保持数据的一致性和完整性&#xff0c;不会因为多个线程的交替执行而导致错误的结果。 线程不安全的原因 线程不安全通常由以下几个原因引起&#xff1a; 原子性问题&#x…

ncnn之yolov5(7.0版本)目标检测pnnx部署

一、pnxx介绍与使用 pnnx安装与使用参考&#xff1a; https://github.com/pnnx/pnnxhttps://github.com/Tencent/ncnn/wiki/use-ncnn-with-pytorch-or-onnxhttps://github.com/Tencent/ncnn/tree/master/tools/pnnx 支持python的首选pip&#xff0c;否则就源码编译。 pip3 …

Leetcode面试经典150题-36-有效数独升级版-37.解数独

解法都在代码里&#xff0c;不懂就留言或者私信&#xff0c;比第一题稍微难点 public static void solveSudoku(char[][] board) {/**定义三个二维数组分别代表行、列、桶&#xff08;每9个格子&#xff09;*/boolean[][] rowExists new boolean[9][10];boolean[][] colExist…