#include <reg51.h>
unsigned char NixieTable[]={0X5B,0X4F};
void delay(unsigned int xms)
{
unsigned char i,j;
while(xms--);
{
i=2;
j=239;
do
{
while(--j);
}while(--i);
}
}
void Nixie(unsigned char Location,Number)
{
switch(Location)
{
case 1 :P3=0XEF;//1110 1111
case 2 :P3=0XDF;//1101 1111
case 3 :P3=0XBF;//1011 1111
case 4 :P3=0X7F;//0111 1111
}
P0=NixieTable[Number];
}
void main()
{
while(1);
{
Nixie(1,2);
Nixie(2,3);
}
请问这个代码应该怎样修改吖
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
无疆76 2024-10-20 16:41关注以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
您的代码中有一些需要改进的地方。以下是我为您修改的代码:
首先,我们需要明确每个函数的职责。从您的代码中,我假设
NixieTable是用于存储显示数字的编码,而Nixie函数是用于控制特定位置的数码管显示特定数字。因此,我会先调整这些函数。另外,delay函数似乎是用来产生延迟的,我会保持它不变。最后,在main函数中,我们需要添加逻辑来周期性地调用这些函数以更新数码管的显示。以下是我为您修改的代码:#include <reg51.h> unsigned char NixieTable[] = {0X5B, 0X4F}; // 假设这是数字编码的数组 void delay(unsigned int xms) // 用于产生延迟的函数 { unsigned char i, j; while (xms--) { i = 2; j = 239; do { while (--j); } while (--i); } } void Nixie(unsigned char location, unsigned char number) // 控制数码管显示的函数 { switch (location) { // 根据位置设置不同的端口值 case 1: P3 = 0XEF; break; // 这里应该每个case后面都有break语句来避免执行其他未匹配到的代码块 case 2: P3 = 0XDF; break; case 3: P3 = 0xBF; break; case 4: P3 = 0X7F; break; default: break; // 添加默认情况来处理未匹配的情况(可选) } P0 = NixieTable[number]; // 设置数码管显示的数字编码 } void main() // 主函数,包含主循环来周期性地更新数码管显示 { while (1) { // 主循环,用于周期性地调用函数更新数码管显示 Nixie(1, 0); // 更新第一个数码管的显示(假设数字编码从0开始)并添加延迟来观察效果 delay(100); // 添加延迟来观察效果,可以根据实际需要调整这个值 Nixie(2, 1); // 更新第二个数码管的显示并添加延迟来观察效果 delay(100); // 同上 // 可以根据需要添加更多的数码管控制代码或其他逻辑操作等... } }注意:在实际应用中,您需要确保硬件接口(如P0和P3端口)与您的硬件连接正确,并且确保数码管驱动电路正确连接和配置。此外,我假设数字编码从
NixieTable的索引为0开始表示数字的第一个编码。如果不是这样,您可能需要相应地调整代码中的索引值。解决 无用评论 打赏 举报