电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

vhdl数码管中的倒计时程序介绍

2021-11-21 09:32分类:电子元器件 阅读:

 

VHDL语言表达是一种用以电路原理的程序设计语言。它在80时代的中后期发生。最开始是由美国防部开发设计出去供美国军队用于提升设计方案的稳定性和减缩开发进度的一种应用范畴较小的设计语言 。

VHDL翻译中文便是快速集成电路芯片硬件配置描述语言,主要是使用在数字电路设计的制定中。它在国内的运用大部分是用在FPGA/CPLD/EPLD的制定中。自然在一些整体实力比较强大的企业,它也被用于设计方案ASIC。

VHDL关键用来表述数据体系的构造,个人行为,作用和插口。除开带有很多具备硬件配置特点的句子外,VHDL的语言表达方式、叙述设计风格及其英语的语法是十分类似一般的电子计算机程序设计语言。VHDL的程序结构特性是将一项建筑工程设计,或称设计方案实体线(能够是一个元器件,一个电源电路控制模块或一个系统软件)分为外界(或称可视性一部分,及端口号)和內部(或称不能视一部分),既涉及到实体线的内部结构作用和优化算法进行一部分。在对一个设计方案实体线界定了外界页面后,一旦其內部开发设计成功后,别的的设计方案就可以立即启用这一实体线。这类将设计方案实体线分为內外一部分的理念是VHDL控制系统设计的核心。

文中为各位产生vhdl数码显示管中的倒数计时程序流程详细介绍

vhdl数码管中的倒计时程序介绍

完成作用

按住运行中止功能键时,倒数计时开始工作,再按一次运行中止功能键时,则中止倒数计时。在任何时刻,按住校准功能键,倒数计时将中止工作中,而且修复倒数计时当今初始值99。

vhdl数码管中的倒计时程序介绍

源码

源码解读以下:

#include “REG52.H”

#define const_voice_short 40 //无源蜂鸣器短叫的延迟时间

#define const_voice_long 200 //无源蜂鸣器长叫的延迟时间

#define const_key_TIme1 20 //功能键去颤动延迟的時间

#define const_key_TIme2 20 //功能键去颤动延迟的時间

#define const_dpy_TIme_half 200 //数码显示管闪动時间的半值

#define const_dpy_TIme_all 400 //数码显示管闪动時间的全值 一定要比const_dpy_time_half 大

/* 注解一:

* 如何知道1秒左右必须多少个按时终断?

* 这一必须撰写一段微信小程序检测,获得检测的效果后再按占比调整。

* 流程:

* 第一步:在编程代码上先载入1秒左右大约必须200个按时终断。

* 第二步:把程序流程烧写进单片机设计后,通电逐渐检测,手里同歩打开手机里的计时器。

* 假如单片机设计倒数计时跑完后99秒,而手机的计时器才离开了45秒。

* 第三步:那麼最后得到1秒左右必须的按时终断频次是:const_1s=(200*99)/45=440

*/

#define const_1s 440 //大约一秒钟所须要的按时终断频次

void initial_myself();

void initial_peripheral();

void delay_short(unsigned int uiDelayShort);

void delay_long(unsigned int uiDelaylong);

//推动数码显示管的74HC595

void dig_hc595_drive(unsigned char ucDigStatusTemp16_09,unsigned char ucDigStatusTemp08_01);

void display_drive(); //表明数码显示管点阵字的推动涵数

void display_service(); //表明的界面菜单栏系统服务

//推动LED的74HC595

void hc595_drive(unsigned char ucLedStatusTemp16_09,unsigned char ucLedStatusTemp08_01);

void T0_time(); //按时终断涵数

void key_service(); //功能键服务项目的应用软件

void key_scan();//功能键检测涵数 放到按时终断里

sbit key_sr1=P0^0; //相匹配朱兆祺学习板的S1键

sbit key_sr2=P0^1; //相匹配朱兆祺学习板的S5键

sbit key_gnd_dr=P0^4; //仿真模拟单独功能键的地GND,因而务必一直輸出低电频

sbit beep_dr=P2^7; //无源蜂鸣器的推动IO口

sbit led_dr=P3^5; //做为半途中止显示灯 亮的情况下表明半途中止

sbit dig_hc595_sh_dr=P2^0; //数码显示管的74HC595程序流程

sbit dig_hc595_st_dr=P2^1;

sbit dig_hc595_ds_dr=P2^2;

sbit hc595_sh_dr=P2^3; //LED灯的74HC595程序流程

sbit hc595_st_dr=P2^4;

sbit hc595_ds_dr=P2^5;

unsigned char ucKeySec=0; //被开启的功能键序号

unsigned int uiKeyTimeCnt1=0; //功能键去颤动延迟电子计数器

unsigned char ucKeyLock1=0; //功能键开启后锁紧的自变量标示

unsigned int uiKeyTimeCnt2=0; //功能键去颤动延迟电子计数器

unsigned char ucKeyLock2=0; //功能键开启后锁紧的自变量标示

unsigned int uiVoiceCnt=0; //无源蜂鸣器鸣叫声的延迟时间电子计数器

unsigned char ucDigShow8; //第8位数码显示管要展现的內容

unsigned char ucDigShow7; //第7位数码显示管要展现的內容

unsigned char ucDigShow6; //第六位数码显示管要展现的內容

unsigned char ucDigShow5; //第5位数码显示管要展现的內容

unsigned char ucDigShow4; //第4位数码显示管要表明的內容

unsigned char ucDigShow3; //第三位数码显示管要展现的內容

unsigned char ucDigShow2; //第2位数码显示管要展现的內容

unsigned char ucDigShow1; //第一位数码显示管要展现的內容

unsigned char ucDigDot8; //数码显示管8的小数位是不是表明的标示

unsigned char ucDigDot7; //数码显示管7的小数位是不是表明的标示

unsigned char ucDigDot6; //数码显示管6的小数位是不是表明的标示

unsigned char ucDigDot5; //数码显示管5的小数位是不是表明的标示

unsigned char ucDigDot4; //数码显示管4的小数位是不是表明的标示

unsigned char ucDigDot3; //数码显示管3的小数位是不是表明的标示

unsigned char ucDigDot2; //数码显示管2的小数位是不是表明的标示

unsigned char ucDigDot1; //数码显示管1的小数位是不是表明的标示

unsigned char ucDigShowTemp=0; //临时性中间变量

unsigned char ucDisplayDriveStep=1; //动态性扫描仪数码显示管的流程自变量

unsigned char ucWd=1; //本应用程序的主要自变量,对话框表明自变量。类似一级菜单栏的自变量。意味着表明不一样的对话框。

unsigned char ucWd1Update=1; //对话框1升级表明标示

unsigned char ucCountDown=99; //倒数计时的目前值

unsigned char ucStartFlag=0; //中止与运行的标志位

unsigned int uiTimeCnt=0; //倒数计时的时间计时器

unsigned char ucTemp1=0; //正中间衔接自变量

unsigned char ucTemp2=0; //正中间衔接自变量

unsigned char ucTemp3=0; //正中间衔接自变量

unsigned char ucTemp4=0; //正中间衔接自变量

unsigned char ucTemp5=0; //正中间衔接自变量

unsigned char ucTemp6=0; //正中间衔接自变量

unsigned char ucTemp7=0; //正中间衔接自变量

unsigned char ucTemp8=0; //正中间衔接自变量

//依据电路原理图得到的共阴数码显示管点阵字表

code unsigned char dig_table[]=

{

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

0x00, //无 序号10

0x40, //- 序号11

0x73, //P 序号12

};

void main()

{

initial_myself();

delay_long(100);

initial_peripheral();

while(1)

{

key_service(); //功能键服务项目的应用软件

display_service(); //表明的界面菜单栏系统服务

}

}

上一篇:压缩式压电加速度传感器简介

下一篇:双向可控硅触发电路设计,双向可控硅组成的交流稳压器电路

相关推荐

电工推荐

    电工技术基础_电工基础知识_电工之家-电工学习网
返回顶部