最新日志

发表于:2008-5-14 10:07:51
标签:地震  

0

地震了

       12号下午在公司上班的时候突然间觉得地板在震动,当时还没有反应过来,只是觉得很奇怪,问了下同事,她说没有呀,我以为是错觉呢,结果马上又有震动传来,公司年龄大的工程师说肯定地震了,组织大家赶紧下楼,走到楼道的时候震动非常厉害,人已经站不稳了,只听见到楼嘎子嘎子,感觉很是恐怖,当时也没脑子里什么想法也没有了,只有顺着人群从楼梯往下跑,跑到楼下心里安静了很多,但是还是晕的厉害,也感到了后怕.想起来老婆去面试了,不知道他那边怎么呀,想打个电话问问,发现没有把手机带下来,后来发现周围带着手机的人也打不出去,信号阻塞了,只见马路上站满了人,很多人都是光着脚跑出来的.

          后来稳定了点,听说有人光顾着自己跑了,竟然把孩子忘在家里,没有带下来,说实话心里很鄙视那家人,竟然忘了带孩子,真是的

          等到了下午5点多电话慢慢可以到痛了,给父母打了个电话,还好,家里虽然也震感强烈,但是还都平安.昨天公司为了安全没有上班,今天到公司看到手机上有很多电话,还有短信,都是问是否平安,这个时候体现了朋友之间的关心,很多平时没有联系的朋友都发短信问候了,其实人与人之间并不是那么冷漠

点击此处查看原文 >>

系统分类: 生活点滴   |    用户分类:    |    来源: 原创

评论(0) | 阅读(43)
发表于:2008-4-16 15:56:27
标签:51  单片机  流水灯  PWM  渐变  

1

EDN51实验板程序之--超级流水灯4

    到这里,这个流水灯的题目就全部完成了,因为最近公司事情比较多,所以就不写流程图这部分了,大家可以自己分析看看,如果有疑问可以给我发邮件,后面可能会写温度传感器或者是RS232应用部分的程序,

 

   在下面的程序里要注意中断部分使用的工作寄存器组,不能使用0,会出错

   

 

/****************************************************************************
*                   (C) Copyright 2008,单片机初学者
*                          All Rights reserved.
* 项 目 名 称 :  EDN51超级流水灯          
* 本 文件名称 :  ledshow3.c  
* 完 成 作 者 :  好心情   QQ:15942526   cat_li8953#qq.com (为了避免垃圾文件,
*        所以把@改成了#,如果要用邮件联系,请自己改一下^_^)
* 当 前 版 本 :  V1.0       
* 完 成 日 期 :  2008年4月7日
* 描       述 : 
*                 此程序实现,8个灯从第一个开始依次渐亮,直到最后一个。再从最
*   后一个起渐暗,直到第一个。如此循环往复。这才是真正的流水灯
*            
* 我 的 博 客 :  http://blog.ednchina.com/cat_li/   
*****************************************************************************/

# include <reg51.h>

/****************************定义一下,方便使用*******************************/

# define led P0     //led接在P0口
# define Ton 40        //基准脉宽0.04ms
# define true 1


code unsigned char stop[3] _at_ 0x3B;   //Mon51用,绝对地址引用

unsigned char LEDflag = 0;    //全局变量,最大255,保存T0中断次数
static unsigned char ledon[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; 

/*****************************************************************************
** 函数名称: timer_init()
** 入口参数:无
** 出口参数:无
** 功能描述: 定时器初始化,T0模式2,8为自动载入
*****************************************************************************/
void timer_init()    //定时器初始化
{
 TMOD = 0x02;    //T0 方式2,8位自动载入
 TH0 =  256 - Ton;   //T0初始值
 TL0 =  256 - Ton;   //重载值
 TR0 = true;     //启动T0
 ET0 = true;     //开T0,T1中断 
 EA = true;     //全局中断允许
}

/*****************************************************************************
** 函数名称: time0_int()
** 入口参数:中断1
** 出口参数:无
** 功能描述: 使用工作组3,使用工作组0的时候会出错,根据反汇编分析,应该是中断和led
** show的函数用了同一组寄存器,导致变量被修改,程序运行混乱
*****************************************************************************/
void time0_int() interrupt 1 using 3  //T0中断函数,中断1,使用工作组3
{
 LEDflag++;      //修改LEDflag
}


/*****************************************************************************
** 函数名称: led_show4()
** 入口参数:无
** 出口参数:无
** 功能描述: 声明临时变量i,j,j用来控制数组ledon的下标,点亮不同的led,i用来控制
**    亮度, 实现led亮度渐变
*****************************************************************************/

led_show4()
{
 unsigned char i = 0,j = 0;  // i初始化

 for(j = 0;j<=7;j++){
 i = 0;       // i初始化 
 while(i!=255)     // 由暗变亮
 {
  if(LEDflag == 0)  // 点亮
  {
  led = ledon[j];
  }
  if(LEDflag == i)  // 熄灭
  {
  led = 0xff;
  }
  if(LEDflag == 255)    //修改变量
  {
   i++;      
  }
 } 
 }
 

 for(j=7;j>=0;j--){
 i = 0;       // i初始化    
 while(i!=255)     // 由亮变暗
 {
  if(LEDflag == 0)  // 熄灭
  {
  led = 0xff;
  }
  if(LEDflag == i)  // 点亮
  {
  led = ledon[j];
  }
  if(LEDflag == 255)  //修改变量
  {
   i++;
  }
 }  
 }  
}

 

void main()
{
 timer_init();
 while(1)
 {
  
  led_show4();
 
 }
}
  

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(1) | 阅读(198)
发表于:2008-4-11 10:14:24
标签:51  单片机  定时器  计数器  

1

51单片机 定时器/计数器使用

呵呵,看来51的博客大赛竞争还挺激烈的,昨晚还排在第10,今早一看竟然到12了,郁闷

这个是以前写的,定时器/技术其使用,博客里贴图太麻烦了,要一个一个上传,上传了还要排版,EDN什么时候改改,或者做个客户端,在电脑上变好了直接上传

pdf  还是一样,希望觉得有用的朋友顶一下

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(2) | 阅读(481)
发表于:2008-4-7 15:06:00
标签:51单片机  流水灯  PWM  渐亮渐暗  

2

EDN51实验板程序之--超级流水灯3

EDN51实验板程序之--超级流水灯3

实现由暗到亮在由亮到暗,PDF档里有完成的程序,流程图,以及说明,喜欢就顶一下,您的支持就是我的动力

pdf

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(3) | 阅读(564)
发表于:2008-3-21 17:25:24
标签:51  单片机  pwm  流水灯  博客大赛  

0

EDN51实验板程序之--超级流水灯2

如果你觉的还不错,请顶一下,好心情在这谢谢各位了--后面有PDF档可以下载icon

 

Led 流水灯

好心情

关键字:51 定时器 流水灯 pwm

这个是在51c51上看到的,觉得不错,转帖过来看看谁有兴趣做,我准备下周下一下看看,呵呵     http://www.51c51.com/bbs/dispbbs.asp?boardID=6&ID=21466&page=1

 要求:1,程序必须调试通过!2 有注释。3 汇编,c不限,4先到先得!

单片机初学者几乎都做的一个实验就是流水灯实验,因为大家都做,所以就觉得很简单,很多人对这个实验几乎不屑。其实要彻底的玩转这个实验也是很不简单的事情,不信看看你能不能应付我下面的实验题:

硬件前提:用51的P1口控制8个LED,1 点亮,0 熄灭。

(1)第1,3,5,7个灯半亮,其余的全亮。

(2)第1个亮1/8,第2个亮2/8,第3个亮3/8,第4个亮4/8,第5个亮5/8,第6个亮6/8,第7个亮7/8,第8个全亮。

(3)来点小难的,所有的灯逐渐从暗到全亮,再由全亮到暗。

(4)最难的:8个灯从第一个开始依次渐亮,直到最后一个。再从最后一个起渐暗,直到第一个。如此循环往复。这才是真正的流水灯

上周做了此题目的第一个问题,现在看看第二个,呵呵,有了第一个的基础,这个就相对简单了,首先我们因为要控制亮度,所以还是要通过PWM来实现,题目可以分成两个部分来实现

  第一个:将亮度分为8灯,从1/8到全亮

  应为要分成8个等级,所以采用单个定时器来控制更方便,T0工作在模式2--8位自动载入,设定是时间为Ton,定义全局变量LEDflag(uchar型,最大255),为了方便我们定义

周期T = Ton * 255,同样根据人眼的视觉效应我们定义100Hz,周期T = 10ms,Ton =0.0392ms,取整Ton = 0.04ms,T0没中断1次,LEDflag+1,最大255再加就又变成0,采用查询法根据LEDflag的值改变led的状态,就可以改变亮度

 第二个:每个灯用不同的亮度

  这个比较简单,只要根据需要让每个led亮的时间不一致就可以了,示意图如下

流程图

主程序

T0中断

源程序(C语言):

/****************************************************************************

*                   (C) Copyright 2008,单片机初学者 

*                          All Rights reserved.

项 目 名 称 :  EDN51超级流水灯           

本 文件名称 :  ledshow2.c   

完 成 作 者 :  好心情   QQ:15942526   cat_li8953#qq.com (为了避免垃圾文件,

  所以把@改成了#,如果要用邮件联系,请自己改一下^_^)

当 前 版 本 :  V1.0        

完 成 日 期 :  2008年3月21日

描       述 :  

*                 此程序实现,流水灯控制第1个亮1/8,第2个亮2/8,第3个亮3/8,

                  第4个亮4/8,第5个亮5/8,第6个亮6/8,第7个亮7/8,第8个全亮

*             

我 的 博 客 :  http://blog.ednchina.com/cat_li/    

*****************************************************************************/

# include 

/****************************定义一下,方便使用*******************************/

# define led P0           //led接在P0口

# define Ton 40             //脉宽0.04ms 

# define true   1

code unsigned char stop[3] _at_ 0x3B;   //Mon51用,绝对地址引用

unsigned char LEDflag = 0;         //全局变量,最大255,保存T0中断次数

/*****************************************************************************

** 函数名称: timer_init()

** 入口参数:无

** 出口参数:无

** 功能描述: 定时器初始化,T0模式2,8为自动载入

*****************************************************************************/

void timer_init()         //定时器初始化

{

  TMOD = 0x02;         //T0 方式2,8位自动载入

  TH0 =  256 - Ton;       //T0初始值

  TL0 =  256 - Ton;       //重载值

  TR0 = true;           //启动T0

  ET0 = true;           //开T0,T1中断  

  EA = true;           //全局中断允许

}

/*****************************************************************************

** 函数名称: time0_int()

** 入口参数:中断1

** 出口参数:无

** 功能描述: 使用工作组0

*****************************************************************************/

void time0_int() interrupt 1 using 0     //T0中断函数,中断1,使用工作组0

{

  LEDflag++;          //修改LEDflag

}

/*****************************************************************************

** 函数名称: led_show2()

** 入口参数:无

** 出口参数:无

** 功能描述: 根据ledflag的值,点亮led,实际led亮度并不是呈线性变化,根据led亮度

**        状况适当调整case后面的值

*****************************************************************************/

led_show2()

{

  switch(LEDflag)

  {

    case 0:                    //  全亮    第8个

    {

      led = 0x00;

      break;

    }

    case 32:             //  7/8    第7个led

    {

      led = 0x80;

      break;

    }

    case 64:             //  6/8    第6个led

    {

      led = 0xc0;

      break;

    }

    case 96:               //  5/8    第5个led

    {

      led = 0xe0;

      break;

    }

    case 128:               //  4/8    第4个led

    {

      led = 0xf0;

      break;

    }

    case 160:             //  3/8    第3个led

    {

      led = 0xf8;

      break;

    }

    case 192:           //  2/8    第2个led

    {

      led = 0xfc;

      break;

    }

    case 224:             //  1/8    第1个led

    {

      led = 0xfe;

      break;

    }

  }

}

void main()

{

  timer_init();

  while(1)

  {

    led_show2();  

  }

}

   

呵呵,图片没插进来,需要的看pdf档吧,嘿嘿pdf

   

    上面 的程序已经实际调试运行通过,有疑问可以和我QQ联系

    欢迎大家提意见,:-)  

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(5) | 阅读(405)
发表于:2008-3-12 16:12:36
标签:单片机  C语言  流水灯  

2