新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 用單片機C語言來實現(xiàn)相思病

用單片機C語言來實現(xiàn)相思病

作者: 時間:2012-08-25 來源:網(wǎng)絡(luò) 收藏
如果剛開始看到這個題目的時候是不是覺得疑惑呢?"相思病"是什么?"相思病"就是我們平常所說的心病。寫這個文章的目的在于啟發(fā)我們的思想,其實編程思想很簡單,就是把我們的想法通過編程語言實現(xiàn)出來。就像我們通過漢語來表達我們的想法一樣。只不過漢語是用來表達給人的,而編程語言是用來表達給機器,操作系統(tǒng),或者說一些網(wǎng)絡(luò)協(xié)議的。因為機器,操作系統(tǒng)他們都不會說人話嘛,他們只會說編程語言。所以你就要通過編程語言來建立和他們之間的聯(lián)系。個人想法,只供參考哦。

現(xiàn)在我們就用一個實際的例子來描述:如何用編程語言來說明人的想法在機器上的實現(xiàn)。這個例子就是用用來實現(xiàn)"相思病",大家都知道,相思病是一種愛情所引起的病,因為雙方的距離或他原因?qū)е碌囊环N思念對方的病。這就是相思病的特性,由這些特性我們能知道什么信息呢?我們要整理出對我們有用的信息,這是很重要的。

因為我們的題目是說用來實現(xiàn)相思病的。所以相思病帶給我們的有用信息有:

一、相思病是一個人思念另外一個人的,所以有相思病的思念者(簡稱"病主")和被思念者兩個對象。

二、相思病是有病主自身體內(nèi)產(chǎn)生的,并且是不斷的循環(huán)的。

三、所謂心病還需心藥醫(yī),必須通過"被思念者"給你傳達的信息才能抑制病的發(fā)作。要想治好的話雙方在 一起即可。

四、相思病發(fā)作的時候心里是很苦的;

病的特性我們了解了,接下來是一種"自然界思想轉(zhuǎn)化法"的應(yīng)用(都只是個人的觀點),我們把想象成現(xiàn)實中存在的人類,這個人他不會說話,我叫他做什么他就做什么的這樣一個人。為什么能這樣想象呢?這就要結(jié)合單片機的特性和人類的特性,他們之間有很多聯(lián)系點,善于聯(lián)系自然。因為一個科技的產(chǎn)生就是一種對自然界的發(fā)現(xiàn),就比如雷達的產(chǎn)生是運用蝙蝠的發(fā)聲原理。言歸正傳,單片機和人類有什么相似點呢?單片機內(nèi)部有定時器/計數(shù)器可以在內(nèi)部產(chǎn)生周期性的行為,而人類大腦的某一位置也會在體內(nèi)產(chǎn)生某種感覺,比如喜怒哀樂的感覺。單片機有中斷系統(tǒng),中斷系統(tǒng)有外部中斷和內(nèi)部中斷,定時器/計數(shù)器便是根據(jù)中斷的原理來產(chǎn)生周期性的行為的,它是一種內(nèi)部中斷。而外部中斷是外界對單片機的一種刺激,就像人的眼睛可以當做外部中斷的接口一樣。太陽光照射到你的眼睛,給了你一個中斷請求,大腦就會作出相應(yīng)的處理,比如說閉上眼睛或者拿手擋住陽光。這就是外界對我們?nèi)诉M行刺激之后我們?nèi)俗龀龅姆从场M獠恐袛喈a(chǎn)生的時候,單片機也能對中斷作出相應(yīng)的反映。利用這些聯(lián)系,我們就可以用單片機來描述相思病啦。

下面是編程部分:

一、你要實現(xiàn)什么功能:用單片機來實現(xiàn)"相思病"

二、確定思路。

1、用單片機的定時器/計數(shù)器來產(chǎn)生相思病。
2、用外部中斷來接受"被思念者"傳給你的信息,比如說短信,電話之類的。
3、用LED燈表示生病的狀態(tài)。
4、用獨立按鍵表示"被思念者"。

下面是用單片機來實現(xiàn)代碼部分:

完整代碼下載地址:http://www.51hei.com/f/xxb.rar

#include reg51.h>//用P3^2定義接受"被思念者"的信息的外部中斷,這里用獨立按鍵連接sbit illstate_led=P1^2;  //定義生病的狀態(tài),這里用LED顯示,亮表示生病bit startill=0;   //定義生病的標志位,1表示生病,0表示好了void Init_Timer0(void)  //定時器0初始化{TMOD |= 0x01;   //使用模式1,16位定時器       EA=1;            //總中斷打開ET0=1;           //定時器中斷打開TR0=1;           //定時器開關(guān)打開}void Timer0_isr(void) interrupt 1 //定時器中斷子程序{static unsigned long int i; //用來定時1小時       static unsigned char j; //用來定時1天static unsigned char k; //用來定時15天TH0=(65536-36000)/256; //重新賦值 12M晶振計算,指令周期1us,定時60msTL0=(65536-36000)*256;       i++;if(i==100000)  //定時1小時{i=0;j++;if(j==24)   //定時1天{j=0;k++;if(k==15)  //定時15天,相思病每15天發(fā)作一次{k=0;startill=1;  //病發(fā)作了illstate_led=0; //LED燈亮了}}}}void Init_Ex0(void)  //外部中斷0初始化{EA=1;          //全局中斷開EX0=1;         //外部中斷0開IT0=0;         //電平觸發(fā)}void Ex0_isr(void) interrupt 0 //外部中斷程序,表示藥(短信)來了 {if(startill)   {startill=0;  //病好啦illstate_led=1;  //燈滅啦}}void main(void){illstate_led=1;Init_Timer0();Init_Ex0();while(startill)  //循環(huán)用來處理生病的狀態(tài){illstate_led=0;  //LED燈亮了,生病啦 }}

上面就是用程序來模擬"相思病"啦。



關(guān)鍵詞: 單片機 C語言 89C51

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉