单片机实验(一)

前言

实验一:用单片机控制多只数码管(屏)分别左、右滚动显示自己完整的学号;
实验二:用单片机控制LED16×16点阵交替正序、逆序显示自己的中文姓名。

参考链接:

LED数码管的静态显示与动态显示(Keil+Proteus)-CSDN博客

LED点阵显示原理(取字模软件+Keil+Proteus)-CSDN博客

C51单片机笔记(动态数码管与8*8点阵) - 知乎 (zhihu.com)

实验一

keil

我不知道这个是不是我理解的那个意思,如果不需要实现同时点亮八个数码管的话(不知道能不能实现),就是每次点亮一个的话,这个滚动就只需要修改循环和增加数组里面的元素即可。

只需要修改keil,不需要修改proteus的原理图。

原理:P0口根据共阳极的码来确定输出什么数字,P2来确定在哪一个地方输出,可以用到移位函数方便一点。

左移滚动

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned intuchar code dis_code[]={0xA4,0xC0,0xA4,0xF9,0x99,0xC0,0xA4,0xC0,0xC0,0xF9,0xA4,0x82};//202140200126(共阳极段码表)//延时
void delay(uint t){uchar i;while(t--)for(i=0;i<200;i++);
}void main(){uchar i,j=0x01;while(1){for(i=0;i<12;i++){j=_cror_(j,1);//循环移位函数,将j循环右移1位P0=dis_code[i];//P0口输出段码P2=j;//P2口输出位控码delay(123);//延时P0=0x00;}}
}

 右移滚动

下面两种都可以,前者就是修改了最开始输出的位置j和移位函数,后者将输出反过来,将数组反过来了,总之前者更加简便一点。

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned intuchar code dis_code[]={0xA4,0xC0,0xA4,0xF9,0x99,0xC0,0xA4,0xC0,0xC0,0xF9,0xA4,0x82};//202140200126(共阳极段码表)//延时
void delay(uint t){uchar i;while(t--)for(i=0;i<200;i++);
}void main(){uchar i,j=0x01;while(1){for(i=0;i<12;i++){j=_cror_(j,1);//循环移位函数,将j循环右移1位P0=dis_code[i];//P0口输出段码P2=j;//P2口输出位控码delay(123);//延时P0=0x00;}}
}
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned intuchar code dis_code[]={0x82,0xA4,0xF9,0xC0,0xC0,0xA4,0xC0,0x99,0xF9,0xA4,0xC0,0xA4};//621002041202//延时
void delay(uint t){uchar i;while(t--)for(i=0;i<200;i++);
}void main(){uchar i,j=0x01;while(1){for(i=0;i<12;i++){j=_cror_(j,1);//循环移位函数,将j循环右移1位P0=dis_code[11-i];//P0口输出段码P2=j;//P2口输出位控码delay(123);//延时P0=0x00;}}
}

35f409fb449948e18399a4bbd6e58761.png

576678ae973a400e8d105f79d9050f54.png

实验二

keil

这个只需要修改keil的代码,不需要改Proteus中的原理图。

keil修改部分就是修改数组和循环,修改数组表示你要输出什么,修改循环表示你要输出几个字,

如果姓名一起只有两个字,就需要把循环改成四次,把数组里面的元素之前是顺序排列了一次,如今增加逆序的部分。

原理:通过P1口控制当前扫描的行,通过P0口和P2来确定当前行哪些地方需要点亮,当扫描的速度过快的时候就让人感觉是整个汉字一起打印的,所以数组里面装着就是你姓名对应的16*16点阵码。

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int 
#define out0 P0
#define out1 P1
#define out2 P2void delay(uint y) //延时函数
{uchar x=250;for(;y>0;y--){while(--x);x=100;}
}uchar code string[]=
{
/*--  文字:  刘  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x08,0x20,0x10,0x20,0x10,0x20,0xFF,0x25,0x40,0x24,0x42,0x24,0x44,0x24,0x28,0x24,
0x28,0x24,0x10,0x24,0x10,0x24,0x28,0x24,0x24,0x20,0x42,0x20,0x41,0x28,0x00,0x10,/*--  文字:  健  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x08,0x04,0x08,0x04,0x08,0x3F,0x74,0x24,0xC4,0x7F,0x46,0x24,0x26,0x3F,0x25,0x04,
0x74,0x3F,0x44,0x04,0x44,0x04,0xD4,0x7F,0x24,0x04,0x64,0x04,0x94,0x7F,0x0C,0x00,/*--  文字:  健  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x08,0x04,0x08,0x04,0x08,0x3F,0x74,0x24,0xC4,0x7F,0x46,0x24,0x26,0x3F,0x25,0x04,
0x74,0x3F,0x44,0x04,0x44,0x04,0xD4,0x7F,0x24,0x04,0x64,0x04,0x94,0x7F,0x0C,0x00,/*--  文字:  刘  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x08,0x20,0x10,0x20,0x10,0x20,0xFF,0x25,0x40,0x24,0x42,0x24,0x44,0x24,0x28,0x24,
0x28,0x24,0x10,0x24,0x10,0x24,0x28,0x24,0x24,0x20,0x42,0x20,0x41,0x28,0x00,0x10,}  ;
void main()
{	uchar i,j,n;while(1){for(j=0;j<4;j++)	//共显示4个汉字{for(n=0;n<40;n++)//每个汉字整屏扫描40次{for(i=0;i<15;i++)//逐行扫描16行{out1=i%15;//输出行码out0=string[i*2+j*32];//输出列码C0~C7out2=string[i*2+1+j*32];//输出列码C8~C15delay(4);//每一行之间的延时//out0=0xff;//out2=0xff;}}}}
}

94fd774ce3d44e2c877344fa92effc29.png 

运行结果

14b3f9f8c5814c269976bcfc5de9dddd.png

总结

继续努力

 

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

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

相关文章

RK3588平台开发系列讲解(项目篇)嵌入式AI的学习步骤

文章目录 一、嵌入式AI的学习步骤1.1、入门Linux1.2、入门AI 二、瑞芯微嵌入式AI2.1、瑞芯微的嵌入式AI关键词2.2、AI模型部署流程 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; &#x1f4e2; 本篇将给大家介绍什么是嵌入式AI。 一、嵌入…

C++二分查找算法:132 模式解法二枚举2

题目及解法一&#xff1a; https://blog.csdn.net/he_zhidan/article/details/134362273 分析 第一步&#xff0c;选择各3对应的1&#xff0c;如果有多个符合对应最小的1&#xff0c;记录num[0,j)中的最小值iMin&#xff0c;如果nums[j]大于iMin&#xff0c;则m3To1 [nums[j…

基于平衡优化器算法优化概率神经网络PNN的分类预测 - 附代码

基于平衡优化器算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于平衡优化器算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于平衡优化器优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针…

STM32与ZigBee技术在智能家居无线通信中的应用研究

一、引言 智能家居系统是利用物联网技术将家庭各种设备进行互联互通&#xff0c;实现智能化控制和管理的系统。在智能家居系统中&#xff0c;无线通信技术起着至关重要的作用&#xff0c;而STM32微控制器和ZigBee技术则是实现智能家居无线通信的关键技术。本文将对STM32与ZigB…

图像分类:弥合像素和理解之间的差距

一、介绍 在人工智能的广阔领域中&#xff0c;图像分类作为一种关键应用脱颖而出&#xff0c;它无缝地融合了计算机视觉和机器学习的复杂性。图像分类的核心是训练机器对数字图像中的对象或场景进行识别和分类。这项技术有着广泛的应用&#xff0c;从自动驾驶汽车和医疗诊断到社…

CPU vs GPU:谁更适合进行图像处理?

CPU 和 GPU 到底谁更适合进行图像处理呢&#xff1f;相信很多人在日常生活中都会接触到图像处理&#xff0c;比如修图、视频编辑等。那么&#xff0c;让我们一起来看看&#xff0c;在这方面&#xff0c;CPU 和 GPU 到底有什么不同&#xff0c;哪个更胜一筹呢&#xff1f; 一、C…

SpringCloud微服务:Ribbon负载均衡

目录 负载均衡策略&#xff1a; 负载均衡的两种方式&#xff1a; 饥饿加载 1. Ribbon负载均衡规则 规则接口是IRule 默认实现是ZoneAvoidanceRule&#xff0c;根据zone选择服务列表&#xff0c;然后轮询 2&#xff0e;负载均衡自定义方式 代码方式:配置灵活&#xff0c;但修…

自定义控件封装

上边对两个控件整合时用函数指针是因为QSpinBox::valueChange有重载版本 自定义的接口放在类外 你设计的界面可以通过提升为调用这些接口 添加qt设计师界面类

Elasticsearch的配置学习笔记

文/朱季谦 Elasticsearch是一个基于Lucene的搜索服务器。它提供一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口&#xff0c;Elasticsearch是用Java语言开发的。 关于Elasticsearch系列笔记&#xff0c;主要从Elasticsearch的配置、核心组件、架构设计、使…

第十九章绘图

Java绘图类 Graphics 类 Grapics 类是所有图形上下文的抽象基类&#xff0c;它允许应用程序在组件以及闭屏图像上进行绘制。Graphics 类封装了Java 支持的基本绘图操作所需的状态信息&#xff0c;主要包括颜色、字体、画笔、文本、图像等。 Graphics 类提供了绘图常用的…

软件开发之路——关于架构师的一些书籍

文章目录 &#x1f4cb;前言&#x1f3af;什么是架构师&#x1f525;文末送书《高并发架构实战&#xff1a;从需求分析到系统设计》《中台架构与实现&#xff1a;基于DDD和微服务》《架构师的自我修炼&#xff1a;技术、架构和未来》《分布式系统架构&#xff1a;架构策略与难题…

kubernetes--pod详解

目录 一、pod简介&#xff1a; 1. Pod基础概念&#xff1a; 2. Kubrenetes集群中Pod的两种使用方式&#xff1a; 3. pod资源中包含的容器&#xff1a; 4. pause容器的两个核心功能&#xff1a; 5. Kubernetes中使用pause容器概念的用意&#xff1a; 二、pod的分类&#xff1…

Node.js 安装配置

文章目录 安装检测Node是否可用 安装 首先我们需要从官网下载Node安装包:Node.Js中文网,下载后双击安装没有什么特殊的地方&#xff0c;安装路径默认是C盘&#xff0c;不想安装C盘的话可以选择一下其他的盘符。安装完成以后可以不用配置环境变量&#xff0c;Node安装已经自动给…

神经网络常见评价指标AUROC(AUC-ROC)、AUPR(AUC-PR)

神经网络的性能可以通过多个评价指标进行衡量&#xff0c;具体选择哪些指标取决于任务的性质。以下是神经网络中常见的评价指标&#xff1a; 准确性&#xff08;Accuracy&#xff09;&#xff1a; 准确性是最常见的分类任务评价指标&#xff0c;表示模型正确预测的样本数占总样…

面试:容器技术

目录 为什么需要 DevOpsDocker 是什么&#xff1f;Docker 与虚拟机有何不同&#xff1f;什么是 Docker 镜像&#xff1f;什么是 Docker 容器&#xff1f;Docker 容器有几种状态&#xff1f;解释一下 Dockerfile 的 ONBUILD 指令&#xff1f;什么是 Docker Swarm&#xff1f;如何…

【开源】基于Vue.js的快递管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 数据中心模块2.2 快递类型模块2.3 快递区域模块2.4 快递货架模块2.5 快递档案模块 三、界面展示3.1 登录注册3.2 快递类型3.3 快递区域3.4 快递货架3.5 快递档案3.6 系统基础模块 四、免责说明 一、摘要 1.1 项目介绍 …

P6入门:项目初始化11-项目详情之计算Calculations

前言 使用项目详细信息查看和编辑有关所选项目的详细信息&#xff0c;在项目创建完成后&#xff0c;初始化项目是一项非常重要的工作&#xff0c;涉及需要设置的内容包括项目名&#xff0c;ID,责任人&#xff0c;日历&#xff0c;预算&#xff0c;资金&#xff0c;分类码等等&…

【STM32/FreeRTOS】SysTick定时器及FreeRTOS系统节拍

目录 一、SysTick定时器 1、SysTick寄存器介绍 &#xff08;1&#xff09;控制及状态寄存器 &#xff08;2&#xff09;重装载数值寄存器 &#xff08;3&#xff09;当前数值寄存器 2、SysTick寄存器配置函数 二、FreeRTOS中的SysTick定时器 1、SysTick配置函数及分析 …

打开Outlook报错修复

打开Outlook报错修复 故障现象 打开outlook提示&#xff0c;outlook.exe --系统错误 故障截图 故障原因 原因是软连接指向错误重建即可。 解决方案 下载并运行下面批处理解决 del /F /Q "C:\Program Files\Microsoft Office\root\Office16\AppvIsvStream64.dll"…

集成Line、Facebook、Twitter、Google、微信、QQ、微博、支付宝的三方登录sdk

下载地址&#xff1a; https://github.com/anerg2046/sns_auth 安装方式建议使用composer进行安装 如果linux执行composer不方便的话&#xff0c;可以在本地新建个文件夹&#xff0c;然后执行上面的composer命令&#xff0c;把代码sdk和composer文件一起上传到项目适当位置即…