1 项目要求

(1)数码管开机初始显示----,正常运行时显示2013;

(2)数码管显示任意四位十进制数;

2 仿真测试

3 参考程序

3.1 主函数

#include "DisplaySmg.h"

void main()
{
//任务1 正常运行时显示2023
unsigned int i; //0~65535
for(i=0;i<5000;i++) //数码管开机显示
{
DisplaySmg(); //for循环i控制显示时间
}
while(1)
{
LedBuf[0]=2; //重新设置LedBuf[](extern),即数据缓存区
LedBuf[1]=0;
LedBuf[2]=2;
LedBuf[3]=3;
DisplaySmg(); //调用数码管显示函数
} // //任务2 数码管显示任意四位十进制数
// unsigned int i; //0~65535
// unsigned int NUM = 1983; //0~65535
// for(i=0;i<5000;i++) //数码管开机显示
// {
// DisplaySmg(); //for循环i控制显示时间
// }
// while(1)
// {
// LedBuf[0] = NUM/1000; //取千位
// LedBuf[1] = NUM/100%10; //取百位
// LedBuf[2] = NUM/10%10; //取十位
// LedBuf[3] = NUM%10; //取个位
// DisplaySmg(); //调用数码管显示函数
// }
}

3.2 数码管显示函数(H文件和C文件成对出现)

#ifndef __DisplaySmg_H__
#define __DisplaySmg_H__ #include <REG52.H>
#include "DelayXms.h" #define GPIO_SEG P0 //段选端
#define GPIO_SEL P2 //位选端
#define SMG_NUM 4 //数码管的个数 extern unsigned char LedBuf[]; void DisplaySmg(); #endif
#include "DisplaySmg.h"

unsigned char code LedData[]={    //共阴型数码管的段码表,字符,序号
0x3F, //"0",0
0x06, //"1",1
0x5B, //"2",2
0x4F, //"3",3
0x66, //"4",4
0x6D, //"5",5
0x7D, //"6",6
0x07, //"7",7
0x7F, //"8",8
0x6F, //"9",9
0x77, //"A",10
0x7C, //"B",11
0x39, //"C",12
0x5E, //"D",13
0x79, //"E",14
0x71, //"F",15
0x76, //"H",16
0x38, //"L",17
0x37, //"n",18
0x3E, //"u",19
0x73, //"P",20
0x5C, //"o",21
0x40, //"-",22
0x00, //熄灭 23
}; unsigned char code LedAddr[]={0xfe,0xfd,0xfb,0xf7}; //数码管位选 unsigned char LedBuf[]={22,22,22,22}; //显示缓存区 void DisplaySmg()
{
unsigned char i; //等价于 "static unsigned char i = 0;"
GPIO_SEG = LedData[LedBuf[i]]; //第一步 送段码
GPIO_SEL = LedAddr[i]; //第二步 送位选
DelayXms(1); //第三步 延时1ms
GPIO_SEG = 0x00; //第四步 消影(共阴形)
i++;
if(i==SMG_NUM) //SMG_NUM为数码管的个数
i=0;
}

3.3 延时函数

#ifndef __DelayXms_H__
#define __DelayXms_H__ #include <intrins.h> void DelayXms(unsigned char xms); #endif
#include "DelayXms.h"

void DelayXms(unsigned char xms)        //@11.0592MHz
{
unsigned char i, j;
while(xms--)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}

4 参考来源

(1)单片机应用 数码管动态显示编程之基于底层显示模块的应用层功能程序_哔哩哔哩_bilibili

数码管动态显示(软件延时)+基于底层显示模块的应用层程序开发+Protues仿真的更多相关文章

  1. 实验一:基于Winsock完成简单的网络程序开发

    第一部分:简答的UDP网络通信程序 // UDP5555.cpp : Defines the entry point for the application. //================== ...

  2. 基于go语言结合微信小程序开发的微商城系统

    最近在慕课网上录制了一门<Golang微信小程序微商城系统原型>,这门免费课程特别适合在校大学生或者刚毕业的大学生,go语言初学者以及想要从事微商城开发项目入门的小伙伴们来学习.在课程当中 ...

  3. 基于OpenCV的图书扫描识别程序开发

    1.AndroidStudio环境配置 https://www.cnblogs.com/little-monkey/p/7162340.html

  4. 基于FPGA的数字秒表(数码管显示模块和按键消抖)实现

    本文主要是学习按键消抖和数码管动态显示,秒表显示什么的,个人认为,拿FPGA做秒表真是嫌钱多. 感谢 感谢学校和至芯科技,笔者专业最近去北京至芯科技培训交流了一周.老师的经验还是可以的,优化了自己的代 ...

  5. 【转帖】远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)

    远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm) https://zhuanlan.zhihu.com/p/310 ...

  6. nios II--实验7——数码管IP软件部分

    软件开发 首先,在硬件工程文件夹里面新建一个software的文件夹用于放置软件部分:打开toolsàNios II 11.0 Software Build Tools for Eclipse,需要进 ...

  7. STM32软件复位(基于库文件V3.5)

    源:STM32软件复位(基于库文件V3.5) void SoftReset(void) { __set_FAULTMASK(); // 关闭所有中端 NVIC_SystemReset();// 复位 ...

  8. 基于底层的 XML 的解析方式详解

    在上一篇博客中,我们介绍了什么是 XML ,http://www.cnblogs.com/ysocean/p/6901008.html,那么这一篇博客我们介绍如何来解析 XML . 部分文档引用:ht ...

  9. 数码管动态显示Verilog实现(参考小梅哥教程)(视觉暂留)

    一个数码管有九个引脚,控制八段二极管的亮灭,用以显示需要的数字. 当有N个数码管时,一个一个控制的话需要N x 9 个引脚,消耗资源较多. 因此可以利用动态显示的方案通过人眼的视觉暂留特性达到静态显示 ...

  10. 【iCore3 双核心板】【发布基于 iCore3的显示模块(包含7寸屏,4.3寸屏,vga模块等】

    ====================注意 ==================== 1.本代码仅仅对iCore3客户(使用者)开放: 2.iCore3使用者凭购买id或者订单号给 gingko[A ...

随机推荐

  1. 【Electron】记录一下常用代码

    macOS 实现毛玻璃效果 function createWindow() { const mainWindow = new BrowserWindow({ width: 960, height: 6 ...

  2. HyperMesh模型导入与几何清理

    2.1 CAD 模型导入与修复 HyperMesh 支持多种主流 CAD 格式模型文件,同时针对模型在软件之间导入导出过程中可能出现数据丢失的问题提供了多种修复工具. CAD 模型导入与修复可进行: ...

  3. 总结下参与以及看到的一些好的业务设计的 pattern

    B端C端进行分离: 单场景业务应用表:业务表进行分离 对于B端系统来说,如发钱系统,B端需要存储 订单id.是否发放成功.通知状态等信息,有可能还会有发放失败,审核驳回等无用数据记录,但是对于C端用户 ...

  4. python字典批量删除多个键值对(连续)

    搜不到字典批量删除多个键值对的方法,换了个搜索姿势,批量取N个元素,那么组合一下,就出来了! 新建一个字典dict:  目标:去掉key为c,d,e的键值对. 最常见的就是直接删除,但是这样有个弊端, ...

  5. java set TreeSet详解

    TreeSet 是sortedSet的唯一实现类,正如SortedSet名字暗示,TreeSet可以让集合元素处在排好序的状态. 与HashSet相比,TreeSet还额外提供了以下的方法(列出来,混 ...

  6. C++使用WinHTTP访问http/https服务

    环境: window10_x64 & vs2022 python版本: 3.9.13 日常开发中,会遇到c/c++作为客户端访问http/https服务的情况,今天整理下windows10环境 ...

  7. 抓取微信小程序源码

    想成为一名微信小程序的开发者,前端思路的学习和安全意识是非常有必要的,故务必掌握小程序反编译技能. 这里用到了2个工具<包解密>与<反编译>(非原创,均来自网上的大佬),特别适 ...

  8. F407 中printf 的实现

    装载  自  http://bbs.21ic.com/icview-860453-1-1.html 配置串口,利用printf函数输出字符,结果输出的还是ASCII码,这是为什么?难道是我的配置问题? ...

  9. java 核心编程设计模式

    简介 MVC模式 是 设计模式中的一种 模型:存储内容 视图:显示内容 控制器:处理用户输入

  10. Restcloud ETl数据通过时间戳实现增量数据同步

    1.新增数据源 2.将表输入节点拖拽到流程图里面 3.表输入节点的配置,配置时间戳,通过时间戳来实现增量数据同步 4.将表输出节点拖拽到流程图 5.表输出节点的配置 6.将节点组件用直线连接起来 7. ...