




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、20武漢理工大學單片機原理與應用課程設計說明書1 單片機介紹及仿真原理 MSP430系列單片機是美國德州儀器(TI)1996年開始推向市場的一種16位超低功耗、具有精簡指令集(RISC)的混合信號處理器(Mixed Signal Processor)。稱之為混合信號處理器,是由于其針對實際應用需求,將多個不同功能的模擬電路、數字電路模塊和微處理器集成在一個芯片上,以提供“單片”解決方案。該系列單片機多應用于需要電池供電的便攜式儀器儀表中。 單片機有集成度高、功能強、可靠性高、體積小、功耗地、使用方便、價格低廉等一系列優點,目前已經滲入到人們工作和生活的方方面面,幾乎“無處不在,無所不為”。單片
2、機的應用領域已從面向工業控制、通訊、交通、智能儀表等迅速發展到家用消費產品、辦公自動化、汽車電子、PC機外圍以及網絡通訊等廣大領域。 單片機有兩種基本結構形式:一種是在通用微型計算機中廣泛采用的,將程序存儲器和數據存儲器合用一個存儲器空間的結構,稱為普林斯頓結構。另一種是將程序存儲器和數據存儲器截然分開,分別尋址的結構,一般需要較大的程序存儲器,目前的單片機以采用程序存儲器和數據存儲器截然分開的結構為多。 本課題討論的方波發生器的核心是目前應用極為廣泛的 51系列單片機。本次課程設計運用的仿真軟件是Proteus。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片
3、機與外圍電路協同仿真,一鍵切換到PCB設計,真正實現了從概念到產品的完整設計。是目前世界上唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持8051ARM、8086和MSP430等。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。2 設計原理本設計通過單片機80C51的P3口的P3.0和P3.1兩個引腳輸出兩路方波信號,通過P1口的矩陣鍵盤(只用到其中4個)來控制輸出方波的相位和頻率變化以及復位。本設計的相位和頻率的變化是通過調用延時子程序來控制的,通過按鍵是延時的時間發生改變從而輸出不同相位和頻率的方波信號,設計框圖如下圖1。 圖 1 設計框
4、圖本課程設計是設計一個方波發生器,用1602顯示方波的頻率和相位差。系統的整體圖如圖2:圖2系統整體圖系統默認的頻率為10HZ,默認的相位差為0。2.1復位電路設計如果RST持續為高電平,單片機就處于循環復位狀態,而無法執行程序。由C1,R1,開關構成開關復位電路,如圖3。上電后,由于電容充電,使RST持續一段高電平。當單片機在運行狀態下,按下復位鍵也能使RST持續一段時間的高電平,從而實現上電復位和手動復位。圖3 復位電路2.2振蕩電路設計如圖3所示,外接石英晶體或者陶瓷諧振器以及電容C2,C3接在放大器的反饋電路中構成并聯諧振電路。諧振器本身對外接電容C2、C3雖然沒有十分嚴格的要求,但電
5、容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩定性、起振的難易程度以及溫度的穩定性,如果使用石英晶體,推薦使用30pF,而使用陶瓷諧振器建議選擇40pF。本次設計使用的是石英晶體諧振器,因此采用30pF的電容,晶振頻率為12MHZ。圖4 振蕩電路2.3矩陣鍵盤設計在鍵盤中按鍵數量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖5所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(P1口)就可以構成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數越多,區別越明顯,比如再多加一條線就可以構成20鍵的鍵盤,而直接用
6、端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數比較多時,采用矩陣法來做鍵盤是合理的。矩陣式結構的鍵盤顯然比直接法要復雜一些,識別也要復雜一些,下圖中,列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸入端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態就可得知是否有鍵按下了。圖5 矩陣鍵盤2.4液晶顯示液晶如圖:圖6 液晶1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線VCC(15腳)和地線GND(16腳),其控制原
7、理與14腳的LCD完全一樣,其中:引腳符號功能說明1VSS一般接地2VDD接電源(+5V)3V0液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度)。4RSRS為寄存器選擇,高電平1時選擇數據寄存器、低電平0時選擇指令寄存器。5R/WR/W為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。6EE(或EN)端為使能(enable)端,寫操作時,下降沿使能。讀操作時,E高電平有效7DB0低4位三態、 雙向數據總線 0位(最低位)8DB1低4位三態、 雙向數據總線 1位9DB2低4位三態、 雙向數
8、據總線 2位10DB3低4位三態、 雙向數據總線 3位11DB4高4位三態、 雙向數據總線 4位12DB5高4位三態、 雙向數據總線 5位13DB6高4位三態、 雙向數據總線 6位14DB7高4位三態、 雙向數據總線 7位(最高位)(也是busy flag)15BLA背光電源正極16BLK背光 電源負極寄存器選擇控制表RSR/W操作說明00寫入指令寄存器(清除屏等)01讀busy flag(DB7),以及讀取位址計數器(DB0DB6)值10寫入數據寄存器(顯示各字型等)11從數據寄存器讀取數據注:關于E=H脈沖開始時初始化E為0,然后置E為1,再清0.busy flag(DB7):在此位為1時
9、,LCD忙,將無法再處理其他的指令要求。3 程序流程圖圖7 流程圖4 源程序#include #include #define uchar unsigned char#define uint unsigned intsbit test=P37;sbit LCDEN=P22;sbit LCDRS=P20;sbit LCDRW=P21;sbit WaveA=P30; sbit WaveB=P31; uchar Frequency,Key_Value,Flag,a6;uint data Phase_Difference;double Control_Phase=0.000001;int data C
10、ounter_T0,Number_T0, Counter_T1,Number_T1;/*void Initial_System();uchar Scan_Keyboard();uint Get_Number_T0(uchar Frequency);uint Get_Number_T1(uchar Frequency);void Increase_Frequency();void Decrease_Frequency();void Increase_Phase_Difference(uint data Step_Phase_Difference);/void Decrease_Phase_Dif
11、ference(uint data Step_Phase_Difference);void Calculate_Frequency_Phase(void);void Display_Frequency_Phase();void Delay(uint);void Write_Cmd(uchar cmd);void Write_Data(uchar Data);void LCD_Init();/*void main()Initial_System();while(1)Key_Value=Scan_Keyboard();Calculate_Frequency_Phase();Display_Freq
12、uency_Phase(); /*void Initial_System()WaveA=0;WaveB=0;Control_Phase=0.000001;Frequency=10;Phase_Difference=0;Counter_T0=0;Counter_T1=0;Number_T1=Get_Number_T1(Frequency);TMOD=0x22;TH1=0x38; /256-200TL1=0x38; /256-200TH0=0xc9; /256-201TL0=0xc9;EA=1;ET1=1;TR0=1;TR1=1;LCD_Init();/*void Write_Cmd(uchar
13、cmd) LCDEN=1; LCDRS=0; P0=cmd; Delay(5); LCDEN=0;/*void Write_Data(uchar Data) LCDEN=1; LCDRS=1; P0=Data; Delay(5); LCDEN=0;/*void LCD_Init() LCDRW=0; LCDRS=0; Write_Cmd(0x01); Write_Cmd(0x38); Write_Cmd(0x0C); Write_Cmd(0x06); Write_Cmd(0x80); Write_Data(F); Write_Data(R); Write_Data(E); Write_Data
14、(:); Write_Cmd(0x80+0x40); Write_Data(P); Write_Data(H); Write_Data(A); Write_Data(:);/*uchar Scan_Keyboard()uchar key;uchar temp1,temp2;P1=0x0f;if(P1!=0x0f)temp1=P1;P1=0xf0;temp2=P1;P1=0x0f;while(P1!=0x0f)Delay(10);key=temp1|temp2;switch(key)case 0xee :return 0; break;case 0xde :return 1; break;cas
15、e 0xbe :return 2; break;case 0x7e :return 3; break;default : return 16;/*uint Get_Number_T0(uchar Frequency)uint h;double l;l=(double)Frequency;l=Control_Phase*0.5/l;l=l/0.000055;h=l;if(l-h+0.5)h=h+1;return h;/*uint Get_Number_T1(uchar Frequency)uint h;double f;f=(double)Frequency;f=0.5/f;f=f/0.0002
16、;h=f;if(f-h=0.5)h=h+1;return h;/*T0void Timer0_Interrupt() interrupt 1Counter_T0+;if(Counter_T0Number_T0)Counter_T0=0;if(Flag=0)WaveB=WaveA;elseWaveB=WaveA;ET0=0;TR0=0;/*T1void Timer1_Interrupt() interrupt 3 Counter_T1+; if(Counter_T1Number_T1)Counter_T1=0;WaveA=WaveA;ET0=1;TR0=1;/*void Increase_Fre
17、quency()if(Frequency10)Frequency=Frequency-10;elseFrequency=1;Number_T1=Get_Number_T1(Frequency);/*void Increase_Phase_Difference(uint data Step_Phase_Difference)Control_Phase=Control_Phase+0.00555556*Step_Phase_Difference;if(Control_Phase=1)Control_Phase=0.000001;else if(Control_Phase1)Flag=1;Contr
18、ol_Phase=Control_Phase-1; Phase_Difference+=Step_Phase_Difference;if(Phase_Difference=360)Phase_Difference=0;void Calculate_Frequency_Phase(void)switch(Key_Value) case 0:Increase_Frequency();break; case 1:Decrease_Frequency();break; case 2:Increase_Phase_Difference(10); break; case 3:Initial_System(
19、);break; default :break;Number_T0=Get_Number_T0(Frequency);void Display_Frequency_Phase()uchar i,j;a0=Frequency/100;a1=(Frequency%100)/10;a2=Frequency%10;a3=Phase_Difference/100;a4=(Phase_Difference%100)/10;a5=Phase_Difference%10;Write_Cmd(0x80+5);for(i=0;i=2;i+)Write_Data(ai+48);Delay(5);Write_Cmd(
20、0x80+0x40+5);for(j=3;j0;k-)for(j=110;j0;j-);5 仿真結果分析5.1系統初始化系統默認頻率為10HZ,相位差為0液晶顯示,示波器測量如圖:圖8 系統初始圖5.2頻率50HZ,相位差0圖9 頻率50HZ,相位差05.3頻率50HZ,相位差50圖10頻率50HZ,相位差505.4頻率50HZ,相位差90圖11頻率50HZ,相位差906 心得體會本次課程設計我的題目是設計并實現兩路相位可調方波信號發生器。實驗要求輸出兩路方波信號,鍵盤控制頻率和兩信號的相位差,頻率范圍和變化步長值自定,相位0360,相位差變化步長值自定,用雙蹤示波器觀察。在學習微機原理和單片機以及智能儀器這些課程的時候我們就接觸過很多可以產生方波的方法。因此這次課程設計對于產生方波的方式有了多種選擇。既然是單片機課設,而且這次實驗的最簡單的方案就是利用單片機MSP430的P1口的兩個引腳輸出高低電平。通過定時器A計數來實現PWM輸出,通過port2端口的IO中斷來實現按鍵控制相位變化和頻率變化以及占空比變化等,通過液晶1602來實現系統相關信息的顯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 區塊鏈監管科技應用-洞察及研究
- 領導力與團隊效能-洞察闡釋
- 食尚之旅:美食旅游研究綜述
- 網絡安全威脅下的通信技術發展-洞察闡釋
- 不動產租金債權抵押的法律效力研究
- 朝陽市重點中學2025年高二下化學期末學業質量監測模擬試題含解析
- 云南省大理州大理市下關第一中學2025年高二下化學期末檢測模擬試題含解析
- 中文與文明的互動與交流研究
- 人工智能企業集聚對城市經濟韌性的研究
- 等離子體協同催化分解甲醇制氫的效率與機理研究
- 2025年6月浙江省高考技術試卷真題
- 2025年遼寧高考地理試卷真題答案詳解講評課件(黑龍江吉林內蒙古適用)
- 2024年山西煙草專賣局考試真題試卷及答案
- 全國中小學教師職業道德知識競賽80題及答案
- 有機化學(上)(中國藥科大學)知到智慧樹期末考試答案題庫2025年中國藥科大學
- 2023CSCO食管癌診療指南
- 重癥肌無力課件
- 2024年四川省資中縣事業單位公開招聘教師崗筆試題帶答案
- 成人女性壓力性尿失禁護理干預護理團標解讀
- 某律師事務所內部規章管理制度大全
- GB 29743.2-2025機動車冷卻液第2部分:電動汽車冷卻液
評論
0/150
提交評論