摘要本次能力拓展的要求是要求實現利用定時器中斷方式或查詢定時器溢出標志方式從P口輸出給定周期的方波在此基礎上我決定進行一些拓展使其能實現輸出方波的頻率和占空比可調如果以調節變阻器的阻值來實現頻率的調節相對來說要麻煩些所以我們決定用按鍵來調節頻率和占空比而以鍵盤掃描來實現各鍵的不同功能關鍵字定時器中斷方波1概述單片機集成度高功能強可靠性高體積小功耗地使用方便價格低廉等一系列優點目前已經滲入到人們工作和生活的方方面面幾乎無處不在無所不為單片機的應用領域已從面向工業控制通訊交通智能儀表等迅速發展到家用消費產品辦公自動化汽車電子PC機外圍以及網絡通訊等廣大領域單片機有兩種基本結構形式一種是在通用微型計算機中廣泛采用的將程序存儲器和數據存儲器合用一個存儲器空間的結構稱為普林斯頓結構另一種是將程序存儲器和數據存儲器截然分開分別尋址的結構一般需要較大的程序存儲器目前的單片機以采用程序存儲器和數據存儲器截然分開的結構為多本課題討論的方波發生器的核心是目前應用極為廣泛的51系列單片機其內部包括1一個8位的程序存儲器字節RAM數據存儲器4兩個16位定時計數器5可尋址64KB外部數據存儲器和64KB外部存儲空間的控制電路632條可編程的IO線4個8位并行IO端口7一個可編程全雙工串行口8具有兩個優先級嵌套接口的5個中斷源2總體設計領導形象設計圓作業設計ao工藝污水處理廠設計附屬工程施工組織設計清掃機器人結構設計方案氣瓶 現場處置方案 。
pdf氣瓶 現場處置方案 。doc見習基地管理方案c語言實現定時器c語言實現定時器。doc關于群訪事件的化解方案建筑工地揚塵治理專項方案下載21方案介紹在電子技術領域中實現方波發生器的方法有很多種可以采用不同的原理及器件構成不同的電路但可以實現相同的功能在此次課設中微處理器模塊使用本設計中用到兩個定時器定時器0和定時器1其中定時器0工作在定時方式下決定方波的頻率定時器1同樣工作在定時方式下用于設定占空比鍵盤的操作是通過外中斷與單片機共同來控制的鍵盤操作來完成按要求對頻率與占空比進行調節P07為方波輸出口它連接一個示波器即可觀察輸出的方波了22方波發生器原理與功能方波發生器原理框圖如圖21所示圖21方波發生器原理框圖由于系統的要求不高比較單一的再加上我們是通過定時器來調節頻率的而非電阻因此實現起來就相對簡化了僅用鍵盤及示波器便可完成設計達到所要求實現的功能方波發生器工作原理與功能簡單的流程為主程序掃描鍵盤將設置信息輸入處理后輸出到示波器顯示單片機的晶振為用到了兩個定時器即定時器0與定時器1分別進行頻率與占空比的定時兩個定時器都是工作在方式1根據計算定時器初值的公式式2-1計算出定時器0與定時器1所要裝入的初值然后將工作方式控制字寫入TMOD寄存器再將和寄存器最后啟動定時器即將置位如果工作于中斷方式需置位EA中斷總開關及允許定時計數器中斷并編中斷服務程序此電路的鍵盤是由一個狀態鍵四個功能鍵調節頻率與占空比的增減組成其特殊之處在于利用外部中斷實現鍵盤掃描狀態鍵有三種狀態當其處于狀態0時則其它的鍵會處于無用狀態當其處于狀態1時可通過按四個調節鍵來調節頻率當處于狀態2時按四個調節鍵中的前兩個便可對占空比進行調節了當處于狀態3時又會回到狀態0此時正常顯示方波3系統硬件設計簡介單片機是在一塊芯片中集成了定時計數器和多功能IO口等計算機所需要的基本部件的大規模集成電路又稱MCU其以體積小功能全性價比等諸多優點而獨具特色在工業控制尖端武器通信設備家用電器等嵌入式應用領域中獨占鰲頭如果說C語言程序設計課程設計的基礎課那么單片機以其系統硬件構架完整價格低廉學生能動手等特點成為工科學生硬件設計基礎課其管腳圖如右圖所示圖管腳圖32內部振蕩電路圖32內部振蕩電路8XX51單片機的時鐘信號通常分為內部振蕩方式和外部振蕩方式因為此次課設我們用到的是內部振蕩方式所以只對前者進行簡單介紹如圖32所示在引腳XTAL1和XTAL2外接晶體振蕩器或陶瓷振蕩器就構成了內部振蕩方式由于單片機內部有一個高增益反相放大器當外接晶體后就構成了自激振蕩器并產生振蕩時鐘脈沖晶振通常選用圖中C2和C3起穩定振蕩頻率快速起振的作用電容值一般為復位電路圖33復位電路復位操作完成單片機內電路的初始化使單片機從一確定的狀態開始運行當8XX51單片機的復位引腳RST出現5ms以上的高電平時單片機就完成了復位操作如果RST持續為高電平單片機就處于循環復位狀態而無法執行程序因此要求單片機復位后能脫離復位狀態圖33所示的為上電且開關復位電路上電后電容充電使RST持續一段時間的高電平從而實現上電且開關復位的操作通常選擇34按鍵接口電路小鍵盤如圖34所示它包括8個鍵系統中用到的鍵只有5個分別為S1鍵S2鍵S3鍵S4鍵S5鍵其中S1鍵是狀態鍵采用外部中斷控制用它來確定其它幾個鍵的按鍵功能具體作用在前述的系統功能中已做介紹了另外4個鍵為功能鍵是用來調節頻率與占空比的小鍵盤中引出的6根線依次分別接單片機的口其中是為鍵盤列線P14和P15是鍵盤行線當某個鍵按下時由行掃描值和列回饋信號共同形成鍵編碼圖34按鍵接口電路如上所介紹的按鍵接口電路采用的是外部中斷控制如圖35所示為4輸入與門輸入端輸出端接外部中斷0控制端當有某一鍵按下時由于輸入端電平的變化會導致進入的電平也發生變化由此將會產生外部0中斷達到按鍵控制的作用圖35按鍵控制外部中斷電路4系統軟件設計方波發生器的軟件設計包括主程序延時子程序系統初始化程序鍵盤掃描程序定時器中斷子程序其中主程序用來控制整個程序的執行它與各子程序緊密相聯共同實現方波發生器各種功能的執行41系統初始化程序在此程序中給所有變量賦初值有鍵盤掃描口選擇串行口工作方式SCON狀態標志位flag初始頻率與占空比及其定時定時器0與定時器1的工作方式等初始化時啟動了定時器0與定時器142定時器中斷子程序pt1頻率定時器0中斷TR11啟動定時器1占空比定時輸出高電平pt3占空比定時器1中斷TR10定時器1停止輸出低電平定時器中斷子程序中有定時器
0與定時器1中斷頻率定時器0中斷流程圖與占空比定時器1流程圖分別如圖41和圖42所示其過程為1定時器0遇中斷執行的操作有復位啟動自身進行頻率定時同時啟動定時器1進行占空比定時輸出高電平2定時器1遇中斷停止自身的計時輸出低電平如此循環進行從而達到輸出方波的目的43鍵盤掃描程序鍵盤掃描用外中斷0實現采用的是線反法鍵盤掃描采用逐行掃描的方法當頻率可調時占空比保持原狀不變反之亦然只能進行單一變量的調節狀態標志flag的初始值為01頻率調節i0時按鍵為狀態鍵此時flag加1即flag1此時進行頻率的調節可以進行加1Hz減1Hz加100Hz減100Hz操作分別由S2鍵S3鍵S4鍵S5鍵控制如果按住某個鍵不放便會執行連續加值或減值操作這里的頻率的最大值為當頻率增至最大值時還按增值鍵此時頻率會自動跳到1Hz開始繼續增加同理頻率的最小值為1Hz當減頻率減至最小值時再按減頻率鍵則頻率會跳到占空比調節當狀態值flag=2時此時頻率保持不變進行占空比調節只可進行加1與減1操作分別由S2鍵S3鍵控制要注意的是占空比的初值是50%我們定義的ZKB為50百分比的分子部分為一整數故調節占空比時ZKB會進行加1減1操作ZKB的最大值為99當增到最大值時便會返回到值1如此循環3為了減輕單片機的工作量在軟件設計中采取了這樣的措施在修改參數確定后才進行定時器初值的計算鍵盤中斷處理子程序流程圖與鍵處理流程圖分別如圖43圖44所示5軟件仿真編譯器生成HEX文件由于這次能力拓展使用的C語言編程所以不能用WAVE軟件進行仿真于是我們選用keil編譯器進行仿真主要介紹C程序生成hex文件的方法1雙擊打開選擇新建工程路基工程安全技術交底工程項目施工成本控制工程量增項單年度零星工程技術標正投影法基本原理并保存在出現的CPU對話框中選擇ATMEL中的芯片2點擊確定生成工程在file菜單中選擇新建新建一個文件在里面輸入自己寫的程序代碼并保存3在左面的工程上右擊選擇將剛開的文件添加的工程然后同樣右鍵選擇打開設置在選項中選擇這一項4點擊編譯以及它后面的生成選項便可在工程目錄下生成hex文件軟件仿真在生成HEX文件后進入軟件此時軟件已自動打開一新建項目我們可直接在其中構建電路圖點擊板面左側按鍵P在彈出的對話框中進行元器件的選擇文件要求必須是HEX文件然后可以點擊運行觀察現象看與自己設置的符合否如果不相符在查找錯誤進行修改一般的錯誤都是程序中的所以要認真的讀取程序的每一個部分在元器件都找到后我們可以先進行排版再按照電路圖連接如連接好后如下圖所示圖51仿真電路圖在電路連接好后雙擊在彈出對話框中選擇單片機中要輸入的程序見下圖圖52向中加入程序當完成以上步驟后就可以點擊開始按鈕進行仿真了原始方波輸出如圖53所示圖53輸出原始波形圖當仿真開始后按一次S1則此時Flag狀態為1可以進行平率的調整頻率調整后波形輸出如下圖所示圖53頻率調整后的波形輸出再按S1將Flag狀態調整為狀態2此時可以對波形的占空比進行調整調整占空比后的波形如下圖所示圖55占空比調整后的輸出波形6心得體會決勝全面小康心得體會學黨史心得下載黨史學習心得下載軍訓心得免費下載黨史心得免費下載單片機設計是一門很實用很難的設計這個設計用到了單片機電路等方面的知識通過這次課程設計使我對單片機及其附屬電路有了一定的了解對課本上的知識有了近一步的掌握也深刻明白了自己的不足完成本次課程設計的過程是一個從無到有的過程經歷了興奮自信失落奮發所悟完成幾個過程剛做做課程設計時仔細閱讀設計的題目和要求以為沒什么困難的所用的知識書上都有可是當我動手開始做的時候才發現其中的算法設計是那么繁瑣經過一天的努力毫無結果失落的心情油然而生于是再到圖書館和網上查找資料在經過借鑒很多類似的資料文獻后總算是有點眉目了埋頭苦干的過程是痛苦的尤其是在思考算法和程序框架時迷茫煩躁特別是當苦思出來一個結果又被自己推翻心痛的無法言繪在痛苦中掙扎建立推翻參考別人的思路建立再次在推翻在這不斷循環中終于最后完善了程序其中的煎熬是很痛苦的深刻明白攻克自己未知領域的困難但當課程設計完成時那感覺是甜蜜的沒有耕耘哪來得收獲的喜悅不懂付出怎么能知道回報的快樂一分耕耘一分收獲有付出才會有回報就在這樣的痛與快樂的交換中我學到了知識學到了做人的道理通過這短短一周的實踐我感覺到自己從課本上學到的理論知識和實踐仍有很大的差距最少很多元器件根本不知道有什么功效在仿真儀器中是什么代碼有的知識自己感覺已經掌握得差不多了但是實際操作起來就有問題出現了我遇到了不少問題花費了很多的時間這讓我重新反思我們的學習深刻領悟到我們這個專業動手實踐的重要性理論不經過實踐考驗是沒法實施的就像我們編的程序很多方面考慮的都不夠幾乎沒有涉及到實際應用時的防范方法措施這次的課程設計讓我學到了很多書本上學不到的東西學到了實際應用時是取用成本的最小化做設計不僅要考慮大的方面小的方面也必須做到完美最大的收獲是C51語言的應用有了深刻的了解參考文獻[1]何立民MCS51單片機應用系統設計[M]北京北京航空航天大學出版社2003[2]徐君毅單片微型機原理與應用[M]上海上??萍汲霭嫔?995[3]公茂法單片機人機接口實例集[M]北京航空航天大學出版社1998[4]沈紅衛基于單片機的智能系統設計與實現[M]北京電子工業出版社2005[5]李廣弟朱月秀等單片機基礎[M]北京北京航空航天大學出版社2003附錄源程序代碼口為鍵盤掃描口矩形波輸出口設全局變量系統時鐘頻率方式1計數長度狀態鍵標志占空比頻率定時器0和1的定時初值[12]
共陰極代碼[18]0x88鍵值表延時子程序延時--系統初始化66初始頻率1KHz定時初始占空比50定時定時器1和定時器0工作在方式1的定時模式IT00選擇INT0為低電平觸發方式EX01外部中斷0允許ET01定時器1和定時器0中斷允許系統中斷允許TR01定時器1和定時器0開始定時TR11發送數據顯示子程序10000分離頻率的各位數值頻率顯示的高位滅零分離占空比各位數值占空比顯示的高位滅零[a][b][c][d][e]頻率和占空比中間加一橫線-以示區別[m][n]00延時開鍵盤中斷處理好避免又利用連擊問題鍵盤掃描線反法t0鍵盤掃描用外中斷關中斷f鍵盤掃描碼采用逐行掃描的方法輸入掃描碼掃描P14對應的行讀出數據看是否在此行上的某列鍵盤被按下ak掃描到按下的鍵則退出否則更新掃描碼繼續掃描[i]取得鍵號狀態1下對頻率進行調整ifi1按鍵為1號頻率加按鍵為2號頻率減1PL--按鍵為3號頻率加5ifi4按鍵為4號頻率減-ag2狀態2下對占空比進行調整ifi1按鍵為1號占空比加按鍵為2號占空比減1ZKB--狀態返回正常工作flag0清狀態標志-頻率定時初值-占空比定時初值計算定時器0和定時器1的初值給鍵盤掃描口賦初值以便下次按鍵正確讀入EX01開中斷定時器中斷子程序pt1頻率定時器0中斷TR11啟動定時器1占空比定時輸出高電平pt3占空比定時器1中斷TR10定時器1停止輸出低電平主函數系統初始化死循環顯示頻率和占空比狀態0時正常顯示頻率和占空比狀態1時頻率調整狀態頻率閃爍狀態2時占空比調整狀態占空比閃爍PLZKB目錄I摘要11概述22總體設計方案221方案介紹222方波發生器原理與功能43系統硬件設計簡介432內部振蕩電路533復位電路534按鍵接口電路74系統軟件設計741系統初始化程序742定時器中斷子程序843鍵盤掃描程序105軟件仿真編譯器生成HEX文件軟件仿真146心得體會15參考文獻16附錄源程序代碼頻率與占空比調節輸出方波示波器單片機鍵盤定時器1中斷入口TR10重裝定時初值輸出低電平結束圖42占空比定時器0中斷流程定時器0中斷入口TR11重裝定時初值輸出高電平結束圖41頻率定時器0中斷流程--邊界處理鍵處理---i1PL邊界處理計算定時器0和1的初值鍵處理結束圖44鍵處理流程圖圖43鍵盤中斷處理子程序流程圖YNEA0軟件延時消抖外部中斷0入口鍵盤掃描得到鍵碼查表取鍵值i實時顯示鍵盤口初始化EA1結束鍵處理是否為抖動own