明显调用函数出错了,writedata的入参又不是指针,你给一堆的字符串有什么用?
下面入参是数组里面的每一个元素,这个用对了,可是你知道ASCII和十进制数据的区别么?
知道数据3要在1602上显示字符'3'是要加0x30么?
所以你的要这么改writedata( tempbuf[q] + 0x30 );
找不到你自己的原因,给你对的,你永远也不会知道自己为什么出错
看你的这个proteus仿真图可以发现,lcd的数据线上是有数据变化的,说明是有数据进行写入的,而lcd没有显示的话说明你的lcd没有正确地使能,可能是lcd的初始化不对,你可以留下一个邮箱,我把以前做过的发给你