论坛» 嵌入式开发» MCU

cm33的试用手记:电阻色环趣味程序

助工
2010-12-30 14:13 1楼

利用开发器附带的全色LED,做了一个趣味程序。

色环电阻的色环定义是:棕1、红2、橙3、黄4、绿5、蓝6、紫7、灰8、白9、黑0。

这个程序使得开发器上的LED依次显示出这十种颜色,可以帮助我们的记忆。

我用的配色方案为:

1 棕 brown :R 50%、G 25%、B 25%
2 红 red :R 100%、G 50%、B 0%
3 橙 orange :R 100%、G 50%、B 0%
4 黄 yellow :R 100%、G 100%、B 0%
5 绿 green :R 0%、G 100%、B 0%
6 蓝 blue :R 0%、G 0%、B 100%
7 紫 purple :R 50%、G 25%、B 75%
8 灰 gray :R 50%、G 50%、B 50%
9 白 white :R 100%、G 100%、B 100%
0 黑 black :R 0%、G 0%、B 0%

程序如下:

助工
2010-12-30 14:14 2楼


#include "mb95200.h"

void Init (void)
{
DDR0_P06=1; //red
PDR0_P06=0;
DDR6_P62=1; //green
PDR6_P62=0;
DDR6_P63=1; //blue
PDR6_P63=0;
}

void wplay (unsigned int r, unsigned int g, unsigned int b)
{
unsigned int i;
PDR0_P06=r>4?0:1;
PDR6_P62=g>4?0:1;
PDR6_P63=b>4?0:1;
for(i=0;i<20;i++) asm("\tNOP");
}

void splay (unsigned int r, unsigned int g, unsigned int b)
{
unsigned int x,y,z,w;
x=r+4;
y=g+4;
z=b+4;
w=4;
while(w>0)
{
wplay(x,y,z);
x--; y--; z--;
w--;
}
}

void dplay (unsigned int j)
{
unsigned int i;
PDR0_P06=1;
PDR6_P62=1;
PDR6_P63=1;
for(i=0;i}

void pplay (unsigned int r, unsigned int g, unsigned int b)
{
unsigned int i;
for(i=0;i<100;i++) splay(r,g,b);
dplay(5000);
}

void main (void)
{
Init ();
while(1)
{
pplay(2,1,1); //1 brown
pplay(4,0,0); //2 red
pplay(4,2,0); //3 orange
pplay(4,4,0); //4 yellow
pplay(0,4,0); //5 green
pplay(0,0,4); //6 blue
pplay(2,1,3); //7 purple
pplay(2,2,2); //8 gray
pplay(4,4,4); //9 white
pplay(0,0,0); //0 black
}
}

专家
2010-12-30 15:20 3楼
Yes ,OK!继续哦
助工
2010-12-30 17:08 4楼
谢谢版主的支持和鼓励!

效果不错,挺好看的:)

有兴趣的朋友可以直接执行试试。把程序复制过去就行,很方便的。
院士
2010-12-30 19:55 5楼
继续努力啊~~~~~
助工
2010-12-31 09:03 6楼
多谢管理员!!
助工
2011-01-04 11:08 7楼
百分比要通过试验对照色标确定,这颗LED三基色的光强差异巨大。

再加上AD检测电阻值,然后用“灯语”把色环报出来,也有趣
助工
2011-01-04 16:03 8楼
楼上朋友说得很对,看得出您的水平很高。 有机会多交流,向您学习。 谢谢! 我给您投了一票:)
专家
2011-01-05 08:52 9楼

能够上传照片就更好了。

共9条 1/1 1 跳转至

回复

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