完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本人普通二本学校,比较愚钝。 初学51单片机,想结合12864和矩阵键盘来实现一个简单的显示。 结果,遇到了问题,自认为查了不少资料,依然没有找到解决途径。实在无法,前来求助,希望高人赐教。 问题可能比较简单,还请高人花费一些时间指点一下迷津。 在下感激不尽。 问题如下: 本人打算通过按一个键实现两个不同的显示界面。按第一次,显示界面正常。再按第二次的时候,本应该第二次显示的内容一闪而过,紧接着,依然显示的是第一次的界面。多次实验依然如此。不解。 代码如下: 首先,做一下说明,因为代码不完善,也没有那么高效,优美。毕竟小白,请多包涵。谢谢! #include #include #include #define uchar unsigned char #define uint unsigned int #define LCD_data P0 ***it col1=P1^7; //列端口定义 ***it col2=P1^6; ***it col3=P2^0; ***it col4=P2^1; ***it LCD_EN=P3^4; ***it LCD_RS=P3^5; ***it LCD_RW=P3^6; ***it LCD_PSB=P3^7; uchar code dis0[]={"****智能控制****"}; uchar code dis1[]={"当前功能显示区"}; uchar code dis2[]={"当前水温: "}; uchar code dis3[]={"当前水位比: "}; uchar code dis4[]={"按S17 开始上水"}; uchar code dis5[]={"目标水位比: "}; uchar code dis6[]={"按S5 停止上水 "}; uchar code dis7[]={"上水中... "}; uchar code dis8[]={"按S18 开始加热"}; uchar code dis9[]={"目标水温"}; uchar code dis10[]={"按S6 停止加热"}; uchar code dis11[]={"加热中... "}; /*uchar code dis12[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00};//清行*/ void delay1ms(uint); void dekay(uchar); void keyscan(); void write_cmd(uchar cmd); void write_dat(uchar dat); void lcd_pos(uchar X,uchar Y); void lcd_init(); uchar num,i,temp; uint counter,a,counter1,b; void main()//固定界面显示 { delay1ms(10); lcd_init(); lcd_pos(0,0);//临大物联 i=0; while(dis0[i]!=' |