課程設(shè)計(jì)(論文)印張計(jì)數(shù)器設(shè)計(jì)_第1頁(yè)
課程設(shè)計(jì)(論文)印張計(jì)數(shù)器設(shè)計(jì)_第2頁(yè)
課程設(shè)計(jì)(論文)印張計(jì)數(shù)器設(shè)計(jì)_第3頁(yè)
課程設(shè)計(jì)(論文)印張計(jì)數(shù)器設(shè)計(jì)_第4頁(yè)
課程設(shè)計(jì)(論文)印張計(jì)數(shù)器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、印張計(jì)數(shù)器設(shè)計(jì)一設(shè)計(jì)任務(wù)要求1能夠進(jìn)行6位數(shù)碼顯示,顯示當(dāng)前的印張數(shù);2能夠進(jìn)行印數(shù)的預(yù)置;3能夠進(jìn)行正/反計(jì)數(shù);4能夠模擬機(jī)械手取出次品;5當(dāng)計(jì)數(shù)結(jié)束時(shí),可以報(bào)警;二硬件設(shè)計(jì)總圖80c514個(gè)led顯示印張計(jì)數(shù)器運(yùn)作狀態(tài)鍵盤輸入端口6個(gè)七段數(shù)碼管顯示數(shù)據(jù)復(fù)位監(jiān)控輸入印張計(jì)數(shù)中斷信號(hào)輸入晶振時(shí)鐘輸入電源led指示燈三硬件部分分析說(shuō)明1)、顯示部分實(shí)驗(yàn)箱提供了6位8段碼led顯示電路,只要按地址輸出相應(yīng)數(shù)據(jù),就可以實(shí)現(xiàn)對(duì)顯示器的控制。顯示共有6位,用動(dòng)態(tài)方式顯示。8位段碼、6位位碼是由兩片74ls374輸出。位碼經(jīng)mc1413或uln2003倒相驅(qū)動(dòng)后,選擇相應(yīng)顯示位。在實(shí)驗(yàn)箱中8位段碼輸出地址

2、為0x004h,位碼輸出地址為0x002h。此處x 是由key/led cs決定,參見地址譯碼。做鍵盤和led實(shí)驗(yàn)時(shí),需將key/led cs 接到相應(yīng)的地址譯碼上。以便用相應(yīng)的地址來(lái)訪問(wèn)。將key/led cs接到cs0上,則段碼地址為08004h,位碼地址為08002h。2)、鍵盤部分1 預(yù)設(shè)初始計(jì)數(shù)值:可通過(guò)數(shù)字鍵鍵入所需計(jì)量的印張數(shù),按下“確定(a)”鍵后開始。2 正向反向計(jì)數(shù):可通過(guò)鍵盤上的正向(b)反向(c)鍵切換正向計(jì)數(shù)或者反向計(jì)數(shù)。當(dāng)選擇正向計(jì)數(shù)時(shí),顯示屏顯示從0開始,每印刷一張,數(shù)值加1,直到遇到暫?;蛘叩竭_(dá)預(yù)設(shè)值時(shí)停止計(jì)數(shù);當(dāng)選擇反向計(jì)數(shù)時(shí),顯示屏從預(yù)設(shè)值開始,每印刷一張,

3、數(shù)值減1,直到遇到暫?;蛘叩竭_(dá)0時(shí)停止計(jì)數(shù)。3次品報(bào)告:當(dāng)按下鍵盤上次品鍵(d)時(shí),代表出現(xiàn)次品,此時(shí)直流電機(jī)停止運(yùn)轉(zhuǎn),步進(jìn)電機(jī)緩慢轉(zhuǎn)動(dòng)一周,代表機(jī)械手取出次品,之后直流電機(jī)恢復(fù)運(yùn)轉(zhuǎn)。 4 報(bào)警提示:當(dāng)計(jì)數(shù)為0或者到預(yù)設(shè)值時(shí),停止計(jì)數(shù),發(fā)出報(bào)警,此時(shí)l2亮。 5 復(fù)位鍵(f)78945 6 1 2 3 0feabcd確定正計(jì)反計(jì)次品 數(shù)字復(fù)位顯示屏四源程序#include #define ledlen 6/用6個(gè)八段管xdata unsigned char outbit _at_ 0x8002; / 位碼輸出+列掃描地址xdata unsigned char outseg _at_ 0x800

4、4; / 段碼輸出xdata unsigned char in _at_ 0x8001; / 行掃描地址入口xdata unsigned char cs0832 _at_ 0x9000;/產(chǎn)生電壓?jiǎn)?dòng)直流電機(jī)xdata unsigned char control _at_ 0xa003;/control=0832-8255內(nèi)部指令xdata unsigned char ctl _at_ 0xa000; /產(chǎn)生電流啟動(dòng)步進(jìn)電動(dòng)機(jī)code unsigned char ledmap = /數(shù)碼顯示管段碼 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,

5、0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71;code unsigned char keytable = /4*6鍵盤定義碼 0x16, 0x15, 0x14, 0xff,0x13, 0x12, 0x11, 0x10,0x0d, 0x0c, 0x0b, 0x0a,0x0e, 0x03, 0x06, 0x09,0x0f, 0x02, 0x05, 0x08,0x00, 0x01, 0x04, 0x07;/code,單片機(jī)中的romunsigned char ledbufledlen; / 顯示緩沖unsigned char ch; /ch=getke

6、yint num,num1,num2,i;/num(用戶輸入數(shù))num1(正計(jì))num2(反計(jì))sbit led1 = p10;/正計(jì)指示燈sbit led2 = p11;/反計(jì)指示燈sbit led3 = p12;/結(jié)束指示燈sbit speaker = p13; /喇叭接口/延時(shí)程序void delay(unsigned char cnt) unsigned char i; while (cnt- !=0) for (i=100; i !=0; i-);void delay3() /喇叭延時(shí)unsigned char l;for (l=0; l100; l+);void delay2()/

7、 unsigned char i,j; j = 30; do for(i=250;i!=0;i-); tmod=0x01; /*定時(shí)器0工作在模式1下(16位計(jì)數(shù)器)*/ th0=0xfd; tl0=0x65; tr0=1; /*啟動(dòng)定時(shí)器*/ while(tf0=0); tr0=0; while(-j);/數(shù)碼管顯示void displayled() /數(shù)碼管顯示函數(shù) unsigned char i; unsigned char pos; pos = 0x20; / 從左邊開始顯示 for (i = 0; i = 1; / pos的數(shù)據(jù)右移一位 /鍵盤unsigned char testke

8、y()/鍵盤掃描函數(shù)(本實(shí)驗(yàn)屬行-列掃描方式)4*6矩陣式鍵盤 outbit = 0; / 列設(shè)為低電平0 return (in &0x0f); / 讀入鍵狀態(tài)(高四位不用)得到第幾行unsigned char getkey()/讀取鍵值函數(shù) unsigned char pos; unsigned char i; unsigned char k; i = 6;/i代表第幾列 pos = 0x20; / 得到第幾列 do outbit = pos;/ pos = 1;/向下一列掃描 k = in & 0x0f; while (-i != 0) & (k = 0); / 鍵值 = 列 x 4 +

9、行 if (k != 0) i *= 4; if (k & 2)i += 1; else if (k & 4)i += 2; else if (k & 8)i += 3; outbit = 0; do delay(10); while (testkey(); / 等鍵釋放 return(keytablei); / 取出鍵碼 else return(0xff);/步進(jìn)電動(dòng)機(jī)void stepmotor() unsigned char ctl18=0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09;/a-ab-b-bc-c-cd-d-da-a/雙八拍,一個(gè)周期轉(zhuǎn)60度,

10、8*7.5 unsigned int i,j; ctl = 0;/步進(jìn)電動(dòng)機(jī)初始化-無(wú)電流 while(1) for(j=0;j6;j+) for (i=0;i8;i+) displayled(); ctl = ctl1i; delay2(); displayled(); break;/中斷void extint0() interrupt 0 num1+; num2-;/正計(jì)void zhengji() tcon = 0x01; / 外部中斷0下降沿觸發(fā),定時(shí)/計(jì)數(shù)器控制寄存器,int0=p3.2外部中斷0輸入 ie = 0x81; / 打開外部中斷允許位(ex0)及總中斷允許位(ea) cs

11、0832 = 0xff; /直流電動(dòng)機(jī)轉(zhuǎn) while (num1=num) if(num1num) ledbuf5 = ledmapnum1%10; ledbuf4 = ledmapnum1/10%10; ledbuf3 = ledmapnum1/100%10; ledbuf2 = ledmapnum1/1000%10; ledbuf1 = ledmapnum1/10000%10; ledbuf0 = ledmapnum1/1000000%10; displayled(); else if(num1=num) cs0832 = 0x80; /直流電動(dòng)機(jī)停 led1 = 1; ledbuf5 =

12、 ledmapnum%10; ledbuf4 = ledmap(num/10)%10; ledbuf3 = ledmap(num/100)%10; ledbuf2 = ledmap(num/1000)%10; ledbuf1 = ledmap(num/10000)%10; ledbuf0 = ledmap(num/1000000)%10; displayled(); break; if (testkey() ch=getkey(); if(ch=0x0d) /按下次品鍵 cs0832 = 0x80; /直流電動(dòng)機(jī)停 displayled(); for(i=0;i0) ledbuf5 = led

13、mapnum2%10; ledbuf4 = ledmap(num2/10)%10; ledbuf3 = ledmap(num2/100)%10; ledbuf2 = ledmap(num2/1000)%10; ledbuf1 = ledmap(num2/10000)%10; ledbuf0 = ledmap(num2/1000000)%10; displayled(); else if(num2=0) led1 = 1; for(i=0;i6;i+) ledbufi = ledmap0; displayled(); cs0832 = 0x80; /直流電動(dòng)機(jī)停 break; if (testk

14、ey() ch=getkey(); if(ch=0x0f) goto then; else if(ch=0x0d) /按下次品鍵d cs0832 = 0xaf; /直流電動(dòng)機(jī)停 for(i=0;i=0); led3 = 1; led1 =0; led2 =0; while(1) ledbuf5 = ledmap0; ledbuf4 = ledmap0; ledbuf3 = ledmap0; ledbuf2 = ledmap0; ledbuf1 = ledmap0; ledbuf0 = ledmap0; displayled(); speaker = 0; delay3(); speaker =

15、 1; delay3(); if (testkey()ch=getkey();ch=0x0f; then: break; /主函數(shù)void main() unsigned char i=0xff,j; unsigned char no6;/每按一個(gè)數(shù)字鍵的緩沖 unsigned char ch;/ ledbuf1 = 0; control = 0x82;/8255內(nèi)部指令 cs0832 = 0x80; /直流電動(dòng)機(jī)停 led1 =0; led2 =0; led3 =0; for(j=0;j6;j+) ledbufj = 0x00;/- noj=0xff; displayled();/顯示- w

16、hile (1) displayled(); if (testkey() ch=getkey(); if(ch0x0a) /輸入數(shù)據(jù) i+; ledbufi = ledmapch & 0x0f; noi=ch; else if(ch=0x0a)/確定(a) num=0; for(j=0;j6;j+)if(noj!=0xff)num=num*10+noj; else if(ch=0x0b)/正計(jì)(b) led1 =1; num1=0; zhengji(); main(); else if(ch=0x0c)/反計(jì)(c) led2 =1; num2=num; fanji(); main(); else if(ch=0x0f)/復(fù)位(f) i=0xff; led1=0; for(j=0;j6;j+) ledbufj = 0x00; noj=0xff; displayled(); 五連線1直流電機(jī)-8v+8v2步進(jìn)電機(jī)apa0

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論