3工位旋轉(zhuǎn)工作臺的控制系統(tǒng)設(shè)計(jì)
3工位旋轉(zhuǎn)工作臺的控制系統(tǒng)設(shè)計(jì),旋轉(zhuǎn),工作臺,控制系統(tǒng),設(shè)計(jì)
哈爾濱理工大學(xué)課程設(shè)計(jì)說明書
目錄
第1章 緒論 1
1.1 設(shè)計(jì)背景 1
1.2 設(shè)計(jì)的主要任務(wù) 1
第2章 系統(tǒng)總體方案及硬件設(shè)計(jì) 3
2.1 系統(tǒng)總體方案設(shè)計(jì) 3
2.2 硬件電路設(shè)計(jì) 3
2.2.1 時(shí)鐘電路模塊 4
2.2.2 復(fù)位電路模塊 5
2.2.3 顯示模塊 6
2.2.4 報(bào)警模塊 7
2.2.5 鍵盤模塊 7
第3章 軟件設(shè)計(jì) 8
3.1 軟件總體設(shè)計(jì)方案 8
3.2 軟件設(shè)計(jì)具體過程 11
3.2.1 延時(shí)模塊設(shè)計(jì) 11
3.2.2 中斷程序 12
3.2.3 鍵盤掃描子程序 13
3.2.4 計(jì)分子程序 13
3.2.5 主程序 15
第4章 硬件焊接與調(diào)試 16
4.1 硬件實(shí)物圖 16
4.2 調(diào)試結(jié)果 16
課程設(shè)計(jì)心得 17
附錄1 18
附錄2 19
參考文獻(xiàn) 27
第1章 緒論
1.1 設(shè)計(jì)背景
體育比賽計(jì)時(shí)計(jì)分系統(tǒng)是對體育比賽過程中所產(chǎn)生的時(shí)間,比分等數(shù)據(jù)進(jìn)行快速采集記錄,加工處理,傳遞利用的信息系統(tǒng)。根據(jù)不同運(yùn)動(dòng)項(xiàng)目的不同比賽規(guī)則要求,體育比賽的計(jì)時(shí)計(jì)分系統(tǒng)包括測量類,評分類,命中類,制勝類得分類等多種類型。
籃球比賽是根據(jù)運(yùn)動(dòng)隊(duì)在規(guī)定的比賽時(shí)間里得分多少來決定勝負(fù)的,因此,籃球比賽的計(jì)時(shí)計(jì)分系統(tǒng)是一種得分類型的系統(tǒng)。籃球比賽的計(jì)時(shí)計(jì)分系統(tǒng)由計(jì)時(shí)器,計(jì)分器等多種電子設(shè)備組成,同時(shí),根據(jù)目前高水平籃球比賽要求,完善的籃球比賽計(jì)時(shí)計(jì)分系統(tǒng)設(shè)備應(yīng)能夠與現(xiàn)場成績處理,現(xiàn)場大屏幕,電視轉(zhuǎn)播車等多種設(shè)備相聯(lián),以便實(shí)現(xiàn)高比賽現(xiàn)場感,表演娛樂觀眾等功能目標(biāo)。
由于單片機(jī)的集成度高,功能強(qiáng),通用性好,特別是它具有體積小,重量輕,能耗低,價(jià)格便宜,可靠性高,抗干擾能力強(qiáng)和使用方便等獨(dú)特的優(yōu)點(diǎn),使單片機(jī)迅速得到了推廣應(yīng)用,目前已經(jīng)成為測量控制應(yīng)用系統(tǒng)中的優(yōu)選機(jī)種和新電子產(chǎn)品的關(guān)鍵部位。世界各大電氣廠家,測控技術(shù)企業(yè),機(jī)電行業(yè),競相把單片機(jī)應(yīng)用于產(chǎn)品更新,作為實(shí)現(xiàn)數(shù)字化,智能化的核心部件?;@球計(jì)時(shí)計(jì)分器就是以單片機(jī)為核心的計(jì)時(shí)計(jì)分系統(tǒng),由計(jì)時(shí)器,計(jì)分器,綜合控制器和24秒控制器等組成。
1.2 設(shè)計(jì)的主要任務(wù)
本設(shè)計(jì)是基于AT89C52單片機(jī)的籃球計(jì)時(shí)計(jì)分器,利用7段共陰LED作為顯示器件。在此設(shè)計(jì)中共接入了1個(gè)四位一體7段共陰LED顯示器,2個(gè)兩位一體7段共陰LED顯示器,前者用來記錄賽程時(shí)間,其中2位用于顯示分鐘,2位用于顯示秒鐘,后者用于記錄甲乙隊(duì)的分?jǐn)?shù),每隊(duì)2個(gè)LED顯示器顯示范圍可達(dá)到0~99分。賽程計(jì)時(shí)采用倒計(jì)時(shí)方式,比賽開始時(shí)啟動(dòng)計(jì)時(shí),直至計(jì)時(shí)到零為止。
其次,為了配合計(jì)時(shí)器和計(jì)分器校正調(diào)整時(shí)間和比分,我們特定在本設(shè)計(jì)中設(shè)立了7個(gè)按鍵,用于啟動(dòng),暫停時(shí)間,調(diào)整分?jǐn)?shù)和暫停等功能。采用單片機(jī)控制是這個(gè)系統(tǒng)按鍵操作使用簡潔,LED顯示,安裝方便。
第2章 系統(tǒng)總體方案及硬件設(shè)計(jì)
2.1 系統(tǒng)總體方案設(shè)計(jì)
該籃球計(jì)時(shí)計(jì)分器主要包括單片機(jī)控制系統(tǒng)、計(jì)時(shí)顯示模塊、計(jì)分顯示模塊、定時(shí)報(bào)警,按鍵控制鍵盤模塊。通過這幾個(gè)模塊的協(xié)調(diào)工作就可以完成相應(yīng)的計(jì)時(shí)計(jì)分控制和顯示功能。這四個(gè)模塊的相互連接如圖2-1所示:
圖2-1 連接簡圖
2.2 硬件電路設(shè)計(jì)
AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,AT89C52單片機(jī)在電子行業(yè)中有著廣泛的應(yīng)用。
AT89C52具有如下特點(diǎn):AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫口線,AT89C52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結(jié)合在一起[1]。
圖2-2 AT89C52單片機(jī)引腳圖
2.2.1 時(shí)鐘電路模塊
時(shí)鐘電路在單片機(jī)系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,時(shí)鐘是保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時(shí)信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢。為達(dá)到振蕩周期是12MHZ的要求,這里要采用12MHZ的晶振,另外有兩個(gè)33P的電容,兩晶振引腳分別連到XTAL1和XTAL2振蕩脈沖輸入引腳[4]。具體連接如圖2-3所示。
圖2-3 晶振連接圖
2.2.2 復(fù)位電路模塊
復(fù)位是單片微機(jī)的初始化操作,其主要功能是把PC初始化為0000H,使單片微機(jī)從0000H單元開始執(zhí)行程序。除進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),為擺脫困境,可以按復(fù)位鍵以重新啟動(dòng),也可以通過監(jiān)視定時(shí)器來強(qiáng)迫復(fù)位。RST引腳是復(fù)位信號的輸入端[2]。復(fù)位電路在這里采用的是上電+按鈕復(fù)位電路形式,具體連接電路如圖2-4所示。
圖2-4 復(fù)位電路
2.2.3 顯示模塊
本設(shè)計(jì)采用共陰極數(shù)碼顯示器,通常,共陰極接低電平(一般接地),其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸出端為高電平時(shí),該端所連接的字符導(dǎo)通并點(diǎn)亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。同樣,要求段驅(qū)動(dòng)電路能提供額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。本次設(shè)計(jì)在顯示模塊用到的是一個(gè)4位一體和2個(gè)兩位一體共陰極數(shù)碼管,共有8個(gè)代碼輸入口和8個(gè)位選輸入口,采用排阻提供上拉電流數(shù)碼管,以保證有足夠大的電流點(diǎn)亮數(shù)碼管,采用動(dòng)態(tài)驅(qū)動(dòng),使各位數(shù)碼管逐個(gè)輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)[10]。由于掃描速度極快,顯示效果與靜態(tài)驅(qū)動(dòng)相同,其具體圖形如下圖2-5和圖2-6所示。
圖2-5 計(jì)時(shí)顯示
圖2-6 計(jì)分顯示
2.2.4 報(bào)警模塊
蜂鳴器通過一NPN型三極管進(jìn)行驅(qū)動(dòng),如圖觸發(fā)信號有基極引入[9]。接線圖如圖2-7所示。
圖2-7 報(bào)警模塊
2.2.5 鍵盤模塊
圖2-8 鍵盤模塊
第3章 軟件設(shè)計(jì)
在設(shè)計(jì)程序之前,我們首先要對單片機(jī)應(yīng)用系統(tǒng)預(yù)完成的任務(wù)進(jìn)行深入的分析,明確系統(tǒng)的設(shè)計(jì)任務(wù)、功能要求和技術(shù)指標(biāo)。其次,要對系統(tǒng)的硬件資源和工作環(huán)境進(jìn)行分析。這是單片機(jī)應(yīng)用系統(tǒng)程序設(shè)計(jì)的基礎(chǔ)和條件。在單片機(jī)應(yīng)用系統(tǒng)的開發(fā)過程中,主要采用的有匯編語言和C語言。匯編語言比C語言繁瑣,但是匯編語言能更充分的發(fā)揮指令系統(tǒng)的功能和效率,可以獲得最簡練的目標(biāo)程序。而C語言的應(yīng)用最為廣泛,C語言能直接對計(jì)算機(jī)的硬件進(jìn)行操作,而且語言靈活、程序結(jié)構(gòu)良好、數(shù)據(jù)類型及運(yùn)算符豐富、代碼效率高、可移植性好[8]。
3.1 軟件總體設(shè)計(jì)方案
本次單片機(jī)課程設(shè)計(jì)軟件設(shè)計(jì)部分采用模塊化程序設(shè)計(jì),程序部分由主程序、T0中斷程序、掃描顯示子程序、計(jì)時(shí)加(減)1秒的子程序、暫停子程序、快表和回表子程序、延時(shí)子程序等組成.其程序流程圖如圖3-1和圖3-2。
圖3-1 主程序流程圖
圖3-2 掃描刷新顯示子程序流程圖
3.2 軟件設(shè)計(jì)具體過程
軟件設(shè)計(jì)部分采用模塊化程序設(shè)計(jì),用C語言編寫。Keil是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。
Keil C51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級語言的優(yōu)勢。
程序部分由主程序、T0中斷程序、掃描顯示子程序、暫停子程序、加分子程序、減分子程序、延時(shí)子程序等組成。
3.2.1 延時(shí)模塊設(shè)計(jì)
void display(uchar fen2,uchar fen1,uchar miao2,uchar miao1) //時(shí)間顯示程序
{
dula=0;
P0=table[fen2];
dula=1;
dula=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);
P0=table[fen1]|0x80;
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay(5);
P0=table[miao2];
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
delay(5);
P0=table[miao1]|0x80;
dula=1;
dula=0;
P0=0xf7;
wela=1;
wela=0;
delay(5);
}
本設(shè)計(jì)中各個(gè)數(shù)碼管采用動(dòng)態(tài)驅(qū)動(dòng),使各位數(shù)碼管逐個(gè)輪流受控顯示,由于掃描速度極快(本實(shí)驗(yàn)中大約每20毫秒刷新一次),所以顯示效果與靜態(tài)驅(qū)動(dòng)相同。
3.2.2 中斷程序
void time0() interrupt 1 //中斷程序
{
TH0=(65536-46080)/256; //由于晶振為11.0592,故所記次數(shù)應(yīng)為46080,計(jì)時(shí)器每隔50000微秒發(fā)起一次中斷。
TL0=(65536-46080)%256; //46080的來歷,為50000*11.0592/12
pp++;
}
3.2.3 鍵盤掃描子程序
void keyscan() // 鍵盤掃描程序
{
if(lcden==0)
delay(10);
if(lcden==0)
{
halt=1;
}
if(rs==0)
halt=0;
}
3.2.4 計(jì)分子程序
void jifen() // 計(jì)分模塊
{
if(A_ADD1==0)
{
delay(10);
if(A_ADD1==0)
{
numa++;
while(!A_ADD1);
}
}
if(A_ADD2==0)
{
delay(10);
if(A_ADD2==0)
{
numa=numa+2;
while(!A_ADD2);
}
}
if(A_DEC==0)
{
delay(10);
if(A_DEC==0)
{
numa=numa--;
while(!A_DEC);
}
}
if(B_ADD1==0)
{
delay(10);
if(A_ADD1==0)
{
numb++;
while(!A_ADD1);
}
}
if(B_ADD2==0)
{
delay(10);
if(A_ADD2==0)
{
numb=numb+2;
while(!A_ADD2);
}
}
if(B_DEC==0)
{
delay(10);
if(B_DEC==0)
{
numb--;
while(!B_DEC);
}
}
}50000*11.0592/12
3.2.5 主程序
void main()
{
TMOD=0x01;
TR0=1;
TH0=(65536-46080)/256; // 由于晶振為11.0592,故所記次數(shù)應(yīng)為46080,計(jì)時(shí)器每隔50000微秒發(fā)起一次中斷。
TL0=(65536-46080)%256; //46080的來歷,為50000×11.0592/12
ET0=1;
EA=1; //主板初始化 因51單片機(jī)芯片開機(jī)時(shí)各個(gè)IO口輸出為高電平,加上以下源代碼是為了防止各種外部模塊誤動(dòng)作
DS1302=0; //關(guān)DS1302模塊,與本實(shí)驗(yàn)無關(guān)
SD=0; //關(guān)SD卡模塊,與本實(shí)驗(yàn)無關(guān)
LCD1602=0; //關(guān)LCD1602模塊,與本實(shí)驗(yàn)無關(guān)
cs88=0; //關(guān)點(diǎn)陣管
lcden=1;
rs=1;
jishi(fen);
}
29
第4章 硬件焊接與調(diào)試
4.1 硬件實(shí)物圖
對照原理圖進(jìn)行焊接工作, 把硬件先依次正確插到相應(yīng)的位置,然后再次檢查器件是否都正確,確定無誤后進(jìn)行焊接.在焊接的過程中要注意不要將相臨的兩個(gè)引腳焊接在一起,防止短路影響使用。
硬件連接好以后,通過ISP下載線向單片機(jī)內(nèi)燒制HEX程序,觀察各部分工作情況。硬件連接如圖4-1所示。
圖4-1 硬件實(shí)物圖
4.2 調(diào)試結(jié)果
經(jīng)過多次參考源程序代碼,我初步實(shí)現(xiàn)了計(jì)時(shí)模塊功能,能顯示、開始、暫停、報(bào)警。計(jì)分模塊也實(shí)現(xiàn)了顯示功能,但是在結(jié)合計(jì)分模塊時(shí),由于計(jì)時(shí)模塊和計(jì)分模塊的相互干擾,程序出現(xiàn)不穩(wěn)定性,問題明顯。此次設(shè)計(jì)重點(diǎn)是計(jì)時(shí)、計(jì)分和鍵盤,難點(diǎn)是其間的相互結(jié)合。
課程設(shè)計(jì)心得
通過這幾天的單片機(jī)的實(shí)訓(xùn),我在理論的基礎(chǔ)上更深刻的掌握了單片機(jī)的深層內(nèi)容及實(shí)際生活中的應(yīng)用,實(shí)訓(xùn)鍛煉了自己動(dòng)手能力和思維能力,還有在軟件方面的編程能力,讓我受益匪淺,同時(shí)也暴露出一些平時(shí)學(xué)習(xí)上的問題,讓我深刻反思。這些問題的發(fā)現(xiàn)將為我以后的學(xué)習(xí)和工作找明道路,查漏補(bǔ)缺為進(jìn)一步學(xué)習(xí)作好準(zhǔn)備。
通過實(shí)踐,讓我更熟悉掌握了Keil uVision3應(yīng)用程序的運(yùn)用,讓我懂得了如何編寫一些簡單的程序,學(xué)會(huì)了如何制作單片機(jī)應(yīng)用程序,還有焊接和程序下載,。但在中間暴露出很多問題:對平時(shí)上課講的理論知識沒有完全掌握消化,到了實(shí)際操作中還得請教同學(xué),在焊接中焊接的基本工夫掌握不到家,手上工夫還是很欠缺的,使得電路板不是很美觀。這些問題的發(fā)現(xiàn),有助于提高我在以后的工作和學(xué)習(xí)中對此類問題的認(rèn)識,確保不在同一問題上再次犯錯(cuò)。嚴(yán)謹(jǐn)求實(shí)、踏實(shí)務(wù)實(shí),是我這次實(shí)訓(xùn)的深刻總結(jié)。
做課程設(shè)計(jì)的這幾天翻閱了很多書,也上了很多網(wǎng)站去尋找自己需要的資料。這種尋找有很強(qiáng)的目的性,只是為了自己選定的課題內(nèi)容而查閱,所以除了自己課題以外的其他方面幾乎還是一無所知。這讓我深刻的認(rèn)識到了自己專業(yè)知識的貧乏。為我對自己大四生活的規(guī)劃敲響了警鐘。我對單片機(jī)的學(xué)習(xí)不會(huì)因?yàn)檎n程設(shè)計(jì)的結(jié)束而結(jié)束,在接觸的眾多資料里,做設(shè)計(jì)只是走馬觀花般的點(diǎn)到。
通過單片機(jī)課程設(shè)計(jì),我加深了對單片機(jī)理論的理解,學(xué)回了怎樣將理論很好地應(yīng)用到實(shí)際當(dāng)中去,而且我還學(xué)會(huì)了如何去培養(yǎng)我們的不畏困難的挑戰(zhàn)精神,從而不斷地戰(zhàn)勝自己,超越自己,我在這一設(shè)計(jì)過程中,學(xué)會(huì)了堅(jiān)持不懈,不輕易言棄。設(shè)計(jì)過程,也好比是我們?nèi)祟惓砷L的歷程,常有一些不如意,也許這就是在對我們提出了挑戰(zhàn),勇敢過,也戰(zhàn)勝了,勝利的鐘聲也就一定會(huì)為我們而敲響。
附錄1
附錄2
#include
#define uchar unsigned char
sbit dula=P2^0; //段選信號的鎖存器控制
sbit wela=P2^1; //位選信號的鎖存器控制
sbit cs88=P2^2; //點(diǎn)陣管的鎖存器控制
cs88=0; //關(guān)點(diǎn)陣管
sbit beep=P2^3;
sbit LCD1602=P2^5; //定義LCD1602使能端,用于HJ-C52實(shí)驗(yàn)板復(fù)位,與本實(shí)驗(yàn)無關(guān)
sbit DS1302=P2^7; //定義DS1302時(shí)鐘使能端,用于HJ-C52實(shí)驗(yàn)板復(fù)位,與本實(shí)驗(yàn)無關(guān)
sbit SD=P2^6; //定義SD卡使能端,用于HJ-C52實(shí)驗(yàn)板復(fù)位,與本實(shí)驗(yàn)無關(guān)
void cmg88() //關(guān)數(shù)碼管,點(diǎn)陣函數(shù)
{
dula=1;
P0=0x00;
dula=0;
cs88=0x00;
P0=0x00;
cs88=1;
}
sbit lcden=P3^0;
sbit restart=P3^1;
sbit A_ADD1=P3^2; //定義按鍵輸入端口 k3
sbit A_ADD2=P3^4; //k5
sbit A_DEC=P3^6; //k7
sbit B_ADD1=P3^3; //定義按鍵輸入端口 k4
sbit B_ADD2=P3^5; //k6
sbit B_DEC=P3^7; //k8
unsigned char halt,min2,min1,sec2,sec1,sec=60 ,min=11;
unsigned int pp,numa=0,numb=0;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void display(uchar min2,uchar min1,uchar sec2,uchar sec1); //時(shí)間顯示模塊
void display1(uchar A2,uchar A1,uchar B2,uchar B1); //計(jì)分顯示模塊
void keyscan(); //鍵盤掃描模塊
void jishi(); //計(jì)時(shí)模塊
void delay(unsigned char i); //延時(shí)模塊
void jifen(); //計(jì)分模塊
void main()
{
TMOD=0x01;
TR0=1;
TH0=(65536-46080)/256; //由于晶振為11.0592,故所記次數(shù)應(yīng)為46080,計(jì)時(shí)器每隔50000微秒發(fā)起一次中斷。
TL0=(65536-46080)%256; //46080的來歷,為50000*11.0592/12
ET0=1;
EA=1; //主板初始化 因51單片機(jī)芯片開機(jī)時(shí)各個(gè)IO口輸出為高電平,加上以下源代碼是為了防止各種外部模塊誤動(dòng)作
DS1302=0; //關(guān)DS1302模塊,與本實(shí)驗(yàn)無關(guān)
SD=0; //關(guān)SD卡模塊,與本實(shí)驗(yàn)無關(guān)
LCD1602=0; //關(guān)LCD1602模塊,與本實(shí)驗(yàn)無關(guān)
cs88=0; //關(guān)點(diǎn)陣管
lcden=1;
restart=1;
while(1)
{
jishi();
jifen();
}
}
void time0() interrupt 1 //中斷程序
{
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
pp++;
}
void jishi() //計(jì)時(shí)模塊
{
keyscan();
if(halt==0)
{
TR0=1;
if(pp==20)
{
pp=0;
sec--;
if(sec==0)
{
sec=60;
min--;
if(min<=1)
beep=1;
if(min==0)
beep=0;
halt=1;
sec=60;
min=11;
}
}
min2=min/10;
min1=min%10;
sec2=sec/10;
sec1=sec%10;
display(min2,min1,sec2,sec1);
}
else
TR0=0;
display(min2,min1,sec2,sec1);
}
void keyscan() //鍵盤掃描程序
{
if(lcden==0)
delay(5);
if(lcden==1)
{
halt=1;
}
if(restart==1)
halt=0;
}
void delay(unsigned char i) //延時(shí)程序
{
unsigned char j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void jifen() //計(jì)分模塊
{
if(A_ADD1==1)
{
numa++;
}
if(A_ADD2==1)
{
(numa++)++;
}
if(A_DEC==1)
{
numa--;
}
if(B_ADD1==1)
{
numb++;
}
if(B_ADD2==1)
{
(numb++)++;
}
if(B_DEC==1)
{
numb--;
}
A2=numa/10;
A1=numa%10;
B2=numb/10;
B1=numb%10;
display1(A2,A1,B2,B1);
}
void display(uchar min2,uchar min1,uchar sec2,uchar sec1) //時(shí)間顯示程序
{
dula=1;
P0=table[min1];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(5);
dula=1;
P0=table[min2];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);
dula=1;
P0=table[sec1];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(5);
dula=1;
P0=table[sec2];
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=1;
wela=0;
delay(5);
}
void display1(uchar A2,uchar A1,uchar B2,uchar B1) //計(jì)分顯示程序
{
dula=1;
P0=table[A1];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(5);
dula=1;
P0=table[A2];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);
dula=1;
P0=table[B1];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(5);
dula=1;
P0=table[B2];
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=1;
wela=0;
delay(5);
}
參考文獻(xiàn)
[1] 周堅(jiān).單片機(jī)輕松入門[M].北京:航空航天大學(xué)出版社,2004.
[2] 張毅坤等.單片微型計(jì)算機(jī)原理及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,1998.
[3] 劉光斌.單片機(jī)系統(tǒng)實(shí)用抗干擾技術(shù)[M].北京:人民郵電出版社,2003.
[4] 張友德 趙志英 涂時(shí)亮. 單片微型機(jī)原理應(yīng)用與實(shí)驗(yàn)(第四版)[M].上海:復(fù)旦大學(xué)出版社,2005.
[5] 劉文濤.單片機(jī)語言C51典型應(yīng)用設(shè)計(jì)[M].北京:人民郵電出版社,2005.
[6] 張毅剛,譚曉均.MCS-51單片機(jī)應(yīng)用設(shè)計(jì)[M]. 哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1997.
[7] 祁偉.單片機(jī)C51程序設(shè)計(jì)教程與實(shí)驗(yàn)[M].北京:航空航天大學(xué)出版社,2006.
[8] 張 虹. 匯編語言程序設(shè)計(jì)[M].北京:中國礦業(yè)大學(xué)出版社,2005.
[9] 熊如貴.遮擋式紅外聲光報(bào)警裝置[J].北京:《電子制作》雜志社,2006.
[10] 康華光.電子技術(shù)基礎(chǔ) 模擬部分[M].北京:高等教育出版社,2004.
收藏