a2570422711
驱动牛犊
驱动牛犊
  • 注册日期2011-08-11
  • 最后登录2012-03-10
  • 粉丝1
  • 关注1
  • 积分18分
  • 威望111点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1498回复:0

成为顶级工程师必读资料(第二章)------顺易捷专业PCB打样陆孟经理推荐

楼主#
更多 发布于:2011-08-27 16:25
1)    无论什么时候我们都要以实际应用的角度去考虑程序的编写。
(2)    无论什么时候都不要让CPU白白浪费等待,尤其是延时(超过1MS)这样的地方。
(3)    设计相应驱动电路时候,应该仔细阅读芯片的数据手册,了解每个引脚的驱动能力,
          以及整个芯片的驱动能力
(4)    最重要的是,如何去释放CPU(参考本章的例子),这是写出合格程序的基础。


1.    深圳顺易捷专业PCB打样:
1:单/双层板:50元/款 数量10PCS;FR-4,板厚0.6~1.6MM,长宽在5*5cm以内,一般交期3-4天;
2:单/双层板:100元/款 数量10PCS;FR-4,板厚0.6~1.6MM,长宽在10*10cm以内,一般交期3-4天;
3:四层板:500元/款 数量10PCS;FR-4,板厚1.0~1.6MM,长宽在10*10cm以内,一般交期5-6天;
4:六层板:1200元/款 数量10PCS;FR-4,板厚1.0~1.6MM,长宽在10*10cm以内,一般交期7~8天;
5:八层板:1800元/款 数量10PCS,FR-4,板厚1.6MM,长宽在10*10CM以内,一般交期7~8天;
以上报价工艺为:FR-4,绿油白字,有铅喷锡工艺,数量为10片内。陆孟经理13662604134  QQ2570422711 业务编号E


附完整程序代码(基于电子工程师之家的单片机开发板)

#include<reg52.h>

sbit LED_SEG  = P1^4;  //数码管段选
sbit LED_DIG  = P1^5;  //数码管位选
sbit LED_CS11 = P1^6;  //led控制位
sbit ir=P1^7;
#define LED P0            //定义LED接口
bit  g_bSystemTime1Ms = 0 ;              // 1MS系统时标
unsigned int  g_u16LedTimeCount = 0 ; //LED计数器
unsigned char g_u8LedState = 0 ;      //LED状态标志, 0表示亮,1表示熄灭

#define LED_ON()      LED = 0x00 ;  //所有LED亮
#define LED_OFF()    LED = 0xff ;  //所有LED熄灭

void Timer0Init(void)
{
    TMOD &= 0xf0 ;
    TMOD |= 0x01 ;      //定时器0工作方式1
    TH0  =    0xfc ;      //定时器初始值
    TL0  =  0x66 ;
    TR0  = 1 ;
    ET0  = 1 ;
}
void LedProcess(void)
{
    if(0 == g_u8LedState)  //如果LED的状态为亮,则点亮LED
    {
        LED_ON() ;
    }
    else                //否则熄灭LED
    {
        LED_OFF() ;
    }
}

void LedStateChange(void)
{
    if(g_bSystemTime1Ms)            //系统1MS时标到
  {
            g_bSystemTime1Ms = 0 ;
            g_u16LedTimeCount++ ;      //LED计数器加一
      if(g_u16LedTimeCount >= 500)  //计数达到500,即500MS到了,改变LED的状态。
      {
      g_u16LedTimeCount = 0 ;
      g_u8LedState  = ! g_u8LedState    ;
          }
    }
}

void main(void)
{
    Timer0Init() ;
    EA = 1 ;
                    LED_CS11 = 1 ; //74HC595输出允许
    LED_SEG = 0 ;  //数码管段选和位选禁止(因为它们和LED共用P0口)
    LED_DIG = 0 ;
    while(1)
    {
          LedProcess() ;
          LedStateChange() ;
    }
}  

void Time0Isr(void) interrupt 1
{
    TH0  =    0xfc ;            //定时器重新赋初值
    TL0  =  0x66 ;
    g_bSystemTime1Ms = 1 ;    //1MS时标标志位置位
}



“从单片机初学者迈向单片机工程师”
PCB打样50元/款起,SYJ(顺易捷)陆孟QQ2570422711
游客

返回顶部