完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
具体问题就是我在液晶显示中想要加一个按键数值!就是按键一模式选择 按下后可以用按键二,三。来改变数值。在单独的程序完全可用!但是和我的主程序合在一起的时候程序被后半部程序所干扰!具体程序如下!#include
#include #include #include ***it sda=P2^3; ***it scl=P2^4; //乾三连 坤六断 震仰盂 艮覆碗 离中虚 坎中满 兑上缺 巽下断; /************数值改变 按键*************/ ***it Key0=P1^4; ***it Key1=P1^5; ***it Key2=P1^6; unsigned char code table[]=" 00 "; unsigned char code table1[]={'0','1','2','3','4','5','6','7','8','9'}; signed char miao; void write_dat(unsigned char dat) { lcdrs=1; lcdrw=0; P0=dat; delay_ms(1); lcden=1; delay_ms(1); lcden=0; } void write_cmd(unsigned char cmd) { lcdrs=0; lcdrw=0; P0=cmd; delay_ms(1); lcden=1; delay_ms(1); lcden=0; } void lcd_init() { unsigned char num; lcden=0; write_cmd(0x38); //液晶初始化 write_cmd(0x08); write_cmd(0x0c); write_cmd(0x06); write_cmd(0x01); // write_cmd(0x38); // delay_ms(5); // write_cmd(0x38); // delay_ms(5); // write_cmd(0x38); // write_cmd(0x38); // write_cmd(0x08); // write_cmd(0x01); // write_cmd(0x06); // write_cmd(0x0c); // write_cmd(0x80); for(num=0;num<16;num++) { write_dat(table[num]); delay_ms(10); } TMOD=0X01; TH0=(65535-50000)/256; TL0=(65535-50000)%256; EA=1; ET0=1; TR0=1; } /******************按键检测******************/ void write_sfm(unsigned char add,unsigned char date) { unsigned char shi,ge; shi=date/10; ge=date%10; write_cmd(0x80+add); write_dat(0x30+shi); write_dat(0x30+ge); } void keyscansj() { unsigned char j; if(Key0==0) //按键一进入选择模式 { delay_ms(3); if(Key0==0) { j++; while(!Key0); if(j==1) { TR0=0; write_cmd(0x80+11); write_cmd(0x0f); } if(j==2) //按两次 确认当前数值并退出 { j=0; write_cmd(0x0c); TR0=1; } } } if(j!=0) { if(Key1==0) { delay_ms(3); if(Key1==0) { while(!Key1); if(j==1) { miao++; { if(miao==100) { miao=0; } write_sfm(10,miao); write_cmd(0x80+11); } } } } if(Key2==0) { delay_ms(3); if(Key2==0) { while(!Key2); if(j==1) { miao--; if(miao==-1) { miao=99; } write_sfm(10,miao); write_cmd(0x80+11); } } } } } 这是第一行我所想要显示的! void lcd_disp(long numdis) { unsigned char wan,qian,bai,shi,ge; long kk; write_cmd(0x80+0x40); write_dat(table1[numdis/100]); write_dat(table1[numdis%100/10]); write_dat(table1[numdis%10]); write_cmd(0x80+0x40+6); kk=numdis*360*100/256; wan=kk/10000; qian=kk%10000/1000; bai=kk%10000%1000/100; shi=kk%10000%1000%100/10; ge=kk%10000%1000%100%10; write_dat(0x30+wan); write_dat(0x30+qian); write_dat(0x30+bai); write_dat(0x2e); write_dat(0x30+ge); write_dat(0x30+shi); write_dat(0x30+'V'); } 这个是第二行液晶显示的! 按键按下时出现的位置严重不符合位置!求大神们指点! |
|
相关推荐
2个回答
|
|
|
|
|
|
后半部调用的数据是我用PCF8591 通过I2C采集来的!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12010 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 17:52 , Processed in 0.525663 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号