完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
找了一个74hc595控制两位数码管,发现延时有问题 改却改不好 拿出来请大家帮我改正下面是代码
#include #include ***it DS= P2^1; //串行数据输入,对应595的14脚SER ***it SHCP = P2^0; //移位寄存器时钟输入,对应595的11脚SCK ***it STCP = P2^2; //存储寄存器时钟输入,对应595的12脚RCK unsigned char code duan[]={ 0x3F, //"0" 0x06, //"1" 0x5B, //"2" 0x4F, //"3" 0x66, //"4" 0x6D, //"5" 0x7D, //"6" 0x07, //"7" 0x7F, //"8" 0x6F, //"9" 0x77, //"A" 0x7C, //"B" 0x39, //"C" 0x5E, //"D" 0x79, //"E" 0x71, //"F" 0x76, //"H" 0x38, //"L" 0x37, //"n" 0x3E, //"u" 0x73, //"P" 0x5C, //"o" 0x40, //"-" 0x00, //熄灭 0x00 //自定义 }; //0 1 2 3 4 5 6 7 8 9 unsigned char code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void delay(unsigned int m) { unsigned char i,j; for(i=m;i>0;i--) for(j=114;j>0;j--); } void in(unsigned char Data) { unsigned char i; for(i = 0; i < 8; i++) //循环8次,刚好移完8位 { SHCP = 0; //先将移位寄存器控制引脚置为低 _nop_(); _nop_(); if((Data & 0x80)== 0x80) DS =1; else DS =0; Data <<= 1; //将数据的次高位移到最高位 SHCP = 1; //再置为高,产生移位时钟上升沿,上升沿时数据寄存器的数据移位 } } void out(void) { STCP = 0; //先将存储寄存器引脚置为低 _nop_(); _nop_(); STCP = 1; //再置为高,产生移位时钟上升沿,上升沿时移位寄存器的数据进入数据存储寄存器,更新显示数据。 } void main(void) { unsigned char i; for(i=0;i<9;i++) //有八位数码管,八位依次扫描 { in(wei[i]); //先传位码 in(duan[i]); //再传段码 out(); delay(1000); //延迟时间2ms以内 } }
|
|
相关推荐
1个回答
|
|
回帖奖励 +1 分积分
主函数main 里面加一个while(1);
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
418 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1083 浏览 0 评论
846 浏览 0 评论
886 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
882 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11834 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-1 06:53 , Processed in 0.532128 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号