完善资料让更多小伙伴认识你,还能领取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:}
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
377 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
536 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
540 浏览 0 评论
950 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1403 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11760 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 08:42 , Processed in 0.757694 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号