Random output when reading AVR UART transmission
There is too much error in your baud-rate clock. (1MHz/9600*16) = 6.51. This gets rounded down to 6 so the frequency error is (6.51/6)-1 = 8.5%. 

UART baud rate needs to have better than 5% accuracy to avoid receive errors. Why? The receiver starts timing when the Start bit goes low, then samples the signal in the middle of each bit. If the frequency is wrong then the sampling point will progressively slip relative to the middle of each bit. After 9 bits at 5% error the sample point is just within the correct bit period, but at 8.5% error it is in the previous bit (so the Stop bit is detected as bit 7).   



The UART at the sending end also has some timing error. If the errors are in the same direction at both ends then they will partially cancel and you might get away with >5% error. But if they are in opposite directions then it will be worse. So in order to assure that any two random systems can communicate without error their baud rates must be accurate to better than +-2.5%. Other effects such as timing and sampling jitter, noise and uneven slew rates may reduce the margin even more.  

For an ATmega328 running at 1MHz you can set the U2X0 bit in UCSR0A and make UBRR0 = 12, then you should get 9615.38 Baud which is only 0.2% error (plus any error in system clock frequency).

AVR Baud Rate Calculator