void show(unsigned int dis_val) {
write_com(0x80+0x00); delay(5); write_com(0x01); delay(5); write_dat(table[(dis_val/1000)%10]); delay(1); write_dat(table[(dis_val/100)%10]); delay(1); write_dat(table[(dis_val/10)%10]); delay(1); write_dat(table[dis_val%10]); delay(1);
}
void main() { uint i=1234; DDRD=0xff; DDRB=0x07; write_com(0x38); delay(5); write_com(0x01); delay(5); write_com(0x0c); delay(5); write_com(0x06); delay(5); write_com(0x80+0x00); delay(5); while(1) { show(i); //delay(100); } }
前面对于写指令和写数据的函数定义应该不会错 就不发了 可是当我执行一次show函数的时候 液晶显示没问题 是从第一位开始显示 并且能够保持 后来想用它显示下动态数字 便在前面加了一个while循环 可是之后就不行显示正常了 他没有按我想象的不停地在第一个地址重复显示数字 而是在前一次的显示后面接着显示 然后就出现了滚屏 完全没办法控制 请问这个是什么问题导致的? 是不是因为单片机的处理速度和1602的处理速度差距造成的? 请教下高人了 谢谢~~~
对了 单片机是16的 |