当前位置: 首页 > web >正文

C语言:51单片机实现数码管依次循环显示【1~F】课堂练习

在51单片机上实现数码管依次循环显示【1~F】的功能,可以通过以下步骤完成。假设使用的是共阴极数码管,并且数码管的段选和位选分别连接到单片机的P0口和P2口。

硬件连接

  • 数码管的段选(a, b, c, d, e, f, g, dp)连接到P0口。
  • 数码管的位选(选择哪个数码管显示)连接到P2口。

以下编程都是基于C语言的模块化编程实现的,1秒钟依次循环显示【1~F】课堂练习

步骤:

1,首先先定义一个用于存储段码的数组

2,然后定义一个用于控制灯变动的位码

3,初始化定时中断函数

4,定义定时中断服务函数为1秒

具体代码如下:   

main.c

#include <REGX52.H>
#include <timer.h>
unsigned int count = 0;unsigned char NixieTable[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71, 0x00};  //首先先用数组定义一个段码void seg_dis(unsigned char Location,Number)
{switch(Location){case 1:P2_4=1;P2_3=1;P2_2=1;break;case 2:P2_4=1;P2_3=1;P2_2=0;break;case 3:P2_4=1;P2_3=0;P2_2=1;break;case 4:P2_4=1;P2_3=0;P2_2=0;break;case 5:P2_4=0;P2_3=1;P2_2=1;break;case 6:P2_4=0;P2_3=1;P2_2=0;break;case 7:P2_4=0;P2_3=0;P2_2=1;break;case 8:P2_4=0;P2_3=0;P2_2=0;break;}P0=NixieTable[Number];
}void main()
{Time0_Init();while(1){}}
unsigned int number = 1;
unsigned int i = 0;//Ö´ÐÐÖжϵÄÖжϳÌÐò
void Timer0_ISR() interrupt 1
{TL0 = 0xCD;		//ÖØÐ¼ÓÔØ³õÖµ	TH0 = 0xD4;	if(++count == 100){seg_dis(number,i);i+=1;count = 0;if(i == 16){  //ÀÛ¼Ó1ÂÖºóÍùÓÒÒÆ¶¯Ò»Î»number+=1;i = 0;}
}if(number == 8){number = 0;}}

tiemr.c (初始化定时器)

#include <REGX51.H>
void Time0_Init()
{   TMOD &= 0xF0;			TMOD |= 0x01;			TL0 = 0xCD;			TH0 = 0xD4;				TF0 = 0;				TR0 = 1;				//Æô¶¯ÖÐ¶Ï  EA = 1 ;  //×Ü¿ª¹ØET0 = 1;}

timer.h

#ifndef _TIMER_H_
#define _TIMER_H_void Time0_Init();#endif

http://www.xdnf.cn/news/6150.html

相关文章:

  • Spring 中的 @Configuration @Bean注解
  • PyTorch 中神经网络相关要点(损失函数,学习率)及优化方法总结
  • 建筑IT数字化突围:建筑设计企业的生存法则重塑
  • java连数据库
  • FFmpeg视频编码的完整操作指南
  • 如何设置FFmpeg实现对高分辨率视频进行转码
  • Tailwind CSS 实战教程:从入门到精通
  • 基于开源AI大模型与S2B2C生态的个人品牌优势挖掘与标签重构研究
  • 数据库系统概论|第七章:数据库设计—课程笔记
  • 使用大语言模型从零构建知识图谱(上)
  • Kubernetes控制平面组件:Kubelet详解(三):CRI 容器运行时接口层
  • 国产 ETL 数据集成厂商推荐—谷云科技 RestCloud
  • 【C++设计模式之Decorator装饰模式】
  • 砷化镓太阳能电池:开启多元领域能源新篇
  • 什么是SparkONYarn模式?
  • 【解析:新能源汽车芯片主要玩家及技术发展】
  • 聊聊JetCache的缓存构建
  • 基于自校准分数的扩散模型在并行磁共振成像中联合进行线圈灵敏度校正和运动校正|文献速递-深度学习医疗AI最新文献
  • SVM在医疗设备故障维修服务决策中的应用:策略、技术与实践
  • NineData 社区版 V4.1.0 正式发布,新增 4 条迁移链路,本地化数据管理能力再升级
  • 不借助 Cursor,如何开发第一款 ios 产品并做到付费榜 Top 2
  • C# 通过脚本实现接口
  • C++:二叉搜索树
  • 【C++】map和set的模拟实现
  • vscode调试c/c++
  • Python笔记:在环境变量中增加了dll加载路径,python提示DLL加载失败
  • HTML:入门
  • Angular 知识框架
  • 【SQL】如何在 SQL 中统计结构化字符串的特征频率
  • 【位运算】常见算法公式使用