介面技術課程設計
⑴ 求《微機原理與介面技術》課程設計報告
微機介面課程設計實驗報告
一、實驗目的:
1. 掌握綜合使用基本輸入設備,通用介面晶元,專用介面晶元的方法;
2. 熟悉並行介面晶元8255的使用與硬體介面方法, 熟悉8255的各種工作方式,掌握8255的編程方法;
3. 掌握實時處理程序的編制和調試方法;
二、設計要求:
用實驗儀器上的並行介面控制鍵盤和LED顯示,設計一個定時顯示裝置,用四個數碼管顯示時間(左邊兩位顯示分值,右邊兩位秒值).
用小鍵盤控制計時和顯示:
C鍵(清除) 顯示00-00
G鍵(啟動) 顯示XX-XX變化的分、秒。
S鍵(停止) 顯示XX-XX不變
P鍵(設置初始值)設置分、秒的初值
E鍵(終止程序) 熄滅數碼管,程序退出
⑵ 微機原理與介面技術課程設計之數字顯示倒計時器
DATAS SEGMENT
sec db 24 ;倒數的秒數,可以隨意更改
osec db 0
startmsg db "Counting down .... press [p] to puase, [c] to continue, [s] to stop",13,10,"$"
timesup db 13,10,"Times up!"
endmsg db 13,10,"Thanks for using, bye~$"
secStr db 6 p ("$")
curpg db 0
ispause db 0
x db 0
y db 0
DATAS ENDS
STACKS SEGMENT
db 64 p(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
push ax
push bx
push cx
push dx
MOV AX,DATAS
MOV DS,AX
lea dx,startmsg
call puts
;讀取時間
mov ah,2ch
int 21h
mov osec,dh ;記下秒數
call getxy ;取得游標的位置
;倒數,顯示倒數,查鍵盤。
;倒數的原理就是 osec 和現在秒數的對比得出
timer:
mov ah,2ch
int 21h
mov ah,6 ;檢查鍵盤
mov dl,0ffh
int 21h
cmp al,"s" ;終止程式
jz done
cmp al,"p" ;暫停程式
jz pause
cmp al,"c" ;繼續程式
jz continue
cmp ispause,0
jg timer
cmp osec,dh ;檢查秒數的變化
jnz interval
jmp timer
interval:
mov osec,dh ;更新秒數
dec sec
call showcountdown ;顯示倒數秒數(sec)
cmp sec,0
jg timer
lea dx,timesup
call puts
jmp done
pause:
mov ispause,1
jmp timer
continue:
mov ispause,0
jmp timer
puts:
mov ah,9
int 21h
ret
showcountdown:
call setxy ;保持顯示倒數的位置
xor ax,ax
xor dx,dx
mov al,sec
cbw
mov bl,10
div bl
add al,"0"
add ah,"0"
lea bx,secStr
mov byte ptr[bx],al
mov byte ptr [bx+1],ah
mov dx,bx
call puts
ret
;讀取游標的位置
getxy:
mov ah,3
int 10h
mov x,dl
mov y,dh
mov curpg,bh
ret
;設置游標的位置
setxy:
mov ah,2
mov bh,curpg
mov dl,x
mov dh,y
int 10h
ret
done:
pop dx
pop cx
pop bx
pop ax
MOV AH,4CH
INT 21H
CODES ENDS
END START
⑶ 微機原理與介面技術課程設計:交通燈控制系統
您好,我看到您的問題很久沒有人來回答,但是問題過期無人回答會被扣分的並且你的懸賞分也會被沒收!所以我給你提幾條建議:一,你可以選擇在正確的分類下去提問,這樣知道你問題答案的人才會多一些,回答的人也會多些。二,您可以到與您問題相關專業網站論壇里去看看,那裡聚集了許多專業人才,一定可以為你解決問題的。三,你可以向你的網上好友問友打聽,他們會更加真誠熱心為你尋找答案的,甚至可以到相關網站直接搜索.四,網上很多專業論壇以及知識平台,上面也有很多資料,我遇到專業性的問題總是上論壇求解決辦法的。五,將你的問題問的細一些,清楚一些!讓人更加容易看懂明白是什麼意思!謝謝採納我的建議
⑷ 微機原理與介面技術課程設計
直流電機速度一般就是控制它的工作電壓調速了,輸出不同的工作電壓,就能改變它的速度,輸出能改變的電壓的方法基本上有兩種:D/A
或PWM,有反饋的電機可以通過檢測反饋精確控制.寫程序就是跟據上述原理寫的....
⑸ 微機原理介面技術的課程設計,霓虹燈的模擬實現
#include<stdio.h>
#include<stdlib.h>//此庫主要是下面的清屏函數,如果不用清屏函數,此庫可不需要
#defineM8
chartable[M][M];
voidInitTable()
{
inti,j;
for(i=0;i<M;i++)//先將整張表置空
for(j=0;j<M;j++)
table[i][j]='';
for(i=0;i<M;i++)//畫邊框
{
table[0][i]='@';
table[i][M-1]='@';
table[M-1][M-i-1]='@';
table[M-1-i][0]='@';
}
}
voidDisplayTable()
{
inti,j;
//clrscr();//TC下可用此方法
//system("cls");//VC6.0下用此方法
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
printf("%c",table[i][j]);
printf(" ");
}
}
voidDelay()
{
inti,j;
for(i=0;i<10000;i++)
for(j=0;j<10000;j++);
}
voidFillTable()//將對應位置置*
{
inti;
for(i=1;i<M-1;i++)
{
table[i][i]='*';
Delay();//起一定延時,看起來效果好點
DisplayTable();//重新顯示那張表格
}
for(i=1;i<M-1;i++)
{
table[M-i-1][i]='*';
Delay();
DisplayTable();
}
}
voidEmptyTable()//將對應位置置空
{
inti;
for(i=1;i<M-1;i++)
{
table[i][M-1-i]='';
Delay();
DisplayTable();
}
for(i=1;i<M-1;i++)
{
table[M-i-1][M-i-1]='';
Delay();
DisplayTable();
}
}
voidmain(void)
{
charcmd;
InitTable();//初始化表格,邊框和置空部分
DisplayTable();
scanf("%c",&cmd);
while(!(cmd=='Q'||cmd=='q'))
{
switch(cmd)
{
case'I':
case'i':
FillTable();//填充表格行動
break;
case'O':
case'o':
EmptyTable();//將表格內清除注意程序中填充像寫X一樣,這邊清除時時相反的動作,具體去運行程序觀看效果
break;
//default:
//printf(" badcommand,tryitagain! ");
}
scanf("%c",&cmd);
}
}
以上在VC6.0測試通過
以下是在TC下測試通過
#include<stdio.h>
#defineM8
chartable[M][M];
voidInitTable()
{
inti,j;
for(i=0;i<M;i++)/*先將整張表置空*/
for(j=0;j<M;j++)
table[i][j]='';
for(i=0;i<M;i++)/*畫邊框*/
{
table[0][i]='@';
table[i][M-1]='@';
table[M-1][M-i-1]='@';
table[M-1-i][0]='@';
}
}
voidDisplayTable()
{
inti,j;
clrscr();
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
printf("%c",table[i][j]);
printf(" ");
}
}
voidDelay()
{
inti,j;
for(i=0;i<20000;i++)
for(j=0;j<30000;j++);
}
voidFillTable()/*將對應位置置**/
{
inti;
for(i=1;i<M-1;i++)
{
table[i][i]='*';
Delay();/*起一定延時,看起來效果好點*/
DisplayTable();/*重新顯示那張表格*/
}
for(i=1;i<M-1;i++)
{
table[M-i-1][i]='*';
Delay();
DisplayTable();
}
}
voidEmptyTable()/*將對應位置置空*/
{
inti;
for(i=1;i<M-1;i++)
{
table[i][M-1-i]='';
Delay();
DisplayTable();
}
for(i=1;i<M-1;i++)
{
table[M-i-1][M-i-1]='';
Delay();
DisplayTable();
}
}
voidmain(void)
{
charcmd;
InitTable();/*初始化表格,邊框和置空部分*/
DisplayTable();
scanf("%c",&cmd);
while(!(cmd=='Q'||cmd=='q'))
{
switch(cmd)
{
case'I':
case'i':
FillTable();/*填充表格行動*/
break;
case'O':
case'o':
EmptyTable();/*將表格內清除注意程序中填充像寫X一樣,這邊清除時時相反的動作,具體去運行程序觀看效果*/
break;
/*default:
//printf(" badcommand,tryitagain! ");*/
}
scanf("%c",&cmd);
}
}
⑹ 微機原理與介面技術 電子鍾課程設計
哈哈,感覺你的這個課程好有意思啊,那是不是就可以自己在家製造鍾鳥啊…
⑺ 誰來幫幫我啊....微型計算機介面技術課程設計
MINUTE EQU 41H ;存放分信息的單元
SECOND EQU 42H ;存放秒信息的單元
NUM EQU 43H ;存放T0溢出次數的單元
ORG 0000H ;程序入口
AJMP MAIN
ORG 0030H ;主程序入口
MAIN:MOV SP,#60H ;指定堆棧棧底
MOV HOUR,#00H
MOV MINUTE,#00H
MOV SECOND,#00H ;將時、分、秒分別清零
MOV NUM,#0
MOV TMOD,#01H ;設T0工作於方式1,用於定時
MOV TH0,#4CH ;設置T0的初始值
MOV TL0,#00H
MOV IE,#00H ;關中斷
SETB TR0 ;開啟定時器T0
LOOP:NOP
NOP
ACALL DISPLAY ;調用顯示子程序
NOP
NOP
LOOP1:JB TF0,TIME ;等待定時溢出
LJMP LOOP1
TIME:CLR TR0 ;關閉定逼?
PUSH DPL ;保護現場
PUSH DPH
PUSH ACC
MOV TH0,#4CH ;重新設置T0的值
MOV TL0,#00H
SETB TR0 ;開啟T0
MOV A,NUM
INC A ;溢出次數+1
MOV NUM,A
CJNE A,#0AH,TT1 ;檢測鍵盤
MOV P1,#0FH ;設鍵盤初值
MOV R0,#04H ;延時消抖
LCALL DELAY
JNB P1.0,T0C1 ;為0表示P1.0按下,轉T0C1調整秒
JNB P1.1,T0C2 ;為0表示P1.1按下,轉T0C2調整分
JNB P1.2,T0C3 ;為0表示P1.2按下,轉T0C3調整時
TT1: CJNE A,#140,RR4
MOV NUM,#00H
T0C1:MOV A,SECOND
INC A ;秒單元內容加1
DA A ;調整為BCD碼
MOV SECOND,A
CJNE A,#60H,RR4 ;不為60秒繼續等待
setb flag:
clr flag
RR1: MOV SECOND,#00H ;為60秒將秒單元清零
T0C2:MOV A,MINUTE
INC A ;分單元內容加1
DA A ;調整為BCD碼
MOV MINUTE,A
CJNE A,#60H,RR4 ;不為60分繼續等待
RR2: MOV MINUTE,#00H ;為60分,分單元清零
T0C3:MOV P1,#0F0H ; 1小時閃一次
LCALL DELAY ;延時
MOV P1,#0FH
MOV A,HOUR
INC A ;時單元內容加1
DA A ;調整為BCD碼
MOV HOUR,A
CJNE A,#24H,RR4 ;不為24小時繼續等待
RR3: MOV HOUR,#00H ;為24小時,時單元清零
RR4: POP ACC ;恢復現場
POP DPH
POP DPL
LJMP LOOP
DELAY:MOV R1,#10H ;延時子程序
DELAY1:MOV R2,#20H
DJNZ R2,$
DJNZ R1,DELAY1
DJNZ R0,DELAY
RET
DISPLAY:MOV DPTR,#TAB ;送表頭基地址
MOV A,HOUR
ANL A,#0FH ;屏蔽時高位
MOVC A,@A+DPTR ;查時高位
MOV P0,A
CLR P2.6 ;開顯示
MOV R0,#1 ;延時消除鬼影
LCALL DELAY
SETB P2.6 ;關顯示
MOV A,HOUR
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV P0,A
CLR P2.7
MOV R0,#1
LCALL DELAY
SETB P2.7
MOV A,MINUTE
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A
CLR P2.4
MOV R0,#1
LCALL DELAY
SETB P2.4
MOV A,MINUTE
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV P0,A
CLR P2.5
MOV R0,#1
LCALL DELAY
SETB P2.5
MOV A,SECOND
ANL A,#0FH
MOVC A,@A+DPTR
MOV P0,A
CLR P2.2
MOV R0,#1
LCALL DELAY
SETB P2.2
MOV A,SECOND
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV P0,A
CLR P2.3
MOV R0,#1
LCALL DELAY
SETB P2.3
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
setb flag: clr flag
啊啦啊啦.老大.繼續時鍾.
⑻ 急需一份微機原理與介面技術課程設計
課題名稱:閏年計算
1.實驗目的:
(1) 學習分支、中斷、和邏輯表達。
(2) 熟悉匯編語言程序的編譯、鏈接過程。
2.實驗內容:
利用DOS 21H中斷類型的10號鍵盤功能調用,將鍵盤接受到的年份數值的字元串按位元組存入緩沖區。將字元串中的每個字元轉換為對應的十進制數值(利用0-9這10個數的ASCⅡ碼值比其本身大30H的關系),利用判斷某年是否為閏年的表達式,輸入該年是否為閏年的信息。
3.編程提示:
(1)找到判斷是否為閏年的方法。判斷閏年規則:如果某年能被4整除但不能被100整除或者該年能被400整除,則該年為閏年。
(2)判斷某年為閏年的匯編語言表達式為:
(((AX) MOD 4 EQ 0) AND ((AX) MOD 100 EQ 0)) OR ((AX) MOD 400 EQ 0)
其中,(AX)中存放的是從鍵盤輸入的年份值。
(3)參考流程見圖:
4.匯編程序:
data segment ;定義數據段
infon db 0dh,0ah,'Please input a year: $'
Y db 0dh,0ah,'This is a leap year! $'
N db 0dh,0ah,'This is not a leap year! $'
w dw 0
buf db 8
db ?
db 8 p(?)
data ends
stack segment stack
db 200 p(0)
stack ends
code segment
assume ds:data,ss:stack,cs:code
start:mov ax,data
mov ds,ax
lea dx,infon ;在屏幕上顯示提示信息
mov ah,9
int 21h
lea dx,buf ;從鍵盤輸入年份字元串
mov ah,10
int 21h
mov cl, [buf+1]
lea di,buf+2
call datacate
call ifyears
jc a1
lea dx,n
mov ah,9
int 21h
jmp exit
a1: lea dx,y
mov ah,9
int 21h
exit: mov ah,4ch
int 21h
datacate proc near;
push cx;
dec cx
lea si,buf+2
tt1: inc si
loop tt1
;lea si,cx[di]
pop cx
mov dh,30h
mov bl,10
mov ax,1
l1: push ax
sub byte ptr [si],dh
mul byte ptr [si]
add w,ax
pop ax
mul bl
dec si
loop l1
ret
datacate endp
ifyears proc near
push bx
push cx
push dx
mov ax,w
mov cx,ax
mov dx,0
mov bx,4
div bx
cmp dx,0
jnz lab1
mov ax,cx
mov bx,100
div bx
cmp dx,0
jnz lab2
mov ax,cx
mov bx,400
div bx
cmp dx,0
jz lab2
lab1: clc
jmp lab3
lab2: stc
lab3: pop dx
pop cx
pop bx
ret
ifyears endp
code ends
end start
⑼ 微機原理與介面技術課程設計之秒錶/時鍾計時器的設計
你也說了 是24小時計時法
那12點肯定是12點啦
樓主是想問24點時候是24點還是0點吧,
很負責的告訴版你,是0點
因為權24進制中,滿24該進到下一位了,剩下應該是0
就像10進制中的滿10進1 10已經進到十位了,個位現在是0啦……
⑽ 求計算機介面技術課程設計:溫度採集及顯示控制
那要看你所要求的溫度范圍了,如果是-20-100度就沒必要使用AD轉換器了。直接使內用數字溫度探頭如:DS1621,DS1620,DS18B20等。如容果需要溫度范圍比較寬就要用到模擬探頭如PT100。用數字溫度探頭簡單思路:AT89C2051+MC14499+DS18B20即可構成溫度採集及4位數碼管顯示。如果需要模擬探頭比較麻煩,要做信號調理電路使PT100隨溫度的變化輸出連續變化的限定電壓。AT89C2051+TLC1549+MC14499+TLC5615+信號調理構成。帶10位DA輸出,但中間細節部分要你自己做了。