用单片机控制八个LED灯实现二进制加法(程序没搞懂,请大神帮忙)

2025-04-28 01:14:41
推荐回答(4个)
回答1:

去掉void delay(unsigned int c) 这句话是不能编译的,因为 delay() 在主函数 main() 里面调用,但是 delay() 的函数实体是在 main() 函数之后的,编译器在编译 main() 函数的时候找不到 delay() 的函数实体,

所以就无法通过编译,解决方法是在文件头“声明” 一下,让编译器知道在本文件中搜索 delay() 这个函数,从而成功调用。

八段LED数码管显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在数码管显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。

LED数码管显示器有两种不一样的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED数码管显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED数码管显示器。

扩展资料:

当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。

小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。

发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。

参考资料来源:百度百科-LED数码管

回答2:

由电路所决定,是低电平发光。

开始,P1 = 0xFF 时,就都不亮。

减一,就亮一个。

回答3:

发 给我 我 看看

回答4:

解释如下:
1. 去掉void delay(unsigned int c) 这句话是不能编译的,因为 delay() 在主函数 main() 里面调用,但是 delay() 的函数实体是在 main() 函数之后的,编译器在编译 main() 函数的时候找不到 delay() 的函数实体,所以就无法通过编译,解决方法是在文件头“声明” 一下,让编译器知道在本文件中搜索 delay() 这个函数,从而成功调用。

2. “P2 = 0xff”,这是一个简单的程序,去掉不影响结果。但是作为编程者,应该养成良好的习惯,在程序开始执行的时候,把变量/参数/配置 做好初始化,不要随意的任由它自己分配一个随机值。假设换另外一种MCU,初始化的时候P2口是低电平,那你的灯就变成全亮了。

3. “P2 -= 0x01” 这句要联系题目来看,这句可转换成 P2 = P2 - 0x01。题目是用小灯标示二进制数,这一句的作用就是从0xff 开始,按照对应的二进制数点亮小灯。可以设想一下,前面有个for循环,P2的值从0xff开始(全灭)-> 0xfe(P0 口灯亮,其他灭) -> 0xfd(P1口灯亮,其他灭) ... -> 0x01(P0口灯灭,其他全亮),这样用灯来表示二进制数从0加到255 的过程。