完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
LED灯的原理图如下
由原理图不难看出,8个led灯是由P0口和P2.3引脚控制的。为点亮发光二极管,首先需要把P0口和P2.3设置为推挽输出,然后将P2.3置“1”(反向后为“0”),使能发光二极管电路; ***it led_sel=P2^3;//定义引脚 void Init() //led灯初始化函数 { P0M1=0x00; //0000 0000 P0M0=0xff; //1111 1111 P2M1=0x00; //0000 0000 P2M0=0x08; //0000 1000 led_sel=1; } 完成初始化以后,我们就可以根据P0口不同的设置来达到不同的效果。 流水灯: #include #include #define uchar unsigned char uchar led; void Delay200ms() //@11.0592MHz { unsigned char i, j, k; _nop_(); _nop_(); i = 9; j = 104; k = 139; do { do { while (--k); } while (--j); } while (--i); } void main() { Init(); //初始化 led=0x01; //0000 0001 while(1) { P0=led; Delay200ms(); if(led==0x80) led=0x01; else led=led<<1; } } 流水灯其实是一个动态点亮的过程,如果点亮得太快,会导致效果不理想,所以使用了延时函数来使视觉效果停留。 而其中的“<<1”是位移操作,向左移一位,如0000 0001操作后就变为0000 0010。当然也存在右移操作“>>”。 呼吸灯: 简单点说,呼吸灯其实就是以不同的亮度点亮led灯,关键就在于如何以不同的亮度来点亮led灯,也就是改变led灯的亮度。简单的方法就是在肉眼观察不到的时间范围内,改变led点亮时间的占比,从而形成不同亮度的视觉效果。 可以用以下代码测试看看这样的方法led灯的亮度是否改变(效果应为L0~3比L4~7暗) #include #include #define uchar unsigned char uchar led; ***it led_sel=P2^3;//定义引脚 void Init() //led灯初始化函数 { P0M1=0x00; //0000 0000 P0M0=0xff; //1111 1111 P2M1=0x00; //0000 0000 P2M0=0x08; //0000 1000 led_sel=1; } void Delay10us() //@11.0592MHz { unsigned char i; _nop_(); i = 25; while (--i); } void Delay70us() //@11.0592MHz { unsigned char i, j; _nop_(); _nop_(); i = 1; j = 189; do { while (--j); } while (--i); } void main() { Init(); led=0xff; while(1) { P0=led; Delay10us(); P0=0xf0; Delay70us(); } } |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9057 浏览 16 评论
4086 浏览 18 评论
1175浏览 3评论
603浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
596浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2333浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 15:35 , Processed in 1.220418 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号