完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
第一种:
void delay(uint x) { uint i,j; for(i=x;i>0;i++) for(j=110;j>0;j++); //还有,这边的j一定要等于110吗? } 第二种: void delay(u16 i) { while(i--); } 我在写下面动态数码管显示实验的时候,使用第二种函数,可以显示0-7,但是使用第一种的时候,只有第一个数码管亮,为什么? /************************************************************************************** * 动态数码管显示实验 * 实现现象:下载程序后数码管从右至左显示0-7。 ***************************************************************************************/ #include "reg52.h" typedef unsigned int u16; typedef unsigned char u8; ***it LSA=P2^2; ***it LSB=P2^3; ***it LSC=P2^4; u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值 void delay(u16 i) { while(i--); } void DigDisplay() { u8 i; for(i=0;i<8;i++) { switch(i) //位选,选择点亮的数码管, { case(0): LSA=0;LSB=0;LSC=0; break;//显示第0位 case(1): LSA=1;LSB=0;LSC=0; break;//显示第1位 case(2): LSA=0;LSB=1;LSC=0; break;//显示第2位 case(3): LSA=1;LSB=1;LSC=0; break;//显示第3位 case(4): LSA=0;LSB=0;LSC=1; break;//显示第4位 case(5): LSA=1;LSB=0;LSC=1; break;//显示第5位 case(6): LSA=0;LSB=1;LSC=1; break;//显示第6位 case(7): LSA=1;LSB=1;LSC=1; break;//显示第7位 } P0=smgduan[i];//发送段码 delay(100); //间隔一段时间扫描 P0=0x00;//消隐 } } void main() { while(1) { DigDisplay(); //数码管显示函数 } } |
|
相关推荐
3个回答
|
|
延时函数本质都一样
|
|
|
|
第一种,你的for应该用 i-- 与 j--
|
|
|
|
第一个是错的
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
180 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
587 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
549 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
548 浏览 0 评论
1051 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11763 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 18:31 , Processed in 0.438786 second(s), Total 44, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号