在前面,我们对于电路的动态显示进行了一定的学习与了解。

(即数码管显示实验与数码管动态显示实验)

详见:单片机数码管实验

这次,我们将进一步学习一下开发板动态显示电路移植的知识。

即上文实验项目三的内容。

注:我们采用的开发板为普中51开发板。

实验项目:开发板动态显示电路移植:

操作要求:

  1. 阅读开发板电路原理图,在Proteus中实现开发板动态数码管显示电路进行复现;
  2. 根据数码管的连接电路,对项目2的源文件进行修改移植,使其功能在仿真电路上能够实现;
  3. 下载到开发板上,观察实验结果。

实验仿真电路图:

在这里,我们用到了74LS13874LS245元件。

74LS138:

74LS138 为3 线-8线译码器,共有 54LS138和 74LS138 两种线路结构型式。54LS138为军用,74LS138为民用。

其功能原理主要有:

其功能原理如下:

  ①当一个选通端(E1)为高电平,另两个选通端((/E2))和(/E3))为低电平时,可将地址端(A、B、C)的二进制编码在Y0至Y7对应的输出端以低电平译出。(即输出为Y0至Y7的非)。

  ②利用 E1、E2和E3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。

  ③若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。

  ④可用在8086的译码电路中,扩展内存。

我们注重看其第一个功能。

其真值表如下:

(PS:A2,A1,A0分别对应上图的C,B,A)

我们通过使用74LS138实现控制段码的输入。

74LS245:

74LS245为三态双向总线转换器,一般用于总线的电平匹配问题,功能为双向传送。

功能原理:

当E = 0时,芯片具有双向传输的功能。

        在DIR = 1时,数据由A传输给B。

        在DIR = 0时,数据由B传输给A。

当E = 1时,AB端均为高阻态,此时芯片不具有双向传输功能。

我们通过使用74LS245实现对于位码的控制。

代码编写:

方法一:

#include <reg52.h>//引用单片机头文件//
unsigned char code table[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};//段码
unsigned char code weima[] = {0x00,0x10,0x08,0x18,0x04,0x14,0x0C,0x1C}; //位码
unsigned char Second;
void delay(unsigned int i)//延时函数//
{while(i--);
}
void main(void)
{unsigned int i;Second = 0;while(1){for(i = 0;i < 50;i++){P2 = 0Xff;//消隐 // P0 = table[Second/10];P2 = weima[0];delay(1000);P2 = 0Xff;//消隐//P0 = table[Second%10];P2 = weima[1];delay(1000);}Second++;if(Second == 60)Second = 0;}
}

代码的核心部分在于:

            P2 = 0Xff;//消隐 // P0 = table[Second/10];P2 = weima[0];delay(1000);P2 = 0Xff;//消隐//P0 = table[Second%10];P2 = weima[1];delay(1000);

下面我将依此对其进行讲解,

首先

P2 = 0Xff;

这是对数码管进行消隐

不知道消隐的功能及原理的,可以看这篇文章。

单片机数码管实验

我们在此就不多做讲解了。

P0 = table[Second/10];

这是给P0端口赋予其时钟十位上的数字对应段码的值。

我们在代码前端已经建立了一个段码表。所以此时赋值只要引用就好啦。

unsigned char code table[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};//段码

P2 = weima[0];

这是给P2端口赋予其需要亮起的数码管的对应的位码值。

位码表:

unsigned char code weima[] = {0x00,0x10,0x08,0x18,0x04,0x14,0x0C,0x1C}; //位码

其依次对应从左到右的数码管。

但其实我们只需要给P2^2,P2^3,P2^4引脚赋值即可,没有必要给P2端口全赋值。这也就引出了我们的第二种方法。我们后续会讲到。

delay(1000);

通过延时函数进行一定的延时。

P0 = table[Second%10];

这是给P0端口赋予其时钟个位上的数字对应段码的值。

段码表与上文代码一致。

方法二:

#include <reg52.h>
unsigned char code table[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
unsigned char code weima[] = {0x00,0x10,0x08,0x18,0x04,0x14,0x0C,0x1C};
unsigned char Second;
sbit portc = P2^2;
sbit portb = P2^3;
sbit porta = P2^4;
void delay(unsigned int i)
{while(i--);
}
void main(void)
{unsigned int i;Second = 0;while(1){for(i = 0;i < 50;i++){P2 = 0Xff;  P0 = table[Second/10];portc = 0;portb = 0;porta = 0;delay(1000);P2 = 0Xff;P0 = table[Second%10];portc = 0;portb = 0;porta = 1;delay(1000);}Second++;if(Second == 60)Second = 0;}
}

在上面我们说到,我们只需要给P2^2,P2^3,P2^4引脚赋值即可,没有必要给P2端口全赋值。

所以在方法二中,我们对于这三个引脚进行定义。

sbit portc = P2^2;
sbit portb = P2^3;
sbit porta = P2^4;

sbit 元素可以将芯片的引脚进行定义命名。

注意:在芯片头文件中,其引脚的名称默认为PX^Y

X为引脚对应的端口,Y为引脚位。如P2^2.

给引脚命名方便我们后续的赋值。

         portc = 0;portb = 0;porta = 0;

上面的赋值对应其给端口P2赋0X00.

         portc = 0;portb = 0;porta = 1;

上面的赋值对应其给端口P2赋0X10.

其实这很好理解。

0X10对应的二进制编码为0001 0000

其在234位引脚的赋值是0001 0000

所以我们单独赋值的效果也是一样的。

实验结果:

单片机实验-开发板动态显示电路移植相关推荐

  1. PLC单片机实验开发设备

    在单片机的应用中,PLC控制系统已经成为了其组成中的重要组成部分.单片机主要利用PLC必备的编程接口来进行通信,使用LCD作为用户的界面,界面中可以显示出PLC的工作状态.工艺参数,也可以使用相应的按 ...

  2. 51单片机入门-开发板介绍及软件安装

    [1-1] 课程简介_哔哩哔哩_bilibili[1-2] 开发工具介绍及软件安装_哔哩哔哩_bilibili[1-3] 单片机及开发板介绍_哔哩哔哩_bilibili 书籍:51单片机C语言教程-郭 ...

  3. 国产超低功耗华大单片机HC32L136开发板上手入门

    今天介绍下国产超低功耗华大单片机HC32L136开发板上手后的入门操作(开发板可以在华大MCU应用交流群:164973950 免费申请).HC32L136开发板(如下图所示)分为板载调试模块(左半部分 ...

  4. 国产超低功耗华大单片机HC32F003开发板上手入门

    今天介绍下国产超低功耗华大单片机HC32F003开发板上手后的入门操作(开发板可以在华大MCU应用交流群:164973950 免费申请).HC32F003开发板(如下图所示)分为板载调试模块(左半部分 ...

  5. 国产超低功耗华大单片机HC32L110开发板上手入门

    今天介绍下国产超低功耗华大单片机HC32L110开发板上手后的入门操作(开发板可以在华大MCU应用交流群:164973950 免费申请).HC32L110开发板(如下图所示)分为板载调试模块(左半部分 ...

  6. 国产超低功耗华大单片机HC32F005开发板上手入门

    今天介绍下国产超低功耗华大单片机HC32F005开发板上手后的入门操作(开发板可以在华大MCU应用交流群:164973950 免费申请).HC32F005开发板(如下图所示)分为板载调试模块(左半部分 ...

  7. PLC单片机实验开发系统装置QY-DPJ12

    一.装置简介 QY-DPJ12PLC单片机实验开发系统综合装置可完成51/96/8088/8086等CPU的单片机.微机的全部软.硬件实验.在单片机仿真实验系统的基础上,增加8088十六位微机原理和接 ...

  8. 基于Domoticz智能家居系统(十三)Domoticz-3.8153在Tiny6410开发板上的移植

    Domoticz-3.8153在Tiny6410开发板上的移植 本文将在友善之臂Tiny6410开发板上移植Domoticz-3.8153,起因是去年在mini2440上移植的3.5877版本编译出来 ...

  9. RV1109开发板ssh服务器移植到arm开发板

    RV1109开发板ssh服务器移植到arm开发板 ssh功能移植到RV1109开发板的,由于RV1109的SDK中,没有telnet功能,有时候adb功能在量产中需要关闭,避免造成设备留有漏洞,造成安 ...

最新文章

  1. Python3中一些有用的函数
  2. npm获取配置,设置代理
  3. SAP删除会计科目 OBR2
  4. 【转载】什么是C++虚函数、虚函数的作用和使用方法
  5. redis数据结构类型
  6. 修复win10的更新服务器,大师搞定win10系统自动更新失败的修复步骤
  7. Linux 关机/重启/注销命令(7个)
  8. vb中空操作(等待)的指令、延时方法
  9. 你要的六级成绩批量查询,它来啦......
  10. STL 标准容器的选择
  11. 【微信小程序】小程序代码基本组成结构
  12. 莫烦python讲得好差_莫烦PYTHON——PyTorch——DQN 代码详解
  13. Java 正则表达式的用法及常用方法
  14. [爬虫笔记02] Scrapy爬取阳光问政平台
  15. win10无法访问共享文件,报出错误代码0x80004005
  16. SC0084 AT32F407/437在UCOSIII上运行LwIP协议栈
  17. 关于软件测试的英语面试题,软件测试工程师英语面试题
  18. 用svg矢量图实现动画效果
  19. 地图SDK全面升级 – 数十项新功能及优化等你来体验
  20. mysql对单引号的模糊查询_SQL语句中的单引号处理以及模糊查询

热门文章

  1. 中国工程院院士陈纯:链上链下数据协同技术是联盟链发展的重要方向(全文)...
  2. 使用Java寻找某两个数相除,其结果离黄金分割点 0.618最近
  3. 什么是虚拟机?虚拟机有什么用? 虚拟机的特点?
  4. 如何让程序在后台保持挂起状态
  5. docker开启2375端口
  6. SAS、scsi、sata、ide硬盘有什么区别?
  7. vulnhub:BTRSys2
  8. 用友U8登录界面显示红叉叉
  9. 英文主要搜索引擎及目录
  10. 修改Virtualbox的默认安装路径