在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網(wǎng)>電子元器件>數(shù)碼管>

vhdl數(shù)碼管中的倒計時程序介紹

2018年01月29日 13:42 電子發(fā)燒友整理 作者: 用戶評論(0

VHDL語言是一種用于電路設(shè)計的高級語言。它在80年代的后期出現(xiàn)。最初是由美國國防部開發(fā)出來供美軍用來提高設(shè)計的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計語言 。

VHDL翻譯成中文就是超高速集成電路硬件描述語言,主要是應(yīng)用在數(shù)字電路的設(shè)計中。它在中國的應(yīng)用多數(shù)是用在FPGA/CPLD/EPLD的設(shè)計中。當(dāng)然在一些實力較為雄厚的單位,它也被用來設(shè)計ASIC

VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式、描述風(fēng)格以及語法是十分類似于一般的計算機高級語言。VHDL的程序結(jié)構(gòu)特點是將一項工程設(shè)計,或稱設(shè)計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實體的內(nèi)部功能和算法完成部分。在對一個設(shè)計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就可以直接調(diào)用這個實體。這種將設(shè)計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計的基本點。

本文為大家?guī)韛hdl數(shù)碼管中的倒計時程序介紹

實現(xiàn)功能

按下啟動暫停按鍵時,倒計時開始工作,再按一次啟動暫停按鍵時,則暫停倒計時。在任何時候,按下復(fù)位按鍵,倒計時將暫停工作,并且恢復(fù)倒計時當(dāng)前默認(rèn)值99。

源代碼

源代碼講解如下:

#include “REG52.H”

#define const_voice_short 40 //蜂鳴器短叫的持續(xù)時間

#define const_voice_long 200 //蜂鳴器長叫的持續(xù)時間

#define const_key_time1 20 //按鍵去抖動延時的時間

#define const_key_time2 20 //按鍵去抖動延時的時間

#define const_dpy_time_half 200 //數(shù)碼管閃爍時間的半值

#define const_dpy_time_all 400 //數(shù)碼管閃爍時間的全值 一定要比const_dpy_time_half 大

/* 注釋一:

* 如何知道1秒鐘需要多少個定時中斷?

* 這個需要編寫一段小程序測試,得到測試的結(jié)果后再按比例修正。

* 步驟:

* 第一步:在程序代碼上先寫入1秒鐘大概需要200個定時中斷。

* 第二步:把程序燒錄進單片機后,上電開始測試,手上同步打開手機里的秒表。

* 如果單片機倒計時跑完了99秒,而手機上的秒表才走了45秒。

* 第三步:那么最終得出1秒鐘需要的定時中斷次數(shù)是:const_1s=(200*99)/45=440

*/

#define const_1s 440 //大概一秒鐘所需要的定時中斷次數(shù)

void initial_myself();

void initial_peripheral();

void delay_short(unsigned int uiDelayShort);

void delay_long(unsigned int uiDelaylong);

//驅(qū)動數(shù)碼管的74HC595

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

void display_drive(); //顯示數(shù)碼管字模的驅(qū)動函數(shù)

void display_service(); //顯示的窗口菜單服務(wù)程序

//驅(qū)動LED的74HC595

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

void T0_time(); //定時中斷函數(shù)

void key_service(); //按鍵服務(wù)的應(yīng)用程序

void key_scan();//按鍵掃描函數(shù) 放在定時中斷里

sbit key_sr1=P0^0; //對應(yīng)朱兆祺學(xué)習(xí)板的S1鍵

sbit key_sr2=P0^1; //對應(yīng)朱兆祺學(xué)習(xí)板的S5鍵

sbit key_gnd_dr=P0^4; //模擬獨立按鍵的地GND,因此必須一直輸出低電平

sbit beep_dr=P2^7; //蜂鳴器的驅(qū)動IO口

sbit led_dr=P3^5; //作為中途暫停指示燈 亮的時候表示中途暫停

sbit dig_hc595_sh_dr=P2^0; //數(shù)碼管的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; //被觸發(fā)的按鍵編號

unsigned int uiKeyTimeCnt1=0; //按鍵去抖動延時計數(shù)器

unsigned char ucKeyLock1=0; //按鍵觸發(fā)后自鎖的變量標(biāo)志

unsigned int uiKeyTimeCnt2=0; //按鍵去抖動延時計數(shù)器

unsigned char ucKeyLock2=0; //按鍵觸發(fā)后自鎖的變量標(biāo)志

unsigned int uiVoiceCnt=0; //蜂鳴器鳴叫的持續(xù)時間計數(shù)器

unsigned char ucDigShow8; //第8位數(shù)碼管要顯示的內(nèi)容

unsigned char ucDigShow7; //第7位數(shù)碼管要顯示的內(nèi)容

unsigned char ucDigShow6; //第6位數(shù)碼管要顯示的內(nèi)容

unsigned char ucDigShow5; //第5位數(shù)碼管要顯示的內(nèi)容

unsigned char ucDigShow4; //第4位數(shù)碼管要顯示的內(nèi)容

unsigned char ucDigShow3; //第3位數(shù)碼管要顯示的內(nèi)容

unsigned char ucDigShow2; //第2位數(shù)碼管要顯示的內(nèi)容

unsigned char ucDigShow1; //第1位數(shù)碼管要顯示的內(nèi)容

unsigned char ucDigDot8; //數(shù)碼管8的小數(shù)點是否顯示的標(biāo)志

unsigned char ucDigDot7; //數(shù)碼管7的小數(shù)點是否顯示的標(biāo)志

unsigned char ucDigDot6; //數(shù)碼管6的小數(shù)點是否顯示的標(biāo)志

unsigned char ucDigDot5; //數(shù)碼管5的小數(shù)點是否顯示的標(biāo)志

unsigned char ucDigDot4; //數(shù)碼管4的小數(shù)點是否顯示的標(biāo)志

unsigned char ucDigDot3; //數(shù)碼管3的小數(shù)點是否顯示的標(biāo)志

unsigned char ucDigDot2; //數(shù)碼管2的小數(shù)點是否顯示的標(biāo)志

unsigned char ucDigDot1; //數(shù)碼管1的小數(shù)點是否顯示的標(biāo)志

unsigned char ucDigShowTemp=0; //臨時中間變量

unsigned char ucDisplayDriveStep=1; //動態(tài)掃描數(shù)碼管的步驟變量

unsigned char ucWd=1; //本程序的核心變量,窗口顯示變量。類似于一級菜單的變量。代表顯示不同的窗口。

unsigned char ucWd1Update=1; //窗口1更新顯示標(biāo)志

unsigned char ucCountDown=99; //倒計時的當(dāng)前值

unsigned char ucStartFlag=0; //暫停與啟動的標(biāo)志位

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; //中間過渡變量

//根據(jù)原理圖得出的共陰數(shù)碼管字模表

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(); //按鍵服務(wù)的應(yīng)用程序

display_service(); //顯示的窗口菜單服務(wù)程序

}

}

    本文導(dǎo)航

    • 第 1 頁:vhdl數(shù)碼管中的倒計時程序介紹
    • 第 2 頁:源代碼
    • 第 3 頁:源代碼

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

( 發(fā)表人:李建兵 )

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 国内精品久久影视 | 天堂网2021天堂手机版 | 久久免费视频99 | 七月丁香八月婷婷综合激情 | 国产区一区二区三 | 夜夜爱成人免费网站 | 久久综合五月开心婷婷深深爱 | 丁香花成人另类小说 | 精品一精品国产一级毛片 | 九月婷婷亚洲综合在线 | 日韩视频高清 | 老师在办公室被躁得舒服小说 | 中国特级毛片 | 欧美日韩精品一区二区另类 | 欧美日韩在线一本卡 | 欧美xx网站 | 天堂中文最新版www 天堂资源8中文最新版在线 | 777午夜精品免费播放 | 色婷婷综合激情 | 男女一进一出无遮挡黄 | 狠狠干免费视频 | 国产一级特黄老妇女大片免费 | 中国成人免费视频 | 日日摸人人看97人人澡 | 欧美xingai| 欧美日韩你懂的 | www毛片 | 国产一卡二卡3卡4卡四卡在线 | zzji国产精品视频 | 拍真实国产伦偷精品 | 一级特黄aaa大片 | 日本综合视频 | 很色视频 | 新版天堂中文网 | 午夜黄色福利 | 99xxxx开心 | 狠狠狠色丁香婷婷综合久久五月 | 亚洲视频五区 | 永久黄网站色视频免费 | 1024国产看片在线观看 | 美女流白浆网站 |