51单片机+proteus仿真+基本实验学习1(跑马灯、独立按键和数码管)

目录

1.实验一跑马灯

1.1代码的生成

1.1.151单片机的延时函数的生成

1.1.251单片机的流水灯代码编写

1.2仿真框图

 2.实验二I/O独立按键

2.1基本概念

2.1.1按键所需的基本知识

2.2代码的生成

2.2.1头文件定义的代码

2.2.2 执行代码

2.3仿真图

​3实验三数码管

3.1基本概念

3.1.1 数码管的简介

 3.1.2 数码管的显示方式

3.2代码生成

3.2.1静态数码管的代码

3.3proteus仿真

3.3.1数码管器件

 3.3.2总体框图


1.实验一跑马灯

1.1代码的生成

1.1.151单片机的延时函数的生成
  • nop函数作用:对于延时很短的,要求在us级的,采用“nop”函数,这个函数相当汇编NOP指令延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时
    1uS。对于延时比较长的,要求在大于10uS,采用C51中的循环语句来实现
  • 左移和右移:

(1)逻辑右移:高位补0,低位溢。注:无论是有符号数还是无符号数都是高位补0,低位溢出

         算数右移:对无符号数来说,高位补0,低位溢出。对有符号数来说,高位补符号位,低位溢出

(2)左移:高位溢出,低位补零

/*** @brief 在stc-isp中生成的1ms函数在进行xms循环的后即可以实现自定义的毫秒参数定义* @param xms:传送要延迟多少毫秒的参数* @retval 无*/
void Delay_ms(unsigned int xms)		//@12.000MHz
{unsigned char i, j; _nop_();        //相当于一条空语句,在12MHz的晶振下延时1uswhile(xms){i = 12;j = 169;do{while (--j);} while (--i);xms--;}
}
1.1.251单片机的流水灯代码编写
  • 流水灯简单来所就是灯的不停交换的闪烁
/*方案1*/
unsigned char i;while(1){for(i=0;i<8;i++){/*将低位为低电平时,为点亮LED灯*/P2=~(0x01<<i);       //循环递增右移Delay_ms(100);       //100ms的延时}}/*方案2*/
P2=~(0x01<<0);        //相当于0xFE,向左移动0位,再取反
Delay_ms(100);        //100ms的延时
P2=~(0x01<<1);        //相当于0xFD,向左移动1位,再取反
Delay_ms(100);        //100ms的延时
P2=~(0x01<<2);        //相当于0xFB,向左移动2位,再取反
Delay_ms(100);        //100ms的延时
P2=~(0x01<<3);        //相当于0xF8,向右移动3位,再取反
Delay_ms(100);        //100ms的延时
P2=~(0x01<<4);        //相当于0xEF,向左移动4位,再取反
Delay_ms(100);        //100ms的延时
P2=~(0x01<<5);        //相当于0xDF,向左移动5位,再取反
Delay_ms(100);        //100ms的延时
P2=~(0x01<<6);        //相当于0xBF,向左移动6位,再取反
Delay_ms(100);        //100ms的延时
P2=~(0x01<<7);        //相当于0x8F,向左移动7位,再取反
Delay_ms(100);        //100ms的延时

1.2仿真框图

 2.实验二I/O独立按键

2.1基本概念

2.1.1按键所需的基本知识
  • 独立式键盘:每个键占用一根并口线,键位多时占用并口线多。
  • sbit关键字:sbit关键字用于定义特殊功能寄存器(SFR)中的位。SFR是一种特殊的寄存器,用于控制单片机的输入输出引脚、定时器、串行通信等特殊功能。通过sbit,可以将SFR中的某一位与一个符号名关联起来,从而方便地对其进行操作
  • 按键消抖:按键按下时,由于一端接地,会使按键接IO端变成低电平,相反,当按键被松开时,由于按键接IO端与接地端断开,会变成高电平。值得注意的是,按键是有一定弹性的,按键在按下时,按键接IO端变成低电平需要时间,这段时间按键会发生前沿抖动,同理,松开按键,按键接IO端变成高电平也需要一段时间,这段时间按键会发生后沿抖动,整个抖动需要5ms-10ms时间
  • 软件消抖使用延时函数就是消除按下和松开时的那不稳定的高低电平时间

  • 拨码开关(非常完美)

https://blog.csdn.net/cupid3516501/article/details/121291146

2.2代码的生成

2.2.1头文件定义的代码
#include "intrins.h" 
#include <REGX52.H>  //使用该头文件才能直接控制引脚的某位,例:使用P1_2sbit key1=P1^7;//将P1的第7位引脚定义成key1变量,相当于P1^7=P1_7
sbit LED=P1^2; //将P1的第2位引脚定义成LED变量,相当于P1^2=P1_2
2.2.2 执行代码
//方案1:对立按键执行代码
if(key1==0) 
{Delay_ms(10);  //改延时进行了两次的去抖,即抬起和按下if(key1==0){LED=~LED;      //按键取反,实现翻转while(key1==0); //等待按键抬起,防止执行多次LED幅值操作}
}   方案2:使用拨码开关
unsigned char i;while(1){i=P3;  //P3为全部的8位,对应拨码的8个开关P2=i;  //将i的值赋值给P2来控制P2引脚上的LED灯}

2.3仿真图

3实验三数码管

3.1基本概念

3.1.1 数码管的简介
  • LED数码(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。
  • 单位数码管的引脚有10个,内部一共有8个小的发光二级管,还有2个引脚是公共端,其实只有一个公共端,但是生产厂家为了封装统一,把这2个引脚连接在了一起。
  • STC89C52开发板上所用的是2个四位的数码管,在其内部公共端是独立的,独立的公共端可以用来控制哪一位数码管点亮,段线是连接在一起的,用来负责显示什么数字,我们常常把公共端叫做”位选线“,连接在一起的线叫做”段选线
  • 位选控制哪一个数码管亮
  • 段选控制数码管显示的内容
  • 按内部发光二极管单元的连接方式分:分为共阳极和共阴极

(1)共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。

(2)共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮

 3.1.2 数码管的显示方式
  • 静态驱动:也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

​​​​​

  • 动态驱动:是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动   

  

(1)所有数码管的段选线与一组VO接口线并连在一起。
(2)每个数码管的公共端由一根/O线控制。
(3)显示为逐个显示。

3.2代码生成

3.2.1静态数码管的代码
/*1.静态数码管显示*/
unsigned char num[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//由静态阴极数码管表显示数字0~9unsigned char i;while(1){for(i=0;i<10;i++){P2=num[i];     //数组赋值给P2显示Delay_ms(100); //延时100ms}}
/*2.动态数码管显示*/

3.3proteus仿真

3.3.1数码管器件

  • 7SEG-MPX8-CC是共阴极数码管显示器。显示器的A、B、C、D、E、F、G、DP是数码管显示器的I/O口,是段选信号;显示器的1、2、3、4、5、6、7、8是它的位选信号,即从左到右8位显示字符。段码线控制显示的字型,低电平为有效位表示选中的数码管显示数据,位选线控制该显示位的亮或暗。
  • 7seg-mpx8-ca是共阳极数码管,

 3.3.2总体框图

 

优秀的博客嵌入式硬件入门——74HC138译码器(三个IO实现8选1)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_43772810/article/details/120775594

单片机时钟周期、状态周期、机器周期、指令周期的理解-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_42238876/article/details/89528728

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

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

相关文章

基于Verilog HDL的FPGA设计基础

第一章 Verilog数字集成电路设计方法概述 HDL(Hardware Description Language)----硬件描述语言 EDA(Electronic Design Automation)----电子设计自动化 VLSI(Very Large Scale Integrated)----超大规模集成电路 ASIC(Application Specific Integrated Circuit)----专用集成电路…

Unity射击游戏开发教程:(35)轰炸敌人

现在敌人和飞机已经慢慢地越来越有各自地地行为了,在本文中,我们将介绍如何创建一个具有以下行为的敌人: 飞机会来回弹跳。飞机将有 4 架无人机轰炸机围绕飞机旋转。无人机轰炸机会偶尔投下沿着屏幕传播的炸弹。如果炸弹击中玩家或在随机时间后就会爆炸。如果炸弹没有击中玩…

macOS上谷歌浏览器的十大隐藏功能

谷歌浏览器&#xff08;Google Chrome&#xff09;在macOS上拥有一系列强大而隐蔽的特性&#xff0c;这些功能能显著提高您的浏览体验。从多设备同步到提升安全性和效率&#xff0c;这些被低估的功能等待着被发掘。我们将逐步探索这些功能&#xff0c;帮助您最大化利用谷歌浏览…

数据分析-螺旋环状气泡图

1 原理 采用阿基米德螺线原理&#xff0c;即以一个点匀速离开一个固定点的同时又以固定的角速度绕该固定点转动而产生的轨迹。具体原理见&#xff1a;阿基米德螺线。坐标轴公式为&#xff1a; 其中x为横坐标&#xff0c;y为纵坐标&#xff0c;r为离中心点的半径&#xff0c;为坐…

CSS之我不会

非常推荐html-css学习视频&#xff1a;尚硅谷html-css 一、选择器 作用&#xff1a;选择页面上的某一个后者某一类元素 基本选择器 1.标签选择器 格式&#xff1a;标签{} <h1>666</h1><style>h1{css语法} </style>2.类选择器 格式&#xff1a;.类…

PFC理论基础与Matlab仿真模型学习笔记(1)--PFC电路概述

一、整流器滤波电路简介 整流器滤波电路的主要功能是将交流电&#xff08;AC&#xff09;转换为直流电&#xff08;DC&#xff09;&#xff0c;并通过滤波器减少波动以输出稳定的直流电。其工作原理主要分为两个部分&#xff1a; 1.整流部分 整流器的核心器件是二极管&#…

JDBC API详解一

DriverManager 驱动管理类&#xff0c;作用&#xff1a;1&#xff0c;注册驱动&#xff1b;2&#xff0c;获取数据库连接 1&#xff0c;注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); 查看Driver类源码 static{try{DriverManager.registerDriver(newDrive…

基于SpringBoot的扶贫助农管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于JavaSpringBootVueMySQL的扶贫助农管理系统【附源码文档…

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中&#xff0c;不同电脑的配置和操作系统&#xff08;如Win11与Win7&#xff09;可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行&#xff0c;需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下&a…

RB-SQL:利用检索LLM框架处理大型数据库和复杂多表查询的NL2SQL

NL2SQL的任务是将自然语言问题转换为SQL查询&#xff0c;以便从数据库中获取答案。现有LLM来指导SQL生成的方法在处理大型数据库和复杂多表查询时存在挑战&#xff0c;尤其是在处理冗余信息和提高提示工程效率方面。 (a) 利用大型语言模型&#xff08;LLM&#xff09;解决文本…

AI基础 L19 Quantifying Uncertainty and Reasoning with Probabilities I 量化不确定性和概率推理

Acting Under Uncertainty 1 Reasoning Under Uncertainty • Real world problems contain uncertainties due to: — partial observability, — nondeterminism, or — adversaries. • Example of dental diagnosis using propositional logic T oothache ⇒ C av ity • H…

Flutter Button使用

Material 组件库中有多种按钮组件如ElevatedButton、TextButton、OutlineButton等&#xff0c;它们的父类是于ButtonStyleButton。 基本的按钮特点&#xff1a; 1.按下时都会有“水波文动画”。 2.onPressed属性设置点击回调&#xff0c;如果不提供该回调则按钮会处于禁…

Java | Leetcode Java题解之第401题二进制手表

题目&#xff1a; 题解&#xff1a; class Solution {public List<String> readBinaryWatch(int turnedOn) {List<String> ans new ArrayList<String>();for (int i 0; i < 1024; i) {int h i >> 6, m i & 63; // 用位运算取出高 4 位和低…

brew install node提示:Error: No such keg: /usr/local/Cellar/node

打开本地文件发现Cellar目录下无法生成 node文件&#xff0c;应该是下载时出现问题&#xff0c;重复下载无法解决问题&#xff0c;只能重新安装brew。 步骤1&#xff08;安装 brew&#xff09;&#xff1a; /bin/zsh -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/ra…

Android 12系统源码_窗口管理(八)WindowConfiguration的作用

前言 在Android系统中WindowConfiguration这个类用于管理与窗口相关的设置&#xff0c;该类存储了当前窗口的显示区域、屏幕的旋转方向、窗口模式等参数&#xff0c;应用程序通过该类提供的信息可以更好的适配不同的屏幕布局和窗口环境&#xff0c;以提高用户体验。 一、类定…

如何基于gpt模型抢先打造成功的产品

来自&#xff1a;Python大数据分析 费弗里 ChatGPT、gpt3.5以及gpt4&#xff0c;已然成为当下现代社会中几乎人尽皆知的话题&#xff0c;而当此种现象级产品引爆全网&#xff0c;极大程度上吸引大众注意力的同时&#xff0c;有一些嗅觉灵敏的人及时抓住了机会&#xff0c;通过快…

SpringBoot2:web开发常用功能实现及原理解析-上传与下载

文章目录 一、上传文件1、前端上传文件给Java接口2、Java接口上传文件给Java接口 二、下载文件1、前端从Java接口下载文件2、Java接口调用Java接口下载文件 一、上传文件 1、前端上传文件给Java接口 Controller接口 此接口支持上传单个文件和多个文件&#xff0c;并保存在本地…

伙房食堂电气安全新挑战:油烟潮湿环境下,如何筑起电气火灾“防火墙”?

近几年&#xff0c;随着我国经济的飞速发展&#xff0c;食堂餐饮也经历了一场变革&#xff0c;越来越多的电器走进了伙房食堂中&#xff0c;实现了电气化&#xff0c;为人们提供了高效便利的饮食服务&#xff0c;但同时也增加了火灾负荷。目前我国非常严重的电气火灾危害&#…

IBM中国研发中心撤出:挑战与机遇并存

IBM中国研发中心撤出&#xff1a;挑战与机遇并存 引言 近日&#xff0c;IBM宣布撤出在中国的两大研发中心的消息&#xff0c;引起了广泛关注。这一举动不仅对IBM自身的全球布局产生了影响&#xff0c;也在一定程度上反映了跨国公司在中国市场策略的调整。本文将探讨这一事件背…

服务器重装Ubuntu20.04(desktop)

引言 实验室服务器因为删除了一些底层文件导致系统无法恢复&#xff08;还好没有数据有备份&#xff09;&#xff0c;所以在此告诫广大朋友&#xff0c;有一些底层文件不要说删就删。好的&#xff0c;接下来我们开始重装系统。 准备工作 准备好重装系统的材料如下&#xff1…