完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
***it CH1=P2^2;//段锁存 ***it CH2=P2^3;//位锁存 unsigned char code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char code weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delay(); main() { unsigned int i; for(i=0;i<8;i++) { P0=weima; CH2=1; CH2=0; P0=duanma; CH1=1; CH1=0; delay(); } delay(); { unsigned long int n; for(n=0;n<2700;n++); } } 我这是一个8位数码管显示程序,在for循环里 我没加延时的时候,8位数码管亮了 但是显示的数字不清晰。我加了延时程序后8位数码管只有第一位显示了0,其他都不亮。这该怎么办,我的目的是让八位数码管清晰的显示0到7. |
|
相关推荐
7 个讨论
|
|
不怎么看得懂啊。 直接说说该怎么改啊? |
|
|
|
|
|
本帖最后由 luyao19 于 2015-9-4 12:32 编辑
我有类似的问题,附上我的程序,本人新手,麻烦请各位指点迷津。 #include #include #define uint unsigned int #define uchar unsigned char ***it digiSegLa = P2^6; //段锁存 ***it digiBitLa = P2^7; //位锁存 uchar code digitron[] = {0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void nbit_digitron(uchar num, uchar index); //在index位数码管处显示数字num void delay(uint z); void main() { while(1){ nbit_digitron(1,1); nbit_digitron(2,2); nbit_digitron(3,3); nbit_digitron(4,4); nbit_digitron(5,5); nbit_digitron(6,6); } } void nbit_digitron(uchar num, uchar index){ P0 = digitron[num]; digiSegLa = 1; digiSegLa = 0; P0 = _crol_(0xfe, index-1); digiBitLa = 1; digiBitLa = 0; delay(4); //延时,这里有问题!!!!!!! //若不加延时,则显示数字错误; //若所加的延时太短,则显示数字不清晰; //若所加延时太长,则数码管扫描有明显的跳跃感; } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } 调了很久,找不到问题在哪里,好纠结。。 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
请问OLED显示屏可以让整帧画面同一时间显示出来吗,而不是行扫?
10214 浏览 1 评论
8265 浏览 3 评论
动手做:使用 LED 灯带第 1 部分 – 制作住宅柜下照明
7079 浏览 3 评论
11231 浏览 13 评论
9097 浏览 2 评论
697浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 14:59 , Processed in 0.768893 second(s), Total 61, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号