OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » pzcc2010的MCU DIY进程帖(最新流水灯+点阵视频)

共9条 1/1 1 跳转至

pzcc2010的MCU DIY进程帖(最新流水灯+点阵视频)

菜鸟
2011-11-14 11:10:42    评分

STEP1:申请PCB板
报名成功,并已申请PCB板。
2011.11.14  

STEP2:收到PCB板
可能因为在北京的缘故,感觉发货速度还是比较快的。PCB裸板图见2楼。
2011.11.23

STEP3:购买器件
平时上班没时间去电子市场,为节省时间并尽快备齐器件,从淘宝上购买了一套器件。器件详单论坛里已经很多了,就不再列出了。11月25日周五收到器件,准备周六焊接。
2011.11.25

STEP4:焊接
从上午10点开始动手,到下午4点基本焊接结束,中午吃饭15分钟。这一天下来,脖子酸痛了,不过看到自己的劳动成果,还是很开心。焊完后的图见3楼。
2011.11.26(周六)

STEP5:发现问题并解决
问题1:焊接完后上电,发现P1.0对应的LED2微亮。仔细查看原理图和PCB,发现蜂鸣器正负极位置标反了。将蜂鸣器位置重新摆正后,上电,发现蜂鸣器常响且LED2微亮。通过原理图发现LED2的一侧是串联电阻后连接到VCC,另一侧连接P1.0,而P1.0引脚又被共用到另一处,导致Q1器件NPN管导通使蜂鸣器一直响。
我的解决办法:将R1与P1.0间的导线切断,此方法不是最佳方案,但比较简单易行,可以暂时解决上述问题。示意图见4楼。
(如果对以上分析有不同意见,欢迎讨论指正!)
问题2:器件选择
      a.串口接口要选择母头(孔型)的;
      b.四位一体数码管要选择共阴的,因为74HC138位选信号为低电平(active LOW);
      c.电源插座要选择3.5*1.1mm的(外径3.5mm 内径1.1mm),这样插头比较容易匹配。如果选择5.5*2.1mm直流电源座(内芯较粗),需要配相同型号的插头。

STEP6:编写程序
1. 流水灯程序视频演示见5楼。
    视频C程序源文件见6楼。
2. 流水灯+点阵视频演示见7楼。




关键词: pzcc2010     进程     最新     流水     点阵     视频    

菜鸟
2011-12-14 00:06:35    评分
2楼
PCB裸板图正面:



PCB裸板图反面:

菜鸟
2011-12-14 00:15:52    评分
3楼

焊接完成,感觉像模像样的,终于有了自己的一个功能相对齐全的单片机学习板了——从洞洞板走向PCB。如图:


菜鸟
2011-12-14 00:53:40    评分
4楼
蜂鸣器常响且LED2微亮的解决办法,如下图所示:


备注:将R1与P1.0间的导线切断,此方法不是最佳方案,但比较简单易行,可以暂时解决上述问题。

菜鸟
2011-12-14 10:34:57    评分
5楼

菜鸟
2011-12-15 09:12:53    评分
6楼

//流水灯视频C程序源代码:
#include <STC12C5A.H>

#define WATER_LED_NUM  8

void delayms(unsigned int ms)
{
 unsigned int i,j;
 for(i=0;i<ms;i++)
 {
  for(j=0;j<10000;j++);
 }
}

void water_lamp(void)
{
 unsigned char i,j;

 P1 = 0xff;
 delayms(100);

 for(i=0; i<WATER_LED_NUM; i++)   //单亮向右
 {
  P1 = ~(0x01<<i);
  delayms(20);
 } 
 
 for(j=1; j<WATER_LED_NUM; j++)  //单亮向左
 {
  P1 = ~(0x01<<(WATER_LED_NUM-1-j));
  delayms(20);
 } 
 
 for(i=0; i<WATER_LED_NUM; i++)   //双亮向右
 {
  P1 = ~(0x03<<i);
  delayms(10);
 } 
 
 for(j=WATER_LED_NUM-2; j>0; j--)  //双亮向左
 {
  P1 = ~(0x03<<j);
  delayms(10);
 }  

 P1 = 0xff;
 delayms(10);
  
 for(i=0; i<WATER_LED_NUM; i++)   //向右逐个点亮
 {
  P1 &= ~(0x01<<i);
  delayms(10);
 } 
 
 for(i=0; i<WATER_LED_NUM; i++)   //向右逐个熄灭
 {
  P1 |= (0x01<<i);
  delayms(10);
 } 
 
 P1 = 0xff;
 delayms(10);
  
 for(i=0; i<WATER_LED_NUM; i++)   //向左逐个点亮
 {
  P1 &= ~(0x01<<(WATER_LED_NUM-1-i));
  delayms(10);
 } 
 
 for(i=0; i<WATER_LED_NUM; i++)   //向左逐个熄灭
 {
  P1 |= (0x01<<(WATER_LED_NUM-1-i));
  delayms(10);
 }  
  
 for(j=0;j<2;j++)
 {
  for(i=0; i<WATER_LED_NUM; i++)  //双向前移
  {
   P1 = ~(0x01<<i)&~(0x01<<(WATER_LED_NUM-i));
   delayms(20);
  } 
 }

 P1 = 0xff;
 delayms(50); 

 for(i=0; i<WATER_LED_NUM-4; i++)  //双向逐个点亮
 {
  P1 &= ~(0x01<<i)&~(0x01<<(WATER_LED_NUM-1-i));
  delayms(20);
 }

 delayms(50);

 for(j=0;j<4;j++)          //同时闪烁
 {
  P1 ^=0xff;
  delayms(50);
 }
}

int main(void)
{

 while(1)
 {
  water_lamp();
 }
 return 0;
}


菜鸟
2011-12-19 00:12:03    评分
7楼

流水灯+点阵视频演示:


助工
2011-12-19 19:12:39    评分
8楼
不错

菜鸟
2019-12-30 03:43:06    评分
9楼
看看

共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]