新闻中心

EEPW首页>嵌入式系统>设计应用> 用单片机C语言来实现相思病

用单片机C语言来实现相思病

作者: 时间:2012-08-25 来源:网络 收藏
如果刚开始看到这个题目的时候是不是觉得疑惑呢?"相思病"是什么?"相思病"就是我们平常所说的心病。写这个文章的目的在于启发我们的思想,其实编程思想很简单,就是把我们的想法通过编程语言实现出来。就像我们通过汉语来表达我们的想法一样。只不过汉语是用来表达给人的,而编程语言是用来表达给机器,操作系统,或者说一些网络协议的。因为机器,操作系统他们都不会说人话嘛,他们只会说编程语言。所以你就要通过编程语言来建立和他们之间的联系。个人想法,只供参考哦。

现在我们就用一个实际的例子来描述:如何用编程语言来说明人的想法在机器上的实现。这个例子就是用用来实现"相思病",大家都知道,相思病是一种爱情所引起的病,因为双方的距离或他原因导致的一种思念对方的病。这就是相思病的特性,由这些特性我们能知道什么信息呢?我们要整理出对我们有用的信息,这是很重要的。

因为我们的题目是说用来实现相思病的。所以相思病带给我们的有用信息有:

一、相思病是一个人思念另外一个人的,所以有相思病的思念者(简称"病主")和被思念者两个对象。

二、相思病是有病主自身体内产生的,并且是不断的循环的。

三、所谓心病还需心药医,必须通过"被思念者"给你传达的信息才能抑制病的发作。要想治好的话双方在 一起即可。

四、相思病发作的时候心里是很苦的;

病的特性我们了解了,接下来是一种"自然界思想转化法"的应用(都只是个人的观点),我们把想象成现实中存在的人类,这个人他不会说话,我叫他做什么他就做什么的这样一个人。为什么能这样想象呢?这就要结合单片机的特性和人类的特性,他们之间有很多联系点,善于联系自然。因为一个科技的产生就是一种对自然界的发现,就比如雷达的产生是运用蝙蝠的发声原理。言归正传,单片机和人类有什么相似点呢?单片机内部有定时器/计数器可以在内部产生周期性的行为,而人类大脑的某一位置也会在体内产生某种感觉,比如喜怒哀乐的感觉。单片机有中断系统,中断系统有外部中断和内部中断,定时器/计数器便是根据中断的原理来产生周期性的行为的,它是一种内部中断。而外部中断是外界对单片机的一种刺激,就像人的眼睛可以当做外部中断的接口一样。太阳光照射到你的眼睛,给了你一个中断请求,大脑就会作出相应的处理,比如说闭上眼睛或者拿手挡住阳光。这就是外界对我们人进行刺激之后我们人做出的反映。外部中断产生的时候,单片机也能对中断作出相应的反映。利用这些联系,我们就可以用单片机来描述相思病啦。

下面是编程部分:

一、你要实现什么功能:用单片机来实现"相思病"

二、确定思路。

1、用单片机的定时器/计数器来产生相思病。
2、用外部中断来接受"被思念者"传给你的信息,比如说短信,电话之类的。
3、用LED灯表示生病的状态。
4、用独立按键表示"被思念者"。

下面是用单片机来实现代码部分:

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

#include reg51.h>//用P3^2定义接受"被思念者"的信息的外部中断,这里用独立按键连接sbit illstate_led=P1^2; //定义生病的状态,这里用LED显示,亮表示生病bit startill=0; //定义生病的标志位,1表示生病,0表示好了void Init_Timer0(void) //定时器0初始化{TMOD |= 0x01; //使用模式1,16位定时器 EA=1; //总中断打开ET0=1; //定时器中断打开TR0=1; //定时器开关打开}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天发作一次{k=0;startill=1; //病发作了illstate_led=0; //LED灯亮了}}}}void Init_Ex0(void) //外部中断0初始化{EA=1; //全局中断开EX0=1; //外部中断0开IT0=0; //电平触发}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) //循环用来处理生病的状态{illstate_led=0; //LED灯亮了,生病啦 }}

上面就是用程序来模拟"相思病"啦。



关键词:单片机C语言89C51

评论


相关推荐

技术专区

关闭