This is by far the most common display controller hobby projects use. There are literally thousands of projects on various microcontrollers that use it and it is probably right up there as a rite-of-passage as a blinky program. Its a standard 6800 interface which is at least a couple of decades older than I am.
The datasheet(s) can be pretty good considering a lot of LCD controller datasheets are terribly written (think Epson), and gives a fairly clear init routine for both 8-bit mode and 4-bit modes. With that said there are many different datasheets floating about. The first hit I got on google was from sparkfun:
https://www.sparkfun.com/datasheets/LCD/HD44780.pdf Table 11 and Table 12 give the init routines for 8-bit and 4-bit modes respectively, figures 23 and 24 are the flow charts for those too.
Writing your own library for this should be pretty trivial, you just need the init routine, and simple functions like writing text, cursor manipulations, clear screen etc.. I understand not wanting to use other peoples libraries, I often write my own, and for something relatively straightforward like this, it shouldn't take long. But
looking at other peoples code is a good way to learn - if you struggle to understand other peoples code you will struggle to understand your own (unless you have very weird habits which means others will struggle to read your code, which isn't a good thing).