完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我这个程序是实现每次按键按一下 数字加一 并在12864上显示 可是每按下一次就会出现加几十减几十的现象 请大神帮我弄解决一下
#include #include #define uint unsigned int #define uchar unsigned char ***it EN=P3^4; ***it RS=P3^5; ***it RW=P3^6; ***it PSB=P3^7; ***it S=P3^0; ***it du=P2^6; ***it we=P2^7; uchar num=0; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=114;y>0;y--); } uchar keyscan() { if(S==0) { delay(10); if(S==0) { while(!S) num++; } } return num; } void write_com(uchar com) { RS=0; RW=0; EN=0; P0=com; delay(5); EN=1; delay(5); EN=0; } void write_date(uchar dat) { RS=1; RW=0; EN=0; P0=dat; delay(5); EN=1; delay(5); EN=0; } void init() { PSB=1; //并口方式 EN=0; RW=0; write_com(0x30); delay(5); write_com(0x0c); delay(5); write_com(0x01); delay(5); } void main() { init(); du=0; we=0; delay(10); while(1) { keyscan(); write_com(0x90+3); write_date(num/100+'0'); write_com(0x90+4); write_date(num%100/10+'0'); write_com(0x90+5); write_date(num%10+'0'); } } |
|
相关推荐
9个回答
|
|
你那个while(!s) num++; 你自己看看,该怎么改你自己去试。。。
最佳答案
|
|
|
|
试试把函数keyscan中的延时调用放在num++之后,再适当设置延时长度
|
|
|
|
肯定的,
|
|
|
|
while(!s);
|
|
|
|
|
|
|
|
标点符号问题……………………
|
|
|
|
改成num+1;试试
|
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
644 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1819 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1262 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
1136 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1357 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12026 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 10:30 , Processed in 0.892553 second(s), Total 90, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号