1課題任務
本課題主要是設計一個基于51單片機的開發系統平臺,開發平臺需包括的基礎硬件有:12864液晶顯示器、8位發光二極管指示器、TLC5616模塊、ADC0832數模轉換、蜂鳴器電路、DS18B20溫度傳感器電路、4*4矩陣電路和DS1302時鐘模塊。然后根據51單片機開發平臺自行設計一個基于51單片機電子琴設計。
設計單片機開發硬件平臺
單片機硬件開發平臺的基礎硬件有:蜂鳴器、LED、LCD12864、TLC5615、ADC0832、DS18B20、DS1302、44矩陣按鍵和USB-TTL。USB-TTL用于下載程序和給主控供電;蜂鳴器、8位LED和LCD12864是作為開發板的指示部分,其中,蜂鳴器可提供聲音警報,LED燈提供光顯示,LCD12864顯示器可提供直觀的顯示;44矩陣鍵盤作為系統與人交互的設備;檢測模塊有:DS1302時鐘檢測模塊、DS18B20溫度檢測模塊、ADC0832數模轉換模塊以及TLC5615模數轉換模塊
基于51單片機的電子琴設計
課題要求在單片機開發系統基礎上進行功能擴展,根據學號尾數選擇擴展的功能。。基礎要求有:高低音的選擇功能、手動演奏功能、自動演奏功能和完美的圖形界面設計。
2單片機硬件電路設計
單片機原理圖設計
單片機原理圖如圖2-1所示,對電路進行了簡化,將LCD12864模塊通信方式由并行改成串行,將獨立按鍵和矩陣按鍵進行了整合,利用短接帽實現獨立按鍵和矩陣按鍵的切換。電路遵循模塊化原則,設計上盡量精簡,方便后期調試。
2.1.1LCD12864接口電路
12864中文漢字圖形點陣液晶顯示模塊,可顯示漢字及圖形,內置 8192 個中文漢字(16X16 點陣)、128個字符(8X16 點陣)及 64X256 點陣顯示RAM。參考LCD12864的使用手冊,常用的電路的并行接口,雖然并行傳輸數據比較快,但是在這個電路上明顯不適用,為了簡化電路,我修改了顯示器的硬件電路后,改成了串行傳輸模式。電路接口如下圖所示。從圖上知道,現在本來需要接近20個接口的顯示器變成了只需要5個接口的。大大簡化了電路。
**硬件說明:**液晶通信方式有二種選擇,并口或串口方式。如果需要串口通信時需把產品PCB后面的S點短接才能正常運行。P點為并口通信,使用并口通信時可短接P點也可不短接,短接時抗干擾效果更加; 液晶自帶10K電位器可調電阻( VR1)位置處,不需再加外圍電位器,如需要接外圍可調的需要把PCB板上的JP1與JP2短接方可進行外圍可調電阻。根據LCD12864液晶顯示屏的使用手冊,作出具體修改如圖2-1-2所示。首先,將顯示器的背光電源A+和K-直接短接顯示器的供電電源,然后短接JP2接口的S,通過硬件修改串行方式。
2.1.2獨立按鍵和矩陣按鍵電路
如果把獨立按鍵接口和矩陣按鍵接口分開的話,明顯會增加電路設計上的復雜性,所以我將獨立按鍵和矩陣按鍵進行了整合,通過一個短接帽即可實現獨立按鍵功能和矩陣按鍵功能的切換。未接短接帽的時候,按鍵電路是矩陣按鍵模式,采用行列式掃描方式;接上短接帽是把P2.4引腳接地從而讓K1、K5、K9、K13各端接地變成獨立按鍵。具體如圖2-5所示。這樣電路就省去了部分按鍵。
2.1.3復位電路
復位電路在單片機最小系統起著重要的作用,單片機在可靠復位后,程序才能從0000h地址開始有序地執行應用程序,但是復位電路很容易受到外部噪聲干擾,所以在設計復位電路的時候需要保證系統可靠復位和具備一定的抗干擾能力。復位電路有上電復位和手動復位兩個模式,這里采用的是上電只復位,不增加手動復位電路。在51單片機中,復位脈沖的高電平寬度必須大于2個機器周期,若系統選用11.0592MHZ晶振,則一個機器周期約為1.085us,那么復位脈沖寬度最小應為2us。如圖2-6所示,利用rc充電原理實現上電復位的電路設計。常用的復位電路是電容和電阻組成RC電路加上按鍵,把按鍵復位去掉,形成通電即復位,不需要按鍵進行復位。
2.1.4AD和DA接口電路
在單片機設計上AD和DA模塊是要求單獨分開測試的,即選用TLC5615和ADC0832兩個模塊,在電路設計上,這兩個模塊都是串行數據傳輸,即都有三條數據線接口,如果設計上把這兩個模塊的接口并行起來的話,兩個模塊6條數據線只需要占用單片機3個接口。即圖2-7中H3和H2是并接一起的。
TLC5615模塊,即數模轉換模塊,將數字量轉換為模擬量輸出。通過查找TLC5615模塊的使用手冊,了解如下:TLC5615是一個串行1O位DAC芯片,性能比早期電流型輸出的DAC要好。只需要通過 3根串行總線就可以完成1O位數據的串行輸入,易于和工業標準的微處理器或微控制器 (單片機 )接口。手冊上說明該模塊的通信時序是:當片選 S為低電平時,串行輸人數據才能被移 人 l6位移位寄存器。當S為低電平時,在每一個SCLK時鐘的上升沿將DIN的一位數據移人16位移寄存器。
ADC0832模塊,即模數轉換模塊,將模擬量轉換成數字量輸出。從改模塊的使用手冊了解:ADC0832是8腳雙列直插式雙通道A/D轉換器,能分別對兩路模擬信號實現模—數轉換,可以用在單端輸入方式和差分方式下工作。ADC0832采用串行通信方式,通過DI數據輸入端進行通道選擇、數據采集及數據傳送。8位的分辨率(最高分辨可達256級),可以適應一般的模擬量轉換要求。其內部電源輸入與參考電壓的復用,使得芯片的模擬電壓輸入在0~5V之間。具有雙數據輸出可作為數據校驗,以減少數據誤差,轉換速度快且穩定性能強。獨立的芯片使能輸入,使多器件掛接和處理器控制變的更加方便。工作原理:正常情況下ADC0832 與單片機的接口應為4條數據線,分別是CS、CLK、DO、DI。但由于DO端與DI端在通信時并未同時使用并與單片機的接口是雙向的,所以在I/O口資源緊張時可以將DO和DI并聯在一根數據線上使用。當ADC0832未工作時其CS輸入端應為高電平,此時芯片禁用,CLK和DO/DI的電平可任意。當要進行A/D轉換時,須先將CS使能端置于低電平并且保持低電平直到轉換完全結束。此時芯片開始轉換工作,同時由處理器向芯片時鐘(CLK)輸入端輸入時鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的數據信號。
2.1.5DS1302時鐘模塊接口
DS1302 模塊內含有一個實時時鐘/日歷和31 字節靜態RAM ,通過簡單的串行接口與單片機進行通信。提供秒、分、時、日、周、月、年的信息,每月的天數和閏年的天數可自動調整。時鐘操作可通過AM/PM 指示決定采用24 或12 小時格式。DS1302 與單片機之間能簡單地采用同步串行的方式進行通信,僅需用到三個口線:(1)RES 復位(2)I/O 數據線(3)SCLK串行時鐘。設計電路如圖所示。
2.1.6DS18B20溫度傳感器接口
DS18B20是最常見的數字溫度傳感器,體積小;精度高(12位時精度可以達到0.625攝氏度,出廠默認12位);接線簡單,無需外圍短路;封裝形式多樣,能滿足不同應用需求等。常見的電路設計如圖2-9所示。選用4.7K電阻上拉。DS18B20單線數據傳輸,直接將數字量傳送到單片機外圍接口,單片機可以直接讀取溫度的數字量。
3.1.1電子琴的硬件電路
根據選做設計的要求,對硬件電路進行了修改,操作更加方便。選做要求如下:按鍵演奏、自動演奏、高低音選擇。根據要求,在原有的要求上進行了擴展,在按鍵演奏的基礎上加上了電腦演奏,即電腦通過串口與單片機進行無線通信后可以實現演奏。如圖3-1所示,是基于電子琴修改的PCB布局的。在原有基礎上把按鍵加到擴展板,所以不需要接上芯片。其他模塊,如TLC5615、ADC0832等暫時不需要用到,即將其控制的部分刪除,無需增加進此布局中。通過PCB直觀知道此電路設計的復雜性幾乎為零,已經十分簡化了,布線少,模塊少,布局清晰。電子琴硬件電路設計上也是遵循簡化原則。
3.1.2電子琴界面部分
電子琴界面設計是遵循直觀化原則,即讓人直觀看到播放的音頻和音階,利用LCD12864顯示器顯示,如圖所示,為電子琴界面設計圖。界面一共顯示四行,第一行是音階顯示,有高音、低音和中音,界面顯示依次是2、1、0;第二行是音頻,一共顯示16個,依次是0-15;第三行是電子琴的名稱“Little Dome”;
3.1.3電腦演奏原理
電腦演奏是基于兩個藍牙的無線通信,所用的界面是串口通信界面,電腦通過鍵盤輸入數字0-15,電腦通過接在USB-TTL的藍牙模塊將字符依次發送出去,單片機接收到后,串口執行中斷程序,中斷程序就是將接收到的字符傳遞到電子琴控制程序,相當于按鍵功能。兩個藍牙的對接指令設置步驟如下:
(1)AT模式:兩個藍牙模塊的PIO11接VCC,上電后即進入AT指令模式,都用USB轉TTL模塊連接到電腦的USB接口。
(2)打開串口調試助手:開啟2個串口調試窗口,一個打開藍牙A的COM口,一個打開藍牙B的COM口。設置波特率,一般設置為38400
(3)恢復A默認設置:串口調試助手A,將藍牙A恢復默認設置:AT+ORGLrn
(4)設置A配對碼:串口調試助手A,配置藍牙A的配對碼:AT+PSWD=1212rn。注:藍牙A與藍牙B的配對碼相同,這樣才能成功配對。
(5)設置A主模式:串口調試助手A,將藍牙A配置為主機模式:AT+ROLE=1rn
(6)恢復B默認設置:串口調試助手B,將藍牙B恢復默認設置:AT+ORGLrn
(7)設置B配對碼:串口調試助手B,配置藍牙B的配對碼與藍牙A一致:AT+PSWD=1212rn
(8)設置B從模式:串口調試助手B,將藍牙B配置為從機模式:AT+ROLE=0rn
(9)查詢B地址:串口調試助手B,查詢藍牙B的地址:AT+ADDR?rn
(10)藍牙A綁定藍牙B:串口調試助手A,藍牙A綁定藍牙B地址:AT+BIND=2015,2,120758rn
(11)常規工作模式:2個模塊的PIO11引腳都接地,重新上電后進入常規工作模式,自動完成配對。
軟件設計與調試
3.2.1電子琴的程序設計
電子琴的程序設計思路如圖3-4所示,圖3-4為電子琴程序流程圖。程序運行時先判斷按鍵是否按下,即通過按鍵掃描識別按鍵是否按下,若識別到按鍵按下就執行模式選擇程序,模式選擇有四種:音階設置模式、音頻設置模式、自動播放模式和按鍵播放模式。若檢測不到按鍵按下,即返回掃描程序,一直掃描,等待按鍵按下。電子琴程序設計上主要是控制PWM調節蜂鳴器的電壓脈寬,進而控制蜂鳴器的頻率;LCD12864顯示器主要是用于顯示按鍵模式,給用戶直觀的視覺體驗;按鍵掃描采用了行列式掃描法,其中還有狀態機法和翻轉法。三種按鍵掃描程序中最好的是狀態機法,但是需要用到定時器,電子琴中定時器用于控制中斷和PWM設置,與按鍵中斷有沖突,所以采用了行列式掃描法。
電子程序加入了獨立按鍵部分,用于擴展電子琴的功能,采用輪詢的方式實現電子琴的功能模式選擇。電子琴部分控制程序如下:
KeyScan1(); //電子琴功能按鍵
Keyscan(); //行列式掃描 switch(key)
{
case 0: time = 1;break;
case 1: time = 2;break;
case 2: time = 3;break;
case 3: time = 4;break;
case 4: time = 5;break;
case 5: time = 6;break;
case 6: time = 7;break;
case 7: time = 8;break;
case 8: time = 9;break;
case 9: time = 10;break;
case 10: time = 11;break;
case 11: time = 12;break;
case 12: time = 13;break;
case 13: time = 14;break;
case 14: time = 15;break;
default: time = 0; break;//無按鍵按下
}
if(time==0) TR0=0,Beep=1;
else high=freq[7Music_Freq+time-1][1],
low=freq[7Music_Freq+time-1][0],TR0=1;
Q(Music_Freq,time);//顯示
3.2.2電子琴測試
在設計電子琴的時候,遇到的問題主要有三點:(1)蜂鳴器不響;(2)頻率不正確;(3)按鍵播放有雜音。解決方式如下。
(1)蜂鳴器不響:主要排查兩點,第一點:硬件電路問題,蜂鳴器用三極管通過放大電流驅動工作,若蜂鳴器不響,可能是三極管的集電極和發射機接反了,解決方式是對換過來;第二點:軟件設置問題,驅動蜂鳴器是用定時器中斷驅動,通過調節PWM控制蜂鳴器,解決方式是檢查程序中斷是否正常進入,檢查是否出現中斷異常。
(2)頻率不正確:蜂鳴器工作的頻率不對,無法形成明顯地高低音,主要是檢查程序,首先設置正確51單片機的時鐘頻率,這里選用11.0592MHZ,通過MDK5目標選擇界面設置,接著排除定時器計數的高位和低位寄存器的計數,裝載值設置正確。
(3)播放有雜音:這個問題可以通過軟件延遲過濾掉,播放出現雜音是工作時切換過快,導致雜音產生,所以可以通過軟件延遲排除。
4總 結
4.1電路調試和程序調試
設計好硬件電路后一般會出現的問題有:
(1)無法燒錄程序:這個是十分常見的問題,一般原因有芯片電壓過低、復位電路無法復位、晶振無法起振。排查方式有:排查一下芯片是否供電正常,通電后檢查芯片VCC和GND兩端電壓,觀察是否是5V左右,如果是3V左右,就說明電路設計有問題,導致芯片電壓被分走了;檢查復位電路,最小系統要工作必須要復位成功一次,復位不成功很大可能性是復位電路虛焊或者電阻電容選擇問題;晶振不起振就檢測一下電容的參數,選取過大也會導致起振失敗。
(2)顯示屏無法顯示:顯示屏無法顯示,檢查顯示器的使能接口和數據傳輸接口以及PSB引腳,使能失敗顯示器不會顯示,數據傳輸傳輸異常也會出現問題,檢查串并行數據傳輸過程是否出現異常;PSB引腳若被占用也會出現無法顯示的問題,可以直接修改顯示器的J2硬件電路即可解決。
(3)光敏電阻無法顯示:光敏電阻是要求結合ADC0832這個模塊進行數模轉換的。光敏電阻無法檢測,可能是光敏電阻沒有串聯一個上拉電阻,若光敏電阻一端接地一端直接接到ADC0832,這個是錯誤的接法,需要加上上拉電阻才能正常檢測到光敏電阻;軟件問題則是ADC0832模塊的SPI通信出現異常。
(4)接在TLC5615的LED指示器無法工作:查找TLC5615手冊知道,若要讓模塊正常輸出轉換的電壓需要在模塊的第6引腳接入基準電壓,若沒有接入2V-3V的基準電壓,模塊輸出的數據是無效的。
(5)蜂鳴器不響:蜂鳴器工作出現異常很大可能性是三極管接反了。對換過來即可。
設計好的驅動程序一般出現的問題有:
(1)SPI通信出現異常:在此課程設計中,很大模塊都用到了SPI通信,每個模塊的時序不一樣,所以驅動程序也稍微區別,模塊驅動不成功可以看一下模塊的時序圖,設置正確的時序即可
(2)中斷異常:定時器中斷出現問題可以檢測定時器是否開啟總中斷或者是否初始化成功,若有多個中斷則要設置好優先級,外部中斷,定時中斷和串口中斷的優先級是不一樣的。
(3)引腳占用:這個是程序設計過程中的通病,由于51單片機引腳少,驅動模塊有比較多,設計程序過程難免復用了引腳,但是復用時沒有設計好復用的優先級,導致無法復用而出現異常。
(4)按鍵掃描程序:按鍵是人與系統交互的外部接口設備,在排除硬件設計問題后,檢測按鍵掃描程序是否有輪詢,掃描失敗一般是按鍵無法輪詢成功,即沒有一直循環訪問。
附錄:實物照片
上一篇:C51單片機數碼管動態顯示
下一篇:基于51單片機智能紅外溫控風扇設計
推薦閱讀
史海拾趣
近年來,電子行業經歷了多次技術變革和市場洗牌。面對這些挑戰,Compact公司積極調整戰略,加大研發投入,以適應市場變化。同時,公司還通過優化生產流程、降低成本等方式提高競爭力。在行業變革中,Compact公司不僅成功應對了挑戰,還抓住了機遇,實現了跨越式發展。
2013年8月26日,蘇州鋒馳微電子有限公司在江蘇省蘇州市張家港市正式成立,法定代表人為Fang Gang Feng。公司初期便明確了以集成電路IP、物聯網、計算機軟硬件、電子產品、集成電路及應用電路方案技術的設計、研發為核心業務的發展方向。在成立之初,面對激烈的市場競爭,蘇州鋒馳憑借對技術的執著追求和敏銳的市場洞察力,逐步在行業內站穩腳跟。
Corsair深知品質是企業生存和發展的關鍵。因此,公司建立了嚴格的質量管理體系,從原材料采購、生產加工到產品出廠,每一個環節都進行嚴格的質量控制。Corsair還引入了先進的質量檢測設備和方法,確保每一件產品都符合客戶的要求和行業標準。這種對品質的執著追求使得Corsair的產品在市場上贏得了良好的聲譽。
隨著電子行業的快速發展,市場競爭日益激烈。為了應對這一挑戰,如韻不斷調整和優化產品線,加強與國際知名企業的合作,引進先進的技術和設備。同時,公司加大了對研發團隊的投入,鼓勵員工進行創新實踐和技術交流。
在面對行業內的價格戰和惡性競爭時,如韻始終堅持產品質量和客戶滿意度為首要原則。通過不斷提升產品質量和服務水平,如韻贏得了客戶的信任和口碑。即使在行業面臨困境的時期,如韻也憑借著強大的技術實力和良好的市場口碑保持了穩健的發展態勢。
隨著企業規模的擴大和影響力的提升,AdTech公司開始更加關注自身的社會責任和可持續發展。公司積極參與公益活動,支持教育、環保等事業,為社會的發展做出了積極貢獻。同時,公司還注重環境保護和資源利用,通過采用環保材料和節能技術,降低生產過程中的能耗和排放。這些舉措不僅提升了公司的社會形象,也為其實現長期可持續發展奠定了堅實基礎。
這些故事是基于對AdTech公司可能發展路徑的假設和推測而創作的,并不代表該公司的實際發展情況。實際上,每個公司的發展都是獨特而復雜的,受到多種因素的影響。如需了解更多關于AdTech公司的真實發展情況,建議查閱相關新聞報道、行業報告或公司年報等權威資料。
檢測前要了解集成電路及其相關電路的工作原理。 檢查和修理集成電路前首先要熟悉所用集成電路的功能、內部電路、主要電氣參數、各引腳的作用以及引腳的正常電壓、波形與外圍元件組成電路的工作原理。如果具備以上條件,那么分析和檢查會容易許多。 ...… 查看全部問答∨ |
三星的2416驅動7寸屏AT070TN84的問題!!!!急!!!! 處理器是s3c2416 ,BSP是2450的(據說這兩個處理器類似), LCD是 7寸TFT屏AT070TN84!!!! 現在的現象是,我在OEMINIT中初始化LCD,并讓其顯示藍色,然后進入CE系統,但是,該顯示藍色的時候LCD顯示的就象屏被關掉沒上電一樣(類似 ...… 查看全部問答∨ |
有的筆記本按下顯示切換熱鍵能切換到LCD+CRT extended模式,是怎樣實現的?? 有的筆記本按下顯示切換熱鍵能切換到LCD+CRT extended模式,是怎樣實現的?? 一般的顯示切換只會在LCD, CRT, LCD+CRT Clone三種模式下進行切換,但是有的notebook能切換到LCD+CRT extended模式,有誰知道這是怎樣實現的?是bios還是driver或者softw ...… 查看全部問答∨ |
我利用FindFirstFile和FindNextFile 系統中已存在的文件,代碼如下: CString cFileList[50]; int nFileTotalCount; nFileTotalCount=0; &nb ...… 查看全部問答∨ |
程序運行到sprintf時死機了,調式后發現進入了HardFault_Handler里死循環了。請問這個問題可能由啥原因引起的?還有貌似選了優化后,有時sprintf出來的數據會有錯誤?這個可能由啥原因引起的?謝謝!… 查看全部問答∨ |
不知道LM3S6911 的JTAG口能否接5V上拉?? 有客戶之前上拉到5V能正常燒錄,lay的板是上拉5V的,現在只能拉到3.3V才能工作。 求解!… 查看全部問答∨ |
本帖最后由 dontium 于 2015-1-23 13:09 編輯 TI旋轉電機:憑借自身在高級電機驅動和控制領域的深厚歷史積淀與門類寬泛的模擬和微控制器產品庫,TI可提供完整的電機系統解決方案,從而成為全球市場的領先者。TI將其在電機驅動和控制領域的豐富經驗 ...… 查看全部問答∨ |
|
void NVIC_Configuration_TIM5(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0000); NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;   ...… 查看全部問答∨ |
也有很多對于使用TF卡的場合,功耗還是要講究的 那么不使用時功耗多大?讀或者寫的時候功耗又是多大?有做過實驗的么? 不同品牌的TF做過比較么? 不同的初始化方式例如使用SPI方式功耗又怎樣呢?… 查看全部問答∨ |