freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于mega8的16_64點陣時鐘顯示屏制作畢業(yè)設(shè)計論文-資料下載頁

2025-07-01 15:08本頁面

【導(dǎo)讀】而LED點陣式顯示屏,具有亮度高、功耗小、壽命長等優(yōu)點。點陣來作為電子時鐘的顯示屏,則可實現(xiàn)遠距離、大視角的時鐘顯示。合于在公共場所中顯示時間。從宏觀上來上,顯示屏可分為。由微控制器控制顯示器件的亮滅、顏色變化,從。而組合出所需要的圖相。在此次設(shè)計中,采用了16x64個單色LED作為顯示器件,用Mega8作為微控制器,以靜止和左移的方式進行時鐘顯示。由于充分考慮了軟硬?,F(xiàn),單片機Meg8和編譯器IAR的使用。以及在軟硬件設(shè)計調(diào)試過程中的各種現(xiàn)象

  

【正文】 達 1A。 在點陣中,每一行須采用 8550( PNP)三極管作為驅(qū)動,作用有兩個: 1 顯示均勻。若不用三極管,當(dāng)一行中 LED 點亮個數(shù)不同時,共陰極線上的電流不同,那么 LED 兩端電壓也不同,會造成亮度不均勻,采用三極管作為驅(qū)動后,利用三極管 PN 結(jié)導(dǎo)通陡峭的伏安特性 電流變化大時,電壓變化很小,從而 LED兩端電壓變化亦很小,使得一行中了 LED 點亮個數(shù)不同時,每個 LED 的亮度也相同,從而達到了顯示均勻的目的。 2 提供足夠大的驅(qū)動電流,保證 LED 亮度。若一具 LED 點亮需要 5 mA 電流,則一行 64 個 LED 同時點亮需要 320mA 電流,顯然 74HC154 無法吸收如此大的電流,采用 8550( PNP)三極管作為驅(qū)動,直接將此電流選通到地,解決了該問題 西南科技大學(xué)本科生畢業(yè)論文 21 第 4章 軟件設(shè)計 編程語言選擇 在一開始做畢業(yè)設(shè)計時,自己首先嘗試了用匯編進行程序設(shè)計,但是隨著程序功能不斷增加,匯編就顯得非常吃力了。相對于 C 語言,匯編雖然效率最高,但匯編程序難以讀懂、流程不清,維護困難。 隨著軟件技術(shù)的不斷發(fā)展, C 語言的編譯效率也在不斷提高。統(tǒng)計表明,對于同一個問題,用 C 語言編寫的程 序生成代碼效率僅比用匯編編寫的程序低10%~20%,而且 C 語言有著很多突出的優(yōu)點: C 語言簡潔、可以直接操作計算機硬件、可移植性好、表達能力強、可以進行結(jié)構(gòu)化程序設(shè)計、生成代碼效率高等。 程序設(shè)計與流程圖 主程序設(shè)計思想: 1 為了使顯示穩(wěn)定,每過 5ms 則在中斷程序中進行一次屏幕刷新 2 為了保證按鍵消抖效果,每 10ms 在中斷程序中必須讀一次按鍵端口。同時為了使中斷程序盡量小,處理按鍵則放到了主程序中進行。 3 對于單片機處理事件來說 1 秒是一段很長的時間,而 時鐘的處理是以秒為單位進行的,故可以把時鐘處理的優(yōu)先級放在最低的一級,等待屏幕刷新和按鍵處理完后,才進行時鐘處理。 void main(void) { ??相關(guān)寄存器設(shè)置 time_to_timebuff()。 //時鐘初始化 while(1) { ?? //5 毫秒到,進行屏幕刷新 if (ms_10_ok == 1) //10 毫秒到,進行按鍵處理 { ms_10_ok = 0。 handle_key()。 } if (s_1_ok == 1) //1000 毫秒到時,進行時鐘理 西南科技大學(xué)本科生畢業(yè)論文 22 { s_1_ok = 0。 handle_time()。 } } } 主程序流程圖如下圖所示 圖 41 主程序流程圖 中斷處理程序 設(shè)計中一共用了 3 個定時器,它們的中斷分別用于處理“ 按鍵讀取”、“屏幕刷新”、“時鐘處理”三個任務(wù)。 為了保證中斷程序的實時性,要求中斷程序盡量短小,故在中斷程序中,常常設(shè)一 西南科技大學(xué)本科生畢業(yè)論文 23 個標(biāo)志,它表示某事件的發(fā)生,而真正的處理程序則是放在在主程序中,根據(jù)標(biāo)志的情況進行相應(yīng)的處理。在這里也是采用了這個方法。 1 定時器 2 處理每 10ms 產(chǎn)生一次中斷,用于“按鍵讀取”。 pragma vector=0x06 __interrupt void timer2_p_isr(void) { ms_10_ok = 1。 //表示 10ms 已到的標(biāo)志 key = read_key()。 //僅僅是按鍵端口的讀取,而按鍵的處理則 } //在主程序中 2 定時器 1 每 1 s 中斷一次,用于“時鐘處理”。 pragma vector=0x0C __interrupt void timer1_pa_isr(void) { s_1_ok = 1。 //表示 1000ms 已到的標(biāo)志 } 3 定時器 0 每 5ms 產(chǎn)生一次中斷,用于“屏幕刷新”。 pragma vector=0x12 //5ms 已到的中斷程序,進行屏幕刷新 __interrupt void timer0_ovf_isr(void) { TCNT0=0x05。 switch(dp_tag) { case 0: display()。 break。 case 1: display_L()。 break。 case 2: display_tf()。 break。 case 3: display_ts()。 break。 case 4: display_ys()。 break。 default: dp_tag = 0。 } } 西南科技大學(xué)本科生畢業(yè)論文 24 屏幕刷新流程圖如下: 圖 42 屏幕刷新流程圖 按鍵讀取程序 在本次按鍵設(shè)計中,采用狀態(tài)機的思想進行了按鍵程序編寫。程序?qū)崿F(xiàn)了按一下按鍵,返回一個按鍵值,取得按鍵值取得后,供主程序按鍵處理函數(shù)使用。 若無按鍵按下,則程序返回 no_key。 此次設(shè)計采用了 6 個按鍵,由 PC 端口進行識別。由于 PC 共有 7 個引腳端口,設(shè)計中采用了屏蔽位方式 key_value = key_maskamp。PINC,屏蔽掉沒有使用的引腳,這樣可以節(jié)約一個 I/O 端口資源。 西南科技大學(xué)本科生畢業(yè)論文 25 unsigned char read_key(void) { unsigned char key_return = no_key。 switch(key_state) { case 0x00: key_value = key_maskamp。PINC。 if (key_value != key_mask) { key_state++。 break。 } break。 case 0x01: if (key_value == (key_maskamp。PINC)) { switch(key_value) { case 0x3E: //0b00111110: key_return = pause。 break。 case 0x3D: //0b00111101: key_return = enter。 break。 case 0x3B: //0b00111011: key_return = up。 break。 case 0x37: //0b00110111: key_return = set。 break。 case 0x2F: //0b00101111: key_return = down。 break。 case 0x1F: //0b00011111: key_return = cancle。 break。 } key_state++。 } else key_state。 break。 case 0x02: if ((key_maskamp。PINC) == key_mask) key_state = 0。 break。 西南科技大學(xué)本科生畢業(yè)論文 26 default: key_state = 0。 } return key_return。 } 按鍵讀取流程圖: 圖 43 按鍵讀取流程圖 西南科技大學(xué)本科生畢業(yè)論文 27 按鍵處理程序: 按鍵的處理放在在主程序中進行。詳細的按鍵處理程序見附錄中的程序清單 中 void handle_key(void)函數(shù)。 設(shè)計中 6 個按鍵的功能依次如下: Pause/Start:按下此鍵后,時鐘在“暫停運行”和“正常運行”之間進 行切換。 Set:依次按下 Set 鍵后,程序運行在“調(diào)分”、“調(diào)時”、“調(diào)速”中進行切換。 Up:在“調(diào)分”、“調(diào)時”、“調(diào)速”中,相應(yīng)數(shù)字增加。 Down:在“調(diào)分”、“調(diào)時”、“調(diào)速”中,相應(yīng)數(shù)字減少。 Enter:在“調(diào)分”、“調(diào)時”、“調(diào)速”調(diào)整好后,按下此按鍵,調(diào)整生效。 Cancle/Dp_mode 有兩個功能: 1 在“調(diào)分”、“調(diào)時”、“調(diào)速”時,取消調(diào)整。 2 在“正常顯示”和“左移顯示之間”進行切換。 注意: 1 在“暫停運行”時,其它 5 個 按鍵均無效; 2 Up、 Down、 Enter 僅在有 Set 按下時,方可有效。 按鍵處理流程圖如下: (見下頁 ) 西南科技大學(xué)本科生畢業(yè)論文 28 圖 43 按鍵處理流程圖 西南科技大學(xué)本科生畢業(yè)論文 29 正常 /調(diào)分 /調(diào)時顯示程序: 正常顯示,調(diào)分顯示,調(diào)時顯示的算法原理都相同 —— 靜態(tài)地在 16*64 點陣上顯示相應(yīng)的漢字或數(shù)字,下面以正常顯示為例進行說明: 正常顯示是在點陣上顯示時間,如 23:56:58,由于數(shù)字和“ :”均采用 16*8 點陣取模形式,“ 23:56:58”一共占 16
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1