本程序采用查表的方式来控制,所谓的查表的方式是将一些特定的数据,在此是LED展示的变化组合数据事先存在数组中,而在程序中逐一有数组中取出个别的样本数据向LED的输出端口P0送出,便可完成“流水灯”式电路的展示效果,由于展示的样本数据可以随意组合,因此以查表方式做流水灯电路的花样较多,效果很好。 下面的程序执行后8个LED作出4种不同的花样,更多的花样大家可以补充。 #include <REGX51.H> char led1[]={0x7F, 0XBF, 0XDF, 0XEF, 0XF7, 0XFB, 0XFD, 0XFE}; char led2[]={0xFE, 0XFD, 0XFB, 0XF7, 0XEF, 0XDF, 0XBF, 0X7F}; char led3[]={0x7E, 0XBD, 0XDB, 0XE7, 0XE7, 0XDB, 0XBD, 0X7E}; char led4[]={0x7F, 0X3F, 0X1F, 0X0F, 0X07, 0X03, 0X01, 0X00}; /*延时子程序*/ delay(unsigned char t) { unsigned char i,j; for(i=0;i<t;i++) for(j=0;j<100;j++); } /*花样显示子程序*/ showled(char *p) { char i; for (i=0;i<8;i++) { P0=p[ i ] ; /*从数组中取出数据送往P0口*/ delay(250); } } /*主函数*/ main() { P1_6=0; while(1) { showled(led1); showled(led2); showled(led3); showled(led4); } } |
文章评论(0条评论)
登录后参与讨论