打印
[匠人手记]

拉幕式LED显示

[复制链接]
4583|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sjg_mcu|  楼主 | 2009-9-25 23:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//===========================================================
//拉幕式数码显示技术(可用于项目)
//P0段码,P2扫描字
//使用P10-P12,74HC138输出扫描字,P0输出段码
//本程序为原创,数组法使用74HC138
//关键算法是控制循环次数及拉幕实现
//程序员:舒杰刚 2009年9月17日
//=============================================================
//反思:
//检查自已是不是做错了,(没错是不可能的)从别人的角度想
//是不是自负,是不是瞧不起人.不讲合作什么事也干不了.
//反思:某人看我,我看他人,
//不给别人面子,就难沟通.一定要给别人留面子
//争吵是解决不了问题的,只会增加仇恨.
//不公开反对别人意见,激烈的更不可取.
//低调,言多必失,多做少说.
//有礼貌,勤打招呼
//专业无好坏,你不能代表你的专业,更不能看不起别人的专业.
//嘲笑别人对你专业的无知,更不可取.
//忍耐是一门很难的学问
//老板识人多,老板重视的人一定有可用的道理.
//不要背后议论人,好话是到不了他耳朵的.
//不要急下结论,凡事要弄清原委.
//千招会不如一招熟.通才只有在专才的基础上才有意义.
//不要跟别人斗法.
//做事不如做人.(韦小宝有什么本事?),大公司做事,小公司做人
//要有平常心.
//自负的根源是不自信,是想表现自我.
//===========================================================
#include "reg51.h"      //文件包含命令
#define uchar unsigned char  //定义一下方便输入
#define uint unsigned int   //定义一下方便输入
//------------------------------------------------------------
uchar code disp_dm[]={    //定义段码共阴
  0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
//定义扫描字
uchar disp_smz[]={0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff};
//------------------------------------------------------------
uchar dispbuf[8];   //显示缓存
uchar cyc_count;       //循环次数控制
bit run_bz;
//=============================================================
//主函数
//=============================================================
void main(void)
{ static uchar i;
TMOD=0x02;    //定时器工作方式2
TH0=0x06;TL0=0x06;  //定时器赋初值
TR0=1;ET0=1;EA=1;  //R0开始运行,开T0中断,总中断
while(1)
{ //拉幕实现-------------------------------------------------
  if(run_bz==1)
  { run_bz=0;
   for(i=0;i<8;i++){dispbuf[i]=16;}   //作用是消隐
   for(i=0;i!=cyc_count;i++)     //核心语句1
    { dispbuf[i]=cyc_count-i; }   //核心语句2
  }
}
}
//=============================================================
//定时器0中断程序
//=============================================================
void t0() interrupt 1
{
uint t_count;
uchar tmp;
static uchar disp_count;
TH0=0x06;TL0=0x06;  //定时器赋初值
//动态扫描显示------------------------------------------------
tmp=disp_smz[disp_count];    //根据当前的计数值取位值
P1=P1|0x07;        //P1或00000111B相或,将低3位置1
P1=P1&tmp;        //低三位输出扫描字
P0=disp_dm[dispbuf[disp_count]];  //取段码
disp_count++;
if(disp_count>7){disp_count=0;}
//拉幕速度-----------------------------------------------------
  t_count++;        //延时计数器
if(t_count==2000)       //
  { t_count=0; run_bz=1;    //计数器归0,
   cyc_count++;      //循环次数
   if(cyc_count>8){cyc_count=0;}  //等于0有全黑效果,等于1时,最低位常在
  }
}

51_lm_led8.rar

9.06 KB

相关帖子

沙发
爱学小生| | 2009-10-14 18:01 | 只看该作者
先跟踪 以后研究研究

使用特权

评论回复
板凳
openmake| | 2009-10-15 12:45 | 只看该作者
先收下了!

使用特权

评论回复
地板
gshuang1| | 2010-2-23 11:42 | 只看该作者
//=============================================================
//反思:
//检查自已是不是做错了,(没错是不可能的)从别人的角度想
//是不是自负,是不是瞧不起人.不讲合作什么事也干不了.
//反思:某人看我,我看他人,
//不给别人面子,就难沟通.一定要给别人留面子
//争吵是解决不了问题的,只会增加仇恨.
//不公开反对别人意见,激烈的更不可取.
//低调,言多必失,多做少说.
//有礼貌,勤打招呼
//专业无好坏,你不能代表你的专业,更不能看不起别人的专业.
//嘲笑别人对你专业的无知,更不可取.
//忍耐是一门很难的学问
//老板识人多,老板重视的人一定有可用的道理.
//不要背后议论人,好话是到不了他耳朵的.
//不要急下结论,凡事要弄清原委.
//千招会不如一招熟.通才只有在专才的基础上才有意义.
//不要跟别人斗法.
//做事不如做人.(韦小宝有什么本事?),大公司做事,小公司做人
//要有平常心.
//自负的根源是不自信,是想表现自我.
------------------------------------------------------------------------------------------------------
楼主,写段小儿科的代码干嘛还那么多废话????????? 就一段程序,连个原理图都没有,单片机程序是要根据原理图来编写的,只把程序贴出来,要把程序看明白也要读半天,毫无价值。。。

使用特权

评论回复
5
xie495454009| | 2010-4-11 12:24 | 只看该作者
先跟踪 以后研究研究

使用特权

评论回复
6
ymz000| | 2010-4-24 19:57 | 只看该作者
呵呵 很好

使用特权

评论回复
7
chenyongand| | 2011-2-21 08:50 | 只看该作者
要是有个视频看看效果就好了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

150

帖子

1

粉丝