电脑小彩灯 |
![]() |
图一:电路图 |
/*----------------------------*/
/* 并行口输出实验程序 */
/* LED彩灯 (8只) */
/* WZW 2000.5 */
/*----------------------------*/
#include<dos.h>
#include<bios.h>
#include<process.h>
#define outabbress 0x378 /* 接口基地址按机器的配置选用
3BC,378,278 */
void LPTOut(unsigned char outdata,long outtime);
main()
{
unsigned char outdatas[74]= /* 彩灯样式 */
{ /* 读者可自行修改 */
24,36,66,129, /* 数字为0-255 */
129,66,36,24, /* 数字转化为二进制时,数位
上为1时 */
0, /* 点亮相应的二极管,为
0时熄灭 */
1,2,4,8,16,32,64,128,
128,192,224,240,248,252,254,255,
255,254,252,248,240,224,192,128,
0,
1,2,4,8,16,32,64,128,
129,130,132,136,144,160,192,
193,194,196,200,208,224,
112,56,28,14,7,3,1,
0,
85,170,85,170,85,170,
255,
126,60,24,
0};
while(1)
{
int f;
for (f=0;f<73;f++)
{ /* 向地址发送数据
,4000为延迟时间值 */
LPTOut(outdatas[f],4000); /* 时间值根据计算机
的速度调整 */
printf("\n%d",outdatas[f]); /* 在屏幕上显示所
发送的数据,可省去 */
}
}
}
void LPTOut(unsigned char outdata,long outtime)
{
long t;
outportb(outabbress,outdata); /* 调用outporb函数发送数
据 */
for (t=0;t < outtime;t++) /* 延迟 */
{
if (kbhit())
{
outportb(outabbress,0); /* 数据清零,如无此句数
据一直输出 */
exit(1); /* 按任意键数据清零、退出 */
}
}
}
/* outabbress 为接口地址 outdata 为要输出的8位二进
制数 */
/* outtime 为延迟时间值 */
读者朋友可以用一些电子器件扩充这个小彩灯,让它有更多的 花样。当然也可把这个原理和程序用于自己的程序或电子小制作中。
联系客服