版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 題目:多功能秒表</b></p><p><b> 目錄</b></p><p> 一、課題任務(wù)及要求3</p><p><b> 1、課題任務(wù)3</b></p><p><b> 2、課題要求3</b><
2、/p><p> 二、設(shè)計(jì)思路和方案3</p><p> 三、硬件電路設(shè)計(jì)3</p><p><b> 1、原件清單3</b></p><p><b> 2、硬件原理圖3</b></p><p> 2.1 按鍵電路圖3</p><p>
3、 2.2 單片機(jī)電路圖3</p><p> 2.3 1602模塊電路圖3</p><p> 2.4 總電路圖3</p><p> 四、軟件系統(tǒng)設(shè)計(jì)3</p><p> 1、主程序流程及說(shuō)明3</p><p> 2、鍵盤(pán)掃描函數(shù)流程及說(shuō)明3</p><p> 3、中斷服務(wù)子
4、程序流程及說(shuō)明3</p><p> 4、程序清單及注釋3</p><p> 五、使用功能說(shuō)明書(shū)3</p><p><b> 1、功能描述3</b></p><p><b> 2、操作指南3</b></p><p> 六、課程設(shè)計(jì)心得體會(huì)3</p&g
5、t;<p><b> 一、課題任務(wù)及要求</b></p><p><b> 1、課題任務(wù)</b></p><p> 設(shè)計(jì)一電子秒表,并具有顯示,基本操作功能。</p><p><b> 2、課題要求</b></p><p> 1)設(shè)計(jì)可以顯示0.1—10
6、0s的秒表,最小單位為毫秒</p><p> 2)通過(guò)按鍵控制秒表清零、暫停、繼續(xù)、退出等功能</p><p><b> 3)具有倒計(jì)時(shí)功能</b></p><p> 4)秒表可以分組存儲(chǔ),批量顯示</p><p><b> 5)顯示北京時(shí)間</b></p><p>
7、 6)可利用蜂鳴器添加提示音</p><p><b> 二、設(shè)計(jì)思路和方案</b></p><p> 本課題初步可分為兩個(gè)模塊,時(shí)間模塊和秒表模塊。由于實(shí)驗(yàn)板上的數(shù)碼管只有6位,所以決定采用1602液晶進(jìn)行顯示。利用矩陣鍵盤(pán)作為外圍控制,但是因?yàn)閷?shí)驗(yàn)板上的矩陣鍵盤(pán)和LCD都接在了P3口,所以能夠利用的按鍵個(gè)數(shù)很少,導(dǎo)致部分功能如秒表時(shí)間調(diào)節(jié)無(wú)法完成。</p
8、><p><b> 三、硬件電路設(shè)計(jì)</b></p><p><b> 1、原件清單</b></p><p><b> 2、硬件原理圖</b></p><p><b> 2.1 按鍵電路圖</b></p><p> 實(shí)驗(yàn)板上有
9、一組4*4的矩陣鍵盤(pán)和4個(gè)獨(dú)立按鍵,本課題中是使用了矩陣鍵盤(pán)中的一列和一個(gè)獨(dú)立按鍵。獨(dú)立按鍵的一端與P3.7相連,另一端接地。矩陣按鍵分別與P3.0-P3.3相連,另一端接P3.6。</p><p> 2.2 單片機(jī)電路圖</p><p> 外部晶振的頻率為11.0592MHz,復(fù)位電路采用的是手動(dòng)復(fù)位電路。P0口與10K的排阻相連作為上拉電阻,驅(qū)動(dòng)1602LCD.P2.3用于驅(qū)動(dòng)蜂鳴
10、器。</p><p> 2.3 1602模塊電路圖</p><p> 1602的D0-D7為數(shù)據(jù)口,與單片機(jī)的P0口相連。</p><p> RS:數(shù)據(jù)/命令選擇端,連P3.5;</p><p> RW:讀寫(xiě)選擇端,連P3.6;</p><p> LCDEN:使能端,連P3.4</p><
11、p><b> 2.4 總電路圖</b></p><p><b> 四、軟件系統(tǒng)設(shè)計(jì)</b></p><p> 1、主程序流程及說(shuō)明</p><p> 主程序中主要進(jìn)行LCD和定時(shí)器的初始化以及鍵盤(pán)掃描并執(zhí)行相應(yīng)的操作。</p><p> LCD初始化:16*2顯示,5*7點(diǎn)陣,8位數(shù)
12、據(jù)接口,不顯示光標(biāo),執(zhí)行寫(xiě)操作后地址指針加一。</p><p> 定時(shí)器初始化:定時(shí)器0、1工作于方式一,50ms中斷一次</p><p> 2、鍵盤(pán)掃描函數(shù)流程及說(shuō)明</p><p> 鍵盤(pán)應(yīng)該完成以下幾個(gè)功能:北京時(shí)間的調(diào)整、秒表開(kāi)始、暫停、清零、倒計(jì)時(shí)、顯示存儲(chǔ)時(shí)間的。本課程設(shè)計(jì)中采用的是矩陣鍵盤(pán)的獨(dú)立式鍵盤(pán)。鍵盤(pán)掃描程序中應(yīng)該注意以下幾個(gè)問(wèn)題:1、是否
13、有鍵按下;2、按鍵識(shí)別;3、按鍵消抖;4、按鍵是否松開(kāi)。流程圖如下所示</p><p> 3、中斷服務(wù)子程序流程及說(shuō)明</p><p> 定時(shí)器0用于控制時(shí)間模塊,定時(shí)器1用于控制控制秒表,均工作于方式一,50ms中斷一次。每個(gè)中斷子程序中均要放入時(shí)間顯示函數(shù),實(shí)新時(shí)間。定時(shí)器1要同時(shí)完成倒計(jì)時(shí)和計(jì)時(shí)的功能。所以要設(shè)置一個(gè)中間變量。每次進(jìn)入中斷時(shí),對(duì)中間變量的值進(jìn)行判斷,執(zhí)行相應(yīng)的操作
14、。</p><p><b> 4、程序清單及注釋</b></p><p> #include<reg52.h></p><p> #define uchar unsigned char </p><p> #define uint unsigned int</p><p>
15、sbit dula=P2^6;</p><p> sbit wela=P2^7;</p><p> sbit rs=P3^5;</p><p> sbit lcden=P3^4;</p><p> sbit wr=P3^6;</p><p> sbit s1=P3^0;</p>
16、<p> sbit s2=P3^1;</p><p> sbit s3=P3^2;</p><p> sbit s4=P3^3;</p><p> sbit s5=P3^7;</p><p> sbit beep=P2^3;</p><p> uchar count,count1,s1num,
17、mbnum,i,j,count2,mbnum1;</p><p> uint num,num1;</p><p> char miao,shi,fen;</p><p> uchar code table[]=" 000.0";</p><p> uchar code table1[]=" 0
18、0:00:00"; //初始化時(shí)間</p><p> uint mbtime[10];</p><p> void delay(uint z) //ms延時(shí)函數(shù)</p><p><b> {</b></p><p><b> uint x,y;</b>
19、;</p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> /************北京時(shí)間模塊************/</p><p> void write_
20、com(uchar com) //1602寫(xiě)指令</p><p><b> {</b></p><p><b> rs=0;</b></p><p><b> lcden=0;</b></p><p><b> P0=com;</b>
21、</p><p><b> delay(5);</b></p><p><b> lcden=1;</b></p><p><b> delay(5);</b></p><p><b> lcden=0;</b></p><p
22、><b> }</b></p><p> void write_date(uchar date)//1602寫(xiě)數(shù)據(jù)</p><p><b> {</b></p><p><b> rs=1;</b></p><p><b> lcden=
23、0;</b></p><p><b> P0=date;</b></p><p><b> delay(5);</b></p><p><b> lcden=1;</b></p><p><b> delay(5);</b></p
24、><p><b> lcden=0;</b></p><p><b> }</b></p><p> void init()//初始化函數(shù)</p><p><b> {</b></p><p> uchar num;<
25、/p><p><b> dula=0;</b></p><p><b> wela=0;</b></p><p><b> lcden=0;</b></p><p> write_com(0x38);</p><p> write_
26、com(0x0c); </p><p> write_com(0x06);</p><p> write_com(0x01); //以上幾條是1602的初始化設(shè)置</p><p> write_com(0x80); </p><p> for(num=0;num<9;num++)
27、//第一行用來(lái)顯示秒表,初始化為"000.0s"</p><p><b> {</b></p><p> write_date(table[num]);</p><p><b> delay(5);</b></p><p><b> }</b>
28、;</p><p> write_com(0x80+0x40);</p><p> for(num=0;num<12;num++)//第二行顯示北京時(shí)間,初始時(shí)間為"00:00:00"</p><p><b> {</b></p><p> write_date(table1[nu
29、m]);</p><p><b> delay(5);</b></p><p> } </p><p> TMOD=0x11;//定時(shí)器的初始化,兩個(gè)定時(shí)器均工作在方式1</p><p> TH0=(65536-45872)/256;</p><p>
30、 TL0=(65536-45872)%256;</p><p> TH1=(65536-45872)/256;</p><p> TL1=(65536-45872)%256; //50ms中斷一次</p><p><b> EA=1;</b></p><p><b> ET0=1;<
31、;/b></p><p><b> ET1=1;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p><p> void write_sfm(uchar add,uchar date) //時(shí)間模塊修改時(shí)間
32、函數(shù)</p><p><b> {</b></p><p> uchar shi,ge;</p><p> shi=date/10;</p><p> ge=date%10;</p><p> write_com(0x80+0x40+add); //先寫(xiě)入地址</p>
33、;<p> write_date(0x30+shi); </p><p> write_date(0x30+ge); //再寫(xiě)入數(shù)據(jù)</p><p><b> }</b></p><p> void keyscan() //鍵盤(pán)掃描函數(shù)</p><p>&l
34、t;b> {</b></p><p> if(s1==0) //移動(dòng)光標(biāo)部分</p><p><b> {</b></p><p><b> delay(5);</b></p><p><b> if(s1==0)</b></
35、p><p><b> {</b></p><p><b> s1num++;</b></p><p> while(!s1);</p><p><b> }</b></p><p> if(s1num==1)//光標(biāo)停在秒位</
36、p><p><b> {</b></p><p><b> TR0=0;</b></p><p> write_com(0x80+0x40+10);</p><p> write_com(0x0f); //顯示光標(biāo),并且閃爍</p><p><b>
37、 }</b></p><p> if(s1num==2) //光標(biāo)停在分鐘位</p><p><b> {</b></p><p> write_com(0x80+0x40+7);</p><p><b> }</b></p><p> i
38、f(s1num==3) //光標(biāo)停在時(shí)鐘位</p><p><b> {</b></p><p> write_com(0x80+0x40+4);</p><p><b> }</b></p><p> if(s1num==4) </p><p
39、><b> {</b></p><p><b> s1num=0;</b></p><p> write_com(0x0c); //關(guān)閉光標(biāo)</p><p> TR0=1; //重新計(jì)時(shí)</p><p><b> }</b></p&g
40、t;<p><b> }</b></p><p> if(s1num!=0)</p><p><b> {</b></p><p><b> if(s2==0)</b></p><p><b> {</b></p&
41、gt;<p><b> delay(5);</b></p><p><b> if(s2==0)</b></p><p><b> {</b></p><p> while(!s2);</p><p> if(s1num==1) //調(diào)節(jié)秒
42、鐘位</p><p><b> {</b></p><p><b> miao++;</b></p><p> if(miao==60)</p><p><b> miao=0;</b></p><p> write_sfm(10,miao);
43、</p><p> write_com(0x80+0x40+10); //把地址重新寫(xiě)會(huì)秒位</p><p><b> }</b></p><p> if(s1num==2)</p><p><b> {</b></p><p><b> fen++
44、;</b></p><p> if(fen==60)</p><p><b> fen=0;</b></p><p> write_sfm(7,fen);</p><p> write_com(0x80+0x40+7);</p><p><b> }</b&g
45、t;</p><p> if(s1num==3)</p><p><b> {</b></p><p><b> shi++;</b></p><p> if(shi==24)</p><p><b> shi=0;</b></p>
46、<p> write_sfm(4,shi);</p><p> write_com(0x80+0x40+4);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><
47、;p><b> }</b></p><p><b> }</b></p><p> /************秒表模塊********/</p><p> void write_mb(uint date) //秒表寫(xiě)時(shí)間</p><p><b> {</b
48、></p><p> uint qian,bai,shi,ge;</p><p> qian=date/1000;</p><p> bai=date%1000/100;</p><p> shi=date%100/10;</p><p> ge=date%10;//對(duì)時(shí)間進(jìn)行分位&l
49、t;/p><p> write_com(0x80+4);</p><p> write_date(0x30+qian);</p><p> write_date(0x30+bai);</p><p> write_date(0x30+shi);</p><p> write_date(table[7]);<
50、/p><p> write_date(0x30+ge);</p><p><b> }</b></p><p> void write_mb1(uint date) //因?yàn)樵阪I盤(pán)掃描和中斷函數(shù)中都要調(diào)用寫(xiě)函數(shù),此處重載</p><p><b> {</b></p><p&g
51、t; uint qian,bai,shi,ge;</p><p> qian=date/1000;</p><p> bai=date%1000/100;</p><p> shi=date%100/10;</p><p> ge=date%10;</p><p> write_com(0x80+4);&l
52、t;/p><p> write_date(0x30+qian);</p><p> write_date(0x30+bai);</p><p> write_date(0x30+shi);</p><p> write_date(table[7]);</p><p> write_date(0x30+ge);&l
53、t;/p><p><b> }</b></p><p> void keyscan1() //秒表鍵盤(pán)掃描函數(shù)</p><p><b> {</b></p><p><b> if(s3==0)</b></p><p><b&g
54、t; {</b></p><p><b> delay(5);</b></p><p><b> if(s3==0)</b></p><p><b> {</b></p><p> while(!s3);</p><p><
55、b> mbnum++;</b></p><p> if(mbnum==1)//計(jì)時(shí)開(kāi)始</p><p><b> {</b></p><p><b> TR1=1;</b></p><p><b> }</b></p>&
56、lt;p> else if(mbnum==2) //計(jì)時(shí)暫停</p><p><b> {</b></p><p><b> j++;</b></p><p> mbtime[i++]=num; //存儲(chǔ)暫停的時(shí)間</p><p> if(i==10)
57、 //設(shè)置只能存10組時(shí)間</p><p><b> i=0;</b></p><p><b> TR1=0;</b></p><p><b> mbnum=0;</b></p><p><b> }</b></p><p&
58、gt;<b> }</b></p><p><b> }</b></p><p><b> if(s4==0)</b></p><p><b> {</b></p><p><b> delay(5);</b></p&
59、gt;<p><b> if(s4==0)</b></p><p><b> {</b></p><p> while(!s4);</p><p><b> count2++;</b></p><p> TR1=0;//自動(dòng)顯示存儲(chǔ)的
60、時(shí)間</p><p> if(count2==1)</p><p><b> {</b></p><p> for(i=0;i<j;i++)</p><p><b> {</b></p><p> write_mb1(mbtime[i]);</p>
61、<p> delay(1000);//加這條延時(shí),否則LCD可能會(huì)花屏</p><p> write_com(0x80+4);</p><p> delay(1000);</p><p><b> }</b></p><p> i=0; </p>
62、<p><b> j=0;</b></p><p><b> }</b></p><p> if(count2==2)//清零</p><p><b> {</b></p><p><b> count2=0;</b>&
63、lt;/p><p><b> num=0;</b></p><p> write_mb1(0);</p><p> write_com(0x80+4);</p><p> delay(2000);</p><p><b> }</b></p><p&
64、gt;<b> }</b></p><p><b> }</b></p><p><b> if(s5==0)</b></p><p><b> {</b></p><p><b> delay(5);</b></p&
65、gt;<p><b> if(s5==0)</b></p><p><b> {</b></p><p> while(!s5);</p><p><b> mbnum1++;</b></p><p> if(mbnum1==1)</p>
66、<p><b> TR1=1;</b></p><p> if(mbnum1==2)</p><p><b> {</b></p><p><b> TR1=0;</b></p><p> beep=1; //蜂鳴器關(guān)閉</p>&
67、lt;p> mbnum1=0; //計(jì)數(shù)清零</p><p><b> i=0;</b></p><p> j=0; //清空數(shù)組中儲(chǔ)存的時(shí)間</p><p><b> }</b></p><p><b> }</b></p>
68、<p><b> } </b></p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p><b> wela=0;</b></p><
69、p><b> dula=0; </b></p><p><b> wr=0;</b></p><p><b> init();</b></p><p><b> while(1)</b></p><p><b> {</b
70、></p><p> keyscan();</p><p> keyscan1();</p><p><b> }</b></p><p><b> }</b></p><p> void timer0() interrupt 1</p><
71、;p><b> {</b></p><p> TH0=(65536-45872)/256;</p><p> TL0=(65536-45872)%256;</p><p><b> count++;</b></p><p> if(count==20) </p
72、><p><b> {</b></p><p><b> count=0;</b></p><p><b> miao++;</b></p><p> if(miao==60)</p><p><b> {</b></p
73、><p><b> miao=0;</b></p><p><b> fen++;</b></p><p> if(fen==60)</p><p><b> {</b></p><p><b> fen=0;</b><
74、/p><p><b> shi++;</b></p><p> if(shi==24)</p><p><b> {</b></p><p><b> shi=0;</b></p><p><b> }</b></p&g
75、t;<p> write_sfm(4,shi);</p><p><b> }</b></p><p> write_sfm(7,fen);</p><p><b> }</b></p><p> write_sfm(10,miao);</p><p>
76、;<b> }</b></p><p><b> }</b></p><p> void timer1() interrupt 3</p><p><b> {</b></p><p> TH1=(65536-45872)/256;</p><p
77、> TL1=(65536-45872)%256;</p><p><b> count1++;</b></p><p> if(count1==2)</p><p><b> {</b></p><p><b> count1=0;</b></p>
78、<p> if(mbnum1==1)//倒計(jì)時(shí)函數(shù)</p><p><b> {</b></p><p><b> num--;</b></p><p> if(num==0)//計(jì)時(shí)時(shí)間到</p><p><b> {</b><
79、/p><p> TR1=0; //定時(shí)器停止</p><p> beep=0;//蜂鳴器響</p><p><b> }</b></p><p><b> }</b></p><p> else </p><
80、;p><b> {</b></p><p><b> num++;</b></p><p> if(num==1001)</p><p><b> num=0;</b></p><p><b> }</b></p><p
81、> write_mb(num);</p><p> write_com(0x80+4);</p><p><b> }</b></p><p><b> }</b></p><p><b> 五、使用功能說(shuō)明書(shū)</b></p><p>&
82、lt;b> 1、功能描述</b></p><p> 本作品為多功能秒表,具有秒表的基本功能:計(jì)時(shí)、暫停、顯示10組計(jì)時(shí)時(shí)間、倒計(jì)時(shí)、倒計(jì)時(shí)時(shí)間到時(shí),蜂鳴器發(fā)出聲音提醒。同時(shí)能顯示北京時(shí)間,時(shí)間具有調(diào)整功能。</p><p><b> 2、操作指南</b></p><p> 實(shí)驗(yàn)板上,倒數(shù)第二列矩陣鍵盤(pán)分別為S1、S2、
83、S3、S4,最后一個(gè)獨(dú)立按鍵為S5。</p><p> S1:按一下,時(shí)間停止走動(dòng),進(jìn)入調(diào)節(jié)界面。光標(biāo)停在秒鐘位并閃爍。按第二下,光標(biāo)跳動(dòng)至分鐘位,按第三下,光標(biāo)調(diào)至?xí)r鐘位,按第四下,退出時(shí)間調(diào)節(jié),時(shí)間恢復(fù)走動(dòng)。</p><p> S2:只是時(shí)間調(diào)節(jié)下有效,每按一下使相應(yīng)時(shí)間位加一。</p><p> S3:秒表的開(kāi)始、暫停鍵。</p><
84、p> S4:自動(dòng)顯示記錄的計(jì)時(shí)時(shí)間。</p><p> S5:開(kāi)始倒計(jì)時(shí),倒計(jì)時(shí)結(jié)束時(shí),蜂鳴器響,再按一下,使蜂鳴器停止。</p><p> 六、課程設(shè)計(jì)心得體會(huì)</p><p> 通過(guò)單片機(jī)課程設(shè)計(jì),加深了我對(duì)單片機(jī)知識(shí)的理解,對(duì)以前的學(xué)習(xí)內(nèi)容有了一個(gè)極大的鞏固和提高。同時(shí),將理論和實(shí)際相聯(lián)系,提高了自己的動(dòng)手能力,拓展了有關(guān)C語(yǔ)言編程、相關(guān)電子電路
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)----多功能秒表
- 基于單片機(jī)多功能秒表課程設(shè)計(jì)
- 基于單片機(jī)的多功能秒表系統(tǒng)課程設(shè)計(jì)
- 基于單片機(jī)的多功能秒表的課程設(shè)計(jì)
- 單片機(jī)多功能秒表課程設(shè)計(jì)--89c51單片機(jī)秒表的設(shè)計(jì)
- 秒表課程設(shè)計(jì)
- 秒表課程設(shè)計(jì)
- 秒表課程設(shè)計(jì)
- 秒表課程設(shè)計(jì)-- 秒表系統(tǒng)的設(shè)計(jì)
- 秒表 課程設(shè)計(jì)
- 數(shù)字秒表課程設(shè)計(jì)
- 數(shù)字秒表課程設(shè)計(jì)
- 電子秒表 課程設(shè)計(jì)
- 鍵控秒表課程設(shè)計(jì)
- 數(shù)字秒表課程設(shè)計(jì)
- 電子秒表課程設(shè)計(jì)
- 數(shù)字秒表課程設(shè)計(jì)
- 多用秒表課程設(shè)計(jì)
- 電子秒表課程設(shè)計(jì)
- 課程設(shè)計(jì)-- 數(shù)字秒表
評(píng)論
0/150
提交評(píng)論