单片机实验-开发板动态显示电路移植
在前面,我们对于电路的动态显示进行了一定的学习与了解。
(即数码管显示实验与数码管动态显示实验)
详见:单片机数码管实验
这次,我们将进一步学习一下开发板动态显示电路移植的知识。
即上文实验项目三的内容。
注:我们采用的开发板为普中51开发板。
实验项目:开发板动态显示电路移植:
操作要求:
- 阅读开发板电路原理图,在Proteus中实现开发板动态数码管显示电路进行复现;
- 根据数码管的连接电路,对项目2的源文件进行修改移植,使其功能在仿真电路上能够实现;
- 下载到开发板上,观察实验结果。
实验仿真电路图:
在这里,我们用到了74LS138与74LS245元件。
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
所以我们单独赋值的效果也是一样的。
实验结果:
单片机实验-开发板动态显示电路移植相关推荐
- PLC单片机实验开发设备
在单片机的应用中,PLC控制系统已经成为了其组成中的重要组成部分.单片机主要利用PLC必备的编程接口来进行通信,使用LCD作为用户的界面,界面中可以显示出PLC的工作状态.工艺参数,也可以使用相应的按 ...
- 51单片机入门-开发板介绍及软件安装
[1-1] 课程简介_哔哩哔哩_bilibili[1-2] 开发工具介绍及软件安装_哔哩哔哩_bilibili[1-3] 单片机及开发板介绍_哔哩哔哩_bilibili 书籍:51单片机C语言教程-郭 ...
- 国产超低功耗华大单片机HC32L136开发板上手入门
今天介绍下国产超低功耗华大单片机HC32L136开发板上手后的入门操作(开发板可以在华大MCU应用交流群:164973950 免费申请).HC32L136开发板(如下图所示)分为板载调试模块(左半部分 ...
- 国产超低功耗华大单片机HC32F003开发板上手入门
今天介绍下国产超低功耗华大单片机HC32F003开发板上手后的入门操作(开发板可以在华大MCU应用交流群:164973950 免费申请).HC32F003开发板(如下图所示)分为板载调试模块(左半部分 ...
- 国产超低功耗华大单片机HC32L110开发板上手入门
今天介绍下国产超低功耗华大单片机HC32L110开发板上手后的入门操作(开发板可以在华大MCU应用交流群:164973950 免费申请).HC32L110开发板(如下图所示)分为板载调试模块(左半部分 ...
- 国产超低功耗华大单片机HC32F005开发板上手入门
今天介绍下国产超低功耗华大单片机HC32F005开发板上手后的入门操作(开发板可以在华大MCU应用交流群:164973950 免费申请).HC32F005开发板(如下图所示)分为板载调试模块(左半部分 ...
- PLC单片机实验开发系统装置QY-DPJ12
一.装置简介 QY-DPJ12PLC单片机实验开发系统综合装置可完成51/96/8088/8086等CPU的单片机.微机的全部软.硬件实验.在单片机仿真实验系统的基础上,增加8088十六位微机原理和接 ...
- 基于Domoticz智能家居系统(十三)Domoticz-3.8153在Tiny6410开发板上的移植
Domoticz-3.8153在Tiny6410开发板上的移植 本文将在友善之臂Tiny6410开发板上移植Domoticz-3.8153,起因是去年在mini2440上移植的3.5877版本编译出来 ...
- RV1109开发板ssh服务器移植到arm开发板
RV1109开发板ssh服务器移植到arm开发板 ssh功能移植到RV1109开发板的,由于RV1109的SDK中,没有telnet功能,有时候adb功能在量产中需要关闭,避免造成设备留有漏洞,造成安 ...
最新文章
- Python3中一些有用的函数
- npm获取配置,设置代理
- SAP删除会计科目 OBR2
- 【转载】什么是C++虚函数、虚函数的作用和使用方法
- redis数据结构类型
- 修复win10的更新服务器,大师搞定win10系统自动更新失败的修复步骤
- Linux 关机/重启/注销命令(7个)
- vb中空操作(等待)的指令、延时方法
- 你要的六级成绩批量查询,它来啦......
- STL 标准容器的选择
- 【微信小程序】小程序代码基本组成结构
- 莫烦python讲得好差_莫烦PYTHON——PyTorch——DQN 代码详解
- Java 正则表达式的用法及常用方法
- [爬虫笔记02] Scrapy爬取阳光问政平台
- win10无法访问共享文件,报出错误代码0x80004005
- SC0084 AT32F407/437在UCOSIII上运行LwIP协议栈
- 关于软件测试的英语面试题,软件测试工程师英语面试题
- 用svg矢量图实现动画效果
- 地图SDK全面升级 – 数十项新功能及优化等你来体验
- mysql对单引号的模糊查询_SQL语句中的单引号处理以及模糊查询