  Due to some practical applications, linear complementary dual (LCD) codes and
self-orthogonal codes have attracted wide attention in recent years. In this
paper, we use simplicial complexes for construction of an infinite family of
binary LCD codes and two infinite families of binary self-orthogonal codes.
Moreover, we explicitly determine the weight distributions of these codes. We
obtain binary LCD codes which have minimum weights two or three, and we also
find some self-orthogonal codes meeting the Griesmer bound. As examples, we
also present some (almost) {\it optimal} binary self-orthogonal codes and LCD
{\it distance optimal} codes.
