完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在下愚笨,实在找不出哪里有问题,但是显示就是不正常,编译无错误无警告。另外,想请教一下,在下的中断有问题吗,为什么开了中断就会出现问题呢。还有,绿色标注的部分如果放进大循环里,12864就会一直闪不停啊,这也不是在下想要的结果啊。因程序稍长,但程序很简单,希望您花几分钟看一下,重点部分红色标注,其余都是一些简单的驱动,下面程序的加热功能区也不需要看。 简单说明一下,在下想要实现的功能。在下打算是用一个部分矩阵键盘和12864在模拟显示个简单太阳能控制器。按键不同,来实现不同的功能选择。用杜邦线引脚的原因是,想来模拟一下水位过低的情况,触发自动上水功能,用中断来模拟上水,每5s,增长一个百分点。大体情况就是这样,如有疑问,随时传唤在下。 代码不美且较长,望您能指点迷津,感激不尽! #include #include #include #define uchar unsigned char #define uint unsigned int #define LCD_data P0 #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; #define N 12 ***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; ***it _Speak=P3^2 ; //讯响器控制脚 ***it Low=P3^0; //模拟最低水位触发脚 uchar code dis0[]={"****智能控制****"}; uchar code dis1[]={"当前功能显示区"}; uchar code dis2[]={"当前水温: "}; uchar code dis3[]={"当前水位比: 60"}; uchar code dis4[]={"按S19 开始上水"}; uchar code dis5[]={"目标水位比: "}; uchar code dis6[]={"按 S7 停止上水"}; uchar code dis7[]={"上水中..."}; uchar code dis8[]={"按S20 开始加热"}; uchar code dis9[]={"目标水温:"}; uchar code dis10[]={"按 S8 停止加热"}; uchar code dis11[]={"加热中..."}; uchar code dis12[]={"目标水位比: 00"}; uchar code dis13[]={"当前水位比: "}; void delay1ms(uint); void delay(uchar); void keyscan(); void write_cmd(uchar cmd); void write_dat(uchar dat); void lcd_pos(uchar X,uchar Y); void write_sfm1(uchar add,uchar date); void write_sfm2(uchar add,uchar date); void lcd_init(); bit lcd_busy(); char filter(); uint num=0,i=0; uint counter=0,a=0,counter1=0,b=0; uint water0=0,water1=0,temp=0; uint m=0; uint LOW=0; void main()//固定界面显示 { TH0=(65536-46080)/256; TL0=(65536-46080)%256; //50ms定时 ET0=1; EA=1; lcd_busy(); delay1ms(10); lcd_init(); lcd_pos(0,0);//智能控制 i=0; while(dis0!=' |