欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 340|回復: 0
打印 上一主題 下一主題
收起左側

單片機數碼管的中斷控制工作原理與Proteus仿真圖程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:1151709 發表于 2025-5-28 09:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一、實驗相關知識點
1.掌握外部中斷的工作原理;
2.學會中斷程序設計。
二、實驗內容及要求
【實驗內容】
(1)創建一個包含80C51固件,采用Keil for 8051編譯器的新項目;
(2)仿照圖A.5和表A.4繪制電路原理圖;
(3)編寫C51源程序,要求采用中斷方法實現如下功能:程序啟動后,D1處于熄燈、LED1處于黑屏狀態;單擊K1,可使D1亮燈狀態反轉一次;單擊K2,可使LED1顯示值加1,并按十六進制數顯示,達到F后重新從1開始。
(4)完成源程序編譯和動態調試,實現實驗4的控制功能要求;
(5)完成實驗4文檔的撰寫。
【實驗要求】
提交實驗文檔并包括如下內容:
(1)電路原理圖
(2)C51源程序(含注釋語句)
(3)軟件調試分析
(4)仿真運行截圖
(5)實驗小結
三、實驗方法
1.實驗電路圖中按鍵K1和K2分別接于P3.2和P3.3,發光二極管D1接于P0.4,共陰極數碼管LED1接于P2口。
2.軟件編程原理為:將數碼管0~F的顯示字模保存在數組中,K1和K2的按鍵動作分別作為的中斷請求,在中斷函數中進行LED燈控制和數碼管顯示刷新。初始化后,主函數處于無限循環狀態,等待中斷請求。
四、實驗流程
1.電路原理圖
2.     C51源程序(含注釋語句)
  1. #include "reg51.h"// 引入8051單片機的頭文件
  2. unsigned char led_mod[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71,};         
  3. // 定義一個無符號字符型數組 led_mod,用于存儲數碼管顯示 0 - F 以及其他字符的段碼
  4. // 這里共陰極數碼管顯示 0 - F 及部分字符對應的段碼依次存儲在數組中  
  5. unsigned char count = 0; // 定義一個無符號字符型變量 count,用于記錄數碼管顯示的索引值,初始化為 0                                                                                                                                                                                                
  6. sbit P04 = P0^4;// 使用 sbit 關鍵字定義 P0 口的第 4 位為 P04,方便后續對該引腳進行操作


  7. // 外部中斷 0 的中斷服務函數,當外部中斷 0 觸發時執行此函數
  8. // 函數名為 int0_key,中斷號為 0
  9. int0_key() interrupt 0{                 
  10.         P04 = !P04; // 對 P04 引腳的電平取反,實現連接在該引腳的 LED 燈亮滅狀態的切換
  11. }


  12. // 外部中斷 1 的中斷服務函數,當外部中斷 1 觸發時執行此函數
  13. // 函數名為 int1_key,中斷號為 2
  14. int1_key() interrupt 2{           
  15.         P2 = led_mod[count];        
  16.         if (++count>=0x10) count=0;
  17.         // 先將 count 的值加 1,然后判斷是否大于等于 0x10
  18.        // 如果大于等于 0x10,則將 count 重新置為 0,實現循環顯示  
  19. }

  20. // 主函數,程序的入口點
  21. void main(){
  22.         IT0=IT1=EX0=EX1=EA=1;   
  23.         // 設置外部中斷 0 和外部中斷 1 的觸發方式為下降沿觸發
  24.         // IT0 控制外部中斷 0 的觸發方式,IT1 控制外部中斷 1 的觸發方式
  25.         // EX0 使能外部中斷 0,EX1 使能外部中斷 1
  26.         // EA 是總中斷允許位,置 1 表示允許所有中斷                                         
  27.         P2 = 0;        // 將 P2 口初始化為低電平,即數碼管初始不顯示任何字符                                                                          
  28.         while(1);
  29.         // 主函數進入一個無限循環,程序會一直停留在這個循環中
  30.         // 等待外部中斷的觸發,當有中斷觸發時,會跳轉到相應的中斷服務函數執行
  31. }
復制代碼
3.     程序分析
這段代碼主要功能是利用外部中斷來控制硬件設備。具體而言,通過外部中斷 0 控制一個 LED 燈(連接在 P0.4 引腳)的亮滅狀態切換,通過外部中斷 1 控制共陰極數碼管(連接在 P2 口)循環顯示預設的字符段碼。
(1)頭文件包含
引入了reg51.h頭文件,該頭文件中定義了 8051 單片機的特殊功能寄存器和位定義,使得代碼可以方便地訪問和操作單片機的各個寄存器。
(2)數碼管段碼數組
定義了一個無符號字符型數組led_mod,用于存儲共陰極數碼管顯示 0 - F 以及其他字符的段碼。每個元素對應一個字符的顯示編碼,當需要顯示某個字符時,只需將對應的段碼輸出到數碼管的控制端口。
(3)計數器變量
定義了一個無符號字符型變量count,初始值為 0。該變量作為索引,用于從led_mod數組中選取要顯示的段碼,同時在外部中斷 1 的處理中用于控制顯示的循環。
(4)引腳定義
使用sbit關鍵字將 P0 口的第 4 位定義為P04,這樣在代碼中可以直接使用P04來操作該引腳,提高了代碼的可讀性和可維護性。
(5)外部中斷 0 服務函數
函數名為int0_key。中斷號為0,表示這是外部中斷 0 的服務函數。當外部中斷 0 觸發時,將P04引腳的電平取反,從而實現連接在該引腳的 LED 燈亮滅狀態的切換。
(6)外部中斷 1 服務函數
函數名為int1_key,中斷號為2,表示這是外部中斷 1 的服務函數。功能是將led_mod數組中索引為count的段碼賦值給 P2 口,驅動數碼管顯示對應的字符。并將count的值加 1,然后判斷是否大于等于0x10。如果大于等于0x10,則將count重新置為 0,實現數碼管顯示的循環。
(7)主函數
中斷和觸發方式設置:IT0 = IT1 = 1,將外部中斷 0 和外部中斷 1 的觸發方式設置為下降沿觸發。EX0 = EX1 = 1,使能外部中斷 0 和外部中斷 1。EA = 1,使能總中斷,允許所有中斷源產生中斷。
數碼管初始化:P2 = 0,將 P2 口初始化為低電平,使數碼管初始狀態不顯示任何字符。
無限循環:while(1);,主函數進入一個無限循環,程序會一直停留在這個循環中,等待外部中斷的觸發。當有中斷觸發時,程序會跳轉到相應的中斷服務函數執行。
4.     軟件調試
5.     仿真運行截圖


實驗結論
本次實驗基于 80C51 單片機,成功運用 Keil for 8051 編譯器完成項目創建與代碼編寫,通過繪制電路原理圖并搭建硬件連接,實現了外部中斷控制功能。其中,K1 按鍵觸發外部中斷 0,能夠準確實現 D1 亮燈狀態的反轉;K2 按鍵觸發外部中斷 1,可使 LED1 按十六進制數規律循環顯示數值。經編譯調試與仿真運行,程序穩定運行,功能完全符合預期,驗證了外部中斷工作原理在單片機控制系統中的有效性和實用性,達到了實驗目標。


實驗個人體會
通過本次實驗,我對外部中斷的工作機制有了更深刻的理解,從理論學習到實際編程調試,掌握了中斷程序設計的基本方法和技巧。在調試過程中,遇到過按鍵抖動導致誤觸發、數碼管顯示異常等問題,通過查閱資料和逐步排查,最終得以解決,這極大地提升了我的問題分析和解決能力。同時,也意識到代碼規范性、注釋添加以及硬件連接準確性的重要性。未來,我將繼續深入學習單片機知識,加強實踐操作,提升綜合應用能力,以便更好地應對復雜的嵌入式系統開發任務。

仿真文件和Word ppt下載: 實驗5.7z (979.97 KB, 下載次數: 0)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表