【单片机】实验:数码管显示实验

news2024/10/5 18:27:02

STC89C5xRC

#include <STC89C5xRC.H>
unsigned char value[22] ={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','P','U','T','Y','L','H'};//可显示内容
unsigned char led[22] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x73,0x3E,0x31,0x6E,0x38,0x76}; //显示内容对应字段码
unsigned char where[] = {0,1,2,3,4,5,6,7};//灯的位置

// 延时函数,delay_time是延时的毫秒数
void delay(unsigned int delay_time) {
    unsigned int i, j;
    for (i = 0; i < delay_time; i++) {
        for (j = 0; j < 1000; j++) {};
    }
}

//输入内容,获得索引
int LED_value_index(char content){
	 switch (content) {
        case '0': return 0;
        case '1': return 1;
        case '2': return 2;
        case '3': return 3;
        case '4': return 4;
        case '5': return 5;
        case '6': return 6;
        case '7': return 7;
        case '8': return 8;
        case '9': return 9;
        case 'A': return 10;
        case 'B': return 11;
        case 'C': return 12;
        case 'D': return 13;
        case 'E': return 14;
        case 'F': return 15;
        case 'P': return 16;
        case 'U': return 17;
        case 'T': return 18;
        case 'Y': return 19;
        case 'L': return 20;
		case 'H': return 21;
        default: return 0; // 如果未找到,返回0
    };
}
//根据索引,获得字段码
char LED_value_code(int index){
	return led[index];
}

//整合_实现输入内容,获得字段码
char LED_value(char content){
	return LED_value_code(LED_value_index(content));
}
//输入要显示的位置:0-7 返回位置码
char LED_where(int w){
	return where[w];
}
// 依次显示0-7
void result_light_0_to_7(){
	int i;
	for(i = 0;i<8;i++){
		P2 = led[i];//P2 控制LED显示的内容  unsigned char led[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
		P1 = where[i]	;//P1 控制要显示内容的LED的位置
		delay(10);
	}
}

void my_birth_day() {
  int dy = 1000;
	P2 = LED_value('2');
	P1 = LED_where(7);
	delay(dy);
	P2 = LED_value('0');
	P1 = LED_where(6);
	delay(dy);
	P2 = LED_value('0');
	P1 = LED_where(5);
	delay(dy);
	P2 = LED_value('1');
	P1 = LED_where(4);
	delay(dy);
	P2 = LED_value('1');
	P1 = LED_where(3);
	delay(dy);
	P2 = LED_value('0');
	P1 = LED_where(2);
	delay(dy);
	P2 = LED_value('2');
	P1 = LED_where(1);
	delay(dy);
	P2 = LED_value('4');
	P1 = LED_where(0);
	delay(dy);
	P2 = LED_value('H');
	P1 = LED_where(4);
	delay(dy);
	P2 = LED_value('A');
	P1 = LED_where(3);
	delay(dy);
	P2 = LED_value('A');
	P1 = LED_where(2);
	delay(dy);
	P2 = LED_value('P');
	P1 = LED_where(1);
	delay(dy);
	P2 = LED_value('Y');
	P1 = LED_where(0);
	delay(dy);
  }
void main() {
    while(1) {
			my_birth_day()  ;
			//result_light_0_to_7();
    }
}

相关视频:
[单片机]实验:数码管显示器使用https://www.bilibili.com/video/BV12C4y1j7vW/

[单片机]如何在实体设备上运行自己编写的代码https://www.bilibili.com/video/BV16b4y1M76t

由于实验只能在实验室进行,课后我没法进行实验,所以后文采用了仿真的方式来模拟实验。

仿真实验

原理图

image

image

代码如下

#include <REGX52.H>

//需要复制代码的话 请去 博客园(https://cnblogs.com/mllt)获取
/*

博客园:萌狼蓝天

CSDN:萌狼蓝天  (文章都是从博客园自动同步过去的,可能会存在格式问题,建议去博客园查看)

哔哩哔哩:萌狼蓝天 (视频首发平台 | 可以私信)

抖音:弃文从理萌狼蓝天 (经常不在线)

快手:萌狼蓝天 (经常不在线)

小红书:弃文从理萌狼蓝天 (经常不在线)

*/

//可以显示的字符
unsigned char value[22] ={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','P','U','T','Y','L','H'};
//可以显示的字符对应的字段码
unsigned char led[22] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x73,0x3E,0x31,0x6E,0x38,0x76}; //灯的内容
unsigned char where[] = {0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE};//灯的位置
//unsigned char where[] = {0,1,2,3,4,5,6,7};//灯的位置


// 延时函数
void delay(unsigned int delay_time) {  
    unsigned int i, j;  
    for (i = 0; i < delay_time; i++) {  
        for (j = 0; j < 1000; j++) {};  
    }  
} 


//输入内容,获得索引
int LED_value_index(char content){
	 switch (content) {  
        case '0': return 0;  
        case '1': return 1;  
        case '2': return 2;  
        case '3': return 3;  
        case '4': return 4;  
        case '5': return 5;  
        case '6': return 6;  
        case '7': return 7;  
        case '8': return 8;  
        case '9': return 9;  
        case 'A': return 10;  
        case 'B': return 11;  
        case 'C': return 12;  
        case 'D': return 13;  
        case 'E': return 14;  
        case 'F': return 15;  
        case 'P': return 16;  
        case 'U': return 17;  
        case 'T': return 18;  
        case 'Y': return 19;  
        case 'L': return 20;  
				case 'H': return 21;  
        default: return 0; // 如果未找到,返回0
    };
}
//根据索引,获得字段码
char LED_value_code(int index){
	return led[index];
}



//整合_实现输入内容,获得字段码
char LED_value(char content){
	return LED_value_code(LED_value_index(content));
}









//输入要显示的位置:0-7 返回位置码
char LED_where(int w){
	return where[w];
}





//显示数字0-7
void result_light_0_to_7(){
	int i;	
	for(i = 0;i<8;i++){
		P2 = led[i];//P2 控制LED显示的内容  
		P3 = where[i]	;//P3 控制要显示内容的LED的位置
		delay(10);  
	}
}

//每个位置都把所有字符显示一遍
void result_every_where(){
		int i,j;	 
	for(i = 0;i<8;i++){
		for(j=0;j<22;j++){
			P2 = LED_value_code(j);
			P3 = LED_where(i);
			delay(10);
	}
}
}
//指定位置显示指定内容
void my_birth_day() {
  int dy = 50;//方便调整延时
	P2 = LED_value('2');//指定内容
	P3 = LED_where(7);//指定位置
	delay(dy);//延时,太快了的话会出现显示的异常,所以不宜太快了。
	P2 = LED_value('0');
	P3 = LED_where(6);
	delay(dy);
	P2 = LED_value('0');
	P3 = LED_where(5);
	delay(dy);
	P2 = LED_value('1');
	P3 = LED_where(4);
	delay(dy);
	P2 = LED_value('1');
	P3 = LED_where(3);
	delay(dy);
	P2 = LED_value('2');
	P3 = LED_where(2);
	delay(dy);
	P2 = LED_value('0');
	P3 = LED_where(1);
	delay(dy);
	P2 = LED_value('8');
	P3 = LED_where(0);
	delay(dy);
	P2 = LED_value('H');
	P3 = LED_where(4);
	delay(dy);
	P2 = LED_value('A');
	P3 = LED_where(3);
	delay(dy);
	P2 = LED_value('P');
	P3 = LED_where(2);
	delay(dy);
	P2 = LED_value('P');
	P3 = LED_where(1);
	delay(dy);
	P2 = LED_value('Y');
	P3 = LED_where(0);
	delay(dy);
  }
void main() {  
    while(1) {
			my_birth_day()  ;
			delay(100);
			result_light_0_to_7();
			delay(100);
			result_every_where();
			delay(100);
    }  
}

[单片机]数码管显示器仿真效果展示:https://www.bilibili.com/video/BV12u411F7cL/

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

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

相关文章

万字长文 - Python 日志记录器logging 百科全书 - 高级配置之 日志分层

万字长文 - Python 日志记录器logging 百科全书 - 高级配置之 日志分层 前言 在 Python 的logging模块中&#xff0c;它不仅提供了基础的日志功能&#xff0c;还拥有一系列高级配置选项来满足复杂应用的日志管理需求。 说到logging 模块的高级配置&#xff0c;必须提及日志分…

【代码随想录】刷题笔记Day32

前言 实在不想做项目&#xff0c;周末和npy聊了就业的焦虑&#xff0c;今天多花点时间刷题&#xff01;刷刷刷刷&#xff01; 93. 复原 IP 地址 - 力扣&#xff08;LeetCode&#xff09; 分割startindex类似上一题&#xff0c;难点在于&#xff1a;判断子串合法性(0~255)、&…

C语言之sizeof 和 strlen 详细介绍

C语言之sizeof 和 strlen 文章目录 C语言之sizeof 和 strlen1. sizeof 和 strlen 的比较1.1 sizeof1.2 strlen1.3 sizeof 和 strlen 的对比 2. 练习2.1.1 一维数组2.1.2 字符数组 1. sizeof 和 strlen 的比较 1.1 sizeof sizeof是C语言中的一个关键字&#xff0c;计算的是变量…

国产高云FPGA:纯verilog实现视频图像缩放,提供6套Gowin工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐国产高云FPGA相关方案推荐国产高云FPGA基础教程 3、设计思路框架视频源选择OV5640摄像头配置及采集动态彩条跨时钟FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择 Video Frame Buffer 图像缓存DDR3 Memory Interface 4、Go…

【前端学java】语法练习-工具类的封装(13)

往期回顾&#xff1a; 【前端学java】JAVA开发的依赖安装与环境配置 &#xff08;0&#xff09;【前端学 java】java的基础语法&#xff08;1&#xff09;【前端学java】JAVA中的packge与import&#xff08;2&#xff09;【前端学java】面向对象编程基础-类的使用 &#xff08…

leetcode:504. 七进制数

一、题目&#xff1a; 链接&#xff1a; 504. 七进制数 - 力扣&#xff08;LeetCode&#xff09; 函数原型&#xff1a; char* convertToBase7(int num) 二、思路 本题要将十进制数转换为二进制数&#xff0c;只要将十进制num数模7再除7&#xff0c;直到num等于0 每次将模7的结…

国际物流社交销售玩法拆解(三):打造社交电商式分销增长

这一篇&#xff0c;是国际物流行业社交销售玩法最后一篇&#xff0c;也是国际物流企业实现业务经营新增长、打造分销增长体系的新模式。以下&#xff0c;我们一起来拆解这一模式具体内容吧。 #01 国际物流第二曲线&#xff1a;社交电商 经营增长是企业的永恒话题。在客户成本…

【数据结构】树与二叉树(廿一):树和森林的遍历——先根遍历(递归算法PreOrder、非递归算法NPO)

文章目录 5.1 树的基本概念5.1.1 树的定义5.1.2 森林的定义5.1.3 树的术语 5.2 二叉树5.3 树5.3.1 树的存储结构1. 理论基础2. 典型实例3. Father链接结构4. 儿子链表链接结构5. 左儿子右兄弟链接结构 5.3.2 获取结点的算法5.3.3 树和森林的遍历1. 先根遍历&#xff08;递归&am…

【Web】Flask|Jinja2 SSTI

目录 ①[NISACTF 2022]is secret ②[HNCTF 2022 WEEK2]ez_SSTI ③[GDOUCTF 2023] ④[NCTF 2018]flask真香 ⑤[安洵杯 2020]Normal SSTI ⑥[HNCTF 2022 WEEK3]ssssti ⑦[MoeCTF 2021]地狱通讯 ①[NISACTF 2022]is secret dirsearch扫出/secret 明示get传一个secret ?…

【洛谷 P3743】kotori的设备 题解(二分答案+循环)

kotori的设备 题目背景 kotori 有 n n n 个可同时使用的设备。 题目描述 第 i i i 个设备每秒消耗 a i a_i ai​ 个单位能量。能量的使用是连续的&#xff0c;也就是说能量不是某时刻突然消耗的&#xff0c;而是匀速消耗。也就是说&#xff0c;对于任意实数&#xff0c;…

国家开放大学平时作业训练题

卷代号&#xff1a;1400 机器人技术及应用 参考试题 一、单项选择题&#xff08;每小题3分&#xff0c;共45分&#xff09; 1.在变径轮和变形车轮的设计中&#xff0c;借鉴了&#xff08; &#xff09;的设计&#xff0c;使得车轮可以主动变形进行越障。 A.滑块机构 …

王者荣耀游戏

游戏运行如下&#xff1a; sxt Background package sxt;import java.awt.*; //背景类 public class Background extends GameObject{public Background(GameFrame gameFrame) {super(gameFrame);}Image bg Toolkit.getDefaultToolkit().getImage("C:\\Users\\24465\\D…

使用大语言模型 LLM 做文本分析

本文主要分享 传统聚类算法 LLM与嵌入算法 嵌入算法聚类 LLM的其他用法 聚类是一种无监督机器学习技术&#xff0c;旨在根据相似的数据点的特征将其分组在一起。使用聚类成簇&#xff0c;有助于解决各种问题&#xff0c;例如客户细分、异常检测和文本分类等。尽管传统的聚…

Django(九、choices参数的使用、多对多表的三种创建方式、Ajax技术)

文章目录 一、choices参数choices参数的用法choices 参数用法总结 二、MVC与MTV模式1.MVC2.MTV 三、多对多的三种创建方式1.全自动创建2.纯手动创建半自动创建 四、Django与Ajax1.什么是Ajax常见的场景Ajax案例 一、choices参数 在没有用到choices参数之前&#xff0c;我们在D…

【Linux】指令详解(一)

目录 1. 前言2. 与指令相关的知识2.1 文件2.2 路径 3. 常见指令3.1 pwd3.2 ls3.2.1 ls -l3.2.2 ls -la 3.3 mkdir3.4 cd3.5 clear3.6 touch 1. 前言 来学习一些Linux的指令和一些相关的知识。 第一步那肯定是打开自己的xshell。 这里可以修改字体和大小。 可以使用ctrl回车全…

特殊文件(XML文件)

一&#xff0c;XML文件概括 二&#xff0c;案例 <?xml version"1.0" encoding"UTF-8" ?> <!--注释&#xff1a;以上抬头声明必须写在第一不然报错--> <users><user id"1"><uame>张无忌</uame><性别&g…

[github初学者教程] 分支管理-以及问题解决

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于新西兰奥克兰大学攻读IT硕士学位。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。跨领域…

【前端学java】java 中的数组(9)

往期回顾&#xff1a; 【前端学java】JAVA开发的依赖安装与环境配置 &#xff08;0&#xff09;【前端学 java】java的基础语法&#xff08;1&#xff09;【前端学java】JAVA中的packge与import&#xff08;2&#xff09;【前端学java】面向对象编程基础-类的使用 &#xff08…

深入了解原型与原型链

1、[[Prototype]] JS中的对象有一个特殊的 [[Prototype]] 内置属性&#xff0c;其实就是对于其他对象的引用。几乎所有的对象在创建时 [[Prototype]] 属性都会被赋予一个非空的值。 var anotherObject {a:2 }; // 创建一个关联到 anotherObject 的对象 var myObject Object…

【C++】使用std::vector()函数实现矩阵的加、减、点乘、点除等运算

本文通过vector&#xff08;&#xff09;函数表示矩阵的形式&#xff0c;对 加、减、点乘、点除等运算进行编码和运行&#xff0c;相应结果如下文所述。 #include <iostream> #include <vector>using namespace std;// 矩阵加法 vector<vector<int>> …