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的MCU DIY进程帖(最新流水灯+点阵视频)
关键词: pzcc2010 进程 最新 流水 点阵 视频
//流水灯视频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;
}
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 |