單片機(jī)答辯倒計(jì)時(shí)器課程設(shè)計(jì)報(bào)告_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  《單片機(jī)原理及應(yīng)用》</p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  專 業(yè) 電子信息工程</p><p>  班 級 </p><p>  姓 名 </p><p>  指導(dǎo)

2、老師 </p><p>  二0一二 年 十二 月 二十五 日</p><p><b>  課程設(shè)計(jì)任務(wù)書</b></p><p>  一、設(shè)計(jì)題目:答辯倒計(jì)時(shí)器</p><p><b>  二、設(shè)計(jì)要求 </b></p><p>  設(shè)計(jì)一個(gè)答辯倒計(jì)時(shí)器,

3、用2位數(shù)碼管顯示剩余分鐘,2位數(shù)碼管顯示剩余秒 ,復(fù)位后顯示10.00表示設(shè)定10分鐘,并可加減修改,按開始/取消按鈕開始倒計(jì)時(shí),再次按開始/取消按鈕則復(fù)位,時(shí)間到則蜂鳴音提示??傮w要求如下:</p><p>  1、方案論證,確定總體電路原理圖。 </p><p>  2、元器件選擇,設(shè)計(jì)PCB圖(或用萬能電路實(shí)驗(yàn)板搭線)。</p><p>  3、繪制程序流程圖

4、,編寫匯編語言源程序(或C語言源程序)。</p><p>  4、安裝調(diào)試,實(shí)現(xiàn)倒計(jì)時(shí)器的基本功能。 </p><p><b>  三、設(shè)計(jì)報(bào)告內(nèi)容</b></p><p>  1、寫出設(shè)計(jì)方案(包括方案對比,方案確定),給出完整的電路原理圖和設(shè)計(jì)程序流程圖。 </p><p>  2、對所設(shè)計(jì)方案的實(shí)現(xiàn)進(jìn)行全面分析。&

5、lt;/p><p>  3、編程調(diào)試方法和程序清單。</p><p>  4、安裝調(diào)試過程,出現(xiàn)的各種現(xiàn)象,總結(jié)經(jīng)驗(yàn)和體會(huì)。</p><p>  5、進(jìn)一步完善的設(shè)想。</p><p><b>  目 錄</b></p><p>  一、課程設(shè)計(jì)目的1</p><p>

6、  二、課程設(shè)計(jì)題目描述和要求1</p><p>  三、課程設(shè)計(jì)報(bào)告內(nèi)容1</p><p>  3.2 硬件電路3</p><p>  3.2.1 復(fù)位電路3</p><p>  3.2.2 晶振電路4</p><p>  3.2.3 單片機(jī)最小系統(tǒng)4</p><p>  3.2

7、.4 硬件流程圖4</p><p>  3.3 源程序設(shè)計(jì)5</p><p>  3.3.1 程序清單5</p><p>  3.3.2 程序流程圖6</p><p><b>  四、設(shè)計(jì)過程7</b></p><p><b>  4.1實(shí)踐步驟7</b>&l

8、t;/p><p><b>  4.2實(shí)踐標(biāo)準(zhǔn)7</b></p><p><b>  4.3系統(tǒng)調(diào)試7</b></p><p>  4.3.1 硬件調(diào)試7</p><p>  4.3.2 軟件調(diào)試9</p><p>  五、設(shè)計(jì)報(bào)告總結(jié)10</p><

9、p>  六、總結(jié)經(jīng)驗(yàn)和體會(huì)11</p><p>  七、進(jìn)一步完善的設(shè)想12</p><p><b>  八、參考書目12</b></p><p>  附錄一:成品效果圖13</p><p>  附錄二:倒計(jì)時(shí)器源程序(C語言)13</p><p><b>  一、課程設(shè)

10、計(jì)目的 </b></p><p>  1、鞏固和加深單片機(jī)原理課程知識的理解和運(yùn)用。 </p><p>  2、進(jìn)一步提高學(xué)生單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)能力。 </p><p>  3、培養(yǎng)學(xué)生綜合分析問題、發(fā)現(xiàn)問題和解決問題的能力。</p><p>  二、課程設(shè)計(jì)題目描述和要求</p><p>  設(shè)計(jì)一個(gè)

11、答辯倒計(jì)時(shí)器,用2位數(shù)碼管顯示剩余分鐘,2位數(shù)碼管顯示剩余秒 ,復(fù)位后顯示10.00表示設(shè)定10分鐘,并可加減修改,按開始/取消按鈕開始倒計(jì)時(shí),再次按開始/取消按鈕則復(fù)位,時(shí)間到則蜂鳴音提示??傮w要求如下:</p><p>  1、方案論證,確定總體電路原理圖。 </p><p>  2、元器件選擇,設(shè)計(jì)PCB圖(或用萬能電路實(shí)驗(yàn)板搭線)。</p><p>  3、

12、繪制程序流程圖,編寫匯編語言源程序(或C語言源程序)。</p><p>  4、安裝調(diào)試,實(shí)現(xiàn)倒計(jì)時(shí)器的基本功能。 </p><p>  三、課程設(shè)計(jì)報(bào)告內(nèi)容</p><p>  3.1元器件清單及所用儀器設(shè)備</p><p>  表1-1 設(shè)備清單</p><p>  表1-2 元器件清單

13、 </p><p>  表1-3 工具清單</p><p><b>  3.2 硬件電路</b></p><p>  倒計(jì)時(shí)器硬件電路原理圖如下圖所示。</p><p><b>  圖1 電路原理圖</b></p><p>  3.2.1 復(fù)位電路</p&

14、gt;<p>  復(fù)位電路產(chǎn)生復(fù)位信號,復(fù)位信號送入 RST 后還要送至片內(nèi)的施密特觸發(fā)器,由片內(nèi)復(fù)位電路在每個(gè)機(jī)器周器的 S5P2 時(shí)刻對觸發(fā)器輸出采樣信號,然后由內(nèi)部復(fù)位電路產(chǎn)生復(fù)位操作所要的信號。一般的復(fù)位電路可分為上電自動(dòng)復(fù)位和按鍵復(fù)位,我們在此選用的是上電復(fù)位。上電自動(dòng)復(fù)位原理:RST 引腳是復(fù)位信號的輸入端,只要高電平的復(fù)位信號持續(xù)兩個(gè)機(jī)器周期以上的有效時(shí)間,就可以使單片機(jī)上電復(fù)位。上電自動(dòng)復(fù)位是通過電容充電實(shí)

15、現(xiàn)的,上電瞬間,RST 端 </p><p>  電位與Vcc 相同,隨充電電流的減少,RST 的電位逐漸下降,直到復(fù)位信號無效。按鍵復(fù)位在此不在作過多的介紹,其原理和上電復(fù)位是相同的。但其采用的是脈沖復(fù)位電路和電平復(fù)位電路兩種。</p><p>  3.2.2 晶振電路</p><p>  晶振與單片機(jī)的腳XTAL0和腳XTAL1構(gòu)成的振蕩電路中會(huì)產(chǎn)生偕波(也就是

16、不希望存在的其他頻率的波),這個(gè)波對電路的影響不大,但會(huì)降低電路的時(shí)鐘振蕩器的穩(wěn)定性。為了電路的穩(wěn)定性起見,ATMEL公司只是建議在晶振的兩引腳處接入兩個(gè)10pf-50pf的瓷片電容接地來削減偕波對電路的穩(wěn)定性的影響,所以晶振所配的電容在10pf-50pf之間都可以的。但是主流是接入兩個(gè)30pf的瓷片電容,此次電路用30PF。</p><p>  3.2.3 單片機(jī)最小系統(tǒng)</p><p&g

17、t;  最小系統(tǒng)就是單片機(jī)在發(fā)揮具體測控功能時(shí)所必須的組成部分。如下圖所示為最小系統(tǒng)方框圖:</p><p>  圖2 單片機(jī)最小系統(tǒng)方框圖</p><p>  3.2.4 硬件流程圖</p><p>  倒計(jì)時(shí)器硬件電路流程圖如下圖所示。</p><p>  圖3 倒計(jì)時(shí)器硬件電路流程圖</p><p>  3.3

18、 源程序設(shè)計(jì)</p><p>  3.3.1 程序清單</p><p><b>  初始化:</b></p><p>  uchar Count = 0;</p><p><b>  uint n=0;</b></p><p>  uint m=0; </p>

19、;<p>  uchar min = 10 ;</p><p>  uchar sec = 0 ; </p><p>  uchar table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //數(shù)碼管的段碼編碼 (0-9)</p><p>  uchar table

20、_d[10] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //帶點(diǎn)數(shù)碼管的段碼編碼 (0-9)</p><p>  sbit BELL = P1^2; //設(shè)置P1.2口,為控制蜂鳴器發(fā)聲的引腳</p><p>  sbit KEY1 = P3^2; //設(shè)置P3.2 P3.3 P3.4口為按鍵引腳</p

21、><p>  sbit KEY2 = P3^3;</p><p>  sbit KEY3 = P3^4;</p><p><b>  函數(shù)名:</b></p><p>  void Delay(uint del) //延時(shí)子程序,延時(shí)時(shí)間為 1ms * del</p><p>  void Ti

22、me0_Init() //初始化定時(shí)器 11.0592M 50ms</p><p>  void time0() interrupt 1 //中斷</p><p>  void display(void) //數(shù)碼管每位動(dòng)態(tài)顯示</p><p>  void DisLED_1()//復(fù)位函數(shù)</p><p>  v

23、oid DisLED_2() //時(shí)間增加</p><p>  void DisLED_3() //時(shí)間減少</p><p>  void DisLED_4() // 時(shí)間為零的顯示</p><p>  void KEY() //檢測按鍵</p><p>  void main() //主函數(shù)</p>

24、;<p><b>  主函數(shù):</b></p><p>  void main() //主函數(shù)</p><p><b>  {</b></p><p>  Time0_Init(); </p><p><b>  while(1)</b>&

25、lt;/p><p><b>  {</b></p><p>  display();</p><p><b>  KEY();</b></p><p>  if(min==0 && sec==0)</p><p><b>  {</b&

26、gt;</p><p>  DisLED_4(); //調(diào)用數(shù)碼管顯示代碼</p><p><b>  m=0;</b></p><p>  while(100-m)</p><p><b>  {</b></p><p>  display();</p>

27、;<p><b>  BELL = 0;</b></p><p>  Delay(1); //延時(shí)1毫秒</p><p><b>  BELL = 1;</b></p><p>  Delay(1); //延時(shí)1毫秒</p><p><b>  m++;</

28、b></p><p><b>  }</b></p><p><b>  TR0 = 0;</b></p><p>  while(KEY1!=0)</p><p><b>  {</b></p><p><b>  min = 0;&l

29、t;/b></p><p><b>  sec = 0;</b></p><p>  display(); </p><p>  } </p><p><b>  }</b></p><p><b>  }</b>&l

30、t;/p><p>  3.3.2 程序流程圖</p><p>  圖4 倒計(jì)時(shí)器主程序流程圖</p><p><b>  四、設(shè)計(jì)過程</b></p><p><b>  4.1實(shí)踐步驟</b></p><p>  1、根據(jù)實(shí)驗(yàn)要求,完成電路原理圖和應(yīng)用程序流程圖。</p

31、><p>  2、編寫匯編語言(或C語言)源程序。</p><p>  3、根據(jù)所設(shè)計(jì)的原理圖,完成電路板的焊接,在進(jìn)行測試。</p><p>  4、硬件軟件綜合調(diào)試,如果不能實(shí)行,在分析哪里出了問題,糾正問題在去測試,直到測試完成,完善其設(shè)計(jì)功能。</p><p><b>  4.2實(shí)踐標(biāo)準(zhǔn)</b></p>

32、<p>  1、完成電路的制作,排版與焊接,并進(jìn)行測量是否能正常的運(yùn)行;</p><p>  2、完成程序的設(shè)計(jì),并進(jìn)行程序調(diào)試是否出現(xiàn)錯(cuò)誤;</p><p>  3、硬件與軟件結(jié)合進(jìn)行調(diào)試看是否能達(dá)到課程設(shè)計(jì)目的;</p><p>  4、最后實(shí)現(xiàn)其設(shè)計(jì)要求和功能,裝配工藝美觀,電路運(yùn)行穩(wěn)定、可靠。</p><p><b&

33、gt;  4.3系統(tǒng)調(diào)試</b></p><p>  4.3.1 硬件調(diào)試</p><p>  在硬件調(diào)試時(shí),先有萬用表檢查印制電路的焊接情況,檢查是否有虛焊,是否有短路。在檢查無誤之后通電檢查LED數(shù)碼管的顯示。總體電路正常,達(dá)到題目的要求。實(shí)際電路下圖:</p><p>  圖5 實(shí)際電路圖 </p><p>  完成了硬件

34、的設(shè)計(jì)、制作和軟件編程后,要使系統(tǒng)能夠按設(shè)計(jì)意圖正常運(yùn)作,必須進(jìn)行系統(tǒng)調(diào)試。系統(tǒng)調(diào)試包括軟件調(diào)試和硬件調(diào)試。不過,作為一個(gè)小計(jì)算機(jī)系統(tǒng),其運(yùn)行是軟硬件相結(jié)合的,因此,軟硬件的調(diào)試也是不可能絕對分開的,硬件的調(diào)試常常需要利用調(diào)試軟件,軟件的調(diào)試也可能需要對硬件的測試和控制來進(jìn)行。</p><p><b>  1、脫機(jī)檢查。</b></p><p>  用萬用表逐步按照電

35、路原理圖檢查印制電路中所有器件的各引腳,尤其是電源的連接是否正確:檢查數(shù)據(jù)總線、地址總線和控制總線是否有短路等故障,順序是否正確;檢查各開關(guān)按鍵是否能正常開關(guān),是否連接正常;各限流電阻是否短路等內(nèi)容。為了保護(hù)芯片,應(yīng)先對各IC電位進(jìn)行檢查,確定其無誤后再插入芯片檢查。</p><p><b>  2、聯(lián)機(jī)調(diào)試。</b></p><p>  暫時(shí)拔掉89S51芯片,將仿

36、真器的引腳插入89S51的芯片插座進(jìn)行調(diào)試,檢驗(yàn)鍵盤/顯示接口電路是否滿足要求設(shè)計(jì)。可以通過一些簡單的測軟件來查看接口工作是否正常。例如,我們可以設(shè)計(jì)一個(gè)軟件,使89S51的P1、P2口輸出55H或AAH,同時(shí)讀P3口,運(yùn)行后用萬用表檢查相應(yīng)端口電平是否一高一低,在仿真器中檢查讀入的P3口8位是否為1,如果正常則說明89S51正常工作。還可以設(shè)計(jì)一個(gè)使所有LED全顯示“8.”的靜態(tài)顯示程序來檢驗(yàn)LED的好壞。如果運(yùn)行測試結(jié)果與預(yù)期不符,

37、很容易根據(jù)故障現(xiàn)象判斷故障原因并采取針對性措施排除故障。</p><p>  4.3.2 軟件調(diào)試</p><p>  軟件調(diào)試的任務(wù)是利用開發(fā)工具進(jìn)行在線仿真調(diào)試,發(fā)現(xiàn)和糾正程序錯(cuò)誤,同時(shí)也能發(fā)現(xiàn)硬件故障。</p><p>  程序的調(diào)試應(yīng)一個(gè)模塊一個(gè)模塊地進(jìn)行,首先單獨(dú)調(diào)試各功能子程序,檢驗(yàn)程序是否能夠?qū)崿F(xiàn)預(yù)期的功能,接口電路的控制是否正常等;最后逐步將各子程序

38、連接起來進(jìn)行聯(lián)調(diào)。聯(lián)調(diào)需要注意的是,各程序模塊間能否正常傳遞參數(shù),特別要注意各子程序的現(xiàn)場保護(hù)與恢復(fù)。調(diào)試的基本步驟如下:</p><p>  1、用仿真器修改顯示緩沖區(qū)內(nèi)容,屏蔽拆字程序,調(diào)試動(dòng)態(tài)掃描顯示功能。例如將DISP0~DISP3單元置為“0123”,應(yīng)能在LED上從左到右顯示“0123”。若顯示不正確,可在顯示子程序相應(yīng)設(shè)置斷點(diǎn)調(diào)試檢查,然后用仿真器修改計(jì)時(shí)緩沖區(qū)內(nèi)容,調(diào)試顯示模塊,例如,將MIN、S

39、EC單元置為“0123”檢查是否能正確顯示“01.23”,若顯示不正確,應(yīng)在顯示子程序相應(yīng)位置設(shè)置斷點(diǎn),反復(fù)調(diào)試檢驗(yàn)直至完全正確。</p><p>  2、運(yùn)行主程序調(diào)試時(shí)模塊,不按下任何鍵,檢查是否從由10.00開始正確計(jì)時(shí),若不能正確計(jì)時(shí)則應(yīng)在定時(shí)器中斷服務(wù)子程序中設(shè)置斷點(diǎn),檢查MIN、SEC單元是否隨斷點(diǎn)運(yùn)動(dòng)而變化。然后屏蔽緩沖區(qū)初始化部分,用仿真器修改計(jì)時(shí)緩沖區(qū)內(nèi)容為40:33.5,運(yùn)行主程序,檢驗(yàn)?zāi)芊裾?/p>

40、確進(jìn)位。</p><p>  3、調(diào)試鍵盤模塊掃描,先用延時(shí)10ms子程序代替顯示子程序延時(shí)消抖,在求取鍵號后設(shè)置斷點(diǎn),中斷后觀察A累加器中的鍵號是否正確,然后恢復(fù)用顯示子程序延時(shí)消抖,檢驗(yàn)與顯示模塊能否正常連接。</p><p>  4、調(diào)試時(shí)間設(shè)置定時(shí)模塊TIMSEF。首先屏蔽中斷子程序,單獨(dú)調(diào)試鍵盤設(shè)置模塊CKECKEY,觀察顯示緩沖區(qū)DISP0~DISP3單元的內(nèi)容是否隨鍵入的鍵號

41、改變,以及鍵號能否在LED上顯示。然后屏蔽CKECKEY子程序,分別將R1設(shè)置為時(shí)間緩沖區(qū)和鬧鐘值寄存區(qū)的首地址,修改顯示緩沖區(qū)內(nèi)容,程序運(yùn)行后查看時(shí)間設(shè)置緩沖區(qū)MIN、SEC單元和鬧鐘值寄存區(qū)AMIN、ASEC單元內(nèi)容是否正確。最后聯(lián)調(diào)TIMSET模塊。</p><p>  5、運(yùn)行主程序聯(lián)調(diào),檢查能否用鍵盤修改定時(shí)時(shí)間,能否正確計(jì)時(shí)、啟閉。</p><p><b>  五、設(shè)

42、計(jì)報(bào)告總結(jié)</b></p><p><b>  1、設(shè)計(jì)方案:</b></p><p>  根據(jù)設(shè)計(jì)要求,設(shè)計(jì)好硬件電路和軟件程序。</p><p>  利用電路模擬仿真軟件對設(shè)計(jì)好的電路進(jìn)行模擬仿真,以確保硬件電路能夠正常工作。</p><p>  用已經(jīng)準(zhǔn)備好的電子元器件,焊接電路。</p>

43、<p>  把設(shè)計(jì)好的軟件程序嵌入到已經(jīng)焊接好的硬件電路中,進(jìn)行調(diào)試。 </p><p>  2、對所設(shè)計(jì)方案的實(shí)現(xiàn)進(jìn)行全面分析</p><p>  該硬件電路的核心部分是AT89S51單片機(jī),對電路進(jìn)行各方面控制和計(jì)算,用一個(gè)4位8段的共陰數(shù)碼管顯示,用7407作為緩沖級,提高輸出電路驅(qū)動(dòng)能力,使數(shù)碼管能正常顯示。用一個(gè)9013三極管驅(qū)動(dòng)

44、蜂鳴器,當(dāng)電路上電和計(jì)時(shí)時(shí)間到時(shí)響一秒提示時(shí)間到。用一個(gè)6M石英晶振和2個(gè)30pF的電容為AT89S51芯片提供時(shí)鐘頻率,2個(gè)30pF電容主要是為了方便晶振起振。K1、K2、K3、3個(gè)開關(guān)分別用于加時(shí)間、減時(shí)間、復(fù)位和開始。用若干電阻作為上拉電阻,增大電路輸出電流。</p><p><b>  3、編程調(diào)試方法</b></p><p>  編程與調(diào)試是C語言和Keil

45、軟件相結(jié)合的。C語言是一種國際上廣泛流行的、很有發(fā)展前途的計(jì)算機(jī)高級語言。它適合作為系統(tǒng)描述語言,即可用來編寫系統(tǒng)軟件,也可用來編寫應(yīng)用軟件。 Keil軟件是一種目前用得比較廣泛的一款單片機(jī)編程軟件,它支持C和 匯編的編譯,并可生成 HEX 文件,還可進(jìn)行代碼的軟硬件仿真軟件。 </p><p>  4、安裝調(diào)試過程,出現(xiàn)的各種現(xiàn)象</p><p><b>  硬件:&l

46、t;/b></p><p>  電路在接電源后,顯示器中有一個(gè)數(shù)碼管不亮。</p><p>  主要原因:數(shù)碼管的一根連接線沒焊好,導(dǎo)致數(shù)碼管不亮。</p><p><b>  軟件:</b></p><p>  程序燒錄到板子上后蜂鳴器一直響。</p><p>  主要原因:沒有對BELL

47、至低電平,只需在主程序中寫上“BELL=0”就行了。</p><p>  程序燒錄到板子上后數(shù)碼管顯示不穩(wěn)定,亮度不一。</p><p>  主要原因:延時(shí)時(shí)間不準(zhǔn)確,經(jīng)過軟件計(jì)算,對定時(shí)器賦合適的初值即可。</p><p><b>  六、總結(jié)經(jīng)驗(yàn)和體會(huì)</b></p><p>  在這次的單片機(jī)程序課程設(shè)計(jì)中,學(xué)到了

48、關(guān)于單片機(jī)的很多東西,單片機(jī)具有軟硬結(jié)合,體積小,可以很容易嵌入到各種應(yīng)用系統(tǒng)中,單片機(jī)為核心的嵌入式控制系統(tǒng)在工業(yè)檢測與控制、儀器儀表、消費(fèi)類電子產(chǎn)品、通信、武器裝備、各種終端及計(jì)算機(jī)外部設(shè)備、汽車電子設(shè)備和分布式多機(jī)系統(tǒng)領(lǐng)域中得到了廣泛了應(yīng)用</p><p>  單片機(jī)是我們的這個(gè)專業(yè)中很重要的一門課程,同時(shí)也是一門比較難學(xué)的課程,剛開始學(xué)習(xí)單片機(jī)的時(shí)候,覺得很難,特別是在學(xué)習(xí)單片機(jī)指令系統(tǒng)和單片機(jī)匯編語言程

49、序設(shè)計(jì)這兩章的時(shí)候,都聽不懂,但是每節(jié)課都會(huì)認(rèn)真聽課,認(rèn)真做筆記,不過后來在自己的摸索中慢慢的有點(diǎn)懂了,其實(shí)單片機(jī)主要是難在寫程序和寫代碼,程序主要是用C語言編程,有時(shí)候腦子里沒有一點(diǎn)思緒,什么都想不出來,所以,如果想要把單片機(jī)學(xué)好的話,首先就要把C語言學(xué)好,單片機(jī)主要是建立在C語言的基礎(chǔ)上的,不過單片機(jī)也可以用匯編語言編譯。我相信在我不斷的摸索中,我一定會(huì)把它給搞懂的。</p><p>  在這次的課程設(shè)計(jì)中,

50、我很感謝我們的指導(dǎo)老師周瑩蓮,廖亦凡老師,還有我的組員,他們讓我學(xué)了很多東西,讓我知道了團(tuán)隊(duì)合作有多么的重要,在做硬件的過程中,也遇到了很多困難,比如說電路的連接線很復(fù)雜,我和另一個(gè)組員就會(huì)想一下該怎么布線,所以每一個(gè)步驟都要做的很細(xì)心,我們在連接線路的過程中,我們是沒連接一根線都會(huì)用萬用表測量一次,以免沒有導(dǎo)通,我們在做的過程中還會(huì)了解每一個(gè)元器件能實(shí)現(xiàn)什么樣的功能,這次實(shí)踐讓我對單片機(jī)有了更深一步的了解,讓我們真正做到了理論聯(lián)系實(shí)踐

51、,把我們所學(xué)的知識都運(yùn)用到實(shí)踐中去,這樣就能把單片機(jī)學(xué)的更好。</p><p>  雖然我們的單片機(jī)課程結(jié)束了,我們的課程設(shè)計(jì)也順利地做完了,但是我對學(xué)單片機(jī)的熱情只增不減,還是想要更深一步的去了解單片機(jī),我永遠(yuǎn)也不會(huì)忘記老師對我的教悔,讓我受益終身。</p><p>  七、進(jìn)一步完善的設(shè)想</p><p>  A、新增一段程序,對硬件的按鍵進(jìn)行防抖,使計(jì)時(shí)器計(jì)時(shí)

52、更加的精確;</p><p>  B、對于硬件的導(dǎo)線線路,盡量在線路比較短的地方不使用導(dǎo)線,使用焊錫進(jìn)行導(dǎo)通,這樣就會(huì)比較的美觀;</p><p>  C、硬件元器件的排版要進(jìn)行比較的規(guī)律,盡量做到導(dǎo)線排版的時(shí)候不會(huì)出現(xiàn)重疊的現(xiàn)象;</p><p>  D、計(jì)算每一條語句的時(shí)間,提高執(zhí)行的定時(shí)器的精度。</p><p><b>  

53、八、參考書目</b></p><p>  趙偉軍,《Protel99se教程》,北京,人民郵電出版社,1996年</p><p>  譚浩強(qiáng),《C程序設(shè)計(jì)教程》,北京,清華大學(xué)出版社,2007年</p><p>  張毅剛,《單片機(jī)原理及應(yīng)用》,北京,高等教育出版社,2010年</p><p>  [4] 胡漢才,《單片機(jī)原理及

54、系統(tǒng)設(shè)計(jì)》,北京,清華大學(xué)出版社,2002年</p><p>  [5] 沈紅衛(wèi),《單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)實(shí)例與分析》,北京,北京航空航天大學(xué)出版社,2003年</p><p><b>  附錄一:成品效果圖</b></p><p><b>  圖六 成品效果圖</b></p><p>  附錄二:

55、倒計(jì)時(shí)器源程序(C語言)</p><p>  #include<reg51.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  uchar Count = 0;</p><p>  u

56、int n; </p><p>  uint fs=0;</p><p>  sbit BELL = P1^0; //設(shè)置P1.0口,為控制蜂鳴器發(fā)聲的引腳</p><p>  sbit K1 = P3^2;</p><p>  sbit K2 = P3^3;</p><p>  sbit K3 = P3^

57、5;</p><p>  uchar min = 10 ;</p><p>  uchar sec = 0 ;</p><p>  uchar ws[4] = {0xfe,0xfd,0xfb,0xf7}; </p><p>  uchar table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7

58、d,0x07,0x7f,0x6f}; //數(shù)碼管的段碼編碼 (0-9)</p><p>  uchar table_d[10] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //帶點(diǎn)數(shù)碼管的段碼編碼 (0-9)</p><p>  void delay(void) //誤差 0us</p><p>

59、;<b>  {</b></p><p>  unsigned char a,b;</p><p>  for(b=1;b>0;b--)</p><p>  for(a=7;a>0;a--);</p><p><b>  }</b></p><p>  void

60、Delay(uint del) // 延時(shí)子程序,延時(shí)時(shí)間為 1ms * del</p><p>  {uint x,j;</p><p>  for(j=0;j<del;j++)</p><p>  for(x=0;x<=148;x++);</p><p><b>  } </b></p&g

61、t;<p>  void beep()//產(chǎn)生1KHZ頻率聲音的函數(shù)</p><p>  {unsigned char k=0;</p><p>  while(100-k)</p><p><b>  {BELL=1;</b></p><p><b>  Delay(1);</b&g

62、t;</p><p><b>  BELL=0;</b></p><p><b>  Delay(1);</b></p><p><b>  k++; </b></p><p><b>  } </b></p><p>&

63、lt;b>  }</b></p><p>  void Time0_Init() //初始化定時(shí)器 11.0592M 50ms</p><p>  { EA = 1;</p><p>  TMOD = 0x01; </p><p>  TH0= 0x9E;</p><p><b

64、>  TL0=0x58;</b></p><p><b>  TR0 = 0;</b></p><p><b>  ET0 = 1;</b></p><p><b>  }</b></p><p>  void time0() interrupt 1

65、/*定時(shí)器0中斷程序*/</p><p><b>  { </b></p><p>  TH0= 0x9E;</p><p>  TL0=0x58;</p><p>  if (Count == 20)</p><p><b>  { </b></p&

66、gt;<p>  Count = 0;</p><p>  if(sec == 0)</p><p><b>  {</b></p><p>  if(min == 0)</p><p><b>  {</b></p><p><b>  min =

67、10;</b></p><p><b>  }</b></p><p>  else min--;</p><p><b>  sec = 59;</b></p><p><b>  }</b></p><p>  else sec--;&

68、lt;/p><p><b>  } </b></p><p>  else Count++;</p><p>  if(min==0&&sec==0) /*調(diào)用蜂鳴器程序*/</p><p><b>  {</b></p><p><b>  b

69、eep();</b></p><p><b>  min=0;</b></p><p>  sec=0;TR0=0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void displa

70、y(void)//數(shù)碼管每位動(dòng)態(tài)顯示</p><p><b>  {</b></p><p>  P2 = 0xfe;</p><p>  P0 = table[min/10]; </p><p><b>  Delay(2);</b></p><p>  P2 =

71、 0xfd; </p><p>  P0 = table_d[min%10]; </p><p><b>  Delay(2);</b></p><p>  P2 = 0xfb;</p><p>  P0 = table[sec/10];</p><p><b>  Delay(

72、2);</b></p><p>  P2 = 0xf7;</p><p>  P0 = table[sec%10]; </p><p><b>  Delay(2);</b></p><p><b>  P2=0XF0;</b></p><p><b>

73、  delay();</b></p><p><b>  } </b></p><p>  void key1() //按鍵功能函數(shù) </p><p><b>  {</b></p><p>  if(K1==0||K2==0||K3==0) //判斷是否有按鍵按下 <

74、/p><p>  {display(); /*調(diào)用顯示函數(shù)*/</p><p><b>  if(K3==0)</b></p><p><b>  { </b></p><p>  if(K3==0) </p><p><b>  {

75、 </b></p><p>  if(fs==0) /*如果K3按下判定如果fs為0,開始計(jì)時(shí)*/</p><p><b>  { </b></p><p><b>  TR0 = 1;</b></p><p><b>  }</b></p>

76、<p>  else /*如果fs為1,計(jì)時(shí)器復(fù)位*/</p><p><b>  {</b></p><p><b>  min=10;</b></p><p><b>  sec=0;</b></p><p><b>  TR0=0;</b

77、></p><p><b>  } </b></p><p>  while(!K3) ;/*按鍵消抖,每按一次只執(zhí)行一次*/</p><p>  Delay(10);</p><p>  while(!K3) ;</p><p><b>  fs=(!fs);</b&g

78、t;</p><p><b>  }</b></p><p><b>  } </b></p><p>  else if (K1==0) /*按鍵K1判定函數(shù)*/</p><p><b>  { </b></p><p><b> 

79、 if(K1==0)</b></p><p><b>  { </b></p><p>  if(TR0!=1)</p><p><b>  {min++;</b></p><p>  if(min==100)</p><p><b>  {&

80、lt;/b></p><p><b>  min=0;</b></p><p><b>  } </b></p><p>  while(!K1); 、/*按鍵K1消抖*/</p><p><b>  delay();</b></p><p>

81、  while(!K1);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p>  else /*按鍵K2判定函數(shù)*/</p><p>  { display

82、(); /*調(diào)用顯示函數(shù)*/</p><p><b>  if(K2==0)</b></p><p><b>  { </b></p><p>  if(TR0!=1)</p><p>  { min--; </p><p><b>  }</b

83、></p><p>  if(min==-1)</p><p><b>  {</b></p><p><b>  min=99;</b></p><p><b>  } </b></p><p>  while(!K2); /*按鍵K2消抖*

84、/</p><p>  delay(); </p><p>  while(!K2);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p>

85、<b>  }</b></p><p>  void main()//主函數(shù) </p><p>  { BELL = 0;</p><p>  Time0_Init();</p><p><b>  while(1)</b></p><p><b>

86、  { </b></p><p>  display();</p><p><b>  key1();</b></p><p><b>  if(K3==0)</b></p><p><b>  { </b></p><p><b>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論