完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
/*按下16个矩阵键盘依次在数码管上显示1-16的平方。如按下第一个显示1,
第二个显示4...*/ 要实现的功能就是这个了,程序烧进去之后,却有一点不一样,当按下第五个键,显示24,;第十个键时,显示的是99;12显示的是143; 13显示的是168,这三个比正常小1,其他正常,我用vs测试了POW函数,也没有什么问题。还有一个问题就是,在 前三个键不该显示的部分有一点隐隐,我已经在位锁存前加了P0=0xff;还是有浅浅的影子(段锁存加了0)。程序有点长,希望有人看看。3q //2013 -8-11 #include #include #define uchar unsigned char #define uint unsigned int ***it duan=P2^6; ***it wei=P2^7; uchar code tableduan[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0xff,0x6f }; uint tablewei[]={ 0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f }; uint getx(); void display(uint); void yanshi(uchar z) { uchar a,b; for(a=z;a>0;a--) for(b=110;b>0;b--); } uint temp ,x; uint bai,shi,ge; void main() { while(1) { display(getx()); } } uint getx() { P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { yanshi(7); temp=P3; temp=temp&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xee:x=pow(1,2); break; case 0xde:x=pow(2,2); break; case 0xbe:x=pow(3,2); break; case 0x7e:x=pow(4,2); break; } if(temp!=0xf0) { temp=P3; temp=temp&0xf0; } } } P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { yanshi(7); temp=P3; temp=temp&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xed:x=pow(5,2); break; case 0xdd:x=pow(6,2); break; case 0xbd:x=pow(7,2); break; case 0x7d:x=pow(8,2); break; } if(temp!=0xf0) { temp=P3; temp=temp&0xf0; } } } P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { yanshi(7); temp=P3; temp=temp&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xeb:x=pow(9,2); //平方函数 break; case 0xdb:x=pow(10,2); break; case 0xbb:x=pow(11,2); break; case 0x7b:x=pow(12,2); break; } if(temp!=0xf0) { temp=P3; temp=temp&0xf0; } } } P3=0xf7; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { yanshi(7); temp=P3; temp=temp&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xe7:x=pow(13,2); break; case 0xd7:x=pow(14,2); break; case 0xb7:x=pow(15,2); break; case 0x77:x=pow(16,2); break; } if(temp!=0xf0) { temp=P3; temp=temp&0xf0; } } } return x; } void display(uint x) { bai=x/100; shi=x%100/10; ge=x%10; P0=0xff; wei=1; P0=tablewei[0]; wei=0; P0=0xff; duan=1; P0=tableduan[bai]; duan=0; yanshi(10); P0=0xff; wei=1; P0=tablewei[1]; wei=0; P0=0xff; duan=1; P0=tableduan[shi]; duan=0; yanshi(10); P0=0xff; wei=1; P0=tablewei[2]; wei=0; P0=0xff; duan=1; P0=tableduan[ge]; duan=0; yanshi(10); } |
|
相关推荐
3个回答
|
|
有人帮我看一下吗,万分感谢
|
|
|
|
{:1:}{:1:}{:1:}{:1:}
|
|
|
|
{:1:}
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
82 浏览 0 评论
141 浏览 0 评论
串口发送中断中对发送I/O口定义为GPIO输出,出现发送数据不完整,缺少2个字节,求解答
1862 浏览 3 评论
824 浏览 0 评论
【xG24 Matter开发套件试用体验】10-Bluetooth示例1
972 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10875 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-27 18:15 , Processed in 0.761953 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号