请大家帮忙一下!按下面的原理图编一段程序,使共阴极8位数码管从左至由依次显示12345678。 拜托拜托!!
为了帮助您解决此问题,我将使用通用阴极的8 位数字管提供示例程序,以从左到右显示数字1 2 3 4 5 6 7 8 在这里,我将使用常见的5 1 微控制器来解释,并假设数字管的位选择线和段选择线已正确连接。首先,需要编写功能来控制数字管的位选择。
位选择线用于控制数字管的显示位置。
例如,位选择行0控制最左边的数字管,而Bit Selection Line 7 控制最右边的数字管。
The following is a simple bit selection function example: voiddigit_select(uint8 _tdigit){switch(digit){case0:P0=0x8 0;//Bit selection line 0 high-level break;case1 :P0=0x4 0;//Bit selection line 1 high-level break;case2 :P0=0x2 0;//Bit selection line 2 high-level break;case3 :P0=0x1 0;//Bit selection line 3 high-level br eak;case4 :P0=0x08 ;//Bit select line 4 high-level break;case5 :P0=0x04 ;//Bit select line 5 high-level break;case6 :P0=0x02 ;//Bit select line 6 high-level break;case7 :P0=0x01 ;//Bit select line 7 high-level break;default:P0=0x00;//Bit select line 8 高级断裂;}}接下来,写一个函数以显示特定的数字。
我们使用段线选择来控制数字管显示的数字。
以下是一个简单的段选择函数示例:voiddisplay_digit(uint8 _tdigit){switch(digit){case0:p1 = 0x3 f; //显示数字0 break; case1 :case1 :p1 = 0x06 ; //显示数字1 break; case2 :case2 :p1 = 0x5 b; // case 3 break; case 3 break; 3 break; case4 :p1 = 0x6 6 ; //显示数字4 break;案例5 :p1 = 0x6 d; //显示数字5 break; case6 :p1 = 0x7 d; //显示数字6 break; case7 :p1 = 0x07 ; //显示数字7 break; case8 :case8 :p1 = 0x7 f; // case 9 break; case 9 break; 9 break;默认值:p1 = 0x00; //显示空白;}}最后,写一个主函数,将上述两个函数组合在一起,然后从左到右显示1 2 3 4 5 6 7 8 主要函数如下:intmain(){while(1 ){for(uint8 _ti = 0; i <8 ; i ++) 和数字管的细分选择线。
根据实际情况,您可能需要调整特定的PIN定义。
7SEG-MPX8-CA-BLUE如何使用来连接数码管
7 SEG-MPX8 -CA是阳极数字管的常见显示。左下方的ABCDEFGDP是LED数字管显示的I/O端口,该端口是该段的选择信号。
右下侧的1 2 3 4 5 6 7 8 是位选择的符号,即从左到右,段选择信号和位选择信号连接到微控制器的不同输出门。
例如,段选择信号可以连接到P0端口,位选择信号可以连接到P2 端口,并且常见阳极的围栏的显示代码为:u chacodedsy_code [] = {0xc0.0xf9 .0xf9 .0xa4 ,0xa4 ,0xb0 x9 9 .0x9 9 .0x9 9 .0x9 2 .0x8 2 .0x8 2 .0x8 2 .0x8 0x8 0x8 0x8 0}}。
位选择信号代码为:uchardigits [] = {0x01 .0x02 ,0x04 ,0x08 ,0x1 0.0x2 0.0x4 0.0x8 0}; When the first bit is selected, the segment selection signal performs the view from 0 to 9 . If you want to view the numbers, you need to perform them through the program: #include
这是MCS5 1 微控制器下的程序。
必须将上拉电阻添加到P0端口。
数码管稳定显示12345678,用c语言
让我解释一下:您的电路已经修改。原始电路段中没有当前的极限电阻代码,也没有驾驶电路。
端口P1 真实电路无法驱动。
对于易于绘制电路的绘制,右侧都使用P0和P2 参考电路:参考代码:#include
用VHDL言语编写的在八个数码管上显示12345678的程序
用VHDL语言编写数字管显示程序时,您必须首先导入所需的库。这是一个IEEE库,提供标准的逻辑类型和其他必需的软件包。
具体而言,STD_LOGIC_1 1 6 4 用于定义标准逻辑类型,Numeric_STD用于数字转换,而STD_LOGIC_UNSIGNED用于逻辑操作。
接下来,定义一个名为Display的实体,其中包含八个输出端口D1 至D8 每个都是8 位STD_LOGIC_VECTOR类型。
这些端口用于连接到数字管的细分线选择。
每个都对应一个端口。
操作说明部分设置了每个数字管上显示的数字。
具体而言,D1 表示数字1 ,而D2 表示数字2 D8 为直到显示数字8 每个数字的显示由8 位二进制代码表示。
例如,与D1 相对应的二进制代码“ 1 1 001 1 1 1 ”表示对应于数字1 和D2 的二进制代码“ 1 001 001 0”。
这样,您可以控制数字管以显示各种数字。
在现实世界应用中,这些信号连接到数字管的段线选择,这可以实现数字显示。
值得注意的是,我们使用直接分配将特定的二进制代码分配给每个端口。
这些二进制代码是通过检查数字管的真实表获得的。
真实表定义了显示特定数字时每个数字管都存在的状态。
该程序的总体简单性和效率是由于VHDL的强大表达能力引起的,使您可以直接解释硬件的功能和行为。
这样,复杂的数字管显示功能就可以轻松实现。
编程实现共阳极八个数码管依次显示12345678
该代码表仍然是一个常见的数字管,需要用普通的Yang数字管代替。实际上,使用任何数字管都是一样的。
只要显示数字,就足够了。
为什么您必须将其更改为普通扬? 您不能自己更改程序。
此外,您的仿真图与程序不匹配。
可以减少模拟图,请参见下图,注意数字管的连接方法。
修改后的程序如下; #include