




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGEPAGE1教案學習領域項目1智能霓虹燈設計學習情境任務1單片機點亮LED序號1課型理實一體化課時4教具學具電教設施pc機;keil以及proteus軟件;任務書(供學生用);課件教學目標知識目標①了解單片機歷史、發展及應用②掌握Keil中如何新建工程③掌握Proteus中繪制電路圖的一般方法能力目標①能夠通過Keil和Proteus軟件的初步使用,提高觀察和分析能力②能夠單片機為什么能點亮LED,培養邏輯思維能力③能夠單片機搭建最小系統,提高分析和解決問題的能力情感目標①能夠透過實驗現象歸納事物本質②培養學生對本專業的職業認同感③培養學生科學探索的興趣、嚴謹扎實的工作作風和團結協作精神教學重難點重點①Keil中如何新建工程②Proteus中繪制電路圖的一般方難點①單片機為什么能點亮LED②單片機C51規范學法教法實驗探究、任務引領法、討論法、張貼法、頭腦風暴法、演示法教學內容更新、補充、刪節增加了直接用電源和地點亮LED的案例參考資料課后體會學生在任務的驅動下,利用仿真電路自主探究電路規律,結合教師對相關知識點的講授,達到對所學知識的掌握。這個思路帶來了很好的教學效果,但增加的實驗部分會使得教學時數稍顯緊張,這一點還需日后改進。教與學互動設計教師活動內容學生活動內容一、組織教學(2分鐘)1.首先清點學生出勤情況,填寫考勤記錄。2.檢查學生工作服、帽、鞋等是否符合安全要求。3.宣布今天的實習內容、技術要求、工時、勞動紀律等。4.強調生產實習安全注意事項。5.學生分組分上機、實習工位。6.發放任務書、自評和互評表以及白紙到每組的學生手中。二、布置任務(3分鐘)下達任務,用單片機P1.0引腳點亮一LED。1.什么是單片機。2.單片機有什么用。3.KeilC51以及proteus軟件的基本使用。三、資訊計劃(25分鐘)(一)單片機的概念1.發展歷程2.單片機的特點3.應用領域(二)C51基礎#include<reg51.h>//引入頭文件sbitLED=P1^0;//P1.0引腳定義為變量LEDmain()//主程序開始{LED=1;//點亮LED}(三)KeilμVision4軟件的使用(四)Proteus的使用四、計劃實施(50分鐘)在proteus中繪制如下電路圖:然后在keil中新建工程,錄入下面程序,并生成.hex文件。#include<reg51.h>//引入頭文件sbitLED=P1^0;//P1.0引腳定義為變量LEDmain()//主程序開始{LED=1;//點亮LED}一般由強調操作要領、入門指導、巡回指導和結束指導四個環節組成。五、成果展示與評價(6分鐘)根據實施演示結果,小組學生總結自己在項目(任務)實施中遇到的問題以及是如何解決的,給其他小組提供借鑒作用,共同提高。教師對于各小組優點給予肯定并進行項目(任務)實施的總體評價,將實施結果進行資料匯總保存。六、教師小結點評(2分鐘)知識、技能總結以及對表現突出小組和個人的表揚。七、布置任務(2分鐘)1.總結Keil中新建工程的步驟。2.總結如何在proteus查找元件。八、繪制最小系統PCB,焊接進行實物測試(90分鐘)單片機有什么用C51基本結構Keil如何新建工程Proteus如何繪制電路圖學生上機操練自評、互評教案學習領域項目1智能霓虹燈設計學習情境任務2左移右移實現流水燈序號2課型理實一體化課時2教具學具電教設施pc機;keil以及proteus軟件;任務書(供學生用);課件教學目標知識目標①掌握Keil中如何新建工程以及Proteus中繪制電路圖的一般方法②掌握P0~P3口的基本原理③掌握C51的左移和右移函數能力目標①能夠通過Keil和Proteus軟件的初步使用,提高觀察和分析能力②能夠單片機實現流水燈,培養邏輯思維能力③能夠單片機搭建最小系統,提高分析和解決問題的能力情感目標①能夠透過實驗現象歸納事物本質②培養學生對本專業的職業認同感③培養學生科學探索的興趣、嚴謹扎實的工作作風和團結協作精神教學重難點重點①Keil中如何新建工程②Proteus中繪制電路圖的一般方法難點①掌握P0~P3口的基本原理②C51的左移和右移函數學法教法實驗探究、任務引領法、討論法、張貼法、頭腦風暴法、演示法教學內容更新、補充、刪節增加了直接用電源和地點亮LED的案例參考資料課后體會學生在任務的驅動下,利用仿真電路自主探究電路規律,結合教師對相關知識點的講授,達到對所學知識的掌握。這個思路帶來了很好的教學效果,但增加的實驗部分會使得教學時數稍顯緊張,這一點還需日后改進。教與學互動設計教師活動內容學生活動內容一、組織教學(2分鐘)1.首先清點學生出勤情況,填寫考勤記錄。2.檢查學生工作服、帽、鞋等是否符合安全要求。3.宣布今天的實習內容、技術要求、工時、勞動紀律等。4.強調生產實習安全注意事項。5.學生分組分上機、實習工位。6.發放任務書、自評和互評表以及白紙到每組的學生手中。二、布置任務(3分鐘)下達任務,用單片機P1口八個引腳點亮8只LED,實現流水燈效果三、資訊計劃(25分鐘)(一)單片機硬件結構(學生自學)(二)并行口重點是P0口原理講解(三)單片機最小系統四、計劃實施(50分鐘)在proteus中繪制如下電路圖:然后在keil中新建工程,錄入下面程序,并生成.hex文件。#include<reg51.h>//包含單片機寄存器的頭文件sfrx=0x90;//P1口在存儲器中的地址是90H,通過sfr可定義8051內核單片機//的所有內部8位特殊功能寄存器,對地址x的操作也就是對P1口的操作/****************************************函數功能:延時一段時間*****************************************/voiddelay(void){ unsignedchari,j; for(i=0;i<250;i++) for(j=0;j<250;j++) ;//利用循環等待若干機器周期,從而延時一段時間 }/*****************************************函數功能:主函數******************************************/voidmain(void){while(1) { x=0xfe;//第一個燈亮 delay();//調用延時函數 x=0xfd;//第二個燈亮 delay();//調用延時函數 x=0xfb;//第三個燈亮 delay();//調用延時函數 x=0xf7;//第四個燈亮 delay();//調用延時函數 x=0xef;//第五個燈亮 delay();//調用延時函數 x=0xdf;//第六個燈亮 delay();//調用延時函數 x=0xbf;//第七個燈亮 delay();//調用延時函數 x=0x7f;//第八個燈亮 delay();//調用延時函數 }進階提高:1._crol_和_cror_函數單片機實現霓虹燈也可以通過KeilC51的移位函數_crol_和_cror_函數來完成。_crol_,_cror_:將char型變量循環向左(右)移動指定位數后返回;_iror_,_irol_:將int型變量循環向左(右)移動指定位數后返回;_lrol_,_lror_:將long型變量循環向左(右)移動指定位數后返回。下面舉例說明:a=10001000;
a=_crol_(a,1);//左移一位//
程序執行后,a=00010001
又如a=10001000;
a=_crol_(a,2);//左移兩位//
程序執行后,a=00100010;
再如a=10001000;
a=_cror_(a,1);//右移一位//
程序執行后,a=01000100;
2.Keil中直接打印輸出用移位函數實現流水燈代碼如下:#include<reg51.h>#include<intrins.h>#defineucharunsignedchar//宏定義,定義uint為無符號整型#defineuintunsignedint//宏定義,定義uint為無符號整型voiddelayms(ucharxms)//延時函數{uchari,j;for(i=0;i<xms;i++)for(j=0;j<120;j++);}voidmain(){uinta=0xef;//a=0xef;while(1){P1=a;//P1=0xef; delayms(500);//延時 a=_cror_(a,1);//a循環右移一位}五、成果展示與評價(6分鐘)根據實施演示結果,小組學生總結自己在項目(任務)實施中遇到的問題以及是如何解決的,給其他小組提供借鑒作用,共同提高。教師對于各小組優點給予肯定并進行項目(任務)實施的總體評價,將實施結果進行資料匯總保存。六、教師小結點評(2分鐘)知識、技能總結以及對表現突出小組和個人的表揚。七、布置任務(2分鐘)1.總結Keil中新建工程的步驟。2.總結如何在proteus查找元件。點亮方式有哪些C51基本結構Keil如何新建工程Proteus如何繪制電路圖學生上機操練自評、互評教案學習領域項目1智能霓虹燈設計學習情境任務3任意花樣霓虹燈序號3課型理實一體化課時4教具學具電教設施pc機;keil以及proteus軟件;任務書(供學生用);課件教學目標知識目標①掌握Keil中如何新建工程以及Proteus中繪制電路圖的一般方法②掌握P0~P3口的基本原理③掌握C51的左移和右移函數能力目標①能夠通過Keil和Proteus軟件的初步使用,提高觀察和分析能力②能夠實現任意花樣霓虹燈,培養邏輯思維能力③能夠單片機搭建最小系統,提高分析和解決問題的能力情感目標①能夠透過實驗現象歸納事物本質②培養學生對本專業的職業認同感③培養學生科學探索的興趣、嚴謹扎實的工作作風和團結協作精神教學重難點重點①Keil中如何新建工程②Proteus中繪制電路圖的一般方難點①掌握P0~P3口的基本原理②C51的左移和右移函數學法教法實驗探究、任務引領法、討論法、張貼法、頭腦風暴法、演示法教學內容更新、補充、刪節參考資料課后體會學生在任務的驅動下,利用仿真電路自主探究電路規律,結合教師對相關知識點的講授,達到對所學知識的掌握。這個思路帶來了很好的教學效果,但增加的實驗部分會使得教學時數稍顯緊張,這一點還需日后改進。教與學互動設計教師活動內容學生活動內容一、組織教學(2分鐘)1.首先清點學生出勤情況,填寫考勤記錄。2.檢查學生工作服、帽、鞋等是否符合安全要求。3.宣布今天的實習內容、技術要求、工時、勞動紀律等。4.強調生產實習安全注意事項。5.學生分組分上機、實習工位。6.發放任務書、自評和互評表以及白紙到每組的學生手中。二、布置任務(3分鐘)下達任務,用單片機P1口八個引腳點亮8只LED,實現流水燈效果三、資訊計劃(25分鐘)(一)灌電流和拉電流四、計劃實施(50分鐘)在proteus中繪制如下電路圖:然后在keil中新建工程,錄入下面程序,并生成.hex文件。#include"reg51.h"#defineuintunsignedint#defineucharunsignedcharvoiddelay(unsignedintxms){uinti,j;for(i=xms;i>0;i--)for(j=120;j>0;j--);}voidmain(){unsignedchari;unsignedchardisplay[]={0xe7,0xdb,0xbd,0x7e};while(1){for(i=0;i<4;i++){P1=display[i]; //顯示字送P1口delay(400); //延時 }} }進階提高:按教材繪制心形電路。重點講解總線的繪制以及proteus中的快速標注。#include<reg51.h>//51單片機頭文件#defineucharunsignedchar//將unsignedchar定義為uchar#defineuintunsignedint//將unsignedchar定義為uintucharcodetable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//定義八個燈的工作狀態voiddelay(uinttime)/*延時子程序*/{while(--time);//當time的值為非0時,執行空語句。}voidmain()/*主程序*/{uchari;//定義一個無符號字符變量。while(1)////做一個死循環{/*流水燈從左向右快速流動*/for(i=0;i<8;i++)//for語句判斷條,i<8成立時,執行大括號里面程序{P1=table[i];//P1口對應取值,八個燈的狀態delay(25000);//延時子程序調用}/*流水燈從右向左快速流動*/for(i=7;i>0;i--)//for語句判斷條,i>0成立時,執行大括號里面程序{P1=table[i];//P1口對應取值,八個燈的狀態delay(25000);//延時子程序調用}/*流水燈間隔閃亮*/for(i=10;i>0;i--){P1=0x55;//2、4、6、8的LED亮delay(25000);//延時子程序調用P1=0xaa;//1、3、5、7的LED亮delay(25000);//延時子程序調用}/*流水燈從左向右閃動*/for(i=0;i<8;i++)//for語句判斷條件{P1=table[i];//P1口對應取值,八個燈的狀態delay(25000);//延時子程序調用P1=0xff;//8個燈全亮delay(25000);//延時子程序調用P1=table[i];//P1口對應取值,八個燈的狀態delay(25000);//延時子程序調用}/*流水燈從右向左閃動*/for(i=7;i>0;i--)//for語句判斷條件{P1=table[i];//P1口對應取值,八個燈的狀態delay(25000);//延時子程序調用P1=0xff;//8個燈全亮delay(25000);//延時子程序調用P1=table[i];//P1口對應取值,八個燈的狀態delay(25000);//延時子程序調用}}}五、成果展示與評價(6分鐘)根據實施演示結果,小組學生總結自己在項目(任務)實施中遇到的問題以及是如何解決的,給其他小組提供借鑒作用,共同提高。教師對于各小組優點給予肯定并進行項目(任務)實施的總體評價,將實施結果進行資料匯總保存。六、教師小結點評(2分鐘)知識、技能總結以及對表現突出小組和個人的表揚。七、布置任務(2分鐘)1.總結Keil中新建工程的步驟。2.總結如何在proteus查找元件。3.proteus中快速加標注的方法。八、繪制本項目PCB,焊接進行實物測試(90分鐘)學生邊聽邊查閱相關資料C51基本結構Keil如何新建工程Proteus如何繪制電路圖學生上機操練學生邊做邊聽自評、互評教案學習領域項目2簡易搶答器設計學習情境任務1獨立按鍵識別檢測序號4課型理實一體化課時2教具學具電教設施pc機;keil以及proteus軟件;任務書(供學生用);課件教學目標知識目標①掌握Keil中如何新建工程以及Proteus中繪制電路圖的一般方法②掌握按鍵識別檢測原理③掌握去抖動的一般方法能力目標①能夠通過Keil和Proteus軟件的初步使用,提高觀察和分析能力②能夠獨立按鍵檢測并編寫程序,培養邏輯思維能力③能夠單片機搭建最小系統,提高分析和解決問題的能力情感目標①能夠透過實驗現象歸納事物本質②培養學生對本專業的職業認同感③培養學生科學探索的興趣、嚴謹扎實的工作作風和團結協作精神教學重難點重點①Keil中如何新建工程以及Proteus中繪制電路圖的一般方法②去抖動的一般方法難點①掌握按鍵識別檢測原理②去抖動的一邊拿方法學法教法實驗探究、任務引領法、討論法、張貼法、頭腦風暴法、演示法教學內容更新、補充、刪節參考資料課后體會學生在任務的驅動下,利用仿真電路自主探究電路規律,結合教師對相關知識點的講授,達到對所學知識的掌握。這個思路帶來了很好的教學效果,但增加的實驗部分會使得教學時數稍顯緊張,這一點還需日后改進。教與學互動設計教師活動內容學生活動內容一、組織教學(2分鐘)1.首先清點學生出勤情況,填寫考勤記錄。2.檢查學生工作服、帽、鞋等是否符合安全要求。3.宣布今天的實習內容、技術要求、工時、勞動紀律等。4.強調生產實習安全注意事項。5.學生分組分上機、實習工位。6.發放任務書、自評和互評表以及白紙到每組的學生手中。二、布置任務(3分鐘)下達任務,用單片機P2.7引腳接一按鍵,當按下按鍵時,P1.0所接LED亮,再次按下按鍵時,P1.0所接LED滅,如此重復。三、資訊計劃(25分鐘)(一)按鍵去抖動四、計劃實施(50分鐘)在proteus中繪制如下電路圖:然后在keil中新建工程,錄入下面程序,并生成.hex文件。#include<reg51.h>//包含頭文件#defineucharunsignedchar#defineuintunsignedintsbitLED=P1^0; sbitkey1=P2^7;//按鍵定義voiddelay10ms(void){uchari,k;//變量定義for(i=20;i>0;i--)for(k=250;k>0;k--);}voidmain(void)//主函數{while(1){if(key1==0){delay10ms();if(key1==0)//去抖動{LED=~LED;while(key1==0);//未松開按鍵,就一直保持上面狀態,防止二次判定按鍵動作}}}}進階提高:使用AT89C51單片機,設計一個具有8個按鍵的獨立式鍵盤,每個按鍵對應一個發光二極管。功能要求:無鍵按下時,鍵盤輸出全為“1”,發光二極管全部熄滅;有鍵按下時,其所對應發光二極管點亮。獨立按鍵電路對應的程序代碼如下:#include<reg52.h>//包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義#defineucharunsignedchar //宏定義#defineuintunsignedint#defineKeyPortP0//P0定義為KeyPortvoiddelay10ms(void)//10ms延時子程序{uchari,k;for(i=20;i>0;i--)for(k=250;k>0;k--);}unsignedcharKeyScan(void)//按鍵掃描程序{unsignedcharkeyvalue,key;if(KeyPort!=0xff)//判斷是否有鍵按下{delay10ms();//去抖動if(KeyPort!=0xff)//二次判斷是否有鍵按下 { keyvalue=KeyPort;//讀按鍵狀態 while(KeyPort!=0xff);//按鍵松開時,KeyPort=0xff,while語句條件不滿足,開始執行switch語句。 switch(keyvalue) { case0xfe:key=0xfe;break;//點亮第一個發光二極管 case0xfd:key=0xfd;break;//點亮第二個發光二極管 case0xfb:key=0xfb;break;//點亮第三個發光二極管 case0xf7:key=0xf7;break;//點亮第四個發光二極管 case0xef:key=0xef;break;//點亮第五個發光二極管 case0xdf:key=0xdf;break;//點亮第六個發光二極管 case0xbf:key=0xbf;break; //點亮第七個發光二極管 case0x7f:key=0x7f;break; //點亮第八個發光二極管 default:key=0xff;break;//其他情況,熄滅發光二極管 } }}if(key==0)key=0xff;returnkey;}voidmain() //主函數{P1=0xff;//熄滅所有while(1){ P1=KeyScan();//按鍵值送P1口 }}五、成果展示與評價(6分鐘)根據實施演示結果,小組學生總結自己在項目(任務)實施中遇到的問題以及是如何解決的,給其他小組提供借鑒作用,共同提高。教師對于各小組優點給予肯定并進行項目(任務)實施的總體評價,將實施結果進行資料匯總保存。六、教師小結點評(2分鐘)知識、技能總結以及對表現突出小組和個人的表揚。七、布置任務(2分鐘)1.P2.0引腳接一按鍵,P1.0引腳接一LED,請編程實現。學生邊聽邊查閱相關資料C51基本結構Keil如何新建工程Proteus如何繪制電路圖學生上機操練學生邊做邊聽自評、互評教案學習領域項目2簡易搶答器設計學習情境任務2一位數碼顯示序號5課型理實一體化課時4教具學具電教設施pc機;keil以及proteus軟件;任務書(供學生用);課件教學目標知識目標①了解數碼管的硬件結構②掌握單片機驅動數碼管的靜態顯示方法③掌握會推套共陰碼和共陽碼的方法能力目標①能夠通過Keil和Proteus軟件的初步使用,提高觀察和分析能力②能夠通過單片機驅動數碼管,培養邏輯思維能力③能夠單片機搭建最小系統,提高分析和解決問題的能力情感目標①能夠透過實驗現象歸納事物本質②培養學生對本專業的職業認同感③培養學生科學探索的興趣、嚴謹扎實的工作作風和團結協作精神教學重難點重點①推套共陰碼和共陽碼的方法②單片機驅動數碼管的靜態顯示方法難點①推套共陰碼和共陽碼的方法②單片機驅動數碼管的靜態顯示方法學法教法實驗探究、任務引領法、討論法、張貼法、頭腦風暴法、演示法教學內容更新、補充、刪節參考資料課后體會學生在任務的驅動下,利用仿真電路自主探究電路規律,結合教師對相關知識點的講授,達到對所學知識的掌握。這個思路帶來了很好的教學效果,但增加的實驗部分會使得教學時數稍顯緊張,這一點還需日后改進。教與學互動設計教師活動內容學生活動內容一、組織教學(2分鐘)1.首先清點學生出勤情況,填寫考勤記錄。2.檢查學生工作服、帽、鞋等是否符合安全要求。3.宣布今天的實習內容、技術要求、工時、勞動紀律等。4.強調生產實習安全注意事項。5.學生分組分上機、實習工位。6.發放任務書、自評和互評表以及白紙到每組的學生手中。二、布置任務(3分鐘)下達任務,AT89C51的P2口驅動一位共陰數碼管,如圖所示,顯示出一個數字‘5’。三、資訊計劃(25分鐘)(一)、LED數碼管原理簡述1.數碼管結構和顯示原理LED顯示器有多種結構形式,單段的圓形或方形LED常用來顯示設備的運行狀態,8段LED可以顯示各種數字和字符,所以也稱為LED數碼管,其外觀如圖所示。8段LED在控制系統中應用最為廣泛,其接口電路也具有普遍借鑒性。因此,我們介紹8段LED數碼管顯示器。(a)單段(b)8段LED顯示器實物圖單片機應用系統常用的是8段LED,如下圖2-9所示,它有其陰極和共陽極兩種。在選用共陰極的LED時,只要在某一發光二極管加上高電平,該段即點亮,反之則暗。而選用共陽極的LED時,要使某一段發光二極管發亮,則需加上低電平,反之則暗,為了保護各段LED不被損壞,需要外加限流電阻。為了要顯示某個字形,則應使此字形的相應段點亮,也即送一個不同的電平組合代表的數據來控制LED的顯示字形,此數據稱為字符的段碼。數碼管原理結構圖共陰極數碼管是將所有發光二極管的陰極接在一起作為公共端COM,當公共端接低電平時,某一段陽極上的電平為“1”時,該段點亮,電平為“0”時,該段熄滅。共陰極數碼管是將所有發光二極管的陰極接在一起作為公共端COM,當公共端接低電平時,某一段陽極上的電平為“1”時,該段點亮,電平為“0”時,該段熄滅。共陰極數據管如圖所示。共陰極數據管共陽極數碼管是將所有發光二極管的陽極接在一起作為公共端COM,當公共端接高電平時,某一段陰極上的電平為“0”時,該段點亮,電平為“1”時,該段熄滅。下圖是共陽數碼管連接原理圖。共陽光極數據管例如,要顯示‘5’字符,對于共陰極管應輸出段碼:共陰極管應輸出段碼推算表段名dpgfedcba10010010即為92H‘5’的共陽段碼10010010‘5’的共陽段碼011011011101101即為6DH共陽極管和共陰極管的段碼是互為補碼的。練一練:請推一下數字9的共陽和共陰段碼:共陽極管應輸出段碼推算表段名dpgfedcba‘9’的共陽段碼‘9’的共陽段碼數碼管字形編碼表字型共陽極代碼共陰極代碼字型共陽極代碼共陰極代碼0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3B0H4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF8EH71H7F8H07H滅FFH00H880H7FH(二)數碼管常用的驅動方式數碼管要正常顯示,就要用驅動電路來驅動數碼管的各個段碼,從而顯示出我們要的數字,因此根據數碼管的驅動方式的不同,可以分為靜態式和動態式兩類。本任務介紹靜態顯示示驅動:靜態驅動也稱直流驅動,下圖2-12即為單片機靜態驅動數碼管顯示電路,靜態驅動是指每個數碼管的每一個段碼都由一個單片機的I/O端口進行驅動,或者使用如BCD碼二-十進制譯碼器譯碼進行驅動。靜態驅動的優點是編程簡單,顯示亮度高,缺點是占用I/O端口多,如驅動5個數碼管靜態顯示則需要5×8=40根I/O端口來驅動,要知道一個AT89C51單片機可用的I/O端口才32個,實際應用時必須增加譯碼驅動器進行驅動,增加了硬件電路的復雜性。一位LED靜態顯示電路(1)顯示單個數字的源程序:#include<reg51.h>voidmain(){while(1){P1=0x06;}}四、計劃實施(50分鐘)在proteus中繪制如下電路圖:然后在keil中新建工程,錄入下面程序,并生成.hex文件。#include<reg51.h>voiddelay1s();//采用實現1秒延時子函數voidmain() //主函數{while(1){P2=0x6d;//5的共陰極段碼delay1s();}}voiddelay1s(void)//延時程序{ unsignedcharh,i,j,k;for(h=5;h>0;h--)for(i=4;i>0;i--)for(j=116;j>0;j--)for(k=214;k>0;k--);}進階提高:使用AT89C51單片機,設計一個具有8個按鍵的獨立式鍵盤,每個按鍵對應一個發光二極管。功能要求:無鍵按下時,鍵盤輸出全為“1”,發光二極管全部熄滅;有鍵按下時,其所對應發光二極管點亮。獨立按鍵電路對應的程序代碼如下:#include<reg52.h>//包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義#defineucharunsignedchar //宏定義#defineuintunsignedint#defineKeyPortP0//P0定義為KeyPortvoiddelay10ms(void)//10ms延時子程序{uchari,k;for(i=20;i>0;i--)for(k=250;k>0;k--);}unsignedcharKeyScan(void)//按鍵掃描程序{unsignedcharkeyvalue,key;if(KeyPort!=0xff)//判斷是否有鍵按下{delay10ms();//去抖動if(KeyPort!=0xff)//二次判斷是否有鍵按下 { keyvalue=KeyPort;//讀按鍵狀態 while(KeyPort!=0xff);//按鍵松開時,KeyPort=0xff,while語句條件不滿足,開始執行switch語句。 switch(keyvalue) { case0xfe:key=0xfe;break;//點亮第一個發光二極管 case0xfd:key=0xfd;break;//點亮第二個發光二極管 case0xfb:key=0xfb;break;//點亮第三個發光二極管 case0xf7:key=0xf7;break;//點亮第四個發光二極管 case0xef:key=0xef;break;//點亮第五個發光二極管 case0xdf:key=0xdf;break;//點亮第六個發光二極管 case0xbf:key=0xbf;break; //點亮第七個發光二極管 case0x7f:key=0x7f;break; //點亮第八個發光二極管 default:key=0xff;break;//其他情況,熄滅發光二極管 } }}if(key==0)key=0xff;returnkey;}voidmain() //主函數{P1=0xff;//熄滅所有while(1){ P1=KeyScan();//按鍵值送P1口 }}進階提高:使用AT89C51單片機,驅動一位數碼管。如圖所示,P1口驅動共陽數碼管,讓該數碼管輪流顯示‘H’、‘E’、‘L’、‘L’、‘O’五個字母。五、成果展示與評價(6分鐘)根據實施演示結果,小組學生總結自己在項目(任務)實施中遇到的問題以及是如何解決的,給其他小組提供借鑒作用,共同提高。教師對于各小組優點給予肯定并進行項目(任務)實施的總體評價,將實施結果進行資料匯總保存。六、教師小結點評(2分鐘)知識、技能總結以及對表現突出小組和個人的表揚。七、布置任務(2分鐘)1.P1口驅動共陽數碼管,讓該數碼管輪流顯示‘1’、‘2’、‘3’、‘4’、。。。。。‘9’10個數字。八、繪制PCB,焊接進行實物測試(90分鐘)學生邊聽邊查閱相關資料聽課學生上機操練學生邊做邊聽自評、互評教案學習領域項目2簡易搶答器設計學習情境任務36位數碼顯示序號6課型理實一體化課時2教具學具電教設施pc機;keil以及proteus軟件;任務書(供學生用);課件教學目標知識目標①掌握單片機驅動數碼管的靜態顯示方法②掌握會推套共陰碼和共陽碼的方法③掌握單片機驅動數碼管動態顯示方法能力目標①能夠通過Keil和Proteus軟件的初步使用,提高觀察和分析能力②能夠通過單片機動態顯示驅動數碼管,培養邏輯思維能力③能夠單片機搭建最小系統,提高分析和解決問題的能力情感目標①能夠透過實驗現象歸納事物本質②培養學生對本專業的職業認同感③培養學生科學探索的興趣、嚴謹扎實的工作作風和團結協作精神教學重難點重點①推套共陰碼和共陽碼的方法②單片機驅動數碼管的靜態顯示方法難點①清消隱的方法②單片機驅動數碼管動態顯示方法學法教法實驗探究、任務引領法、討論法、張貼法、頭腦風暴法、演示法教學內容更新、補充、刪節參考資料課后體會學生在任務的驅動下,利用仿真電路自主探究電路規律,結合教師對相關知識點的講授,達到對所學知識的掌握。這個思路帶來了很好的教學效果,但增加的實驗部分會使得教學時數稍顯緊張,這一點還需日后改進。教與學互動設計教師活動內容學生活動內容一、組織教學(2分鐘)1.首先清點學生出勤情況,填寫考勤記錄。2.檢查學生工作服、帽、鞋等是否符合安全要求。3.宣布今天的實習內容、技術要求、工時、勞動紀律等。4.強調生產實習安全注意事項。5.學生分組分上機、實習工位。6.發放任務書、自評和互評表以及白紙到每組的學生手中。二、布置任務(3分鐘)下達任務,用單片機驅動數碼管的動態顯示方法,在數碼管上同時顯示出1-6個數字。三、資訊計劃(25分鐘)一、動態掃描的概念所謂動態顯示就是一位一位地輪流點亮各位顯示器(掃描),對于顯示器的每一位而言,每隔一段時間點亮一次。在同一時刻只有一位顯示器在工作(點亮),利用人眼的視覺暫留效應和發光二極管熄滅時的余輝效應,看到的卻是多個字符“同時”顯示。顯示器亮度既與點亮時的導通電流有關,也與點亮時間和間隔時間的比例有關。調整電流和時間參數,可實現亮度較高較穩定的顯示。圖2-14為一個2位動態LED顯示器電路。其中段選線占用一個I/O口,控制各位LED顯示器所顯示的字形(稱為段碼或字形口);位選線需要一個I/O口,控制顯示器公共極電位(稱為位碼或字位口)。動態顯示器的優點是節省硬件資源,成本較低。但在控制系統運行過程中,要保證顯示器正常顯示,CPU必需每隔一段時間執行一次顯示子程序,占用CPU大量時間,降低了CPU的工作效率,同時顯示亮度較靜態顯示器低。二、單片機驅動數碼管動態掃描方式舉例某系統用單片機的I/O口控制兩個共陰極接法的LED顯示器。試編寫應用程序使得在LED顯示器上顯示“HP”兩個字符。圖2-14兩位動態顯示電路#include"reg51.h"#defineucharunsignedchar#defineuintunsignedintvoiddelayms(uintt)//延時程序{uinti,j;for(i=0;i<t;i++)for(j=0;j<120;j++);}main(){while(1) { P0=0x89;//H的段碼 P2=0x01;//第一個數碼管顯示 delayms(10);P2=0X00;//清消隱 P0=0x8c;//P的段碼 P2=0x02;//第二個數碼管顯示 delayms(10);P2=0x00;//清消隱}}四、計劃實施(50分鐘)在proteus中繪制如下電路圖:然后在keil中新建工程,錄入下面程序,并生成.hex文件。#include<reg51.h>#defineuintunsignedintvoiddelayms(unsignedintxms){ uinti,j; for(i=xms;i>0;i--) for(j=120;j>0;j--);}voiddisp2(){unsignedcharled[]={0xf9,0Xa4,0xb0,0x99,0x92,0x82};//設置數字“123456”的字unsignedchari,w;w=0x01; //位選碼初值為01Hfor(i=0;i<6;i++){P2=~w;//位選碼取反后送位控制口P2口w<<=1; //位選碼左移一位,選中下一位LEDP1=led[i];//顯示字型碼送P1口delayms(9); //延時10ms P1=0XFF;//必須加這句,清消隱}}main() //主函數{while(1){disp2();}}進階提高:使用AT89C51單片機,驅動八位共陽數碼管,使用下面電路圖,讓其輪流顯示數字1~8。使用_crol_函數實現。“_crol_”與“_cror_”其實就是左右循環代碼,其具有程序代碼簡單執行效率高的優點!單片機驅動8位數碼管顯示電路對應的程序代碼如下:#include<reg52.h>#include<intrins.h>#defineucharunsignedchar//宏定義uchar替換unsignedchar型ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,//定義0,1,2……9,a,b,c,d,e,f字符編碼數組0x82,0xd8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};voiddelay(intz);//延時函數聲明/*主函數*/voidmain(){inti;P2=0xfe;//開段選,打開第一位數碼管while(1)//進入大循環,開始動態掃描{for(i=0;i<8;i++)//依次掃描8位數碼管{P1=table[i+1];//給段選端P0送字型碼delay(5000);P2=_crol_(P2,1);//循環右移}}}/*定義延時函數*/voiddelay(intz){intx,y;for(x=z;x>0;x--)for(y=50;y>0;y--);}五、成果展示與評價(6分鐘)根據實施演示結果,小組學生總結自己在項目(任務)實施中遇到的問題以及是如何解決的,給其他小組提供借鑒作用,共同提高。教師對于各小組優點給予肯定并進行項目(任務)實施的總體評價,將實施結果進行資料匯總保存。六、教師小結點評(2分鐘)知識、技能總結以及對表現突出小組和個人的表揚。七、布置任務(2分鐘)1.P1口驅動共陽數碼管,讓該數碼管輪流顯示‘1。’、‘2’、‘3’、‘4’、。。。。。‘9’10個數字,注意,1后帶小數點顯示學生邊聽邊查閱相關資料聽課學生上機操練學生邊做邊聽自評、互評教案學習領域項目2簡易搶答器設計學習情境任務4手動計數器實現序號7課型理實一體化課時4教具學具電教設施pc機;keil以及proteus軟件;任務書(供學生用);課件教學目標知識目標①掌握單片機驅動數碼管動態顯示方法②掌握數碼管待顯示數百位、十位、個位數分離方法③掌握狀態機程序編制的一般方法能力目標①能夠通過Keil和Proteus軟件的初步使用,提高觀察和分析能力②能夠通過任意待顯示數,分離出百位、十位、個位數方法,培養邏輯思維能力③能夠編制按鍵狀態機程序,提高分析和解決問題的能力情感目標①能夠透過實驗現象歸納事物本質②培養學生對本專業的職業認同感③培養學生科學探索的興趣、嚴謹扎實的工作作風和團結協作精神教學重難點重點①掌握單片機驅動數碼管動態顯示方法②掌握數碼管待顯示數百位、十位、個位數分離方法難點①掌握數碼管待顯示數百位、十位、個位數分離方法②單片機驅動數碼管動態顯示方法學法教法實驗探究、任務引領法、討論法、張貼法、頭腦風暴法、演示法教學內容更新、補充、刪節參考資料課后體會學生在任務的驅動下,利用仿真電路自主探究電路規律,結合教師對相關知識點的講授,達到對所學知識的掌握。這個思路帶來了很好的教學效果,但增加的實驗部分會使得教學時數稍顯緊張,這一點還需日后改進。教與學互動設計教師活動內容學生活動內容一、組織教學(2分鐘)1.首先清點學生出勤情況,填寫考勤記錄。2.檢查學生工作服、帽、鞋等是否符合安全要求。3.宣布今天的實習內容、技術要求、工時、勞動紀律等。4.強調生產實習安全注意事項。5.學生分組分上機、實習工位。6.發放任務書、自評和互評表以及白紙到每組的學生手中。二、布置任務(3分鐘)下達任務,單片機P3.2引腳接一按鍵,最開始顯示全0,按下一次按鍵加1,把加的和用8位數碼管顯示出來。三、資訊計劃(25分鐘)實際上按鍵識別檢測也可以用狀態機來編程實現,使用狀態機最節約系統資源,如:進行按鍵檢測,只需要定時執行按鍵狀態機程序即可。下面來看看狀態機的基本概念。狀態機是軟件編程中的一個重要概念。比這個概念更重要的是對它的靈活應用。在一個思路清晰而且高效的程序中,必然有狀態機的身影浮現。比如說一個按鍵命令解析程序,就可以被看做狀態機:本來在A狀態下,觸發一個按鍵后切換到了B狀態;再觸發另一個鍵后切換到C狀態,或者返回到A狀態。這就是最簡單的按鍵狀態機例子。實際的按鍵解析程序會比這更復雜些,但這不影響我們對狀態機的認識。進一步看,擊鍵動作本身也可以看做一個狀態機。一個細小的擊鍵動作包含了:釋放、抖動、閉合、抖動和重新釋放等狀態。顯示掃描程序也是狀態機;通信命令解析程序也是狀態機;甚至連繼電器的吸合/釋放控制、發光管(LED)的亮/滅控制又何嘗不是個狀態機。當我們打開思路,把狀態機作為一種思想導入到程序中去時,就會找到解決問題的一條有效的捷徑。有時候用狀態機的思維去思考程序該干什么,比用控制流程的思維去思考,可能會更有效。這樣一來狀態機便有了更實際的功用。程序其實就是狀態機。也許你還不理解上面這句話。請想想看,計算機的大廈不就是建立在“0”和“1”兩個基本狀態的地基之上么?1.狀態機的要素狀態機可歸納為4個要素,即現態、條件、動作、次態。這樣的歸納,主要是出于對狀態機的內在因果關系的考慮。“現態”和“條件”是因,“動作”和“次態”是果。詳解如下:(1)現態:是指當前所處的狀態。(2)條件:又稱為“事件”。當一個條件被滿足,將會觸發一個動作,或者執行一次狀態的遷移。(3)動作:條件滿足后執行的動作。動作執行完畢后,可以遷移到新的狀態,也可以仍舊保持原狀態。動作不是必需的,當條件滿足后,也可以不執行任何動作,直接遷移到新狀態。(4)次態:條件滿足后要遷往的新狀態。“次態”是相對于“現態”而言的,“次態”一旦被激活,就轉變成新的“現態”了。如果我們進一步歸納,把“現態”和“次態”統一起來,而把“動作”忽略(降格處理),則只剩下兩個最關鍵的要素,即:狀態、遷移條件。2.狀態遷移圖(STD)狀態遷移圖(STD),是一種描述系統的狀態、以及相互轉化關系的圖形方式。狀態遷移圖的畫法有許多種,不過一般都大同小異。我們結合一個例子來說明一下它的畫法,如圖2-18所示。圖2-18狀態遷移圖(1)狀態框:用方框表示狀態,包括所謂的“現態”和“次態”。(2)條件及遷移箭頭:用箭頭表示狀態遷移的方向,并在該箭頭上標注觸發條件。(3)節點圓圈:當多個箭頭指向一個狀態時,可以用節點符號(小圓圈)連接匯總。(4)動作框:用橢圓框表示。(5)附加條件判斷框:用六角菱形框表示。狀態遷移圖和我們常見的流程圖相比有著本質的區別,具體體現為:在流程圖中,箭頭代表了程序PC指針的跳轉;而在狀態遷移圖中,箭頭代表的是狀態的改變。我們會發現,這種狀態遷移圖比普通程序流程圖更簡練、直觀、易懂。這正是我們需要達到的目的。四、計劃實施(50分鐘)在proteus中繪制如下電路圖:然后在keil中新建工程,錄入下面程序,并生成.hex文件。手動計數器任務對應的程序代碼如下:#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitkeyport=P3^2;#definekeystate00 //按鍵第一次按下狀態#definekeystate11 //按鍵按下確認狀態#definekeystate22charkeystate=2; //按鍵狀態初始化為按鍵無動作狀態uintnum1=0,num2=0;ucharweixuan[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位選代碼uchartemp[8]=0; //從高位到低位對應數碼管從左到右voiddelayms(uintx) //1ms{ uinty,z; for(y=x;y>0;y--) for(z=111;z>0;z--);}ucharcodetable[]={ //共陽數碼管0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};voidsmg(){uchari;for(i=0;i<8;i++){P2=weixuan[i];P1=table[temp[i]];delayms(1);P2=0xff;}}voidproc()//分離出萬位、千位、百位、十位以及個位等待顯示{ temp[0]=num1%10; temp[1]=num1%100/10; temp[2]=num1%1000/100; temp[3]=num1/1000; temp[4]=num2%10; temp[5]=num2%100/10; temp[6]=num2%1000/100; temp[7]=num2/1000;}charkeyscan(){ switch(keystate) { casekeystate0: //keystate0,第一次檢測到按鍵按下狀態,下一狀態為keystate1(按鍵按下確認狀態) keystate=keystate1; return0; casekeystate1: //keystate1,按鍵按下確認狀態,下一狀態為keystate2(按鍵無動作狀態) if(!keyport) { keystate=keystate2; while(!keyport); return1; } else keystate=keystate2; return0; casekeystate2: //keystate2,按鍵無動作狀態,下一狀態為keystate0(第一次檢測到按鍵按下狀態) if(!keyport) { keystate=keystate0; } else keystate=keystate2; return0; }}voidmain(){ while(1) { if(keyscan()) { num1++; if(num1>=10000) { num1=0; num2++; if(num2>=10000) { num2=0; } } proc(); } smg(); }}進階提高:單片機P3.2引腳接一按鍵,功能為加1按鍵,點一下加1;單片機P3.3引腳接一按鍵,功能為減一按鍵,點一下減1,在前面任務基礎上,請用狀態機編程的方法實現點加1按鍵實現加1,點減1按鈕實現減1。狀態機實現手動計數器電路對應的程序代碼如下:#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint#defineKEYP3#definekeystate00 //按鍵無動作狀態 #definekeystate11 //按鍵按下狀態 #definekeystate22 //按鍵釋放狀態charucKeyStatus=0; //按鍵狀態初始化為按鍵無動作狀態unsignedcharkeyvalue;uintnum1=0,num2=0;ucharweixuan[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};uchartemp[8]=0; //從高位到低位對應數碼管從左到右voiddelayms(uintx) //1ms{ uinty,z; for(y=x;y>0;y--) for(z=111;z>0;z--);}ucharcodetable[]={ //共陽數碼管0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};voidsmg(){uchari;for(i=0;i<8;i++){P2=weixuan[i]; //位選 P1=table[temp[i]]; //送段碼delayms(1);P2=0xff;//消隱}}voidproc()//待顯示數據的分離{ temp[0]=num1%10; temp[1]=num1%100/10; temp[2]=num1%1000/100; temp[3]=num1/1000; temp[4]=num2%10; temp[5]=num2%100/10; temp[6]=num2%1000/100; temp[7]=num2/1000;}ucharkeyscan() //按鍵掃描程序{switch(ucKeyStatus)//檢測當前狀態{casekeystate0://無按鍵按下狀態,有鍵按下則轉keystate1if(KEY!=0xff)ucKeyStatus=keystate1;break;casekeystate1://當確定按鍵按下后,列舉所有的按鍵情況if(KEY!=0xff){ keyvalue=1; if(KEY==0xfb){//是加1鍵,則加1 num1++; }else{ if(KEY==0xf7&&num1>0)//是減1鍵,則減1,同時注意只能減到0 num1--; } ucKeyStatus=keystate2;//進入按鍵釋放狀態 }else{ucKeyStatus=keystate0;}break;casekeystate2: //按鍵釋放狀態,if(KEY==0xff)ucKeyStatus=keystate0;//確認按鍵釋放狀態,則回到keystate0break;default:break;}returnkeyvalue;}voidmain(){ ucharkey; while(1) { key=keyscan(); //調用按鍵掃描程序,實際中可以設置定時器定時10ms,在10ms定時時間到才調用keyscan() if(key) { if(num1>=10000) { num1=0; num2++; if(num2>=10000) { num2=0; } } proc(); //待顯示數據預處理 keyvalue=0; } smg(); //數碼管顯示 }}五、成果展示與評價(6分鐘)根據實施演示結果,小組學生總結自己在項目(任務)實施中遇到的問題以及是如何解決的,給其他小組提供借鑒作用,共同提高。教師對于各小組優點給予肯定并進行項目(任務)實施的總體評價,將實施結果進行資料匯總保存。六、教師小結點評(2分鐘)知識、技能總結以及對表現突出小組和個人的表揚。七、布置任務(2分鐘)1.總結狀態機程序編制方法。八、繪制PCB,焊接進行實物測試(90分鐘)學生邊聽邊查閱相關資料聽課學生上機操練學生邊做邊聽學生上機操作自評、互評教案學習領域項目3抽獎器設計學習情境任務1外部中斷的使用序號8課型理實一體化課時2教具學具電教設施pc機;keil以及proteus軟件;任務書(供學生用);課件教學目標知識目標①掌握單片機中斷的概念②掌握單片機中斷的硬件結構③掌握單片機中斷的初始化操作能力目標①能夠通過Keil和Proteus軟件的初步使用,提高觀察和分析能力②能夠中斷實現LED燈的亮滅,培養邏輯思維能力③能夠編制按鍵狀態機程序,提高分析和解決問題的能力情感目標①能夠透過實驗現象歸納事物本質②培養學生對本專業的職業認同感③培養學生科學探索的興趣、嚴謹扎實的工作作風和團結協作精神教學重難點重點①掌握單片機中斷的硬件結構②掌握中斷的初始化操作難點①掌握中斷的使用②單片機中斷的初始化操作學法教法實驗探究、任務引領法、討論法、張貼法、頭腦風暴法、演示法教學內容更新、補充、刪節參考資料課后體會學生在任務的驅動下,利用仿真電路自主探究電路規律,結合教師對相關知識點的講授,達到對所學知識的掌握。這個思路帶來了很好的教學效果,但增加的實驗部分會使得教學時數稍顯緊張,這一點還需日后改進。教與學互動設計教師活動內容學生活動內容一、組織教學(2分鐘)1.首先清點學生出勤情況,填寫考勤記錄。2.檢查學生工作服、帽、鞋等是否符合安全要求。3.宣布今天的實習內容、技術要求、工時、勞動紀律等。4.強調生產實習安全注意事項。5.學生分組分上機、實習工位。6.發放任務書、自評和互評表以及白紙到每組的學生手中。二、布置任務(3分鐘)下達任務,單片機具有實時處理能力,能對外界發生的事件進行及時處理,就是依靠它的中斷系統實現的。中斷系統是計算機的重要組成部分。本任務要求利用按鍵模擬外部中斷0,當外部中斷0有中斷請求時,CPU響應該中斷請求,中斷程序使P1.0引腳所接的LED點亮,再一次按下則熄滅,如圖三、資訊計劃(25分鐘)一、中斷系統1.中斷的基本概念CPU暫時中止其正在執行的程序,轉去執行請求中斷的那個外設或事件的服務程序,等處理完畢后再返回執行原來中止的程序,這一過程叫做中斷。圖3-2中斷概念示意圖圖3-3中斷過程示意圖(1)為什么要使用中斷中斷解決了快速主機與慢速I/O設備的數據傳送,還具有如下優點:分時操作。CPU可以分時為多個I/O設備服務,提高了計算機的利用率;實時響應。CPU能夠及時處理應用系統的隨機事件,系統的實時性大大增強;可靠性高。CPU具有處理設備故障及掉電等突發性事件能力,從而使系統可靠性提高。(2)中斷源及其優先級中斷源是指能發出中斷請求,引起中斷的裝置或事件。一個單片機系統通常有多個中斷源,而單片機CPU在某一時刻只能響應一個中斷源的中斷請求,當多個中斷源同時向CPU發出中斷請求時,則必須按照“優先級別”進行排隊,CPU首先選定其中中斷級別最高的中斷源為其服務,然后按由高到低的排隊順序逐一服務,完畢后返回斷點地址,繼續執行主程序。這就是“中斷優先級”的概念。單片機系統中有一個專門用來管理中斷源的機構,它就是中斷控制寄存器,我們可以通過對其編程來設置中斷源的優先級別以及是否允許某個中斷源的中斷請求等。中斷過程是在硬件的基礎上再配以相應的軟件而實現的,不同的計算機,其硬件結構和軟件指令是不完全相同的,中斷系統也是不同的。AT89C51中斷系統的結構示意圖如圖3-4所示。圖3-4AT89C51中斷系統結構示意圖與中斷系統有關的寄存器有4個,分別是中斷源寄存器TCON和SCON、中斷允許控制寄存器IE和中斷優先級控制寄存器IP。中斷源有5個,分別為外部中斷0請求/INT0、外部中斷1請求/INT1 、定時器0溢出中斷請求TF0、定時器1溢出中斷請求1和串行口中斷請求RI和TI。5個中斷源的排列順序由中斷優先級控制寄存器IP和順序查詢邏輯電路共同決定,5個中斷源對應5個固定的中斷入口地址。2.中斷標志與中斷控制相關寄存器(1)定時器控制寄存器TCONTCON為8位特殊功能寄存器,其結構、位名稱、位地址及其功能如表3-1所示。表3-1TCON的結構、位名稱、位地址位D7D6D5D4D3D2D1D0TCONTF1TR1TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H定時中斷、外中斷請求控制寄存器TCON字節地址88H,位地址8FH~88H,與中斷請求有關的各位含義如下:IT0:INT0的觸發方式控制位。若IT=0,電平觸發,低電平有效。若IT=1,下降沿觸發,P3.2引腳出現負跳變有效。IE0:外部中斷0的中斷請求標志若IE=0,無中斷請求。若IE=1,有中斷請求。IT1:INT1的觸發方式控制位。IE1:外部中斷1的中斷請求標志。TF0:定時/計數器(T0)溢出中斷請求標志。計數器計滿產生溢出,由硬件置位,TF0=1有中斷請求,否則TF0=0(硬件會自動清0,也可由軟件清0)。TF1:定時/計數器(T1)溢出中斷請求標志。若TF1=0,無中斷請求;若TF1=1,有中斷請求。(2)串行口控制寄存器SCONSCON為8位特殊功能寄存器,其結構、位名稱、位地址及其功能如表3-2所示。表3-2SCON的結構、位名稱、位地址位D7D6D5D4D3D2D1D0SCONTIRI位地址99H98串行口控制寄存器SCON字節地址98H,位地址9FH~98H,與中斷請求有關的各位含義如下:TI:為串行口發送中斷標志位,位地址為99H。在串行口發送完一組數據時,TI由硬件自動置位(TI=1),請求中斷,當CPU響應中斷進入中斷服務程序后,TI狀態不能被硬件自動清除,而必須在中斷程序中由軟件來清除。RI:為串行口接收中斷標志位,位地址為98H。在串行口接收完一組串行數據時,RI由硬件自動置位(RI=1),請求中斷,當CPU響應中斷進入中斷服務程序后,也必須由軟件來清除RI標志。(3)中斷允許控制寄存器IEAT89C51設有專門的開中斷和關中斷指令,中斷的開放和關閉是通過中斷允許寄存器IE各位的狀態進行兩級控制的。所謂兩級控制是指所有中斷允許的總控制位和各中斷源允許的單獨控制位,每位狀態靠軟件來設定。中斷允許控制寄存器IE各位的定義及其功能等如表3-3所示。表3-3IE的結構、位名稱、位地址位D7D6D5D4D3D2D1D0IEEAESET1EX1ET0EX0位地址AFHACHABHAAHA9HA8HEX0:INT0中斷允許位.EX0=1,允許INT0中斷EX0=0,禁止INT0中斷.ET0:T0的溢出中斷允許位.ET0=1,允許T0中斷ET0=0,禁止T0中斷EX1:INT1中斷允許位。EX1=1,允許INT1中斷EX1=0,禁止INT1中斷ET1:T1的溢出中斷允許位ET1=1,允許T1中斷ET1=0,禁止T1中斷ES:串行中斷允許位ES=1,允許串行中斷ES=0,禁止串行中斷EA:中斷開放標志位EA=1,CPU開放中斷EA=0,CPU屏蔽所有的中斷(4)中斷優先級寄存器IPIP為8位特殊功能寄存器,其結構、位名稱、位地址及其功能如表3-4所示。表3-4IP的結構、位名稱、位地址位D7D6D5D4D3D2D1D0IPPSPT1PX1PT0PX0位地址BCHBBHBAHB9HB8HIP字節地址B8H,位地址BFH~BCH,與中斷請求有關的各位含義如下:PX0:外部中斷0中斷優先級控制位PX0=1,外部中斷0定義為高優先級中斷PX0=0,外部中斷0定義為低優先級中斷PT0:定時器T0中斷優先級控制位PT0=1,定時器T0定義為高優先級中斷PT0=0,定時器T0定義為低優先級中斷PX1:外部中斷1中斷優先級控制位PX1=1,外部中斷1定義為高優先級中斷PX1=0,外部中斷1定義為低優先級中斷PT1:定時器T1中斷優先級控制位PT1=1,定時器T1定義為高優先級中斷PT1=0,定時器T1定義為低優先級中斷PS:串行口中斷優先級控制位PS=1,串行口中斷定義為高優先級中斷PS=0,串行口中斷定義為低優先級中斷如果同樣優先級的請求同時接收到,則內部對中斷源的查詢次序決定先接受哪一個請求,表3-5列出了同級中斷源的內部查詢順序。表3-5中斷源的入口地址和中斷優先級中斷源入口地址外部中斷00003H最高最低T0溢出中斷000BH外部中斷10013HT1溢出中斷001BH串行口中斷0023H中斷優先級三條原則:同時收到幾個中斷時,響應優先級別最高的;中斷過程不能被同級、低優先級所中斷;低優先級中斷服務,能被高優先級中斷四、計劃實施(50分鐘)在proteus中繪制如下電路圖:然后在keil中新建工程,錄入下面程序,并生成.hex文件。程序代碼如下:#include"reg51.h"#defineucharunsignedchar#defineuintunsignedintsbitLED=P1^0;voiddelayms(uintt)//延時程序{uinti,j;for(i=0;i<t;i++)for(j=0;j<120;j++);}voidint0_init()//外部中斷0初始化程序{EA=1;//開CPU總中斷EX0=1;//允許外部中斷0中斷IT0=1;//設置下降沿觸發while(1);//原地踏步,等待中斷產生}voidint0()interrupt0//外部中斷0的中斷服務程序名字取為int0{LED=~LED; //進入中斷,就對P1.0引腳電平取反}voidmain()//主程序{ int0_init(); //調用外部中斷0初始化子程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關于幼兒教育的畢業論文
- 教育心理健康
- 學科內容與課程思政融合
- 2025至2030油漆和清漆行業產業運行態勢及投資規劃深度研究報告
- 2025至2030罐式集裝箱行業發展趨勢分析與未來投資戰略咨詢研究報告
- 2025-2030年地鐵交通產業市場深度調研及前景趨勢與投資研究報告
- 2025-2030年凍干食品行業市場深度調研及發展趨勢與投資研究報告
- 2025-2030年中國黑木耳行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年中國長曲棍球護齒行業市場現狀供需分析及投資評估規劃分析研究報告
- 數學思維品質題目及答案
- DB37T 2906-2019 運動場地合成材料面層 驗收要求
- DB34∕T 451-2017 地理標志產品 舒城小蘭花
- 《卓有成效的管理者》Word電子版電子版本
- 三生事業六大價值
- 鋯石基本特征及地質應用
- 絲網除沫器小計算
- 制缽機的設計(機械CAD圖紙)
- 學校財務管理制度
- 三年級下冊美術課件-第15課色彩拼貼畫|湘美版(共11張PPT)
- 水稻病蟲統防統治工作總結
- 水在不同溫度下的折射率、粘度和介電常數
評論
0/150
提交評論