版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 課程設(shè)計報告</p><p>?。ū究?專科)</p><p> 課程:單片機課程設(shè)計</p><p> 學(xué)號:</p><p> 姓名:</p><p> 班級:</p><p> 教師:</p><p> 時間:2012.4.20</p>
2、;<p> 計算機科學(xué)與技術(shù)系</p><p><b> 附錄:實驗源程序</b></p><p> #include<reg51.h> //包含51單片機寄存器定義的頭文件</p><p> unsigned char code Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0
3、x82,0xf8,0x80,0x90}; //數(shù)字0~9的段碼</p><p> unsigned char keyval; //定義變量儲存按鍵值</p><p> sbit p=P3^7;</p><p> /**************************************************************</p
4、><p> 函數(shù)功能:數(shù)碼管動態(tài)掃描延時</p><p> **************************************************************/</p><p> void led_delay(void) </p><p><b> {</b></p>
5、<p> unsigned char j;</p><p> for(j=0;j<200;j++)</p><p><b> ;</b></p><p><b> }</b></p><p> /***************************************
6、***********************</p><p> 函數(shù)功能:按鍵值的數(shù)碼管顯示子程序</p><p> **************************************************************/</p><p> void display(unsigned char k)</p><p&g
7、t;<b> {</b></p><p> P3=0xfe; //點亮數(shù)碼管1</p><p> P0=Tab[k/10]; //顯示十位 </p><p> led_delay(); //動態(tài)掃描延時 </p><p> P3=0xfd;
8、//點亮數(shù)碼管2</p><p> P0=Tab[k%10]; //顯示個位 </p><p> led_delay(); //動態(tài)掃描延時 </p><p> if(keyval!=0x00)</p><p><b> p=0;</b></p><p><
9、b> }</b></p><p> /**************************************************************</p><p> 函數(shù)功能:軟件延時子程序</p><p> **********************************************************
10、****/</p><p> void delay20ms(void) </p><p><b> {</b></p><p> unsigned char i,j;</p><p> for(i=0;i<100;i++)</p><p> for(j=0;j<60;j+
11、+)</p><p><b> ;</b></p><p><b> }</b></p><p> /**************************************************************</p><p><b> 函數(shù)功能:主函數(shù)</b
12、></p><p> **************************************************************/ </p><p> void main(void)</p><p><b> {</b></p><p> EA=1; //
13、開總中斷</p><p> ET0=1; //定時器T0中斷允許 </p><p> TMOD=0x01; //使用定時器T0的模式1</p><p> TH0=(65536-500)/256; //定時器T0的高8位賦初值</p><p> TL0=(65536
14、-500)%256; //定時器T0的高8位賦初值</p><p> TR0=1; //啟動定時器T0</p><p> keyval=0x00; //按鍵值初始化為0</p><p> EX0=1; //允許使用外中斷</p><p> IT0=1; //選擇負跳變來觸發(fā)外中斷&
15、lt;/p><p> //P1=0xff;</p><p> while(1) //無限循環(huán)</p><p><b> {</b></p><p> display(keyval); //調(diào)用按鍵值的數(shù)碼管顯示子程序</p><p><b> }&
16、lt;/b></p><p><b> }</b></p><p> /**************************************************************</p><p> 函數(shù)功能:定時器0的中斷服務(wù)子程序,進行鍵盤掃描,判斷鍵位</p><p> *******
17、*******************************************************/ </p><p> void time0_interserve(void) interrupt 1 using 1 </p><p><b> {</b></p><p> TR0=0;
18、 //關(guān)閉定時器T0</p><p> P1=0xff; //所有列線置為高電平?</p><p> P2=0x00; //所有行線置為低電平“0”?”</p><p> if((P1&0xff)!=0xff) //列線中有一位為低電平“0”,說明有鍵按下</p>
19、<p> delay20ms(); //延時一段時間、軟件消抖</p><p> if((P1&0xff)!=0xff) //確實有鍵按下</p><p><b> {</b></p><p> P2=0xfe; //第一行置為低電平“0”(P1.1出低電平“0”)</p>
20、<p> if(P1==0xfe) keyval=1; //可判斷是S1鍵被按下</p><p> if(P1==0xfd) keyval=2; //可判斷是S2鍵被按下</p><p> if(P1==0xfb) keyval=3; //可判斷是S3鍵被按下</p><p
21、> if(P1==0xf7) keyval=4; //可判斷是S4鍵被按下</p><p> if(P1==0xef) keyval=5; //可判斷是S5鍵被按下</p><p> if(P1==0xdf) keyval=6; //可判斷是S6鍵被按下</p><p> i
22、f(P1==0xbf) keyval=7; //可判斷是S7鍵被按下</p><p> if(P1==0x7f) keyval=8; //可判斷是S8鍵被按下</p><p> P2=0xfd; //第二行置為低電平“0”(P1.1出低電平“0”)</p><p> if(P1==0xfe) keyv
23、al=9; //可判斷是S9鍵被按下</p><p> if(P1==0xfd) keyval=10; //可判斷是S10鍵被按下</p><p> if(P1==0xfb) keyval=11; //可判斷是S11鍵被按下</p><p> if(P1==0xf7) keyval
24、=12; //可判斷是S12鍵被按下</p><p> if(P1==0xef) keyval=13; //可判斷是S13鍵被按下</p><p> if(P1==0xdf) keyval=14; //可判斷是S14鍵被按下</p><p> if(P1==0xbf) keyval=
25、15; //可判斷是S15鍵被按下</p><p> if(P1==0x7f) keyval=16; //可判斷是S16鍵被按下</p><p> P2=0xfb; //第三行置為低電平“0”(P1.2輸出低電平“0”)</p><p> if(P1==0xfe) keyval=17;
26、 //可判斷是S17鍵被按下</p><p> if(P1==0xfd) keyval=18; //可判斷是S18鍵被按下</p><p> if(P1==0xfb) keyval=19; //可判斷是S19鍵被按下</p><p> if(P1==0xf7) keyval=20;
27、 //可判斷是S20鍵被按下</p><p> if(P1==0xef) keyval=21; //可判斷是S21鍵被按下</p><p> if(P1==0xdf) keyval=22; //可判斷是S22鍵被按下</p><p> if(P1==0xbf) keyval=23;
28、//可判斷是S23鍵被按下</p><p> if(P1==0x7f) keyval=24; //可判斷是S24鍵被按下</p><p> P2=0xf7; //第三行置為低電平“0”(P1.2輸出低電平“0</p><p> if(P1==0xfe) keyval=25; //可判斷是S25鍵被按
29、下</p><p> if(P1==0xfd) keyval=26; //可判斷是S26鍵被按下</p><p> if(P1==0xfb) keyval=27; //可判斷是S27鍵被按下</p><p> if(P1==0xf7) keyval=28; //可判斷是S28鍵被按下
30、</p><p> if(P1==0xef) keyval=29; //可判斷是S29鍵被按下</p><p> if(P1==0xdf) keyval=30; //可判斷是S30鍵被按下</p><p> if(P1==0xbf) keyval=31; //可判斷是S31鍵被按下&
31、lt;/p><p> if(P1==0x7f) keyval=32; //可判斷是S32鍵被按下</p><p> P2=0xef; //第一行置為低電平“0”(P1.1出低電平“0”)</p><p> if(P1==0xfe) keyval=33; //可判斷是S33鍵被按下</p><
32、;p> if(P1==0xfd) keyval=34; //可判斷是S34鍵被按下</p><p> if(P1==0xfb) keyval=35; //可判斷是S35鍵被按下</p><p> if(P1==0xf7) keyval=36; //可判斷是S36鍵被按下</p><
33、p> if(P1==0xef) keyval=37; //可判斷是S37鍵被按下</p><p> if(P1==0xdf) keyval=38; //可判斷是S38鍵被按下</p><p> if(P1==0xbf) keyval=39; //可判斷是S39鍵被按下</p><p
34、> if(P1==0x7f) keyval=40; //可判斷是S40鍵被按下</p><p> P2=0xdf; //第二行置為低電平“0”(P1.1出低電平“0”)</p><p> if(P1==0xfe) keyval=41; //可判斷是S41鍵被按下</p><p> if(P1==
35、0xfd) keyval=42; //可判斷是S42鍵被按下</p><p> if(P1==0xfb) keyval=43; //可判斷是S43鍵被按下</p><p> if(P1==0xf7) keyval=44; //可判斷是S44鍵被按下</p><p> if(P1==0
36、xef) keyval=45; //可判斷是S45鍵被按下</p><p> if(P1==0xdf) keyval=46; //可判斷是S46鍵被按下</p><p> if(P1==0xbf) keyval=47; //可判斷是S47鍵被按下</p><p> if(P1==0x
37、7f) keyval=48; //可判斷是S48鍵被按下</p><p> P2=0xbf; //第三行置為低電平“0”(P1.2輸出低電平“0”)</p><p> if(P1==0xfe) keyval=49; //可判斷是S49鍵被按下</p><p> if(P1==0xfd) keyval=
38、50; //可判斷是S50鍵被按下</p><p> if(P1==0xfb) keyval=51; //可判斷是S51鍵被按下</p><p> if(P1==0xf7) keyval=52; //可判斷是S52鍵被按下</p><p> if(P1==0xef) keyval=5
39、3; //可判斷是S53鍵被按下</p><p> if(P1==0xdf) keyval=54; //可判斷是S54鍵被按下</p><p> if(P1==0xbf) keyval=55; //可判斷是S55鍵被按下</p><p> if(P1==0x7f) keyval=56
40、; //可判斷是S56鍵被按下</p><p> P2=0x7f; //第三行置為低電平“0”(P1.2輸出低電平“0</p><p> if(P1==0xfe) keyval=57; //可判斷是S57鍵被按下</p><p> if(P1==0xfd) keyval=58;
41、//可判斷是S58鍵被按下</p><p> if(P1==0xfb) keyval=59; //可判斷是S59鍵被按下</p><p> if(P1==0xf7) keyval=60; //可判斷是S60鍵被按下</p><p> if(P1==0xef) keyval=61; /
42、/可判斷是S61鍵被按下</p><p> if(P1==0xdf) keyval=62; //可判斷是S62鍵被按下</p><p> if(P1==0xbf) keyval=63; //可判斷是S63鍵被按下</p><p> if(P1==0x7f) keyval=64; //
43、可判斷是S64鍵被按下</p><p><b> }</b></p><p> TR0=1; //開啟定時器T0</p><p> TH0=(65536-500)/256; //定時器T0的高8位賦初值</p><p> TL0=(65536-500)%256; //定時
44、器T0的高8位賦初值 </p><p><b> }</b></p><p> /**************************************************************</p><p> 函數(shù)功能:外部中斷程序,進行復(fù)位響應(yīng)按鍵</p><p> ************
45、**************************************************/ </p><p> void time0(void) interrupt 0 using 0 </p><p><b> { </b></p><p> keyval=0x00;</p><p><b>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 病房呼叫體統(tǒng)課程設(shè)計
- eda課程設(shè)計——病房呼叫系統(tǒng)
- 病房呼叫系統(tǒng)課程設(shè)計報告
- 病房呼叫系統(tǒng)eda課程設(shè)計
- 數(shù)電課程設(shè)計--病房呼叫系統(tǒng)
- 病房呼叫系統(tǒng)課程設(shè)計實驗報告
- 數(shù)字電路課程設(shè)計--病房呼叫系統(tǒng)
- 接口技術(shù)課程設(shè)計--病房呼叫系統(tǒng)
- 醫(yī)院病房呼叫系統(tǒng)課程設(shè)計報告書
- 單片機課程設(shè)計報告---模擬病房呼叫系統(tǒng)
- 數(shù)邏課程設(shè)計--病房呼叫指示燈電路的設(shè)計
- 單片機課程設(shè)計---單片機病房呼叫系統(tǒng)
- plc課程設(shè)計報告--基于51單片機的病房呼叫系統(tǒng)
- 病床呼叫系統(tǒng)課程設(shè)計
- 課程設(shè)計--病人呼叫裝置
- 病房呼叫系統(tǒng)的設(shè)計
- 優(yōu)先病房呼叫器設(shè)計-信息工程系《數(shù)字電子技術(shù)》課程設(shè)計
- 病床呼叫系統(tǒng)課程設(shè)計
- 病床呼叫系統(tǒng)plc課程設(shè)計
- 病床呼叫系統(tǒng)課程設(shè)計報告
評論
0/150
提交評論