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的晶振下延时1us
    while(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_2

sbit 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~9

  unsigned 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.mfbz.cn/a/875290.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CentOS镜像源更新

如果 CentOS 7.9 的官方镜像源已不维护&#xff0c;你可以使用以下方法更新&#xff1a; 切换到其他镜像源&#xff1a;使用 CentOS 镜像站点或第三方镜像源&#xff0c;如 EPEL&#xff08;Extra Packages for Enterprise Linux&#xff09;。修改 /etc/yum.repos.d/CentOS-Ba…

电商API接口安全:构建稳固的数字防线

电子商务的蓬勃发展带来了前所未有的便利&#xff0c;同时也带来了新的安全挑战。API接口作为电商系统的核心组件&#xff0c;其安全性直接关系到企业的数据安全和业务连续性。因此&#xff0c;评估和加固电商API接口的安全性变得尤为重要。 电商API接口安全的重要性 电商API接…

Android生成Java AIDL

AIDL:Android Interface Definition Language AIDL是为了实现进程间通信而设计的Android接口语言 Android进程间通信有多种方式&#xff0c;Binder机制是其中最常见的一种 AIDL的本质就是基于对Binder的运用从而实现进程间通信 这篇博文从实战出发&#xff0c;用一个尽可能…

《深入浅出AI》前言知识:机器学习知识总结

&#x1f468;‍&#x1f4bb;面向对象&#xff1a; 本篇前言知识主要介绍机器学习&#xff0c;方便小白或AI爱好者学习基础知识。 &#x1f49a;友情提醒&#xff1a; 本文内容可能未能含概机器学习所有知识点&#xff0c;其他内容可以访问本人主页其他文章或个人博客&#xf…

【devops】devops-git之介绍以及日常使用

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

SealSuite 一站式 IT 管理与办公安全解决方案,助力出海企业夯实数字化底座

数字化办公时代&#xff0c;企业升级 IT 基础设施&#xff0c;已不再是选择题&#xff0c;而是必答题。 数字化办公时代&#xff0c;企业为何要升级 IT 基础设施&#xff1f; 随着时代变化与科技进步&#xff0c;人们的工作方式也发生了巨大变化。如今&#xff0c;远程办公、全…

算法导论 总结索引 | 第五部分 第二十四章:单源最短路径

1、在最短路径问题中&#xff0c;给定一个带权重的有向图 G (V, E) 和权重函数 w: E→R &#xff0c;该权重函数 将每条边映射到实数值的权重上。图中一条路径 p 〈v0, v1, …, vk〉 的权重 w(p) 是构成该路径的 所有边的权重之和&#xff1a; 定义从结点 u 到结点 v 的最短路…

电压跟随器的作用是什么?

电压跟随器&#xff08;也称为单位增益放大器、缓冲放大器和隔离放大器&#xff09;是一种电压增益为 1 的运算放大器电路。这意味着运算放大器不会对信号进行任何放大。 之所以称为电压跟随器&#xff0c;是因为输出电压直接跟随输入电压&#xff0c;即输出电压与输入电压相同…

测试工程师学历路径:从功能测试到测试开发

现在软件从业者越来越多&#xff0c;测试工程师的职位也几近饱和&#xff0c;想要获得竞争力还是要保持持续学习。基本学习路径可以从功能测试-自动化测试-测试开发工程师的路子来走。 功能测试工程师&#xff1a; 1、软件测试基本概念&#xff1a; 学习软件测试的定义、目的…

产品探秘|开物——面向AI原生和云原生网络研究的首选科研平台

在当今高速发展的信息技术领域&#xff0c;特别是对于那些致力于前沿科技探索与实践的高校而言&#xff0c;拥有一款能够支持复杂网络业务研究与开发的平台至关重要。开物™数据网络开发平台&#xff08;Data Network Development Platform&#xff0c;简称DNDP&#xff09;&am…

Marin说PCB之在CST软件中如何搭建两端子电容器--03

上期文章的结尾讲到的问题不知诸位大神们是否还记得&#xff1a;就是一颗新电容器的物料是否可以完全替换掉之前的Murata家的这个GRT033D70E105ME18物料&#xff1f; 小编我也看了私信有不少的人认为是可以替换掉的&#xff0c;原因是两个电容封装&#xff0c;容值都是一样的&a…

停止向供应商提供您的数据

组织管理其数据基础设施的方式正在发生重大转变。越来越多的公司认识到存储和计算分离的优势&#xff0c;从而获得更好的性能、成本节约和可扩展性。这一趋势是由 AI 和 ML 工作负载日益复杂所推动的&#xff0c;这些工作负载需要灵活、高性能的系统。Databricks 首席执行官 Al…

Java短信验证码

想利用java给用户发送短信的话&#xff0c;需要我们与电信、移动、联通三大巨头合作&#xff08;其实还有广电&#xff0c;但是比较少用&#xff09;&#xff0c;让它帮你发信息&#xff0c;当然直接与它合作显然是不现实的&#xff0c;所以我们要借助第三方的短信平台来替我们…

el-tree父子不互相关联时,手动实现全选、反选、子级全选、清空功能

el-tree父子不互相关联时&#xff0c;手动实现全选、反选、子级全选、清空功能 1、功能实现图示 2、实现思路 当属性check-strictly为true时&#xff0c;父子节点不互相关联&#xff0c;如果需要全部选中或选择某一节点下的全部节点就必须手动选择每个节点&#xff0c;十分麻…

什么是科技与艺术相结合的异形创意圆形(饼/盘)LED显示屏

在当今数字化与创意并重的时代&#xff0c;科技与艺术的融合已成为推动社会进步与文化创新的重要力量。其中&#xff0c;晶锐创显异形创意圆形LED显示屏作为这一趋势下的杰出代表&#xff0c;不仅打破了传统显示设备的形态束缚&#xff0c;更以其独特的造型、卓越的显示效果和广…

使用AI赋能进行软件测试-文心一言

1.AI赋能的作用 提高速度和效率缺陷预测与分析 2.AI互动指令格式--文心一言 角色、指示、上下文例子、输入、输出 a 直接问AI 针对以下需求&#xff0c;设计测试用例。 需求&#xff1a; 1、账号密码登录系统验证账号和密码的正确性。 验证通过,用户登录成功,进入个人中心;验…

无刷直流电动机的匝间绝缘测试优化

近年来&#xff0c;随着消费者对高效、快速干发需求的增加&#xff0c;高速电吹风逐渐成为市场的宠儿。高速电吹风的关键技术之一便是无刷直流电动机&#xff0c;其转速可以高达100,000转/分钟以上&#xff0c;电压为DC310V。相比传统电吹风&#xff0c;高速电吹风在效率和用户…

Prometheus 监控平台(Prometheus Monitoring Platform)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

灰光模块,彩光模块-介绍

1. 引用 知识分享系列一&#xff1a;5G基础知识-CSDN博客 5G前传的最新进展-CSDN博客 灰光和彩光_通信行业5G招标系列点评之二&#xff1a;一文读懂5G前传-光纤、灰光、彩光、CWDM、LWDM、MWDM...-CSDN博客 ADOP带你了解&#xff1a;CWDM、DWDM、MWDM、LWDM&#xff1a;快速…

ffmpeg实现视频的合成与分割

视频合成与分割程序使用 作者开发了一款软件&#xff0c;可以实现对视频的合成和分割&#xff0c;界面如下&#xff1a; 播放时&#xff0c;可以选择多个视频源&#xff1b;在选中“保存视频”情况下&#xff0c;会将多个视频源合成一个视频。如果只取一个视频源中一段视频…