課程設(shè)計-可編程作息時間控制器.doc

上傳人:good****022 文檔編號:116507737 上傳時間:2022-07-05 格式:DOC 頁數(shù):33 大小:111.50KB
收藏 版權(quán)申訴 舉報 下載
課程設(shè)計-可編程作息時間控制器.doc_第1頁
第1頁 / 共33頁
課程設(shè)計-可編程作息時間控制器.doc_第2頁
第2頁 / 共33頁
課程設(shè)計-可編程作息時間控制器.doc_第3頁
第3頁 / 共33頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《課程設(shè)計-可編程作息時間控制器.doc》由會員分享,可在線閱讀,更多相關(guān)《課程設(shè)計-可編程作息時間控制器.doc(33頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、微處理器與接口課程設(shè)計設(shè)計題目:可編程作息時間控制器學 院:年 級:專 業(yè):姓 名:學 號:指導(dǎo)教師:張明波 王積翔 2015 年 12 月 15 日電子技術(shù)課程設(shè)計目錄1.1 前言21.2設(shè)計內(nèi)容及意義12.原理及工作過程說明43.1系統(tǒng)電路圖63.2詳細設(shè)計73.31602LCD液晶顯示器74,心得與問題85,具體程序10參考文獻321.1 前言本課程既是一門專業(yè)基礎(chǔ)課,又是一門實踐性很強的課程,對培養(yǎng)學生解決工程問題的能力和其他后續(xù)課程的教學都具有重要意義。課程目標是通過理論和實驗學習,使學生掌握單片機的工作原理、基本接口技術(shù)和使用單片機構(gòu)成應(yīng)用系統(tǒng)的基本方法、設(shè)計原理。為本課程實踐環(huán)節(jié)

2、打下基礎(chǔ),為傳感器與檢測技術(shù)、PLC,機電傳動與控制、機電一體化系統(tǒng)設(shè)計等課程創(chuàng)造條件,為學生從事機電一體化專業(yè)技術(shù)工作打下基礎(chǔ)。 本課程的教學,要求學生先行學習C語言程序設(shè)計、電子技術(shù)基礎(chǔ)等,同時掌握程序編制與接口電路設(shè)計的基本知識,著力培養(yǎng)和提高學生運用各項基本理論和方法解決實際問題的分析能力和動手能力,增強學生工程素質(zhì)和創(chuàng)新能力。1.2 設(shè)計內(nèi)容及意義實驗名稱: 可編程作息時間控制器 實驗要求:本項目利用單片機定時計數(shù)器及LCD接口實現(xiàn)實時時鐘顯示,并具有可調(diào)整的上下課打鈴,燈光控制等功能的作息時間控制器。實驗涉及內(nèi)容:定時器實驗,LCD顯示實驗,8279鍵盤顯示接口實驗 具體原理說明:

3、1定時器部分:定時器/計數(shù)器的工作原理計數(shù)器輸入的計數(shù)脈沖源系統(tǒng)的時鐘振蕩器輸出脈沖經(jīng)12分頻后產(chǎn)生;T0或T1引腳輸入的外部脈沖源。計數(shù)過程每來一個脈沖計數(shù)器加1,當加到計數(shù)器為全1(即FFFFH)時,再輸入一個脈沖就使計數(shù)器回零,且計數(shù)器的溢出使TCON中TF0或TF1置1,向CPU發(fā)出中斷請求(定時器/計數(shù)器中斷允許時)。如果定時器/計數(shù)器工作于定時模式,則表示定時時間已到;如果工作于計數(shù)模式,則表示計數(shù)值已滿。定時應(yīng)用用作定時器:此時設(shè)置為定時器模式,加1計數(shù)器是對內(nèi)部機器周期計數(shù)(1個機器周期等于12個振蕩周期,即計數(shù)頻率為晶振頻率的1/12)。計數(shù)值N乘以機器周期Tcy就是定時時間

4、t 。計數(shù)運用用作計數(shù)器:此時設(shè)置為計數(shù)器模式,外部事件計數(shù)脈沖由T0或T1引腳輸入到計數(shù)器。每來一個外部脈沖,計數(shù)器加1。但單片機對外部脈沖有基本要求:脈沖的高低電平持續(xù)時間都必須大于1個機器周期。2.LCD顯示;液晶顯示器(LCD)是一種功耗極低的顯示器件,它廣泛應(yīng)用于便攜式電子產(chǎn)品中,它不僅省電,而且能夠顯示大量的信息,如文字、曲線、圖形等,其顯示界面較之數(shù)碼管有了質(zhì)的提高。近年來液晶顯示技術(shù)發(fā)展很快,LCD顯示器已經(jīng)成為僅次于顯象管的第二大顯示產(chǎn)業(yè)。LCD顯示器由于類型、用途不同,其性能、結(jié)構(gòu)不可能完全相同,但其基本形態(tài)和結(jié)構(gòu)卻是大同小異,通??蓪CD為筆段型、字符型和點陣圖形型3.

5、8279鍵盤顯示接口:INTEL 8279是一種可編程鍵盤、顯示器接口芯片,它含有鍵盤輸入和顯示器輸出兩種功能。鍵盤輸入時,它提供自動掃描,能與按鍵或傳感器組成的矩陣相連,接受輸入信息,它能自動消除開關(guān)抖動并能對多鍵同時按下提供保護。顯示輸出時,它有一個16*8位顯示RAM,其內(nèi)容通過自動掃描,可由8或16位LED數(shù)碼管顯示。2.原理及工作過程說明制作一個可編程作息時間控制器鬧鐘,當4路鬧鐘中的任一路到時,均會點亮燈、打鈴。如有需求,可對程序進行調(diào)整,增加鬧鐘的路數(shù)及到時后的處理方式。定時鬧鐘的基本功能如下。(1)顯示時鐘時間,格式為“時時:分分”,并可重新設(shè)置。(2)顯示鬧鈴時間,格式為“時

6、時:分分”,且顯示閃爍以便與時鐘時間相區(qū)分。鬧鈴時間可重新設(shè)置。(3)程序執(zhí)行后工作指示燈LED閃爍,表示時鐘工作為時鐘顯示模式LCD顯示的初始時間為“23:58”。按下K2,閃爍顯示的“00:00”為鬧鈴的時間,單擊K3又返回時鐘顯示模式。時鐘從“23:58”開始計時,定時時間“00:00”到時,繼電器開關(guān)接通,控制電器的開啟,且可發(fā)出聲響(可控)。時鐘與鬧鈴時問的設(shè)置可通過4個功能按鍵KlK4實現(xiàn),具體說明如下。(1)時鐘時間的設(shè)置:首先單擊Kl進入時鐘設(shè)置模式。此時每單擊一下Kl,則小時增l,單擊一下K2,則分鐘增1,再單擊K3則設(shè)置完成,返回時鐘顯示模式。此時小時和分鐘均已發(fā)生變化。(

7、2)鬧鈴的時間設(shè)置:首先單擊,K3進入鬧鈴的設(shè)置模式。此時每單擊一下Kl,則小時增1,單擊一下K2,則分鐘增l,最后單擊K3則設(shè)置完成,返回鬧鈴顯示模式。此時鬧鈴的小時和分鐘均已發(fā)生變化。(3) K4的功能:鬧鐘更換。(4) K2單獨的功能:顯示鬧鈴時間。3.1系統(tǒng)電路圖實際圖3.2詳細設(shè)計程序部分主要采用了程序結(jié)構(gòu)的模塊化設(shè)計,避免了一些函數(shù)的不必要的重復(fù)書寫,使程序變得單間易懂。程序在執(zhí)行時,主程序要須通過調(diào)用子函數(shù)就可完成相應(yīng)的功能 。主程序流程圖如下鬧鈴2時間到?定時計數(shù)器時間顯示日期顯示鬧鈴4時間到?鬧鈴3時間到?鬧鈴1時間到?3.3 1602LCD液晶顯示器4 問題及心得:問題:由

8、于準備的不夠充分對于燈光的控制并沒有完美實現(xiàn)。心得:通過自己的不懈努力,我終于完成了設(shè)計的任務(wù)要求。功能上基本達標:時鐘的顯示,日期顯示,調(diào)時功能、校時功能、上課下課功能。在本次設(shè)計的過程中,我發(fā)現(xiàn)很多的問題,雖然以前沒有做過這樣的設(shè)計但通過這次設(shè)計我學會了很多東西,單片機課程設(shè)計重點就在于軟件算法的設(shè)計,需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺的寫好一個程序并不是一件簡單的事,比如寫一個程序看其功能很少認為編寫程序簡單,但到編程的時候才發(fā)現(xiàn)一些細微的知識或低級錯誤經(jīng)常犯做不到最后常常失敗,所以有些東西只有學精弄懂并且要細心才行,只學習理論有些東西是很難理解的,更談不上掌握。從這次

9、的課程設(shè)計中,我們真真正正的意識到,在以后的學習中,要理論聯(lián)系實際,把我們所學的理論知識用到實際當中,程序只有在經(jīng)常的練習的過程中才能提高,我想這就是我在這次課程設(shè)計中的最大收獲。5具體程序圖:#include #include #define uint unsigned int#define uchar unsigned char#define CON8279 0 xCFE9#define DATA8279 0 xCFE8#define s_site_x 6#define s_site_y 0/y為所在列#define m_site_x 3#define m_site_y 0/y為所在列#d

10、efine h_site_x 0#define h_site_y 0/y為所在列static uchar hour,min,scond; /計時時間static uchar s_hour,s_min,s_scond;/上課時間設(shè)置static uchar s_hour2,s_min2,s_scond2;/下課時間設(shè)置static uchar set_ok;/設(shè)置標志位static uchar set_ok2;uchar count = 0;/用于記錄定時器進入中斷次數(shù),以實現(xiàn)長時間定時uchar code keyval=0 x00,0 x01,0 x02,0 x03,0 x04,0 x05,0

11、 x06,0 x07,0 x08,0 x09,0 x0a,0 x0b,0 x10,0 x11,0 x12,0 x13,0 x18,0 x19,0 x1a,0 x1b;uchar code SEG=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71,0 x00;uchar key;sbit BUSY = P34;sbit STOBE = P35;void init();void scan_tim();void delay(uint tem);void KbD

12、isInit();uchar ReadKey();void Display(uchar y);void time0_init();void send(uint tem);void lcd_init();void lcd_disp_ascii(uint x,uint y,uchar dat);void disp_time(uint x,uint y,uchar s);void init()/初始化set_ok = 0;/允許設(shè)定時間set_ok2 = 0 ;hour = 12;/設(shè)定時鐘初值min = 0;scond = 0;s_hour =12;/設(shè)定鬧鐘初值s_min = 0;s_scond

13、= 0;s_hour2 =12;/設(shè)定鬧鐘初值s_min2 = 0;s_scond2= 0;lcd_init();KbDisInit();disp_time(s_site_x,s_site_y,scond);disp_time(m_site_x,m_site_y,min);disp_time(h_site_x,h_site_y,hour);disp_time(s_site_x+8,s_site_y+17,scond);disp_time(m_site_x+8,m_site_y+17,min);disp_time(h_site_x+8,h_site_y+17,hour);disp_time(s_

14、site_x+8,s_site_y+25,scond);disp_time(m_site_x+8,m_site_y+25,min);disp_time(h_site_x+8,h_site_y+25,hour);lcd_disp_ascii(2,0,58);lcd_disp_ascii(5,0,58);time0_init();uchar ReadKey()if(XBYTE0 xCFE9&0 x07)XBYTE0 xCFE9=0 x40;key=XBYTE0 xCFE8;return 0;void Display(uchar y)XBYTE0 xCFE9=0 x80;XBYTE0 xCFE8=S

15、EGy;void lcd_disp_ascii(uint x,uint y,uchar dat) / send(0 xf1);send(x);send(y);send(dat);void lcd_disp_hanzhi(uint x,uint y,uchar dat1,uchar dat2) / send(0 xf0);send(x);send(y);send(dat1);send(dat2);void disp_time(uint x,uint y,uchar s)/X為行 Y為列 s要顯示的時間(s,m,h對應(yīng)的x,y要區(qū)分)uchar i,j; i = s/10 + 48;j = s%1

16、0 + 48;lcd_disp_ascii(x+1,y,j);lcd_disp_ascii(x,y,i);void nokey()void k0()s_scond += 5 ;/秒加1 if(s_scond = 60)s_scond = 0;disp_time( s_site_x+8 ,s_site_y+17,s_scond);delay(10);delay(10);void k1()s_min += 5;/分加1if (s_min = 60)s_min = 0;disp_time( m_site_x+8 ,m_site_y+17,s_min);void k2()s_hour+;/時加1if

17、(s_hour = 12)s_hour = 0;disp_time( h_site_x+8 ,h_site_y+17,s_hour);void k3()s_scond2 += 5 ;/秒加1 if(s_scond2 = 60)s_scond2 = 0;disp_time( s_site_x+8 ,s_site_y+25,s_scond2);void k4()s_min2 += 5;/分加1if (s_min2 = 60)s_min2 = 0;disp_time( m_site_x+8 ,m_site_y+25,s_min2);void k5()s_hour2+;/時加1if (s_hour2

18、= 12)s_hour2 = 0;disp_time( h_site_x+8 ,h_site_y+25,s_hour2);void k6()/確定 set_ok = 1 ;set_ok2 = 1 ;void k7()/取消 set_ok = 0 ;set_ok2 = 0 ;/code void (code * keyproctab)() = nokey,k0,k1,k2,k3,k4,k5,k6,k7 ;/讀取鍵值并執(zhí)行對應(yīng)函數(shù)void send(uint tem)while(BUSY);P1 = tem;STOBE = 1;while(!BUSY);STOBE = 0;void key_wor

19、k()if(key = 0) k0();if(key = 1) k1();if(key = 2) k2();if(key = 3) k3();if(key = 4) k4();if(key = 5) k5();if(key = 6) k6();if(key = 7) k7();void main()init();/全部功能初始化lcd_disp_hanzhi(4,0,33,85);lcd_disp_hanzhi(5,0,28,50);lcd_disp_hanzhi(6,0,19,41);/lcd_disp_hanzhi(7,0,28,68);while(1)if(XBYTE0 xCFE9&0

20、x07)ReadKey();key=key-192;Display(key);/( * keyproctabReadKey()();/執(zhí)行按鍵對應(yīng)的功能key_work();delay(10);void Time0(void) interrupt 1 using 0/中斷函數(shù)服務(wù)子程序count+;if(count = 20)scan_tim();/一秒時間到/顯示時間count = 0;TH0=(65536-46083)/256;TL0=(65536-46083)%256;void scan_tim()/時間記錄函數(shù)scond+;disp_time(s_site_x,s_site_y,sco

21、nd);if(scond = 60)scond = 0;min +;disp_time(s_site_x,s_site_y,scond);disp_time(m_site_x,m_site_y,min);if(min = 60)min = 0;hour +;disp_time(m_site_x,m_site_y,min);disp_time(h_site_x,h_site_y,hour);if(hour = 24)hour = 0;disp_time(h_site_x,h_site_y,hour);if( (set_ok=1) & (scond=s_scond) & (hour = s_hou

22、r) & (s_min=min) )/上課時間到set_ok = 0;/關(guān)閉 lcd_disp_ascii(0,15,); /lcd_disp_hanzhi(0,1,41,47);/lcd_disp_hanzhi(1,1,31,46);if( (set_ok2=1) & (scond=s_scond2) & (hour = s_hour2) & (s_min2=min) )/下課時間到set_ok2 = 0;/關(guān)閉 lcd_disp_ascii(0,25,); /lcd_disp_hanzhi(0,1,47,34);/lcd_disp_hanzhi(1,1,31,46);void lcd_in

23、it()STOBE = 0;BUSY = 1;send(0 xf4);delay(10);void time0_init()EA=1;ET0=1;TMOD=0 x01;TH0=(65536-46083)/256;TL0=(65536-46083)%256;TR0=1;void KbDisInit()XBYTE0 xCFE9=0 x00;XBYTE0 xCFE9=0 xD1;while (XBYTE0 xCFE9&0 x80);XBYTE0 xCFE8=0 x34;void delay(uint tem)uint ii,jj;for (ii = 0;ii tem; ii +)for (jj =

24、0;jj 100; jj+);/*/*ASCII 碼說明:48-74 對應(yīng) 0-958 為 :30 為 上課31 為 下課14 為 到點*/*/ uchar i = 0;/time0_init();/KbDisInit();/Display(0);/lcd_init();/send(0 xf0);/send(00);/send(00);/send(26);/send(58);/send(0 xf1);/send(8);/send(18);/send(29);/send(0 xf1);/send(10);/send(18);/send(29);參考文獻微處理器原理及接口實驗指導(dǎo)書黑龍江大學電子實驗中心 王積翔,莊培棟 編3132

展開閱讀全文
溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!