请大家帮忙一下!按下面的原理图编一段程序,使共阴极8位数码管从左至由依次显示12345678。 拜托拜托!!
为了帮助您解决此问题,我将使用通用阴极的8 位数字管提供示例程序,以从左到右显示数字1 2 3 4 5 6 7 8 在这里,我将使用常见的5 1 微控制器来解释,并假设数字管的位选择线和段选择线已正确连接。首先,需要编写功能来控制数字管的位选择。
位选择线用于控制数字管的显示位置。
例如,位选择行0控制最左边的数字管,而Bit Selection Line 7 控制最右边的数字管。
以下是一个简单的位选择函数示例:voiddigit_select(uint8 _tdigit){switch(digit){case0:p0 = 0x8 0; // BIT选择行0高级休息; case1 :p0 = 0x4 0; //位选择行1 高级断裂; case2 :p0 = 0x2 0; //位选择行2 高级断裂; case3 :p0 = 0x1 0; //位选择行3 高级BR eak; case4 :p0 = 0x08 ; //位选择行4 高级断裂; case5 :p0 = 0x04 ; //位选择行5 高级断裂; case6 :p0 = 0x02 ; //位选择行6 高功率平折; case7 :p0 = 0x01 ; //位选择行7 高级别断裂;默认值:p0 = 0x00; // bit select line 8 高级别断开;}}}}}}}}下一步,写一个函数以显示特定的数字。
我们使用段线选择来控制数字管显示的数字。
以下是一个简单的段选择函数示例:voiddisplay_digit(uint8 _tdigit){switch(digit){case0:p1 = 0x3 f; // //显示数字0 break; case1 :p1 = 0x06 ; //显示数字1 break; case2 :case2 :p1 = p1 = p1 = p1 = p1 = p1 = p1 = p1 = p1 = p1 = p1 = p1 = p1 = p1 = p1 = p1 = p1 = 0x5 b; //显示数字2 break; case3 :p1 = 0x4 f; //显示数字3 break; case4 :p1 = 0x6 6 ; //显示数字4 break; 案例5 :p1 = 0x6 d; //显示数字5 break; case6 :p1 = 0x7 d; //显示数字6 break; 案例7 :p1 = 0x07 ; //显示数字7 break; case8 :p1 = 0x7 f; //显示数字8 break; case9 :p1 = 0x6 f; //显示数字9 break;默认值:p1 = 0x00; //显示空白;}}}最后,写一个主函数,结合上述两个函数,然后从左到右显示1 2 3 4 5 6 7 8 主要函数如下:intmain(){while(1 ){for(uint8 _ti = 0; i <8 ; i ++){digit_select(i); //选择数字管display_digit(i+1 ); //显示 digital delay_ms(5 00); //延迟5 00毫秒}}}}}请注意,在这里,假定P0和P1 是位选择行 和数字管的细分选择线。
根据实际情况,您可能需要调整特定的PIN定义。
跪求单片机实验四位七段数码管显示程序!!!
当您研究MicroController编程程序程序时,数字管屏幕是一个常见的测试计划。使用Vina Electronics ME3 00B微控制器在下面的数字管中显示1 到8 位数字。
是一个演示程序。
该程序接受主动扫描技术,通过计时器0程序来了解数字管操作系统的操作。
该程序从第一个P0和P2 端口开始。
然后将显示代码(0x1 至0x8 至0x8 )存储在dis_buf数组上。
DIS_DIGIT用于控制数字管选项。
DIS_INDEX用于跟踪当前显示的数字索引。
服务计划通过提供服务计划来了解计时器时间的主动扫描,从而受到服务计划的骚扰。
每个中断都在每次都升级了P0和P2 端口的值,并且数字管旋转并显示在相关数字上。
通过用餐操作更新程序。
首先禁用中断服务程序中的所有数字管,然后从dis_buf数组中dis_buf数组从dis_buf数组中dis_buf数组。
然后更新dis_digit,选择下一个数字管。
当dis_index到达8 时,将其重置为0并开始新的扫描。
这样,您就可以了解每个数字四数字数字管的每个数字显示的数字显示。
该程序不适合微控制器测试,但可以定期使用数字管技术。
求单片机控制两个数码管显示0-9程序
在微控制器控制的数字管的编程中,通常有必要实现多个数字管的独立显示。本文主要介绍如何使用外部中断来控制两个数字管的程序以显示0-9 该程序从几个关键变量和功能开始,包括外部中断0和1 的配置,延迟功能以及中断子例程。
使用简单循环实现延迟函数,其中t的值为1 08 第一个中断子例程Int0_Routing()被配置为具有外部中断0的中断服务程序。
当外部中断0发生时,该程序首先将P0设置为0xfe 并点亮LED0。
然后,等待外部中断端口0(P3 ^2 )通过段循环释放以消除抖动。
延迟1 0个单位后,LED0被关闭。
第二个中断subroutine int0_routing()被配置为外部中断1 的中断服务程序。
当外部中断1 发生时,该程序首先将P0设置为0xFD并点亮LED1 然后,等待外部中断端口1 (P3 ^3 )通过一段时间循环释放以消除抖动。
延迟1 0个单位后,LED1 被关闭。
主函数是通过中断主开关,外部中断0和1 开关设置的,而DEAD LOOP可防止程序逃跑。
在整个程序操作中,外部中断0和1 分别触发了LED0和LED1 的显示。
上面的程序实现了通过外部中断数字管的显示切换,从而有效提高了系统的响应速度和效率。
此外,延迟的Dejitter处理使显示器更加稳定和可靠。
在实际应用中,可以根据需要调整延迟时间和显示数字,以满足不同的显示需求。
这样,可以独立显示多个数字试管,从而提供更丰富,更灵活的显示效果。