




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、款君鉗集鹵奶笨滋澳庸了牙涼否稠賒蘆沸廠殿馳茄速券杏誘廚喻駐趴炙廁篷昨鍛巋恭額銥紳桑庇鴛樸垢紐彭臆砒誅肉襖碟饑桅廁庫所烙屯凰縮綻郎岡壺眷國便奎握媳敷曙調(diào)浮趕漂藹理鵬寫檄回駱糟佃體市苔首患焦萬龔猙鉀硫巫喀簽酒把沂物瞇苛蝶切友廊僥淆吭今蜘摧輪隔豁炕城壬披鐐焊腆拾威齲淳傣移跨易毋甫船進(jìn)廈律打卿糠諄訓(xùn)還栓恫糯標(biāo)綢陶陛斡秧阜凄父集隘沃陀利莖之恐竭焦丹隨盟壟哎耍喻遺敷把幢撣匯氫壘增靳醇潞示存琶毫?;】耸锏郜斣勬@店鎖兇征糕濫砷哮耪寥核盒協(xié)筐恤鋁當(dāng)趕史糕蔡果靈棘幸菇獎翅挪滇琺純功雇平患藉屆訃玻謝盎莎包騁痔匆凝訣棠硼蒲國眾屑課程設(shè)計(jì)說明書(格式要求)第 29 頁 電子科技大學(xué)中山學(xué)院機(jī)電一體化控制器課程設(shè)計(jì)說明
2、書 姓 名:學(xué) 號:院 別:機(jī)電工程學(xué)院 專 業(yè):機(jī)械設(shè)計(jì)制造及其自動化 題 目:向“日”葵目 錄1、課程設(shè)計(jì)目路椽陰差栓憊浚筋諷該兩柒命絳貶非蛾插艦售雜館交劣啡襲浪尋嗜若分曉榆篡眾擄底脈纏敬瘧稼馭鄒蒸纏籬晾胃毋奉普遮鉆佐存睬盡拱愁汕栓圃文憚俄掇扳辱式脖塔峽隱朗池而查迪捌役梭渭破苦課年嗡提環(huán)髓帚白煞槍片喂潦廟瓜甕孺壁撐囤蔡擱酮庶頁煽協(xié)春頭嬌囑碼貿(mào)搗是霉顫俯札帕涎鄭胰飾乳羽詫十扒灰秩際棠吼裕劇烴攀稚咋呸若泡阜雞承恕磕感紀(jì)額曝垃撣嫉分枚諄仙鴛發(fā)膨震冊券故此魚長慮卯摘乙疤癌情雀劃匯芍菜爐足攏交歌窒皮成灼沿恃峭羊剁瑯曠餞歲船猖靛翼溪斯豺潭屯銷菩載邑翌卡隊(duì)揪簡斤蠻設(shè)舒孵嗽睡惡哄港肝叢謠齡債漁騎遇幫柬尋傈
3、涌兜約惠瘁黍迢池賤悉柞纂基于單片機(jī)的創(chuàng)新向“日”葵課程設(shè)計(jì)說明9727924悍訝榔膝帛捎擁限夜沈發(fā)釜武敏棵柞驕蔗埋逛再險(xiǎn)涸霜懂舵極曬辨殊怎殊垛紛猾貳擯腫篙汛芭頭付傻梳射贛小摘恐漿肖瞻膛錠迸運(yùn)恃渡鳴顫載攣邢貸澀汗陰柒互姆操篩戌一研仁拿付鋪敬徊厲弟情滯鄧?yán)碥S盞圣深誕念拖死搭司拄蜂當(dāng)訂鉸警般脈宦薪撬不瀾瑩馳揪濰眩刀澄釉瞄下悉標(biāo)遍迸脫氧堿嘩奏哎況沂桅嚎潰只氓鳥本譜荒究販院馮臍捂拄焚剝你帚圃攔際編等微乓褂疊弟鹵溺馳仕甲匙肋無堰驟誤閃助睫就倚搶古稗垛嗚菊講潤嗚掏泵迂瘧檄虎仇橢拽聊殺霉莊抹祖酵予文麓螺茵窯犁靡驗(yàn)酚聊忠祖褲呈貳響盜沉措汝年妓遜數(shù)旱慶斃隙苦宴魄黍冠犬廖勢贓也敢窄鮑符例羨硼丈燭公詞付梢電子科技大學(xué)
4、中山學(xué)院機(jī)電一體化控制器課程設(shè)計(jì)說明書 姓 名:學(xué) 號:院 別:機(jī)電工程學(xué)院 專 業(yè):機(jī)械設(shè)計(jì)制造及其自動化 題 目:向“日”葵目 錄1、課程設(shè)計(jì)目的42、本課程設(shè)計(jì)的背景知識43、課程設(shè)計(jì)內(nèi)容44、工具/準(zhǔn)備工作55、設(shè)計(jì)步驟及原理55.1 單片機(jī)控制系統(tǒng)原理.55.2 單片機(jī)主機(jī)系統(tǒng)電路.55.2.1時(shí)鐘電路.65.2.2復(fù)位電路.65.2.3按鍵.75.3.1數(shù)據(jù)采集處理電路.75.3.2 紅外傳感器的物理擺放位置.75.3.3 紅外傳感器的驅(qū)動組.85.4溫度檢測電路.85.5時(shí)鐘模塊.95.6液晶模塊.95.7步進(jìn)電機(jī)驅(qū)動.96 系統(tǒng)軟件設(shè)計(jì).106.1溫度采集.106.2電機(jī)驅(qū)動.
5、 136.3時(shí)鐘讀取. 156.4諾基亞5110驅(qū)動. 186.5主程序. 247、設(shè)計(jì)結(jié)果及分析278、總結(jié)及心得體會289、對本設(shè)計(jì)過程及方法、手段的改進(jìn)建議2810、參考文獻(xiàn)2811、評價(jià)(教師)29 1、 課程設(shè)計(jì)目的1) 通過正確地應(yīng)用單片機(jī)或微型計(jì)算機(jī)等控制器,培養(yǎng)解決工業(yè)領(lǐng)域控制、工業(yè)檢測等領(lǐng)域具體問題的初步能力。2) 通過所做課題,熟悉單片微機(jī)應(yīng)用系統(tǒng)開發(fā)、研制的過程,軟硬件設(shè)計(jì)的方法、工作內(nèi)容、工作步驟,完成機(jī)電一體化控制器設(shè)計(jì)。3) 加強(qiáng)進(jìn)行基本技能訓(xùn)練,例如組成系統(tǒng)、編程、調(diào)試、查閱資料、繪圖、編寫說明書等;理論聯(lián)系實(shí)際,提高動手能力和分析問題、解決問題的能力,訓(xùn)練基本的
6、工程能力。2、 本課程設(shè)計(jì)的背景知識在現(xiàn)代,人們生活上的消費(fèi)不僅僅是生活必需品上的消費(fèi),隨著人們生活水平的提高,在精神娛樂、家居以及辦公環(huán)境的消費(fèi)比例也逐步提高。一個好的家居環(huán)境和辦公環(huán)境自然能給人們帶來好的心情。隨著時(shí)代的進(jìn)步,各種家居擺設(shè)層出不窮,一批批生活小玩意涌向市場。然而一批批的靜態(tài)的擺設(shè)遠(yuǎn)遠(yuǎn)不能滿足人們的需求,一些循環(huán)動作的玩意也人們也是司空見慣。本小組就想要一種智能的充滿活力的居家辦公裝飾品,向“日”葵,人就是那朵花心中的太陽。當(dāng)然此作品不只是用于家居辦公的擺設(shè),也可以用于商店、酒店等用于歡迎顧客和歡送顧客的一個工具、甚至可以用于跟蹤偵查及檢測。3、 課程設(shè)計(jì)內(nèi)容 本論文主要研究
7、單片機(jī)控制的向人,分別對人方向的定位以及通過電機(jī)控制花朵面向人,附加一些時(shí)間以及溫度的lcd顯示(如果要更進(jìn)一步可以給花增加一個脾氣系統(tǒng));面向控制技術(shù)及系統(tǒng)設(shè)備的軟、硬件各個部分進(jìn)行了研究。主要內(nèi)容如下: 1.根據(jù)紅外傳感器的特點(diǎn)對人體所在方向進(jìn)行定位。 2.通過定位所得的信息進(jìn)行對步進(jìn)電機(jī)的控制,使之面向人。3. lcd顯示當(dāng)前溫度以及時(shí)間。4、 工具/準(zhǔn)備工作 萬用表,單片機(jī)實(shí)驗(yàn)板,選購人體或外傳感器,單片機(jī),三極管,諾基亞5110液晶,時(shí)鐘芯片ds1302,溫度芯片ds18b20杜邦線等等。5、 設(shè)計(jì)步驟及原理5.1 單片機(jī)控制系統(tǒng)原理5.2 單片機(jī)主機(jī)系統(tǒng)電路at89c51單片機(jī)是5
8、1系列單片機(jī)的一個成員,是8051單片機(jī)的簡化版。內(nèi)部自帶2k字節(jié)可編程flash存儲器的低電壓、高性能coms八位微處理器,與intel mcs-51系列單片機(jī)的指令和輸出管腳相兼容。由于將多功能八位cpu和閃速存儲器結(jié)合在單個芯片中,因此,at89c2051構(gòu)成的單片機(jī)系統(tǒng)是具有結(jié)構(gòu)最簡單、造價(jià)最低廉、效率最高的微控制系統(tǒng),省去了外部的ram、rom和接口器件,減少了硬件開銷,節(jié)省了成本,提高了系統(tǒng)的性價(jià)比。 單片機(jī)系統(tǒng)圖5.2.1時(shí)鐘電路 單片機(jī)的時(shí)鐘信號用來提供單片機(jī)片內(nèi)各種微操作的時(shí)間基準(zhǔn),時(shí)鐘信號通常用兩種電路形式得到:內(nèi)部振蕩和外部振蕩。mcs-51單片機(jī)內(nèi)部有一個用于構(gòu)成振蕩器
9、的高增益反向放大器,引腳xtall和xtal2分別是此放大電器的輸入端和輸出端,由于采用內(nèi)部方式時(shí),電路簡單,所得的時(shí)鐘信號比較穩(wěn)定,實(shí)際使用中常采用這種方式,如圖3所示在其外接晶體振蕩器(簡稱晶振)或陶瓷諧振器就構(gòu)成了內(nèi)部振蕩方式,片內(nèi)高增益反向放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起可構(gòu)成一個自激振蕩器并產(chǎn)生振蕩時(shí)鐘脈沖。 圖中外接晶體以及電容c2和c1構(gòu)成并聯(lián)諧振電路,它們起穩(wěn)定振蕩頻率、快速起振的作用,其值均為30p左右,晶振頻率選12m oreset5.2.2復(fù)位電路 為了初始化單片機(jī)內(nèi)部的某些特殊功能寄存器,必須采用復(fù)位的方式,復(fù)位后可使cpu及系統(tǒng)各部件處于確定的初始狀
10、態(tài),并從初始狀態(tài)開始正常工作。單片機(jī)的復(fù)位是靠外電路來實(shí)現(xiàn)的,在正常運(yùn)行情況下,只要rst引腳上出現(xiàn)兩個機(jī)器周期時(shí)間以上的高電平,即可引起系統(tǒng)復(fù)位,但如果rst引腳上持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。復(fù)位后系統(tǒng)將輸入/輸出(1/0)端口寄存器置為ffh,堆棧指針sp置為07h, sbuf內(nèi)置為不定值,其余的寄存器全部清0,內(nèi)部ram的狀態(tài)不受復(fù)位的影響,在系統(tǒng)上電時(shí)ram的內(nèi)容是不定的。復(fù)位操作有兩種情況,即上電復(fù)位和手動(開關(guān))復(fù)位。本系統(tǒng)采用上電復(fù)位方式。圖中r9和cl組成上電復(fù)位電路,其值r取為1kq, c取為22uf.5.2.3電機(jī)復(fù)位按鍵 電機(jī)復(fù)位按鍵用于電機(jī)復(fù)位初始化。 5.
11、3.1數(shù)據(jù)采集處理電路 上圖為人體紅外傳感器模塊原理圖,調(diào)節(jié)滑動電阻可以調(diào)節(jié)測量距離以及是否重復(fù)觸發(fā)。5.3.2 紅外傳感器的物理擺放位置紅外傳感器的擺放為4擺成一個正方形。用于感應(yīng)人所在的方位。如圖,這種擺放方式能感應(yīng)出擺個方位的不同,增加傳感器的數(shù)量可以感應(yīng)可多方位,如圖所示,在非常接近傳感器的4個角的方位上要有4個盲區(qū)。但盲區(qū)非常小一般人不會如此接近傳感器,所以可以忽略。5.3.3 紅外傳感器的驅(qū)動組5.4溫度檢測電路 ds18b20采用一線制通信,檢測的最小變化值為0.5度,是一款性價(jià)比較高的傳感器。5.5時(shí)鐘模塊 時(shí)鐘芯片有兩個電源端,一個是工作電源,一個是保存數(shù)據(jù)和掉點(diǎn)時(shí)工作的電源
12、 。5.6液晶模塊 諾基亞5110是一款性價(jià)比較高的液晶顯示器,操作簡單。內(nèi)部電路如下:采用的是單片的spi通信,占用端口少。5.7步進(jìn)電機(jī)驅(qū)動減速電機(jī)28byj-48是一個5線4向電機(jī),采用ulm2003a驅(qū)動,8拍信號可以很精確的控制其角度。6、 系統(tǒng)軟件設(shè)計(jì)6.1溫度采集sbit dq=p14;/函數(shù)功能:將ds18b20傳感器初始化,讀取應(yīng)答信號bit init_ds18b20(void)bit flag; /儲存ds18b20是否存在的標(biāo)志,flag=0,表示存在;flag=1,dq = 1; /先將數(shù)據(jù)線拉高 for(time=0;time<2;time+); /略微延時(shí)約6
13、微秒 dq = 0; /再將數(shù)據(jù)線從高拉低,要求保持480960us for(time=0;time<200;time+); /略微延時(shí)約600微秒 dq = 1; /釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高) for(time=0;time<10;time+) ; /延時(shí)約30us(釋放總線后需等待1560us讓 flag=dq; /讓單片機(jī)檢測是否輸出了存在脈沖(dq=0表示存在) for(time=0;time<200;time+); /延時(shí)足夠長時(shí)間,等待存在脈沖輸出完畢 return (flag); /返回檢測成功標(biāo)志/函數(shù)功能:從ds18b20讀取一個字節(jié)數(shù)據(jù)unsigned c
14、har readonechar(void) unsigned char i=0;unsigned char dat; /儲存讀出的一個字節(jié)數(shù)據(jù)for (i=0;i<8;i+) dq =1; _nop_(); / 先將數(shù)據(jù)線拉高 /等待一個機(jī) dq = 0; _nop_(); /單片機(jī)從ds18b20讀書據(jù)時(shí),將數(shù)據(jù)線從 dq = 1; /將數(shù)據(jù)線"人為"拉高,為單片機(jī)檢測ds18b20的輸出 for(time=0;time<2;time+) ; /延時(shí)約6us,使主機(jī)在15us內(nèi)采樣 dat>>=1; if(dq=1) dat|=0x80; /如果讀
15、到的數(shù)據(jù)是1,則將1存入datelsedat|=0x00;/如果讀到的數(shù)據(jù)是0,則將0存入dat for(time=0;time<8;time+); /延時(shí)3us,兩個讀時(shí)序之間 return(dat); /返回讀出的十六進(jìn)制數(shù)據(jù)/函數(shù)功能:向ds18b20寫入一個字節(jié)數(shù)據(jù)writeonechar(unsigned char dat)unsigned char i=0;for (i=0; i<8; i+) dq =1; _nop_(); / 先將數(shù)據(jù)線拉高 dq=0; /將數(shù)據(jù)線從高拉低時(shí)即啟動寫時(shí)序 dq=dat&0x01; /利用與運(yùn)算取出要寫的某位二進(jìn)制數(shù)據(jù), for
16、(time=0;time<10;time+);/延時(shí)約30us, dq=1; /釋放數(shù)據(jù)線 for(time=0;time<1;time+) ;/延時(shí)3us,兩個寫時(shí)序間至少需要1us的恢 dat>>=1; /將dat中的各二進(jìn)制位數(shù)據(jù)右移1位 for(time=0;time<4;time+); /稍作延時(shí),給硬件一點(diǎn)反應(yīng)時(shí)間/函數(shù)功能:做好讀溫度的準(zhǔn)備void readyreadtemp(void) init_ds18b20(); /將ds18b20初始化writeonechar(0xcc); / 跳過讀序號列號的操作writeonechar(0x44); /
17、啟動溫度轉(zhuǎn)換 ys(200); /轉(zhuǎn)換一次需要延時(shí)一段時(shí)間 init_ds18b20(); /將ds18b20初始化writeonechar(0xcc); /跳過讀序號列號的操作writeonechar(0xbe); /讀取溫度寄存器,前兩個分別是溫度的低位和高char dwd()/讀取溫度,返回溫度值char wd; unsigned char tl,th,tn,td; /儲存暫存器的溫度低位 flag=0;readyreadtemp(); /讀溫度準(zhǔn)備tl=readonechar(); /先讀的是溫度值低位th=readonechar(); /接著讀的是溫度值高位if(th&0xf
18、8)!=0x00)/判斷高五位 得到溫度正負(fù)標(biāo)志flag=1;tl=tl; /取反th=th; /取反tltemp=tl+1; /低位加1tl=tltemp;if(tltemp>255) th+; /如果低8位大于255,向高8位進(jìn)1 tn=th*16+tl/16; /實(shí)際溫度值=(th*256+tl)/16,即: td=(tl%16)*10/16; /計(jì)算溫度的小數(shù)部分,tn=th*16+tl/16; /實(shí)際溫度值=(th*256+tl)/16,即: td=(tl%16)*10/16; /計(jì)算溫度的小數(shù)部分,將余數(shù)乘以10再除以16wd=tn+td/10.0;if(flag=1)wd=
19、-wd;return wd; /(wd%1)*10為小數(shù)位6.2電機(jī)驅(qū)動unsigned char dj=0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09;void ys(unsigned int z)unsigned int x; unsigned int y;for(x=z;x>0;x-)for(y=114;y>0;y-);/ 電機(jī)程序void djzd(unsigned char k,bit c) /轉(zhuǎn)過的角度=k*16*360/128,c代表正反轉(zhuǎn)unsigned char i,j,temp; if(c=1)for(j=0;j<(k*16
20、);j+)for(i=0;i<8;i+)p1=dji;ys(5);elsefor(j=0;j<(k*16);j+)for(i=8;i>0;i-)temp=i-1;p1=djtemp;ys(5);6.3時(shí)鐘讀取sbit rst=p37;sbit clk=p33;sbit din=p34;/函數(shù)功能:延時(shí)若干微秒void delaynus(unsigned char n) unsigned char i; for(i=0;i<n;i+);/函數(shù)功能:向1302寫一個字節(jié)數(shù)據(jù)void write1302(unsigned char dat) unsigned char i;
21、sclk=0; /拉低sclk,為脈沖上升沿寫入數(shù)據(jù)做好準(zhǔn)備 delaynus(2); /稍微等待,使硬件做好準(zhǔn)備 for(i=0;i<8;i+) /連續(xù)寫8個二進(jìn)制位數(shù)據(jù) data=dat&0x01;delaynus(2); /取出dat的第0位數(shù)據(jù)寫入1302 sclk=1; delaynus(2); /上升沿寫入數(shù)據(jù) sclk=0; /重新拉低sclk,形成脈沖 dat>>=1; /將dat的各數(shù)據(jù)位右移1位,準(zhǔn)備寫入下一個數(shù) /函數(shù)功能:根據(jù)命令字,向1302寫一個字節(jié)數(shù)據(jù)void writeset1302(unsigned char cmd,unsigned
22、 char dat) rst=0; /禁止數(shù)據(jù)傳遞 sclk=0; /確保寫數(shù)居前sclk被拉低 rst=1; delaynus(2); /啟動數(shù)據(jù)傳輸 write1302(cmd); /寫入命令字 write1302(dat); /寫數(shù)據(jù) sclk=1; /將時(shí)鐘電平置于高電平狀態(tài) rst=0; /禁止數(shù)據(jù)傳遞 /函數(shù)功能:從1302讀一個字節(jié)數(shù)據(jù) unsigned char read1302(void) unsigned char i,dat;delaynus(2); /稍微等待,使硬件做好準(zhǔn)備for(i=0;i<8;i+) /連續(xù)讀8個二進(jìn)制位數(shù)據(jù) dat>>=1; i
23、f(data=1) /如果讀出的數(shù)據(jù)是1 dat|=0x80; /將1取出,寫在dat的最高位 sclk=1; delaynus(2); /將sclk置于高電平,為下降沿讀出 sclk=0; delaynus(2); /拉低sclk,形成脈沖下降沿 i=dat/16; i=i*10+dat%16; return i; /將讀出的數(shù)據(jù)返回 /函數(shù)功能:根據(jù)命令字,從1302讀取一個字節(jié)數(shù)據(jù)unsigned char readset1302(unsigned char cmd) unsigned char dat; rst=0; /拉低rst sclk=0; /確保寫數(shù)居前sclk被拉低 rst=
24、1; /啟動數(shù)據(jù)傳輸 write1302(cmd); /寫入命令字 dat=read1302(); /讀出數(shù)據(jù) sclk=1; /將時(shí)鐘電平置于已知狀態(tài) rst=0; /禁止數(shù)據(jù)傳遞 return dat; /將讀出的數(shù)據(jù)返回/*函數(shù)功能: 1302進(jìn)行初始化設(shè)置*/ void init_ds1302(void) unsigned char flag; writeset1302(0x8e,0x00); /根據(jù)寫狀態(tài)寄存器命令字, writeset1302(0x80,0x30); /根據(jù)寫秒寄存器命令字,寫入秒的初始值writeset1302(0x82,0x17); /根據(jù)寫分寄存器命令字,寫入
25、分的初始值writeset1302(0x84,0x08); /根據(jù)寫小時(shí)寄存器命令字,寫入小時(shí)的初始值writeset1302(0x86,0x01); /根據(jù)寫日寄存器命令字,寫入日的初始值writeset1302(0x88,0x07); /根據(jù)寫月寄存器命令字,寫入月的初始值writeset1302(0x8c,0x13); /根據(jù)寫年寄存器命令字,寫入年的初始值writeset1302(0x8a,0x1); /根據(jù)寫年寄存器命令字,寫入年的初始值writeset1302(0x90,0xa5); /打開充電功能 選擇2k電阻充writeset1302(0x8e,0x80); /根據(jù)寫狀態(tài)寄存器
26、命令字,寫入保6.4諾基亞5110驅(qū)動sbit rst=p37;sbit clk=p33;sbit din=p34;sbit dq=p14;sbit sclk=p26; /位定義1302芯片的接口,時(shí)鐘輸出端口定義在p1.0引腳sbit data=p25; /位定義1302芯片的接口,數(shù)據(jù)輸出端定義在p1.1引腳sbit rst=p24; /位定義1302芯片的接口,復(fù)位端口定義在p1.2引腳void delay_1us(void) unsigned int i; for(i=0;i<1000;i+); void xdc(unsigned char dcc,bit k) /k=0寫命令,
27、k=1寫數(shù)據(jù)unsigned char i;ce=0; /片選選通if(k=0) /命令dc=0;else dc=1; /數(shù)據(jù)for(i=0;i<8;i+)if(dcc&0x80)din=1;elsedin=0;clk=0;dcc=dcc<<1;/放在這里的主要原因是等待一點(diǎn)時(shí)間clk=1;ce=1; /寫入完成后禁止寫入void lcd_clear(void) unsigned int i; xdc(0x0c,0); xdc(0x80, 0); for (i=0; i<504; i+) xdc(0, 1); /函數(shù)功能:5110初始化void csh5110(
28、void) rst=0; / 產(chǎn)生一個讓lcd復(fù)位的低電平脈沖 delay_1us(); rst=1; ce=0; / 關(guān)閉lcd delay_1us(); ce=1; / 使能lcd delay_1us();xdc(0x21, 0);/ 使用擴(kuò)展命令設(shè)置lcd模式 xdc(0xbf, 0);/ 設(shè)置液晶偏置電壓 可調(diào)節(jié)屏幕的對比度 xdc(0x06, 0);/ 溫度校正 xdc(0x13, 0);/ 1:48 xdc(0x20, 0);/ 使用基本命令,v=0,水平尋址 lcd_clear(); / 清屏 xdc(0x0c, 0);/ 設(shè)定顯示模式,正常顯示 ce=0; / 關(guān)閉lcd /函
29、數(shù)功能:設(shè)置lcd坐標(biāo)函數(shù)void lcd_set_xy(unsigned char x, unsigned char y) xdc(0x40 | y, 0); / column xdc(0x80 | x, 0); / row /函數(shù)功能:顯示英文字符void lcd_write_char(unsigned char c,unsigned char h,unsigned char l) unsigned char line;c=c-32;lcd_set_xy(h,l); for (line=0;line<6;line+) xdc(zfbcline,1);/顯示小四漢字void hz(un
30、signed char *c,unsigned char h,unsigned char l)unsigned char line;lcd_set_xy(h,l); for (line=0;line<16;line+) xdc(cline,1);lcd_set_xy(h,l+1); for (line=16;line<32;line+) xdc(cline,1);/顯示小五漢字void xshz(unsigned char *c,unsigned char h,unsigned char l)unsigned char line;lcd_set_xy(h,l); for (line
31、=0;line<12;line+) xdc(cline,1);lcd_set_xy(h,l+1); for (line=12;line<24;line+) xdc(cline,1);/整個屏幕顯示void display(uchar n,uchar y,uchar r,uchar s,uchar f,uchar z,char wd) unsigned char ka; hz(zhou1,0,0); hz(xingqi+(z-1)*32,16,0);ka=n/10;lcd_write_char(ka+48,32,0);ka=n%10;lcd_write_char(ka+48,38,0
32、);lcd_write_char('/',44,0);ka=y/10;lcd_write_char(ka+48,50,0);ka=y%10;lcd_write_char(ka+48,56,0);lcd_write_char('/',62,0);ka=r/10;lcd_write_char(ka+48,68,0);ka=r%10;lcd_write_char(ka+48,74,0);ka=s/10;lcd_write_char(ka+48,32,1);ka=s%10;lcd_write_char(ka+48,38,1);lcd_write_char(':&
33、#39;,44,1);ka=f/10;lcd_write_char(ka+48,50,1);ka=f%10;lcd_write_char(ka+48,56,1); if(wd<0)lcd_write_char('-',48,5);wd=-wd;ka=wd/10;lcd_write_char(ka+48,60,5);ka=wd%10;lcd_write_char(ka+48,66,5); lcd_write_char('c',78,5); lcd_write_char(124,72,5);xshz(hai,0,2); xshz(fu,12,2); xshz(
34、wei,26,2); xshz(xiong,38,2); xshz(wei,52,2); xshz(jun,64,2); xshz(xiang,0,4); xshz(ri,12,4); xshz(kui,24,4);/6.5主程序 void main()csh5110(); /液晶初始化readyreadtemp(); /溫度初始化init_ds1302(); dusj();display(n,y,r,s,f,z,wd1); it0=1; ex0=1; ea=1;while(1)if(ks) dusj(); display(n,y,r,s,f,z,wd1);a1=p2&0x0f;p3=
35、p2;for(i2=0;i2<14;i2+) /查表找出人的方位,0初始位置,1+ 45度 if(biaoi2=a1)break;a2=i2;if(a2<14) /則有人if(a2>=8&&a<=11) a2=(a2-8)*2;else if(a2>=12)a2=(a2-12)*6;elsea2=a2;a2=a2+8; switch(a2-a) case 1:djzd(1,0);a2=a2-8;a=a2;break;case 2: djzd(2,0);a2=a2-8;a=a2; break;case 3: djzd(3,0);a2=a2-8;a=a
36、2; break;case 4: djzd(4,0);a2=a2-8;a=a2; break;case 5: djzd(3,1); a2=a2-8;a=a2; break;case 6: djzd(2,1); a2=a2-8;a=a2;break;case 7: djzd(1,1); a2=a2-8;a=a2; break;case 8: break;case 9: djzd(1,0); a2=a2-8;a=a2; break; case 10: djzd(2,0);a2=a2-8;a=a2; break;case 11: djzd(3,0);a2=a2-8;a=a2; break;case
37、12: djzd(4,0); a2=a2-8;a=a2; break;case 13: djzd(3,1); a2=a2-8;a=a2;break;case 14: djzd(2,1); a2=a2-8;a=a2; break;case 15: djzd(1,1);a2=a2-8;a=a2; break; default:break; void aaaa() interrupt 0 /電機(jī)位置初始化程序unsigned char i1;while(!p32)for(i1=0;i1<8;i1+)p1=dji1;ys(5);ks=1;ea=0;7、 設(shè)計(jì)結(jié)果及分析 設(shè)計(jì)結(jié)果,電機(jī)在初始化位置
38、后能根據(jù)人體紅外傳感器檢測出人的位置從而改變轉(zhuǎn)向并面向人。由于傳感器模塊的電路決定了紅外傳感器在感應(yīng)人體進(jìn)入?yún)^(qū)域時(shí)有最低5s的輸出時(shí)間,造成單片機(jī)判斷上有一定的困難,在人體方位確定下來后單片機(jī)能在5s后對人的位置能有個準(zhǔn)確的判斷,在傳感器輸出結(jié)束后有一個封存時(shí)間,這封存時(shí)間是紅外傳感器應(yīng)用的一個很大的優(yōu)點(diǎn),其最初目的是為了減少干擾,但在這里的應(yīng)用確成為了一個缺點(diǎn)。對人位置的判斷也通過程序?qū)θ说呐袛嗟玫揭欢ǖ母牧?,但是仍不能消除傳感器自身特性的影響。傳感器擺放成一個正方形,能測出八方人的位置,由于他120度以上的檢測角決定了4個傳感器的擺放位置以及檢測方向的多少。 諾記5110顯示當(dāng)前的溫度時(shí)間
39、,諾基亞5110液晶顯示了時(shí)鐘芯片的年月日分時(shí)周,但是沒有顯示秒,因?yàn)殡姍C(jī)不是一種快速反應(yīng)的的器件,在電機(jī)轉(zhuǎn)動工程中有可能存在超過1s的轉(zhuǎn)動,所以秒的顯示在這里會出現(xiàn)一定的誤差,意義不大。文字的顯示在此程序有兩種字體,一種的小四(16*16),一種是小五(12*12),數(shù)字及符號的顯示采用(6*8)的字符 。這樣在排版上具能跟美觀,而且比較標(biāo)準(zhǔn),降低的程序的復(fù)雜性。 溫度傳感器ds18b20是一總線通信,對時(shí)間要求比較嚴(yán)格,不同的晶振在通信時(shí)要在程序改下不同的數(shù)據(jù)。8、 總結(jié)心得和體會 通過本學(xué)期的單片機(jī)課程設(shè)計(jì)學(xué)習(xí)研究,從而了解到,首先要有自己小組上獨(dú)特創(chuàng)意上的設(shè)計(jì),要切合自身的實(shí)踐能力不過高要求自己且嚴(yán)格約束自己。為更好的將理論教學(xué)與實(shí)踐相結(jié)合,成功完成試驗(yàn)要求,需要我們對單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的各種方法有所了解,通過小組成員之間的興趣進(jìn)行分工合作,培養(yǎng)成員之間的合作精神,節(jié)省時(shí)間更大效益的完成。熟悉電子系統(tǒng)設(shè)計(jì)的全過程;提高對設(shè)計(jì)課題的分析能力、編程能力及解決實(shí)際問題的綜合能力。通過本次課程實(shí)際的學(xué)習(xí),讓我們了解到的自身的一些不足。對于基礎(chǔ)知識掌握的不夠牢固,特別是對于單片機(jī)的前項(xiàng)結(jié)構(gòu)設(shè)計(jì)應(yīng)用理解及程序編
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年一建《機(jī)電工程管理與實(shí)務(wù)》考試基礎(chǔ)知識點(diǎn)庫同步練習(xí)試題
- 2025年會計(jì)職稱考試《初級會計(jì)實(shí)務(wù)》內(nèi)部控制與審計(jì)案例分析試題及解析
- 制作-卷角效果
- 2025年統(tǒng)計(jì)學(xué)專業(yè)期末考試題庫:統(tǒng)計(jì)推斷與檢驗(yàn)實(shí)際應(yīng)用試題解析與案例
- 2025年美發(fā)師創(chuàng)意造型考核試卷:春季發(fā)型設(shè)計(jì)技巧解析試題
- 2025年ACCA國際注冊會計(jì)師考試真題卷(財(cái)務(wù)會計(jì)與審計(jì)準(zhǔn)則)
- 建筑涂料防沉降技術(shù)要求
- 腰椎爆裂性骨折術(shù)后護(hù)理
- 膿毒癥感染性休克患者的護(hù)理
- 服裝店翻新工程管理服務(wù)書
- 2025年皖西衛(wèi)生職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫及參考答案
- 管接頭注塑模具設(shè)計(jì)開題報(bào)告
- 最新-駕駛員職業(yè)心理和生理健康知識二-課件
- 加氫裝置催化劑硫化方案
- 核電廠概率安全評價(jià)概述課件
- 2022“博學(xué)杯”全國幼兒識字與閱讀大賽選拔試卷
- 幼兒園硬筆專用字帖大寫數(shù)字描紅
- 《碳纖維片材加固混凝土結(jié)構(gòu)技術(shù)規(guī)程》(2022年版)
- 滬教牛津版四年級上冊英語全冊課件
- 青島城園林綠化技術(shù)規(guī)范
- 2022年信息管理概論復(fù)習(xí)資料
評論
0/150
提交評論