久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

單片機(jī)萬年歷實訓(xùn)報告

時間:2019-05-12 04:41:58下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《單片機(jī)萬年歷實訓(xùn)報告》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《單片機(jī)萬年歷實訓(xùn)報告》。

第一篇:單片機(jī)萬年歷實訓(xùn)報告

單片機(jī)萬年歷實訓(xùn)報告

部:電氣自動化系

級:13電信2班

名:周祝福

指導(dǎo)老師:黃麗英、侯聰玲

實訓(xùn)時間:2015年1月19日~23日

用AT89C51與LCD1602設(shè)計 的可調(diào)式電子日歷時鐘

一、總體設(shè)計

1.1、設(shè)計目的

為鞏固所學(xué)的單片機(jī)知識,把所學(xué)理論運(yùn)用到實踐中,用LCD1602與AT89C51 設(shè)計可調(diào)式電子日歷時鐘。

1.2、設(shè)計要求

(1)顯示:年、月、日、時、分、秒和星期;

(2)設(shè)置年、月、日、時、分、秒和星期的初始狀態(tài);

(3)能夠用4個按鍵調(diào)整日歷時鐘的年、月、日、時、分、秒和星期 ;

完成可調(diào)式電子日歷時鐘的硬件和軟件的設(shè)計,包括單片機(jī)的相關(guān)內(nèi)容;日歷時鐘模塊的設(shè)計,液晶顯示模塊的設(shè)計,按鍵模塊的設(shè)計??刂瞥绦虻木帉懙取?/p>

1.3、系統(tǒng)基本方案選擇和論證

1.3.1、單片機(jī)芯片的選擇方案

方案一:

采用89C51芯片作為硬件核心,采用Flash ROM,內(nèi)部具有4KB ROM 存儲空間,能于3V的超低壓工作,而且與MCS-51系列單片機(jī)完全兼容。方案二:

采用STC12C5A60S2系列單片機(jī)是宏晶科技生產(chǎn)的單時鐘/機(jī)器周期(1T)的單片機(jī),是高速/低功耗/超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換(250K/S),針對電機(jī)控制,強(qiáng)干擾場合。但造價較高。1.3.2、顯示模塊選擇方案和論證:

方案一:

采用點陣式數(shù)碼管顯示,點陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用顯示數(shù)字顯得太浪費(fèi),且價格也相對較高。所以不用此種作為顯示。方案二:

采用LED數(shù)碼管動態(tài)掃描,雖然LED數(shù)碼管價格適中,但要顯示多個數(shù)字所需要的個數(shù)偏多,功耗較大,顯示出來的只是拼音,而不是漢字。所以也不用此種作為顯示。方案三:

采用LCD液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量字符,且視覺效果較好,外形美觀。LCD1602可實現(xiàn)顯示2行十六個字符。1.3.4、電路設(shè)計最終方案決定

綜上各方案所述,對此次作品的方案選定:采用80C51作為主控制系統(tǒng); LCD1602液晶帶漢字庫顯示屏作為顯示部分。

二、硬件設(shè)計

2.1、電路設(shè)計模塊圖如圖

AT89C51 塊按鍵控制模LCD162

2.3、用proteus仿真軟件仿真并抓圖。

三、軟件設(shè)計

3.1、畫出各個函數(shù)流程圖。

3.1.1、LCD1602液晶顯示控制流程圖如圖

入口 對1602初始化寫入顯示設(shè)置命令 延時一段時間 檢查忙標(biāo)志 BF= 7>? 設(shè)置字符顯示位置 延時一段時間 向1602中寫入數(shù)據(jù) LCD顯示內(nèi)容 返回主程序

是 3.1.2、調(diào)時函數(shù)控制流程如圖

開始 控制鍵有效,調(diào)整年 控制鍵有效,調(diào)整月 等待按鍵程序 等待按鍵程序 加有效 減有效 加有效 減有效 年加 1 年減 1 月加 1 月減 1 控制鍵有效,調(diào)整日 控制鍵有效,調(diào)整星期 等待按鍵程序 等待按鍵程序 加有效 減有效 加有效 減有效 日加 1 日減 1 星期加 1 星期減 1 控制鍵有效,調(diào)整時 等待按鍵程序 加有效 時加 1 減有效 時減 1 控制鍵有效,調(diào)整分 等待按鍵程序 加有效 分加 1 減有效 分減 1 按鍵有效跳出調(diào)時程序,進(jìn)入主循環(huán)

實訓(xùn)心得:通過為期一周的單片機(jī)實訓(xùn),是我們對這門課有了許多新的了解,彌補(bǔ)了在課堂上學(xué)習(xí)的不足。相信這對我們以后的學(xué)習(xí)和工作都會有很大的幫助。我們一定要在最短的時間里對這些不足加以改正!在試訓(xùn)中有苦有甜,當(dāng)我們?yōu)橐粋€很難攻破的程序找出路時,心情煩躁,感覺自己很不可理喻,當(dāng)程序一點一點編好后,自己從心底感覺到一點小小的安慰,看著自己的成果。感覺很欣慰??偠灾?單片機(jī)課程設(shè)計對于我們有很大的幫助,我們從中受益匪淺。

程序代碼。

#include #define uchar unsigned char #define uint unsigned int

uchar a,count,S1num,xqnum;uchar yue,ri,shi,fen,miao;uint nian;

sbit lcdrs=P2^5;sbit lcdrw=P2^4;sbit lcden=P2^3;

sbit S1=P3^0;

//定義鍵--進(jìn)入設(shè)置 sbit S2=P3^1;

//定義鍵--增大 sbit S3=P3^2;

//定義鍵--減小 sbit S4=P3^3;

//定義鍵--退出設(shè)置

uchar code table0[]=“2015-01-11 SUN”;uchar code table1[]=“00:00:00”;uchar code xingqi[][3]={“MON”,“TUE”,“WED”,“THU”,“FRI”,“SAT”,“SUN”};

void delay(uint z){ uint x,y;for(x=z;x>0;x--)

for(y=110;y>0;y--);}

/************************************************** 1602液晶顯示器模塊

*************************************************/ void write_com(uchar com)

//液晶寫指令 { lcdrw=0;lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}

void write_data(uchar dat)

//液晶寫數(shù)據(jù) { lcdrw=0;lcdrs=1;P0=dat;delay(5);lcden=1;delay(5);lcden=0;}

/******************************************** 年月日寫入1602函數(shù)

********************************************/ void write_sfm(uchar add,uchar dat)

//寫時分秒函數(shù) { uchar shi,ge;shi=dat/10;ge=dat%10;write_com(0x80+0x40+add);write_data(0x30+shi);write_data(0x30+ge);} void write_yr(uchar add,uchar dat)

//寫月日函數(shù) { uchar shi,ge;shi=dat/10;ge=dat%10;write_com(0x80+add);write_data(0x30+shi);write_data(0x30+ge);} void write_nian(uchar add,uint dat)

//寫年函數(shù) { uint qian,bai,shi,ge;qian=dat/1000;bai=dat%1000/100;shi=dat%100/10;ge=dat%10;write_com(0x80+add);write_data(0x30+qian);write_data(0x30+bai);write_data(0x30+shi);write_data(0x30+ge);} /*************************************************** 1602初始化

***************************************************/ void init_lcd()

//液晶初始化 { lcden=0;

nian=2015;yue=1;ri=11;shi=0;

//初始shi、fen、miao fen=0;miao=0;

write_com(0x38);

//設(shè)置16x2顯示,5x7點陣,8位數(shù)據(jù)口

write_com(0x0c);

//設(shè)置開顯示,不顯示光標(biāo)

write_com(0x06);

//寫一個字符后地址指針加1 write_com(0x01);

//顯示清0,數(shù)據(jù)指針清0 }

void init()

//初始化函數(shù) { init_lcd();

//液晶初始化

write_com(0x80);

//設(shè)置顯示初始坐標(biāo)

for(a=0;a<14;a++)

//顯示年月日初始值

{

write_data(table0[a]);

delay(5);} write_com(0x80+0x40);

//設(shè)置顯示初始坐標(biāo)

for(a=0;a<8;a++)

//顯示時分秒初始值

{

write_data(table1[a]);

delay(5);}

write_nian(0,nian);write_sfm(6,miao);

//分別將shi、fen、miao送去液晶顯示

write_sfm(3,fen);write_sfm(0,shi);

count=0;xqnum=0;S1num=0;

//初始化全局變量count

TMOD=0x01;

//設(shè)置定時器0工作模式1 TH0=(65535-50000)/256;

//定時器裝初始值

TL0=(65535-50000)%256;EA=1;

//開總中斷

ET0=1;

//開定時器0中斷

TR0=1;

//啟動定時器0 }

/************************************************** 獨(dú)立鍵盤

*************************************************/ void keyscan(){ if(S1==0){

delay(5);

//確認(rèn)定義鍵被按下

if(S1==0)

{

S1num++;

//定義鍵S1按下次數(shù)記錄

while(!S1);

//釋放按鍵確認(rèn)

if(S1num==1)//S1按下一次時

{

TR0=0;

//關(guān)閉定時器

write_com(0xc0+7);//光標(biāo)定位到秒位置

write_com(0x0f);//光標(biāo)閃爍

}

if(S1num==2)

//S1按下兩次時

{

write_com(0xc0+4);//光標(biāo)定位到分位置

}

if(S1num==3)

//S1按下三次時

{

write_com(0xc0+1);

//光標(biāo)定位到時位置

}

if(S1num==4)

//S1按下四次時

{

write_com(0x80+13);

//光標(biāo)定位到星期位置

}

if(S1num==5)

//S1按下五次時

{

write_com(0x80+9);

//光標(biāo)定位到日位置

}

if(S1num==6)

//S1按下六次時

{

write_com(0x80+6);

//光標(biāo)定位到月位置

}

if(S1num==7)

//S1按下七次時

{

write_com(0x80+3);

//光標(biāo)定位到年位置

}

if(S1num==8)

//S1按下八次時

{

S1num=0;

//S1記錄按鍵次數(shù)清零

TR0=1;

//開啟定時器

write_com(0x0c);

//取消光標(biāo)閃爍

} } } if(S1num!=0)

//只有定義鍵按下后S2、S3、S4才有效 { if(S2==0){

delay(5);

//防抖

if(S2==0)

//確認(rèn)按鍵被按下

{

while(!S2);

//釋放按鍵確認(rèn)

if(S1num==1)//S1按下一次時

{

miao++;

//調(diào)整秒加1

if(miao==60)//滿60清零

miao=0;

write_sfm(6,miao);

//每調(diào)節(jié)一次送液晶顯示一次

write_com(0x80+0x40+6);

//顯示位置重新回到調(diào)節(jié)處

}

if(S1num==2)

//S1按下兩次時

{

fen++;

//調(diào)整分加1 if(fen==60)

fen=0;write_sfm(3,fen);write_com(0x80+0x40+3);} if(S1num==3)

//S1按下三次時 { shi++;

//調(diào)整時加1 if(shi==24)

shi=0;write_com(0x80+0x40);write_sfm(0,shi);} if(S1num==4)

{ xqnum++;if(xqnum==7)

xqnum=0;write_com(0x80+0x0b);for(a=0;a<3;a++){

write_data(xingqi[xqnum][a]);

delay(5);} } if(S1num==5)

{ ri++;if(yue==2){

if(nian%400==0)

{

if(ri==30)

{

ri=1;

}

}

if(nian%400!=0)

{

if(ri==29)

{

ri=1;

}

//星期加調(diào)整

//日加調(diào)整

} } else if(yue<=7){

if(yue%2==0&yue!=2)

{

if(ri==31)

{

ri=1;

}

}

else if(yue%2!=0&yue!=2)

{

if(ri==32)

{

ri=1;

}

} } else if(yue>=8){

if(yue%2==0)

{

if(ri==32)

{

ri=1;

}

}

else if(yue%2!=0)

{

if(ri==31)

{

ri=1;

}

} } write_yr(8,ri);} if(S1num==6)

{ yue++;if(yue==13)

yue=1;write_yr(5,yue);

//月加調(diào)整

}

if(S1num==7)

//年加調(diào)整

{

nian++;

if(nian==2019)

nian=2014;

write_nian(0,nian);

} } } if(S3==0){ delay(5);if(S3==0)

//確認(rèn)按鍵被按下

{

while(!S3);

if(S1num==1)

{

miao--;

//調(diào)整秒減1

if(miao==-1)

//減到00后再減重新設(shè)置為59

miao=59;

write_sfm(6,miao);

write_com(0x80+0x40+6);

}

if(S1num==2)

{

fen--;

//調(diào)整分減1

if(fen==-1)

fen=59;

write_sfm(3,fen);

write_com(0x80+0x40+3);

}

if(S1num==3)

{

shi--;

//調(diào)整時減1

if(shi==-1)

shi=23;

write_sfm(0,shi);

write_com(0x80+0x40);

}

if(S1num==4)

{

xqnum--;

//調(diào)整星期減一

if(xqnum==-1)

xqnum=6;write_com(0x80+0x0b);for(a=0;a<3;a++){

write_data(xingqi[xqnum][a]);

delay(5);} } if(S1num==5)

//調(diào)整日 { ri--;

if(yue==2){

if(nian%400==0)

{

if(ri==0)

{

ri=29;

}

}

if(nian%400!=0)

{

if(ri==0)

{

ri=28;

}

} } else if(yue<=7)

{

if(yue%2==0&yue!=2)

{

if(ri==0)

{

ri=30;

}

}

else if(yue%2!=0&yue!=2)

{

if(ri==0)

{

ri=31;

}

}

}

else if(yue>=8)

{

if(yue%2==0)

{

if(ri==0)

{

ri=31;

}

}

else if(yue%2!=0)

{

if(ri==0)

{

ri=30;

}

}

}

write_yr(8,ri);

}

if(S1num==6)

{

yue--;

if(yue==0)

yue=12;

write_yr(5,yue);

}

if(S1num==7)

{

nian--;

if(nian==2013)

nian=2018;

write_nian(0,nian);

} } } if(S4==0)

{ delay(5);if(S4==0){

S1num=0;

TR0=1;

write_com(0x0c);

//調(diào)整月

//調(diào)整年

//退出設(shè)置、開啟中斷

}

} } }

/************************************************** 定時器0 *************************************************/ void timer0()interrupt 1

//定時器0中斷服務(wù)程序 { TH0=(65535-50000)/256;

//重裝定時器初始值

TL0=(65535-50000)%256;count++;

//中斷次數(shù)累加

if(count==20)

//20次50毫秒即一秒

{

count=0;

miao++;

if(miao==60)

//秒加到60時分進(jìn)位

{

miao=0;

fen++;

if(fen==60)

//分加到60時時進(jìn)位

{

fen=0;

shi++;

if(shi==24)

//時加到24時清0

{

shi=0;

xqnum++;

ri++;

if(yue==2)

//如果是二月

{

if(nian%400==0)

//閏年判斷

{

if(ri==30)

{

ri=1;

yue++;

write_yr(5,yue);

}

}

if(nian%400!=0)

//平年判斷

{

if(ri==29)

{

ri=1;

yue++;

write_yr(5,yue);

}

}

}

else if(yue<=7&yue!=2)

//一月到七月

{

if(yue%2==0)//偶數(shù)月(除二月)

{

if(ri==31)

{

ri=1;

yue++;

}

}

else if(yue%2!=0)

//奇數(shù)月

{

if(ri==32)

{

ri=1;

yue++;

}

}

write_yr(5,yue);

}

else if(yue>=8)

//八月到12月

{

if(yue%2==0)//偶數(shù)月(除二月)

{

if(ri==32)

{

ri=1;

yue++;

if(yue==13)

//如果判斷月份為12月,則加一后重新定義月份為1

{

yue=1;

nian++;

write_nian(0,nian);

}

write_yr(5,yue);

}

}

else if(yue%2!=0)

//奇數(shù)月

{

if(ri==31)

{

ri=1;

yue++;

write_yr(5,yue);

}

}

}

write_yr(8,ri);

if(xqnum==7)

//星期寫入

xqnum=0;

write_com(0x80+0x0b);

for(a=0;a<3;a++)

{

write_data(xingqi[xqnum][a]);

delay(5);

}

}

write_sfm(0,shi);

//重新寫入數(shù)據(jù)

}

write_sfm(3,fen);

//重新寫入數(shù)據(jù)

}

write_sfm(6,miao);

//重新寫入數(shù)據(jù)

} } /************************************************* 主函數(shù)

*************************************************/ void main(){ init();while(1){

keyscan();

//不停的檢測按鍵是否被按下

} }

第二篇:萬年歷單片機(jī)課程設(shè)計報告

課程設(shè)計報告 任務(wù)和設(shè)計要求

首先要學(xué)會安裝軟件,要熟悉會使用。系統(tǒng)設(shè)計 系統(tǒng)框圖 硬件設(shè)計 3.1 電路原理圖

課程設(shè)計報告

課程設(shè)計報告

課程設(shè)計報告

3.2 主要單元電路

3.3 元件清單 軟件設(shè)計 4.1 程序流程圖

課程設(shè)計報告

4.2程序清單

TIME_WEEK DATA 52H TIME_YEAR DATA 5DH TIME_MONTH DATA 5EH TIME_DATA DATA 5FH YEARH DATA 36H YEAR DATA 35H MONTH DATA 34H DAY DATA 33H HOUR DATA 32H MINUTE DATA 31H SEC DATA 30H

課程設(shè)計報告

AAA BIT P3.0 BBB BIT P3.1 AA BIT P3.3 BB BIT P3.4 CC BIT P3.5 BL BIT P3.2 BZ1 BIT 21H.0 TIMES DATA

20H COM

DATA

P1 ORG

0000H LJMP

START ORG

0003H RETI ORG

000BH LJMP INTT0 ORG

0013H RETI ORG

001BH RETI ORG

0023H RETI START:

課程設(shè)計報告

MOV

R0,#30H MOV

R7,#9 CLEETE: MOV

@R0,#00H INC

R0 DJNZ

R7,CLEETE MOV

TIMES,#00H MOV

TMOD,#01H MOV

TL0,#0C0H MOV

TH0,#63H MOV

SEC,#0 MOV

MINUTE,#0H MOV

HOUR,#0H MOV

DAY,#01H MOV

MONTH,#01H MOV

YEAR,#01H MOV

YEARH,#20H SETB

EA SETB

ET0 SETB

TR0 MOV

R4,#19 START1:

課程設(shè)計報告

CALL

DISP JNB

AA,SETMM1 JMP

START1 SETMM1: CALL

SETMM JMP START1 SETMM: CALL

DISP CALL

DISP JB AA,SETMM0 SETMM2: JNB AA,SETMM3 CLR ET0 CLR TR0 MOV

SEC,#0 MOV

TIMES,#01H MOV

R0,#MINUTE SETMM4: NOP INC22: CALL

OFFL CALL

INC11

課程設(shè)計報告

CALL

DISP JB AA,INC22 CALL DISP JB AA,INC22 INC R0 MOV A,TIMES RL A MOV TIMES,A JNB

TIMES.5, SETMM4 SETMM12: JNB AA , SETMM11 SETMM0: SETB

TR0 SETB

ET0 RET SETMM11: CALL DISP JMP

SETMM12 SETMM3: CALL

DISP JMP

SETMM2 INC11:

課程設(shè)計報告

MOV

R3,#40 INC111: MOV A,@R0 JB

BB,INC17 ADD

A,#1 DA A CALL INC000 INC13: JNB BB , INC14 INC17: MOV

@R0,A CALL

DISP DJNZ R3,INC111 RET INC14: CALL

DISP JMP

INC13 OFFL: MOV

22H,@R0 MOV

R6,#10 OFF1: MOV

R7,#10

課程設(shè)計報告

OFF2: MOV

@ R0, # 0AAH CALL

DISP DJNZ R7 , OFF2 DJNZ R6 , OFF1 MOV

@ R0 , 22H RET INC000: JB

TIMES.0, INC001 JB

TIMES.1, INC002 JB

TIMES.2, INC003 JB

TIMES.3, INC004 JB

TIMES.4, INC005 JMP

INCOUT INC005: CJNE A, #99H, INCOUT MOV

A,#00H JMP

INCOUT INC004: CJNE A, # 13H, INCOUT MOV

A,#01H JMP

INCOUT

課程設(shè)計報告

INC003: CJNE A,# 32H ,INCOUT MOV

A,#01H JMP

INCOUT INC002: CJNE A,#24H,INCOUT MOV

A,#00H JMP

INCOUT INC001: CJNE A,# 60H , INCOUT MOV

A,#00H INCOUT: RET INTT0: PUSH

ACC PUSH

PSW ORL TL0,#0C0H MOV

TH0,#63H DJNZ R4 , CLKE111 JMP

LOOP11 CLKE111: JMP

CLKE

課程設(shè)計報告

LOOP11: MOV

R4,#19H MOV

A,SEC ADD

A,#1 DA A MOV

SEC,A CJNE A, #60H , CLKE99 MOV

SEC,#0 MOV

A,MINUTE ADD

A,#1 DA A MOV

MINUTE,A CLK0: CJNE A, # 60H, CLKE MOV

MINUTE,#0 MOV

A,HOUR ADD

A,#1 DA

A MOV

HOUR,A CJNE A, # 24H, CLKE MOV

HOUR,#0 MOV

A,DAY

課程設(shè)計報告

ADD

A,#1 DA A MOV

DAY,A MOV

A,MONTH INC

A MOVC A, @A + PC SJMP

CLK1 DB

31H,28H,31H DB

30H,31H,30H DB

31H,31H,30H DB

00H,00H,00H DB

00H,00H,00H DB

31H,30H,31H CLK1: CLR C SUBB A,DAY JNC

CLKE MOV

A,MONTH CJNE A,#2,CLK3 MOV

A,YEAR ANL A,#13H JNB

ACC.4,CLK2

課程設(shè)計報告

ADD

A,#2 CLK2: ANL A,#3 JNZ

CLK3 MOV

A,DAY XRL A,#29H JZ

CLKE CLK3: MOV

DAY,#1 MOV

A,MONTH ADD

A,#1 DA

A MOV

MONTH,A CJNE A,#13H,CLKE MOV

MONTH,#1 MOV

A,YEAR ADD

A,#1 DA

A MOV

YEAR,A CLKE99: CALL

CONVERT CLKE:

課程設(shè)計報告

POP

PSW POP

ACC RETI DISP: PUSH

PSW PUSH

ACC MOV

23H,R0 DISP99: MOV

R1,#40H MOV

R0,#30H MOV

R2,#9 DISP1: MOV A,@R0 ANL A,#0FH MOV @R1,A MOV A,@R0 SWAP A ANL A,#0FH INC R1 MOV @R1,A DJNZ R2,DISP2 CALL DISPLAY

課程設(shè)計報告

MOV R0,23H POP ACC POP PSW RET DISP2: INC R1 INC R0 JMP DISP1 DISPLAY: MOV R1,#40H MOV R5,#19 SETB AAA PLAY: SETB BBB NOP CLR BBB CLR AAA MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR MOV COM,A CALL DL1MS

課程設(shè)計報告

MOV COM,#0FFH DJNZ R5,PLAY1 CLR BBB SETB AAA RET PLAY1: INC R1 JMP PLAY TAB: DB 0C0H,0F9H,0A4H, 0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0A3H,8EH,0ABH DL1MS: MOV 25H,R7 MOV 24H,R6 MOV R7,#20 DS1: MOV R6,#10 DJNZ R6,$ DJNZ R7,DS1 MOV R7,25H MOV R6,24H RET

課程設(shè)計報告

START_YEAR EQU 01 CONVERT_YEAR DATA 5CH CONVERT_MONTH DATA 38H CONVERT_DATE DATA 37H TEMP_BYTE1 DATA 57H TEMP_BYTE2 DATA 58H TEMP_BYTE3 DATA 59H TEMP_BYTE4 DATA 5AH TEMP_BYTE5 DATA 5BH CONVERT: MOV A, YEAR MOV TIME_YEAR,A MOV A,MONTH MOV TIME_MONTH,A MOV A,DAY MOV TIME_DATA,A MOV A,TIME_YEAR MOV B,#16 DIV AB MOV CONVERT_YEAR,B MOV B,#10 MUL AB

課程設(shè)計報告

ADD A,CONVERT_YEAR MOV CONVERT_YEAR,A MOV A,TIME_MONTH JNB ACC.4,CON_02 CLR ACC.4 ADD A,#10 CON_02:MOV CONVERT_MONTH,A MOV A,TIME_DATA MOV B,#16 DIV AB MOV CONVERT_DATE,B MOV B,#10 MUL AB ADD A,CONVERT_DATE MOV CONVERT_DATE,A MOV DPTR,#MONTH_DATA MOV A,CONVERT_YEAR CON_06:CLR C SUBB A,#START_YEAR MOV B,#3 MUL AB ADD A,DPL

課程設(shè)計報告

MOV DPL,A MOV A,B ADDC A,DPH MOV DPH,A MOV A, #2 MOVC A, @A+DPTR CLR ACC.7 MOV B, #32 DIV AB MOV TEMP_BYTE1,A MOV TEMP_BYTE2,B MOV TEMP_BYTE3,#0 MOV A,CONVERT_MONTH CJNE A,#10,CON_08 CON_08:JC CON_09 MOV TEMP_BYTE3,#1 CON_09:MOV A,CONVERT_YEAR ANL A,#03H JNZ CON_10 MOV A,CONVERT_MONTH LCALL GET_RUN_DAYS_LOW SJMP CON_12

課程設(shè)計報告

CON_10:MOV A,CONVERT_MONTH LCALL GET_DAYS_LOW CON_12:MOV B,CONVERT_DATE DEC B ADD A,B MOV TEMP_BYTE4,A JNC CON_14 INC TEMP_BYTE3 CON_14:MOV A,TEMP_BYTE1 LCALL GET_DAYS_LOW DEC A ADD A,TEMP_BYTE2 MOV TEMP_BYTE5,A MOV A,CONVERT_MONTH CJNE A,TEMP_BYTE1,CON_20 MOV A,CONVERT_DATE CJNE A,TEMP_BYTE2,CON_20 CON_20:JC CON_22 LJMP CON_60 CON_22:MOV A,CONVERT_YEAR JNZ CON_24 MOV A,#100

課程設(shè)計報告

CON_24:DEC A MOV CONVERT_YEAR,A MOV A,DPL CLR C SUBB A,#3 MOV DPL,A JNC CON_26 DEC DPH CON_26:MOV A,TEMP_BYTE5 CLR C SUBB A,TEMP_BYTE4 MOV TEMP_BYTE3,A MOV CONVERT_MONTH,#12 CLR F0 CLR A MOVC A,@A+DPTR ANL A,#0F0H SWAP A;MOV TEMP_BYTE4,A JZ CON_30 MOV A, #2 MOVC A , @A+DPTR

課程設(shè)計報告

MOV C, ACC.7 MOV A, #1 MOVC A, @A+DPTR RLC A SJMP CON_34 CON_30:MOV A, #1 MOVC A, @A+DPTR CON_34:MOV TEMP_BYTE5, A CON_40:MOV A, TEMP_BYTE5 RRC A MOV TEMP_BYTE5, A JC CON_42 MOV B, #29 SJMP CON_44 CON_42:MOV B, #30 CON_44:MOV A, TEMP_BYTE3 CLR C SUBB A, B JZ CON_46 JNC CON_50 CPL A INC A

課程設(shè)計報告

CON_46: INC A MOV B, #10 DIV AB SWAP A ORL A, B MOV CONVERT_DATE, A MOV A, CONVERT_MONTH MOV B, #10 DIV AB SWAP A ORL A, B MOV CONVERT_MONTH, A MOV A, CONVERT_YEAR MOV B, #10 DIV AB SWAP A ORL A, B MOV CONVERT_YEAR, A CALL WEEK RET CON_50:MOV TEMP_BYTE3, A JB F0, CON_52

課程設(shè)計報告

DEC CONVERT_MONTH CON_52:MOV A, CONVERT_MONTH CJNE A, TEMP_BYTE4, CON_54 CPL F0 CON_54:SJMP CON_40 CON_60:MOV A, TEMP_BYTE4 CLR C SUBB A, TEMP_BYTE5 MOV TEMP_BYTE4, A JNC CON_62 DEC TEMP_BYTE3 CON_62:MOV CONVERT_MONTH, #1 CLR A MOVC A, @A+DPTR MOV TEMP_BYTE5, A ANL A, #0F0H SWAP A XCH A, TEMP_BYTE5 CLR F0 ANL A, #0FH MOV TEMP_BYTE1, A MOV A, #1

課程設(shè)計報告

MOVC A, @A+DPTR MOV TEMP_BYTE2, A ANL A, #0F0H ORL A, TEMP_BYTE1 SWAP A MOV TEMP_BYTE1, A MOV A, #2 MOVC A, @A+DPTR MOV C, ACC.7 MOV A, TEMP_BYTE2 ANL A, # 0FH SWAP A MOV ACC.3, C MOV TEMP_BYTE2, A CON_70:MOV A, TEMP_BYTE2 RLC A MOV TEMP_BYTE2, A MOV A, TEMP_BYTE1 RLC A MOV TEMP_BYTE1, A JC CON_72 MOV B, #29

課程設(shè)計報告

SJMP CON_74 CON_72:MOV B, #30 CON_74:MOV A, TEMP_BYTE4 CLR C SUBB A,B JNC CON_78 MOV B, A MOV A, TEMP_BYTE3 JZ CON_76 DEC TEMP_BYTE3 MOV TEMP_BYTE4, B SJMP CON_80 CON_76:MOV A, TEMP_BYTE4 LJMP CON_46

CON_78:MOV TEMP_BYTE4, A CON_80:MOV A, CONVERT_MONTH CJNE A, TEMP_BYTE5, CON_82 CPL F0 JNB F0, CON_82 SJMP CON_70 CON_82:INC CONVERT_MONTH SJMP CON_70

課程設(shè)計報告

GET_DAYS_LOW: MOVC A, @A+PC RET DB 0,31,59,90,120,151,181,212,243,17,48,78 GET_RUN_DAYS_LOW: MOVC A, @A+PC RET DB 0,31,60,91,121,152,182,213,244,18,49,79 MONTH_DATA:

DB 04DH,04AH,0B8H;2001 DB 00DH,04AH,04CH;2002 DB 00DH,0A5H,041H;2003 DB 025H,0AAH,0B6H;2004 DB 005H,06AH,049H;2005 DB 07AH,0ADH,0BDH;2006 DB 002H,05DH,052H;2007 DB 009H,02DH,047H;2008 DB 05CH,095H,0BAH;2009 DB 00AH,095H,04EH;2010 DB 00BH,04AH,043H;2011

課程設(shè)計報告

DB 04BH,055H,037H;2012 DB 00AH,0D5H,04AH;2013 DB 095H,05AH,0BFH;2014 DB 004H,0BAH,053H;2015 DB 00AH,05BH,048H;2016 DB 065H,02BH,0BCH;2017 DB 005H,02BH,050H;2018 DB 00AH,093H,045H;2019 DB 047H,04AH,0B9H;2020 DB 006H,0AAH,04CH;2021 DB 00AH,0D5H,041H;2022 DB 024H,0DAH,0B6H;2023 DB 004H,0B6H,04AH;2024 DB 069H,057H,03DH;2025 DB 00AH,04EH,051H;2026 DB 00DH,026H,046H;2027 DB 05EH,093H,03AH;2028 DB 00DH,053H,04DH;2029 DB 005H,0AAH,043H;2030 DB 036H,0B5H,037H;2031 DB 009H,06DH,04BH;2032 DB 0B4H,0AEH,0BFH;2033

課程設(shè)計報告

DB 004H,0ADH,053H;2034 DB 00AH,04DH,048H;2035 DB 06DH,025H,0BCH;2036 DB 00DH,025H,04FH;2037 DB 00DH,052H,044H;2038 DB 05DH,0AAH,038H;2039 DB 00BH,05AH,04CH;2040 DB 005H,06DH,041H;2041 DB 024H,0ADH,0B6H;2042 DB 004H,09BH,04AH;2043 DB 07AH,04BH,0BEH;2044 DB 00AH,04BH,051H;2045 DB 00AH,0A5H,046H;2046 DB 05BH,052H,0BAH;2047 DB 006H,0D2H,04EH;2048 DB 00AH,0DAH,042H;2049 DB 035H,05BH,037H;2050 DB 009H,037H,04BH;2051 DB 084H,097H,0C1H;2052 DB 004H,097H,053H;2053 DB 006H,04BH,048H;2054 DB 066H,0A5H,03CH;2055

課程設(shè)計報告

DB 00EH,0A5H,04FH;2056 DB 006H,0B2H,044H;2057 DB 04AH,0B6H,038H;2058 DB 00AH,0AEH,04CH;2059 DB 009H,02EH,042H;2060 DB 03CH,097H,035H;2061 DB 00CH,096H,049H;2062 DB 07DH,04AH,0BDH;2063 DB 00DH,04AH,051H;2064 DB 00DH,0A5H,045H;2065 DB 055H,0AAH,0BAH;2066 DB 005H,06AH,04EH;2067 DB 00AH,06DH,043H;2068 DB 045H,02EH,0B7H;2069 DB 005H ,02DH, 04BH;2070 DB 08AH, 095H, 0BFH;2071 DB 00AH, 095H, 053H;2072 DB 00BH, 04AH, 047H;2073 DB 06BH, 055H, 03BH;2074 DB 00AH, 0D5H, 04FH;2075 DB 005H, 05AH, 045H;2076 DB 04AH, 05DH, 038H;2077

課程設(shè)計報告

DB 00AH, 05BH, 04CH;2078 DB 005H, 02BH, 042H;2079 DB 03AH, 093H, 0B6H;2080 DB 006H, 093H, 049H;2081 DB 077H, 029H, 0BDH;2082 DB 006H, 0AAH, 051H;2083 DB 00AH, 0D5H, 046H;2084 DB 054H, 0DAH, 0BAH;2085 DB 004H, 0B6H, 04EH;2086 DB 00AH, 057H, 043H;2087 DB 045H, 027H, 038H;2088 DB 00DH, 026H, 04AH;2089 DB 08EH, 093H, 03EH;2090 DB 00DH, 052H, 052H;2091 DB 00DH, 0AAH, 047H;2092 DB 066H, 0B5H, 03BH;2093 DB 005H, 06DH, 04FH;2094 DB 004H, 0AEH, 045H;2095 DB 04AH, 04EH, 0B9H;2096 DB 00AH, 04DH, 04CH;2097 DB 00DH, 015H, 041H;2098 DB 02DH, 092H, 0B5H;2090

課程設(shè)計報告

DB 00DH, 053H, 049H;2100 TIME_WEEK1 DATA 52H WEEK: MOV A, TIME_YEAR MOV B, #16 DIV AB MOV TEMP_BYTE1, B MOV B, #10 MUL AB ADD A, TEMP_BYTE1 MOV TEMP_BYTE1, A MOV A, TIME_MONTH JB ACC.7, GETW02 MOV A, #100 ADD A, TEMP_BYTE1 MOV TEMP_BYTE1, A MOV A, TIME_MONTH CLR ACC.7 GETW02: JNB ACC.4, GETW04 ADD A , #10 CLR ACC.4 GETW04: MOV TEMP_BYTE2,A

課程設(shè)計報告

MOV A, TIME_DATA MOV B, #16 DIV AB MOV TEMP_BYTE3, B MOV B, #10 MUL AB ADD A, TEMP_BYTE3 MOV TEMP_BYTE3, A MOV A ,TEMP_BYTE1 ANL A, #03H JNZ GETW10 MOV A, TEMP_BYTE2 CJNE A, #3,GETW06 GETW06: JNC GETW10 DEC TEMP_BYTE3 GETW10: MOV A,TEMP_BYTE2 LCALL GET_CORRECT ADD A, TEMP_BYTE1 MOV B, #7 DIV AB

MOV A, TEMP_BYTE1

課程設(shè)計報告

ANL A, #0FCH RR A RR A ADD A, B ADD A, TEMP_BYTE3 MOV B, #7 DIV AB MOV A, B CJNE A, #0,OUTOUT MOV B, #8 OUTOUT: MOV TIME_WEEK, B RET GET_CORRECT: MOVC A, @A+PC RET DB 0,3,3,6,1,4,6,2,5,0,3,5 END 系統(tǒng)仿真及調(diào)試

課程設(shè)計報告 仿真結(jié)果及分析

課程設(shè)計報告

上圖為運(yùn)行時的顯示,左邊兩個數(shù)碼管顯示器顯示的是年、月、日,中間的顯示的是時、分、秒,右邊顯示的是農(nóng)歷日期以及星期。若想要調(diào)試時間,可通過右下方兩個并聯(lián)開關(guān)調(diào)試,左邊開關(guān)調(diào)試數(shù)碼管顯示位置,右邊的調(diào)試增1。此刻是2013年11月29日下午15:02,星期五,時間準(zhǔn)確。訓(xùn)練體會

在整個單片機(jī)課程設(shè)計中,想要做出這個完整的設(shè)計過程,必須突破幾個難點:

1、元件得找準(zhǔn)卻,6路驅(qū)動可以用74LS244代替。

2、連線不能連錯,對應(yīng)的輸入輸出端標(biāo)上序號。

3、程序代碼不能敲錯。

4、由于單管顯示的星期數(shù)不穩(wěn)定,可以采用雙管顯示。參考文獻(xiàn):單片機(jī)課程設(shè)計指導(dǎo)。

第三篇:單片機(jī)實訓(xùn)報告范文

四川電子機(jī)械職業(yè)技術(shù)學(xué)院

單片機(jī)原理及應(yīng)用

實 訓(xùn)報告1

班級:應(yīng)電14.2班 姓名:劉華利 學(xué)號:140302058 指導(dǎo)教師:向兵

四川電子機(jī)械職業(yè)技術(shù)學(xué)院

摘要:

《單片機(jī)應(yīng)用系統(tǒng)設(shè)計項目化教程》這本書根據(jù)教育部新的教學(xué)改革要求和企業(yè)崗位技能需求,以高技能應(yīng)用型人才專業(yè)能力培養(yǎng)為目標(biāo),結(jié)合作者多年的教學(xué)經(jīng)驗與課程改革成果進(jìn)行編寫。全書通過6個典型項目任務(wù),著重介紹單片機(jī)基本原理及應(yīng)用系統(tǒng)的設(shè)計方法與技巧,包括流水燈控制系統(tǒng)設(shè)計、簡易數(shù)字時鐘設(shè)計、數(shù)字電壓表設(shè)計、低頻信號發(fā)生器設(shè)計、數(shù)據(jù)存儲及回放系統(tǒng)設(shè)計和窗簾智能控制系統(tǒng)設(shè)計等。本書采用“理實一體、項目化教學(xué)”模式進(jìn)行內(nèi)容編排,將單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計的相關(guān)知識點融入項目中進(jìn)行講解,易教易學(xué),效果良好。

目錄

摘要········································ 2 目錄········································ 2 實訓(xùn)名稱···································· 3 實訓(xùn)地點···································· 3 實訓(xùn)時間···································· 3 實訓(xùn)目的···································· 3 實訓(xùn)項目···································· 3 項目1·······································3 項目2·······································4 項目3·······································5 項目4·······································6 實訓(xùn)總結(jié)····································· 7

四川電子機(jī)械職業(yè)技術(shù)學(xué)院

實訓(xùn)名稱:單片機(jī)原理及應(yīng)用 實訓(xùn)地點:行政樓523 實訓(xùn)時間:2016.6.27—6.30 實訓(xùn)目的:1、2、3、4、5、6、7、掌握結(jié)構(gòu)化程序設(shè)計的基本方法,基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法。

掌握C的基本概念和基礎(chǔ)知識。

通過訓(xùn)練能夠讀懂較為復(fù)雜的C語言源程序并具備基本C語言程序設(shè)計的能力。

熟練掌握各種常用類的定義繼承文件的應(yīng)用,為更好的理解面向?qū)ο蟠蛳赂玫幕A(chǔ)。

掌握面向?qū)ο蟮幕驹?,提高學(xué)生綜合程序設(shè)計的能力。

培養(yǎng)自己獨(dú)立解決問題,找資料的能力。同學(xué)之間相互幫助、相互交流、相互合作的團(tuán)隊精神。

通過實訓(xùn)檢查自己學(xué)習(xí)上的不足,達(dá)到熟練掌握C語言的基本知識和技能。

實訓(xùn)項目: 項目1 點亮一個LED,每隔一定時間循環(huán)熄滅、點亮…

設(shè)計思路:端口送高電平,led熄滅,延時1s,端口送低電平,led點亮,延時1s,就這樣一直循環(huán)。

程序

#include } typedef unsigned char UINT8;void main(void)typedef unsigned int UINT16;{ void DelayMs(UINT16 Ms)while(1){ { UINT8 i;

L2 = 1;

while(Ms--)

DelayMs(1000);

{

L2 = 0;

for(i = 0;i < 114;i+

DelayMs(1000);+);} } }

四川電子機(jī)械職業(yè)技術(shù)學(xué)院

原理圖

項目2 點亮一個LED,讓它每隔一定時間循環(huán)左移(課使用delay函數(shù)進(jìn)行延時)

設(shè)計思路:在項目1的的基礎(chǔ)上,用dalay函數(shù)進(jìn)行延時,用<<來表示左移,添加一個左移的函數(shù)。通俗一點的講的話,就如天天天同一些人排隊領(lǐng)東西,領(lǐng)完了返回隊位繼續(xù)排(當(dāng)然一只是這幾個人排)。

程序

#include void delay(unsigned int z){ unsigned intj,i;for(i=0;i

}

while(1){

for(i=0;i<7;i++){

delay(100);

LED=(LED<<1)|0x01;P3=LED;} }

四川電子機(jī)械職業(yè)技術(shù)學(xué)院

原理圖

項目3 將任務(wù)二中delay延時改用定時器延時,且延時一秒

設(shè)計思路:在項目2的的基礎(chǔ)上,用定時器來進(jìn)行延時,首先設(shè)置定時器工作方式 也就是TMOD,在設(shè)置TH0/1,TL0/1的初值,也就是定時時間的設(shè)置,然后設(shè)置中斷允許,并開中斷。用中斷來控制。

程序

#include char j=0,i=0;void main(){ TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;while(1);} void T0_time()interrupt 1

{ TH0=(65536-50000)/256;TL0=(65536-50000)%256;j++;if(j==5){

j=0;

P1=~(0x01<

if(++i==8)i=0;

} }

四川電子機(jī)械職業(yè)技術(shù)學(xué)院

原理圖

項目4 四位數(shù)碼管并排顯示,從左到右依次為分、秒十位、秒各位、0.1秒,相當(dāng)于移動可計時9分59.9秒,使用一個按鍵,當(dāng)按鍵第一次按下,啟動秒表,第二次按下,停止,第三次按下,清零。(數(shù)碼管可選共陰極、共陽極,至于對應(yīng)數(shù)字的段選可參考教材)

設(shè)計思路:用delay函數(shù)來進(jìn)行延時,用內(nèi)部中斷來控制T1,用外部中斷來實現(xiàn)計數(shù)、暫停、清零這三個功能。

程序

#include #define uint unsigned int #define uchar unsigned char sbitdp=P0^7;uchar code Tab[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90};ucharxiao,miao,fen;uchart,swnum=0;void delay(uint z){

uintx,y;

for(x=100;x>0;x--)

for(y=z;y>0;y--);}

void dihplay(){

P1=0xfd;

四川電子機(jī)械職業(yè)技術(shù)學(xué)院

P0=Tab[xiao%10];

delay(1);

} void display(){

P1=0xfb;P0=Tab[miao/10];delay(1);

P1=0xfe;P0=Tab[miao%10];dp=0;delay(1);}

void dimplay(){

P1=0xf7;P0=Tab[fen%10];dp=0;delay(1);}

void main(){

EA = 1;EX0 = 1;IT0 = 1;

ET0=1;TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=0;xiao=0;miao=0;fen=0;

while(1)

{

display();delay(1);dimplay();delay(1);dihplay();delay(1);

} }

void timer0()interrupt 1 {

xiao++;

if(xiao==10)

{

xiao=0;miao++;

if(miao==59)

{ miao=0;

fen++;

if(fen==10)

{ fen=0;

}

}

} }

void ex0_int0()interrupt 0 { swnum++;if(swnum == 1){

TR0= 1;} if(swnum == 2){

TR0 = 0;} if(swnum == 3){

xiao = 0;

miao = 0;

fen = 0;

swnum=0;} }

四川電子機(jī)械職業(yè)技術(shù)學(xué)院

原理圖

實訓(xùn)總結(jié):

通過今次單片機(jī)實訓(xùn),使我對單片機(jī)的認(rèn)識有了更深刻的理解。系統(tǒng)以51單片機(jī)為核心部件,利用C語言編程,通過對led燈控制到用數(shù)碼管實現(xiàn)秒表功能、中斷控制功能,能實現(xiàn)本設(shè)計題目的基本要求和發(fā)揮部分。由于時間有限和本身知識水平的限制,本系統(tǒng)還存在一些不夠完善的地方,要作為實際應(yīng)用還有一些具體細(xì)節(jié)問題需要解決。

踉踉蹌蹌地忙碌了一周,我的程序終于編譯成功。當(dāng)看著自己的程序,自己成天相伴的系統(tǒng)能夠健康的運(yùn)行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最終都會化為甜美的甘泉。

但在這次實訓(xùn)中同時使我對C語言有了更深的認(rèn)識。當(dāng)我第一次接觸C語言就感覺很難,特別是今次實訓(xùn)要用到C語言,盡管困難重重,可我們還是克服了。這次的實訓(xùn)使培養(yǎng)了我們嚴(yán)肅認(rèn)真的做事作風(fēng),增強(qiáng)了我們之間的團(tuán)隊合作能力,使我們認(rèn)識到了團(tuán)隊合作精神的重要性。

這次實訓(xùn)的經(jīng)歷也會使我終身受益,我感受到這次實訓(xùn)是要真真正正用心去做的一件事情,是真正的自己學(xué)習(xí)的過程和研究的過程,沒有學(xué)習(xí)就不可能有研究的能力,沒有自己的研究,就不會有所突破。希望這次的經(jīng)歷能讓我在以后學(xué)習(xí)中激勵我繼續(xù)進(jìn)步。

第四篇:單片機(jī)實訓(xùn)報告

單片機(jī)原理及應(yīng)用

實訓(xùn)報告

班級: 學(xué)號: 姓名: 指導(dǎo)教師: 實訓(xùn)總成績:

一、節(jié)日彩燈設(shè)計

題目:8位邏輯電平模塊上的LED小燈從左向右呈現(xiàn)“鞭甩”的實驗現(xiàn)象,狀態(tài)間隔為0.25秒;按鍵1開始,按鍵2結(jié)束。

原理圖

程序代碼:

#include #define uchar unsigned char uchar tab[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};sbit S1=P1^4;sbit S2=P1^7;unsigned char i,j;delay(unsigned int x){ for(j=0;j

單片機(jī)原理及應(yīng)用實訓(xùn)報告

管及驅(qū)動電路的連接,從而構(gòu)成一個完整的硬件電路。然后通過對單片機(jī)的ROM進(jìn)行編程,實現(xiàn)對彩燈閃爍的控制。

二、定時器實現(xiàn)流水燈

題目:利用定時器/計數(shù)器T0產(chǎn)生2秒鐘的定時,每當(dāng)2秒定時到來時,更換指示燈點亮,依次循環(huán)點亮。

原理圖

程序代碼

#include #include int lamp = 0xfe;int cnt = 0;main(){P2 = 0xfe;TMOD = 0x01;TL0 =(6553650000)/ 256;TR0 = 1;ET0 = 1;

50000)% 256;TH0 =(65536

單片機(jī)原理及應(yīng)用實訓(xùn)報告

程序代碼

#include unsigned char seg[]={0xf9,0xa4,0xb0,0x99,0x92};unsigned char i,j;sbit P1_7=P1^7;delay(unsigned int x){ for(j=0;j

單片機(jī)原理及應(yīng)用實訓(xùn)報告

實訓(xùn)總結(jié)

通過本次單片機(jī)實訓(xùn)使得我更深層次的學(xué)習(xí)單片機(jī)原理與應(yīng)用技術(shù)這門專業(yè)課程,同時對KEIL軟件進(jìn)行復(fù)習(xí)。這次實訓(xùn)是我看到了我最薄弱的一點那就是編程,對于編程有很大的困難。對以往學(xué)習(xí)過的編程知識沒有好好掌握,特別是編程這方便的知識很薄弱。學(xué)習(xí)過的知識在實際應(yīng)用中仿佛是冰山一角,完全不夠用,需要通過查閱很多資料才能解決到碰到的相關(guān)問題。而且實訓(xùn)中出現(xiàn)的問題都是實際應(yīng)用出比較典型的問題。這次實訓(xùn)還讓我深刻的體會了結(jié)構(gòu)化程序設(shè)計的優(yōu)勢,讓我懂得當(dāng)我們要進(jìn)行一個復(fù)雜的程序設(shè)計時應(yīng)該先將其分解為多個不同的功能模塊再分別編程實現(xiàn),這樣做不僅降低了編程的難度,也容易讓編程者思路更加清晰,避免出現(xiàn)不必要的錯誤。在做仿真時,仿真圖正確也不一定就是說明一定正確。

第五篇:單片機(jī)實訓(xùn)報告

目錄

一 方案設(shè)計說明:............................................................................................2 二 硬件設(shè)計說明:............................................................................................4

(一)電路圖:..........................................................................................4(二)單片機(jī)AT89S51的I/O口分配使用情況........................................4

(三)元器件的參數(shù)及規(guī)格:....................................................................5 三 軟件設(shè)計說明:............................................................................................6

(一)軟件設(shè)計思路及流程圖:................................................................6

(二)程序的總體框架結(jié)構(gòu)說明:............................................................8

(三)重要程序段的功能,作用及思路簡介:........................................8 四 制作調(diào)試說明:..........................................................................................13

(一)程序調(diào)試過程:..............................................................................13

(二)硬件調(diào)試:......................................................................................13 五 電路實拍:.....................................................................................................14 六 總結(jié)心得體會:..........................................................................................15 七 參考文獻(xiàn):.....................................................................................................16

一 方案設(shè)計說明:

設(shè)計方案之前,得先分解設(shè)計任務(wù)。本次的設(shè)計任務(wù)是籃球記分牌,據(jù)常識,籃球記分牌應(yīng)有分別給兩隊加分,減分,能交換顯示分?jǐn)?shù)。在進(jìn)行設(shè)計之前,應(yīng)自己提出幾個問題,待問題回答之后?;竟Α⒌脑O(shè)計方案就出來了。在設(shè)計之前我提出了一下幾個問題:

a:硬件部分如何控制給A對B對加分,場地交換的時候又是如何實現(xiàn)分?jǐn)?shù)顯示交換的?應(yīng)該如何連接硬件,在硬件上設(shè)置控制端,控制端與單片機(jī)各引腳之間的連。

b:單片機(jī)只有一個CPU,如何實現(xiàn)即要掃描按鍵,又要顯示比分。數(shù)碼管工作的本質(zhì)是將要顯示的數(shù)據(jù)的字型碼送給他,如何采集到變化的分?jǐn)?shù)送給數(shù)碼管。用查表嗎?

c:加分與倒計時在程序中最本質(zhì)的東西是什么,如何用程序來說明這樣的事件,各事件之間又是如何聯(lián)系的。

雖然這些問題看似很普通,似乎在設(shè)計過程中都要面對這樣的問題,何不事先就解決這些問題呢,在逐一回答這些問題的同時,該任務(wù)的設(shè)計方案已見雛形。以下就是該方案的詳細(xì)內(nèi)容以及我問題的答案。

系統(tǒng)原理圖如下圖一所示:

LED數(shù)碼顯示管外部按鍵AT89S51驅(qū)動電路 3

二 硬件設(shè)計說明:

(一)電路圖:

(二)單片機(jī)AT89S51的I/O口分配使用情況

圖中P3.0,P3.1,P3.2,P3.3分別是加一分、加兩分、加三分、減一分。P3.4與P3.5口是外部中斷,其中斷服務(wù)程序的功能是實現(xiàn)比分交換的切換顯示和加分減分切換。電路中選擇共陽極的數(shù)碼管,可以省去輸入端的驅(qū)動電路,使電路更簡潔。P0口作為字形碼的輸出口,與數(shù)碼管的八只管教相連。

(三)元器件的參數(shù)及規(guī)格:

主要元器件有單片機(jī)芯片AT89S51,共陽極數(shù)碼管,9012PNP三極管。其中單片機(jī)承載程序,實現(xiàn)電路功能,三極管起開關(guān)及驅(qū)動數(shù)碼管顯示作用。數(shù)碼管顯示比分。

三 軟件設(shè)計說明:

程序的總體思路是主程序一直在掃描按鍵,比分顯示,比分交換,加減分隊伍切換都在中斷服務(wù)程序中完成。其具體內(nèi)容如下所示。

(一)軟件設(shè)計思路及流程圖:

中斷程序流程圖(如:圖一)

程序初始化,給存儲器賦初值按鍵掃描程序,掃描到由按鍵控制的中斷就執(zhí)行其對應(yīng)程序外部中斷1,加減外部中斷0,A、B分隊伍切換中斷程序兩隊比分切換圖一

按鍵掃描程序流程圖(如:圖二)按鍵掃描入口,檢測軟件標(biāo)志位F0,為1調(diào)用分?jǐn)?shù)顯示程序程序,為0調(diào)用加減分切換程序,同時掃描按鍵是掃描P3.0,并去抖,是否有鍵按下加一分否是掃描P3.1,并去抖,是否有鍵按下加兩分否是掃描P3.2,并去抖,是否有鍵按下加三分否是掃描P3.3,并去抖,是否有按鍵按下減一分否按鍵掃描程序結(jié)束圖二

分?jǐn)?shù)顯示程序流程圖(如:圖三)

將A對B對的分?jǐn)?shù)首先進(jìn)行BCD碼轉(zhuǎn)換,再保存到相對應(yīng)的寄存器中把各分?jǐn)?shù)分別賦給寄存器A,查表送往要顯示的數(shù)碼管由P2口的位狀態(tài)控制子程序調(diào)用結(jié)束,返回主程序,RET 圖三

其中時間顯示的子程序流程圖與分?jǐn)?shù)的大同小異,此處就不再一一列出。

(二)程序的總體框架結(jié)構(gòu)說明:

程序包含按鍵掃描程序,不斷地掃描按鍵,一旦有控制中斷的按鍵按下,就執(zhí)行中斷程序,交換比分。中斷服務(wù)程序,INT_0交換A對與B對的總分,INT_1改變軟件標(biāo)志位就可以切換加減分隊伍,同時掃描按鍵。

(三)重要程序段的功能,作用及思路簡介:

按鍵掃描程序是本程序中最重要的程序段,其連接了所有的子程序,子程序的調(diào)用都是在其中完成。下面就對該程序段的功能,作用及編寫思路做詳細(xì)說明。各部分關(guān)鍵程序 按鍵控制程序

org 0060h ajcx: jnb p3.0,s0

jnb p3.1,s1

jnb p3.2,s2

jnb p3.3,s3

jnb p3.4,s4

jnb p3.5,sz5

ljmp ajcx sz5: ljmp s5 s0:

lcall del

jb p3.0,s01

ljmp ajcx s01: jnb p1.0,s02

mov a,30h

inc a

mov 30h,a

ljmp tzcx s02: mov a,31h

inc a

mov 31h,a

ljmp tzcx s1:

lcall del

jb p3.1,s11

ljmp ajcx s11: jnb p1.0,s12

mov a,30h

add a,#02h

mov 30h,a

ljmp tzcx s12: mov a,31h

add a,#02h

mov 31h,a

ljmp tzcx s2:

lcall del

jb p3.2,s21

ljmp ajcx s21: jnb p1.0,s22

mov a,30h

add a,#03h

mov 30h,a

ljmp tzcx s22: mov a,31h

add a,#03h

mov 31h,a

ljmp tzcx s3:

lcall del

jb p3.3,s31

ljmp ajcx s31: jnb p1.0,s32

mov a,30h

dec a

mov 30h,a

ljmp tzcx s32: mov a,31h

dec a

mov 31h,a

ljmp tzcx s4:

lcall del

jb p3.4,s41

ljmp ajcx s41: push 30h

push 31h

pop 30h

pop 31h

lcall jscx

ljmp ajcx s5:

lcall del

jb p3.5,s51

ljmp ajcx s51: cpl p1.0

cpl p1.1

ljmp ajcx 加分程序: org 0120h tzcx: lcall jscx

ljmp ajcx org 0130h del: mov tl1,#00h

mov th1,#0bh

setb tr1

jnb tf1,$

mov tl1,#00h

mov th1,#0bh

clr tf1

ret 加減分隊伍切換程序: org 0150h

dscx: mov th0,#0fch

mov tl0,#18h

mov a,r2

rl a

mov r2,a

cjne r2,#11h,d1

mov r1,#32h

lcall jscx

reti d1:

cjne r2,#22h,d2

mov r1,#33h

lcall jscx

reti d2:

cjne r2,#44h,d3

mov r1,#34h

lcall jscx

reti d3:

mov r1,#35h

lcall jscx

reti 比分切換程序: org 0190h jscx: mov a,30h

mov b,#0ah

div ab

mov 33h,b

mov 32h,a

mov a,31h

mov b,#0ah

div ab

mov 35h,b

mov 34h,a

mov p2,r2

mov dptr,#tab

mov a,@r1

movc a,@a+dptr

mov p0,a

ret

org 0220h tab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h

db 80h,90h end 12

四 制作調(diào)試說明:

(一)程序調(diào)試過程:

程序調(diào)試我花了兩天的時間,此程序雖然不復(fù)雜,由于我平時學(xué)習(xí)的不夠深入,也沒用心學(xué)。對于我這樣的基礎(chǔ)來說調(diào)試過程真的很痛苦。剛開始調(diào)試時程序有兩處讓我感覺很亂,按鍵掃描程序中的中斷程序如何調(diào)用。當(dāng)寄存A對或B對的分?jǐn)?shù)累加到99的時候,就清零,但還沒有累加到99的時候,程序應(yīng)該跳往何處執(zhí)行,我最初的是跳了繼續(xù)累加。在仿真中的現(xiàn)象就是分?jǐn)?shù)一直顯示99,加不了。我真的是太大意了,調(diào)試的時候不踏實。

(二)硬件調(diào)試:

此次的硬件焊接很成功,電路布局很清晰,雖然在調(diào)試時也發(fā)現(xiàn)錯誤,但用萬用表很容易就檢測出來了,其中有幾根線的皮包線熔了,肉眼看不到。重新整理電路后,功能明顯成功。至此,本次的單片機(jī)課程設(shè)計圓滿結(jié)束。

五 電路實拍: 電路板正面:

電路板背面:

六 總結(jié)心得體會:

通過這一次的單片機(jī)實訓(xùn),讓我對單片機(jī)這一門知識有了更深的認(rèn)識,更鍛煉了我獨(dú)立解決問題獨(dú)立思考的能力,在電路設(shè)計和程序設(shè)計的過程中我們遇到了很多問題和困難,但通過大家的討論和老師的指點之后,一切的問題都一一被解決,但單片機(jī)的學(xué)習(xí)并不是那么的簡單,在最后也是最關(guān)鍵的程序調(diào)試的過程中,我們又遇到了很多更難的更棘手的問題,電路焊接完好也會出現(xiàn)諸多類似于不實現(xiàn)功能或是出現(xiàn)混亂顯示的情況,真的很讓人頭疼,但,大家都還是咬牙堅持了下來,最后很多電路雖然依舊還是沒能實現(xiàn)功能,但我們努力頑強(qiáng)克服重重困難的精神,是大家有目共睹的,就算是失敗了,也依舊是很值得的一次經(jīng)歷.,與此同時,也有很多同學(xué)試驗成功,看著大家臉上洋溢的笑容,大家無論失敗成功都從這次的實訓(xùn)中學(xué)到了很多很多的東西

七 參考文獻(xiàn): 胡健

主編 《單片機(jī)原理及接口技術(shù)》

張大明 主編 《單片機(jī)控制實訓(xùn)指導(dǎo)及綜合應(yīng)用實例》李勛、林廣艷《單片機(jī)微型計算機(jī)大學(xué)讀本》

機(jī)械工程出版社 機(jī)械工業(yè)出版社

北京航空航天大學(xué)出版社16

下載單片機(jī)萬年歷實訓(xùn)報告word格式文檔
下載單片機(jī)萬年歷實訓(xùn)報告.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    單片機(jī)實訓(xùn)報告

    滄州職業(yè)技術(shù)學(xué)院單片機(jī)實訓(xùn)報告 原理圖 滄州職業(yè)技術(shù)學(xué)院單片機(jī)實訓(xùn)報告 雙位數(shù)碼管顯示控制程序及說明 START: MOV R0,#0 ;清零 MOV DPTR,#TABLE ;指定查表起始地址 LO......

    單片機(jī)實訓(xùn)報告樣本(★)

    實訓(xùn)報告實訓(xùn)題目:_ 專業(yè):_ 班級:姓名:指導(dǎo)教師:2實訓(xùn)目的: 掌握匯編語言程序設(shè)計和調(diào)試方法,熟悉鍵盤操作。掌握RAM中的數(shù)據(jù)操作。 熟悉MCS-51指令系統(tǒng),掌握程序設(shè)計方法。掌握簡單的......

    單片機(jī)實訓(xùn)

    單片機(jī)應(yīng)用課程設(shè)計教學(xué)大綱 開課學(xué)院:機(jī)電工程學(xué)院 適用專業(yè):電子科學(xué)與技術(shù) 課程編號:2009404 課程英文名稱:Single-chip Microcomputer Application System Design 實驗課程......

    單片機(jī)應(yīng)用實訓(xùn)報告

    青島大學(xué)軟件技術(shù)學(xué)院 單片機(jī)應(yīng)用實訓(xùn)報告 姓 名 xx 專 業(yè) xxxxxxx 班 級 xxxxxxxxxxxxxxxxxxxx 指導(dǎo)教師 xxxxxxxxxxxxxxx 2014 年 1月16日 目錄 1實訓(xùn)目的……………......

    51單片機(jī)實訓(xùn)報告

    “51單片機(jī)”精簡開發(fā)板的組裝及調(diào)試實訓(xùn)報告 為期一周的單片機(jī)實習(xí)已經(jīng)結(jié)束了。通過此次實訓(xùn),讓我們掌握了單片機(jī)基本原理的基礎(chǔ)、單片機(jī)的編程知識以及初步掌握單片機(jī)應(yīng)用......

    單片機(jī)數(shù)字鐘實訓(xùn)報告

    單片機(jī)數(shù)字鐘實訓(xùn)報告 學(xué)院:電子工程學(xué)院 專業(yè):機(jī)電一體化 班級: 姓名: 手機(jī)號: 一、任務(wù)及要求 用51單片機(jī)設(shè)計時、分、秒計時器,具體要求如下。 1、具有時、分、秒計時功能和8......

    單片機(jī)課程設(shè)計-電子萬年歷

    單片機(jī)及接口技術(shù)綜合實驗 ——————電子萬年日歷系統(tǒng) 一、題目:電子實時時鐘/萬年日歷系統(tǒng) 二、功能要求:1. 基本要求: ⑴ 顯示準(zhǔn)確的北京時間(時、分、秒),可用24小時制式; ⑵......

    單片機(jī)實訓(xùn)題目

    電氣1001班綜合實訓(xùn)任務(wù)(單片機(jī)控制系統(tǒng)運(yùn)行與維護(hù)) 第1題 模擬交通燈 任務(wù)要求:1、主干道綠燈40秒,支干道綠燈20秒,黃燈都是5秒; 2、要求用定時器實現(xiàn)定時時間; 3、要求顯示器同步......

主站蜘蛛池模板: 国产精品无码久久久久久| 亚洲人成网线在线播放va| 99久久e免费热视频百度| 丰满少妇三级全黄| 亚洲国产欧美在线综合其他| 中文字幕无码免费久久9一区9| 无码视频在线播放| 久久无码av一区二区三区| 亚洲人成网线在线播放va蜜芽| 人人狠狠综合久久亚洲婷婷| 玩弄丰满少妇xxxxx性多毛| 少妇人妻无码专区毛片| 精品国产青草久久久久福利| 亚洲精品无码成人片| 亚洲国产成人手机在线电影| 国产99久一区二区三区a片| 超碰伊人久久大香线蕉综合| 久久伊人精品一区二区三区| 亚洲aⅴ天堂av在线电影| 爱久久av一区二区三区| 美女裸体自慰在线观看| 中国年轻丰满女人毛茸茸| 中文字幕美人妻亅u乚一596| 国内精品久久久久久久久电影网| 精品麻豆国产色欲色欲色欲www| 亚洲中文字幕av一区二区三区| 青青青国产精品国产精品美女| 亚洲一区中文字幕日产乱码| 亚洲第一极品精品无码久久| 亚洲狠亚洲狠亚洲狠狠狠| 性欧美大战久久久久久久| 国产av无码专区亚洲版综合| 狠狠色丁香久久婷婷综| 伊人大香人妻在线播放| 九九国产精品无码免费视频| 国产国语熟妇视频在线观看| 国产精品一区二区国产主播| 久久久无码精品国产一区| 无码中文字幕日韩专区| 亚洲不卡av一区二区三区| a级毛片毛片免费观看久|