單片機系統(tǒng)設計 省賽獲獎_第1頁
單片機系統(tǒng)設計 省賽獲獎_第2頁
單片機系統(tǒng)設計 省賽獲獎_第3頁
單片機系統(tǒng)設計 省賽獲獎_第4頁
單片機系統(tǒng)設計 省賽獲獎_第5頁
已閱讀5頁,還剩54頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

*單片機系統(tǒng)設計(C51版)*應用電子系3SPI總線與應用1.SPI總線概念SPI接口的全稱是“SerialPeripheralInterface”,意為串行外圍接口SPI接口主要應用在EEPROM,FLASH,實時時鐘,AD轉換器,數(shù)字信號處理器和數(shù)字信號解碼器。*應用電子系42.SPI接口協(xié)議簡介利用時鐘線對數(shù)據(jù)位進行同步,時鐘的上升沿或下降沿鎖存數(shù)據(jù)四線制SPI:CS,SCK,MOSI,MISO。全雙工,收發(fā)可同時進行。三線制SPI:CS,SCK,DIO。半雙工,只能分時進行收發(fā)。*應用電子系5一主多從的連接模式*應用電子系63.SPI接口時序圖SPI時序圖舉例:四線制,低電平使能,上升沿鎖存,先發(fā)送最高位*應用電子系7#include<reg51.h>#include<intrins.h>sbitSCK=P1^0;sbitMOSI=P1^1;sbitMISO=P1^2;sbitSS1=P1^3;#definedelayNOP(){_nop_();_nop_();_nop_();_nop_();}; *應用電子系8voidSPISendByte(unsignedcharch){unsignedcharidatan=8;SCK=1;SS1=0;while(n--){delayNOP();SCK=0;

if((ch&0x80)==0x80){MOSI=1;}else{MOSI=0;}delayNOP();ch=ch<<1;SCK=1;}}*應用電子系9unsignedcharSPIreceiveByte(){unsignedcharidatan=8;unsignedchartdata;SCK=1;SS1=0;while(n--){delayNOP();SCK=0;delayNOP(); tdata=tdata<<1;if(MISO==1)tdata=tdata|0x01;elsetdata=tdata&0xfe;SCK=1;}return(tdata);}*應用電子系10unsignedcharSPIsend_receiveByte(unsignedcharch){unsignedcharidatan=8;unsignedchartdata;SCK=1;SS1=0;while(n--){delayNOP();SCK=0;delayNOP();{tdata=tdata<<1; if(MISO==1)tdata=tdata|0x01;elsetdata=tdata&0xfe;}*應用電子系11{if((ch&0x80)==0x80) {MOSI=1;}else{MOSI=0;}ch=ch<<1;}SCK=1;}return(tdata);}*應用電子系123.SPI接口ADCTLC549

TLC549:8位串行AD芯片

*應用電子系13#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitDAT=P1^7;sbitCS=P1^6;sbitCLK=P1^5;ucharTLC549ADC(void){uchari,x;CLK=0;DAT=1;CS=0;for(i=0;i<8;i++){CLK=1; x<<=1; if(DAT==1)x++; CLK=0; } CS=1; return(x);}*應用電子系144.SPI接口DACTLC5615

TLC5615

TLC5615:10位串行DA芯片

*應用電子系15如何編程?

八位如何傳輸數(shù)字信號?

TLC5615為十位DAC,如何修改?主機發(fā)起一次數(shù)據(jù)讀寫主機輸出時鐘主機發(fā)送的數(shù)據(jù)(10位)*應用電子系16#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitK1=P3^7;sbitK0=P3^6;sbitDAT=P2^5;sbitDAC=P2^6;sbitDCK=P2^7;voidTLC5615(uintj){uchari;DCK=0;DAC=0;j=j<<6;for(i=0;i<10;i++){j=j<<1;DAT=CY;DCK=0;DCK=1;}DCK=0;DAC=1;}DINCSSCLK*應用電子系17voiddelay(uintt){while(t--);}voidmain(){unsignedintm;K1=1;K0=1;P1=0xff;while(1){m=P1*4;if(!K0)m+=1;if(!K1)m+=2; TLC5615(m);delay(50000);}}*應用電子系185.串行時鐘芯片DS1302功能介紹:電子萬年歷基本原理:外接32768Hz的晶振。提供秒、分、時、天、星期、月、年等的數(shù)值以及閏年調整的能力。DS1302的時間信息以寄存器的形式存儲,通過SPI接口讀寫操作,獲得時間與設定時間。可外接備份電池,保證掉電后時間不丟失*應用電子系195.串行時鐘芯片DS1302*應用電子系205.串行時鐘芯片DS1302*應用電子系215.串行時鐘芯片DS1302*應用電子系225.串行時鐘芯片DS1302*應用電子系236.DS1302和單片機連接圖*應用電子系247.DS1302的程序控制程序組成#defineucharunsignedcharsbitSCK=P3^6; /*實時時鐘時鐘線引腳*/sbitRDA=P3^4;/*實時時鐘數(shù)據(jù)線引腳*/sbitRST=P3^5;/*實時時鐘復位線引腳*/*應用電子系25功能:往DS1302寫入1Byte數(shù)據(jù)voidWrite_Ds1302_Byte(unsignedchartemp){unsignedchari;for(i=0;i<8;i++) //循環(huán)8次寫入數(shù)據(jù)

{ SCK=0;SDA=temp&0x01;//每次傳輸?shù)妥止?jié)

temp>>=1; //右移一位

SCK=1;//上升沿寫有效

}}

*應用電子系26往DS1302寫入數(shù)據(jù)*應用電子系27voidWrite_Ds1302(unsignedcharaddress,unsignedchardat)

{ RST=0; SCK=0; delayus(2); RST=1; //啟動

delayus(2); Write_Ds1302_Byte(address); //發(fā)送地址

Write_Ds1302_Byte(dat); //發(fā)送數(shù)據(jù)

RST=0; //恢復}*應用電子系28從DS1302讀取1Byte數(shù)據(jù)ucharRead_DS1302_Byte(void){uchari,temp;for(i=0;i<8;i++) //循環(huán)8次讀取數(shù)據(jù)

{ if(SDA)temp|=0x80;//每次傳輸?shù)妥止?jié)

SCK=1;//讀數(shù)據(jù),下降沿有效

temp>>=1; //右移一位

delayus(2); SCK=0; } return(temp);}*應用電子系29讀取DS1302某地址的數(shù)據(jù)*應用電子系30unsignedcharRead_Ds1302(unsignedcharaddress){ uchari,temp; RST=0; delayus(2); SCK=0; delayus(2); RST=1; delayus(2); Write_Ds1302_Byte(address);//讀數(shù)據(jù)之前要先寫地址

temp=Read_Ds1302_Byte();//讀出數(shù)據(jù)返回}*應用電子系31設置初始時間voidSet_RTC(void)//設定初始時間{ unsignedchari,tmp; Write_Ds1302(0x8E,0X00); //解除寫禁止

Bcd_to_Hex();//BCD碼轉換為16進制

for(i=0;i<7;i++) //7次寫入秒分時日月周年

{ Write_Ds1302(write_rtc_address[i],tmp_time[i]); } Write_Ds1302(0x8E,0x80);//寫保護}*應用電子系32BCD轉16進制

voidBcd_to_Hex(void)讀取當前時間voidRead_RTC(void) //讀取當前時間*應用電子系33思考與實踐建立DS1302芯片的庫函數(shù)文件。有哪些主要功能函數(shù)?寫出這些函數(shù)并組成庫函數(shù)。設計基于DS1302的電子萬年歷。顯示年、月、日、星期、時、分、秒,外形自行設計。*應用電子系34I2C串行總線I2C總線始終和先進技術保持同步,并保持其向下兼容性。I2C總線采用二線制傳輸,一根是數(shù)據(jù)線SDA(SerialDataLine),另一根是時鐘線SCL(serialclockline),所有I2C器件都連接在SDA和SCL上,每一個器件具有一個唯一的地址。I2C總線是一個多主機總線,總線上可以有一個或多個主機(或稱主控制器件),總線運行由主機控制。*應用電子系35I2C總線支持多主(multi-mastering)和主從(master-slave)兩種工作方式。

*應用電子系36I2C總線通過上拉電阻接正電源。當總線空閑時,兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號變低,即各器件的SDA及SCL都是線“與”關系。*應用電子系37I2C總線的數(shù)據(jù)傳送*應用電子系38I2C總線的構成及信號類型:構成: 數(shù)據(jù)線SDA

時鐘線SCL數(shù)據(jù)傳輸?shù)挠行б?guī)則:

1.SCL高電平期間,SDA保持不變,數(shù)據(jù)有效。

2.SCL低電平期間,SDA改變,數(shù)據(jù)變化有效。*應用電子系39應用方式:

1.標準硬件I2C端口(硬核)。

2.軟件模擬I2C端口(可編程用軟件實現(xiàn))。SDASCL單片機EEPROM普通I/O口普通I/O口單片機EEPROM*應用電子系40I2C總線的三種信號類型:

[開始信號]SCL高電平時,SDA產生高到低的下降沿跳變

[結束信號]SCL高電平時,SDA產生低到高的上升沿跳變

[應答信號]接收數(shù)據(jù)的器件在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的器件發(fā)出低電平信號,表示已收到數(shù)據(jù)。這個信號由接收數(shù)據(jù)的器件發(fā)出。發(fā)送端收到應答信號后,作出分析判斷。若未收到應答信號,則判斷為受控單元出現(xiàn)故障。*應用電子系41*應用電子系42時鐘線數(shù)據(jù)線下降沿開始位上降沿結束位數(shù)據(jù)位應答位時間軸*應用電子系43I2C總線的控制程序實現(xiàn):/*I2C的啟動程序*/(時鐘線高時,數(shù)據(jù)線上升沿)VoidI2CStart(void) { SDA=1;//釋放數(shù)據(jù)線

SomeNOP();//延時

SCL=1;//時鐘線拉高

SomeNOP();//延時

SDA=0;//數(shù)據(jù)線拉低

SomeNOP();//延時

SCL=0;//時鐘線拉低

SomeNOP();//延時}*應用電子系44/*I2C的停止程序*/(時鐘線高時,數(shù)據(jù)線上升沿)voidI2CStop(void){ SDA=0; SomeNOP(); SCL=1; SomeNOP(); SDA=1; SomeNOP();}*應用電子系45/*I2C的應答程序*/voidACK(void) //Acknowledge信號{ SDA=0;//發(fā)送0,應答

SomeNOP(); SCL=1; SomeNOP();//產生時鐘高電平

SCL=0; SomeNOP();}*應用電子系46voidNACK(void) //沒有Acknowledge信號{ SDA=1;//發(fā)送1,非應答

SomeNOP(); SCL=1; SomeNOP();//產生時鐘高電平

SCL=0; SomeNOP();}*應用電子系47檢測應答位bitTestAck(){ bitErrorBit; SDA=1; SCL=1; ErrorBit=SDA; SCL=0; return(ErrorBit);}*應用電子系48寫8位數(shù)據(jù)bitWrite8Bit(unsignedcharinput){ unsignedchartemp; for(temp=8;temp!=0;temp--){ SDA=(bit)(input&0x80); SCL=1; SCL=0; input=input<<1; }}*應用電子系49讀8位數(shù)據(jù)unsignedcharRead8Bit(){ unsignedchartemp,rbyte=0; for(temp=8;temp!=0;temp--){ SCL=1; rbyte=rbyte<<1; r

溫馨提示

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

評論

0/150

提交評論