導航:首頁 > 操作系統 > 單片機大作業實例

單片機大作業實例

發布時間:2022-08-17 19:07:41

⑴ 大工15春《單片機原理及應用》大作業題目及要求

大工15春《單片機原理及應用》大作業題目及要求,我能整理著做

⑵ 用89C52單片機和霍爾感測器測速,怎樣獲取感測器發出的脈沖數,並在LCD上顯示出來

測一秒鍾或者10秒的脈沖次數,然後進行數據處理比如×每周期的歷程乘以36000,計算出速度,並顯示
也可以聯系我幫祝你來做,
有專門的霍爾感測器

⑶ 單片機大作業

單片機就是一個電腦,只不過是微型的,它內部也用和電腦功能類似的模塊,比如CPU,內存,並行匯流排,還有和硬碟作用相同的存儲器件,不同的是它的這些部件性能都相對我們的家用電腦弱很多,不過價錢也是低的,一般不超過10元即可......用它來做一些控制電器一類不是很復雜的工作足矣了。我們現在用的全自動滾筒洗衣機,排煙罩VCD等等的家電裡面都可以看到它的身影!......它主要是作為控制部分的核心部件。
它是一種在線式實時控制計算機,在線式就是現場控制,需要的是有較強的抗干擾能力,較低的成本,這也是和離線式計算機的(比如家用PC)的主要區別。

單片機是靠程序的,並且可以修改。通過不同的程序實現不同的功能,尤其是特殊的獨特的一些功能,這是別的器件需要費很大力氣才能做到的,有些則是花大力氣也很難做到的。一個不是很復雜的功能要是用美國50年代開發的74系列,或者60年代的CD4000系列這些純硬體來搞定的話,電路一定是一塊大PCB板!但是如果要是用美國70年代成功投放市場的系列單片機,結果就會有天壤之別!只因為單片機的通過你編寫的程序可以實現高智能,高效率,以及高可靠性!

由於單片機對成本是敏感的,所以目前占統治地位的軟體還是最低級匯編語言(近幾年,C語言也開始廣泛被應用),它是除了二進制機器碼以上最低級的語言了,既然這么低級為什麼還要用呢?很多高級的語言已經達到了可視化編程的水平為什麼不用呢?原因很簡單,就是單片機沒有家用計算機那樣的CPU,也沒有像硬碟那樣的海量存儲設備。一個可視化高級語言編寫的小程序裡面即使只有一個按鈕,也會達到幾十K的尺寸!對於家用PC的硬碟來講沒什麼,可是對於單片機來講是不能接受的。單片機在硬體資源方面的利用率必須很高才行,所以匯編雖然原始卻還是在大量使用。一樣的道理,如果把巨型計算機上的操作系統和應用軟體拿到家用PC上來運行,家用PC的也是承受不了的。

目前最常用的單片機為MCS-51,是由美國INTEL公司(生產CPU的英特爾)生產的,89C51是這幾年在我國非常流行的單片機,它是由美國ATMEL公司開發生產的,其內核兼容MCS-51單片機。

⑷ 求:大工13秋《單片機原理及應用》大作業題目及要求(離線作業)

水電費v大閃光燈讓工人房

⑸ 期末大作業 求51單片機控制走馬燈的程序設計然後帶圖

單片機控制的馬上程序,當然根據它的提示來操作就可以了

⑹ 有【單片機】方面的大神嗎【200分懸賞】

經過修改,要求的功能,除了蜂鳴器報警,都能實現。PROTEUS截圖如下。

程序將在我的網路空間給出。

蜂鳴器報警,從你的程序上修改,困難較大,建議改成LED發光報警。

程序如下:

-----------------------------------------------

A_BITEQU20H

B_BITEQU21H

TEMPEQU22H

;----------------------------------------------

ORG0000H

SJMPSTART

ORG0003H

LJMPX0_INT

ORG0050H

;----------------------------------------------

START:

MOVIE,#85H

MOVIP,#00000001B

MOVTEMP,#0

;----------------------------------------------

M_LOOP:

CALLDISPLAY

CALLDELAY2;延時約500ms

CALLDELAY2

JNBF0,NEXT

INCTEMP

MOVA,TEMP

CJNEA,#61,NEXT

CLRP0.1

MOVTEMP,#60

NEXT:

SJMPM_LOOP

;----------------------------------------------

X0_INT:

CPLF0

JBP0.1,X0_END

SETBP0.1

MOVTEMP,#0

X0_END:

JNBP3.2,$

RETI

;----------------------------------------------

DISPLAY:

MOVDPTR,#NUMTAB;指定查表地址.

MOVA,TEMP

MOVB,#10

DIVAB;A/B商=a,余數=b

MOVCA,@A+DPTR;查十位七段碼.

MOVP1,A;送出十位七段碼.

MOVA,B;個位在b

MOVCA,@A+DPTR;查個位七段碼.

MOVP2,A;送出個位七段.

RET

;----------------------------------------------

NUMTAB:

DB0C0H,0F9H,0A4H,0B0H,099H

DB092H,082H,0F8H,080H,090H

;----------------------------------------------

DELAY2:MOVR5,#10

DEL3:MOVR6,#100

DEL4:MOVR7,#248

DJNZR7,$

DJNZR6,DEL4

DJNZR5,DEL3

RET

=======================

⑺ 大作業用AT89C52做一個光強檢測與顯示。

Proteus文件發給我

就可以做了

我做單片機的

⑻ STC89C52單片機數字溫度感測器設計 (溫度感測器是DS18B20) 尋高手幫在C語言程序中加個報警程序。急需。

#include<reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define upzero 1
#define downzero 0
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code seg[]={0xfe,0xfd,0xfb}; //加了PNP的情況下的段選
sbit DQ=P3^3;
sbit led=P1^1;
sbit DIN=P0^7;//小數點
//sbit LE=P3^0;
uint temperature;
uint wen,flag=0;

void delay(uchar k)
{
while(--k);
}

void delay1(uint k)
{
uint i,j;
for(i=0;i<k;i++)
for(j=0;j<121;j++);
}

void time0_init()
{
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
TH0=-30000/256;//定時50毫秒
TL0=-30000%256;
}

/*void init_display()//上電時數碼管的顯示
{

P2=0xff;
delay(3);
} */

void display(uint k)//顯示溫度
{
uchar ge,shi,;
ge=k%10;
shi=k/10%10; //shiwei
=k/100;

if(!flag)//溫度為負數
{
P2=seg[0];
P0=0xbf;//負號 顯示"-"
delay1(4);
P2=0xff;

P2=seg[1];
P0=tab[k/10%10];
delay1(4);
P2=0xff;

P2=seg[2];
P0=tab[k%10];
//DIN=0;
delay1(4);
P2=0xff;

/*P2=seg[3];
P0=tab[0];
delay1(4);
P2=0xff;
*/
}
if(flag)//溫度為正數 由於實際的焊的板子只有三個數碼管 所以,沒加「+」 了。如 45.0度
{
//DIN=1;
P2=0xff;
P2=seg[0];
P0=tab[0];
delay1(4);
P2=0xff;

P2=seg[1];
P0=tab[ge];
DIN=0; // 問題問什麼 加小數點要在P2口上加才能正常顯示。
delay1(4);

DIN=1;
P2=0xff;
P2=seg[2];
P0=tab[shi];
delay1(4);
P2=0xff;

}
}
/*
每次讀寫前對DS18B20進行復位初始化。復位要求主CPU將數據線下拉500μ
,然後釋放,DS18B20收到信號後等待16 - 60us然後60-240us的存在低脈沖
脈沖,主CPU收到此信號後表示復位成功。
*/
initial_ds18b20()//返回為0表示初始化成功
{
uchar j=0;
DQ=1;//這兩條語句用不用不關緊要
delay(4);
DQ=0;
delay(180);//精確延時 730us 檢測匯流排上是否有480-960微秒的低電平出現
delay(200);
DQ=1;
delay(15);//35us 如果有匯流排轉為高電平後等待15-60微秒自動將匯流排電平拉低60-240微秒做出響應存在脈沖
j=DQ;
delay(50);//105us 至少要100秒以上
//return(j);
}

uchar read_byte(void)
{
uchar i=0,dat;
for(i=0;i<8;i++)
{
DQ=0;
delay(5);//15us
DQ=1;
if(DQ)
dat=(dat>>1)|0x80;//讀1
else
dat=((dat>>1))|0x00;//讀0
delay(25);
}
return(dat);
}

void write_byte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
DQ=0;
delay(5);//15us
DQ=dat&0x01;//從低位到高位 一位一位的寫入DS18B20,即控制它的工作方式
delay(10);//寫所需時間
DQ=1;
dat>>=1;
delay(2);
}
delay(1);
}

uchar readwen(void)
{

//float tt;
uint j=200;
uchar templ=0,temph=0;

initial_ds18b20();
write_byte(0xcc);//跳過ROM
write_byte(0x44);
while(--j);
initial_ds18b20();
write_byte(0xcc);
write_byte(0xbe);
templ=read_byte();//低位
temph=read_byte();//高位

if(temph>0x7f)//處理數據 負數
{
temph=~temph;
templ=~templ+1;
flag=downzero;
temph<<=4; //
temph+=(templ&0xf0)>>4;//
wen=temph;//
delay(10);
}
else //正數
{
flag=upzero;
temph<<=4; // 左移四位 留一位符號位 因為高五位為符號位
temph+=(templ&0xf0)>>4;//低八位的高四位 即低八位的整數部分 再與temph相加得到一個新的八位
wen=temph;
delay(10);
}
return(wen);
}

void main()
{
time0_init();
//init_display();
while(1)
{

temperature=readwen();
display(temperature);
TR0=1;

}
}

void time0() interrupt 2 //50毫秒判斷 溫度
{

TR0=0;
TH0=-30000/256;
TL0=-30000%256;

if(temperature>25 || temperature<30)
led=~led;
delay(10);

}
這是我做的 能用。 用LED報警 你也可以添加個聲音報警,溫度都讀出來了,加個報警那是很容易的事,真心懷疑這個程序是不是你自己寫的

閱讀全文

與單片機大作業實例相關的資料

熱點內容
千聊免費課程可以重新加密嗎 瀏覽:507
python能代替php嗎 瀏覽:252
phpexcel樣式 瀏覽:265
安卓手機有沒有什麼軟體可以阻止彈廣告的 瀏覽:306
linux區域網搭建伺服器 瀏覽:690
python編譯器mac 瀏覽:293
windows的doc命令 瀏覽:463
nfc全加密門禁卡 瀏覽:636
身份信息被加密 瀏覽:482
我的鹽城app怎麼添加不了家庭成員 瀏覽:493
php商城並發 瀏覽:348
熊貓繪畫app怎麼做出大佬的筆刷 瀏覽:603
雲存儲伺服器知識 瀏覽:461
伺服器cpu是什麼指令集 瀏覽:591
糖貓t10怎麼安裝app 瀏覽:992
電腦加密u盤怎麼使用 瀏覽:518
linux如何升級php版本升級 瀏覽:841
二級程序員c語言難度 瀏覽:353
批處理編譯qt 瀏覽:67
鐵友app怎麼查詢機票訂單 瀏覽:197