


根据看江协科大51单片机修改的,以上是全部代码(除了delay没有给出),有没有会的解答一下,怎样才能让nixie(1,0),nixie(2,0)能更改数码管的值啊



根据看江协科大51单片机修改的,以上是全部代码(除了delay没有给出),有没有会的解答一下,怎样才能让nixie(1,0),nixie(2,0)能更改数码管的值啊
关注让【道友老李】来帮你解答,本回答参考通义千问大模型编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
如果答案让您满意,请采纳、关注,非常感谢!根据你的描述,你希望修改代码以使 `nixie(1, 0)` 和 `nixie(2, 0)` 能够更改数码管的值。为了更好地帮助你,我将假设你使用的是一个常见的51单片机开发环境,并且你已经有一些基本的数码管显示代码。
nixie 的作用:这个函数可能用于设置数码管的显示内容。你需要确保该函数能够正确地设置数码管的段选和位选。假设你有一个基本的数码管显示代码,以下是一个简单的示例:
#include <reg51.h>
// 定义数码管段选和位选引脚
sbit SEG_A = P0^0;
sbit SEG_B = P0^1;
sbit SEG_C = P0^2;
sbit SEG_D = P0^3;
sbit SEG_E = P0^4;
sbit SEG_F = P0^5;
sbit SEG_G = P0^6;
sbit DIGIT1 = P2^0; // 第一个数码管位选
sbit DIGIT2 = P2^1; // 第二个数码管位选
// 数码管段码表
unsigned char code seg_code[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
// 延时函数
void delay(unsigned int ms) {
unsigned int i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 123; j++);
}
// 显示数码管
void nixie(unsigned char digit, unsigned char value) {
switch (digit) {
case 1:
DIGIT1 = 0; // 选择第一个数码管
DIGIT2 = 1;
P0 = seg_code[value]; // 设置段选
delay(1); // 延时
DIGIT1 = 1; // 关闭第一个数码管
break;
case 2:
DIGIT1 = 1; // 选择第二个数码管
DIGIT2 = 0;
P0 = seg_code[value]; // 设置段选
delay(1); // 延时
DIGIT2 = 1; // 关闭第二个数码管
break;
default:
break;
}
}
void main() {
while (1) {
nixie(1, 0); // 在第一个数码管显示0
nixie(2, 0); // 在第二个数码管显示0
}
}
SEG_A 到 SEG_G 是数码管的段选引脚,DIGIT1 和 DIGIT2 是数码管的位选引脚。seg_code 数组存储了0到9的段码。delay 函数用于产生延时。nixie 函数根据传入的 digit 和 value 参数,选择相应的数码管并显示相应的数字。nixie(1, 0) 将在第一个数码管上显示0。nixie(2, 0) 将在第二个数码管上显示0。nixie 函数以支持更多的数码管。希望这个示例能帮助你解决问题。如果你有更多具体的问题或需要进一步的帮助,请告诉我!