用 AVR 对七段数进行计数
Counting number on the seven segment with AVR
我已经为我的 At-mega 32 编写了一个程序,以便用两个触觉 s 将数字从 0 增加和减少到 9 以及反转(9 到 0)可以在图片中看到。
但问题是,虽然所有的数字都通过按这些键来显示,但只有数字 4 和 7 显示不正确!?。
我的七段而不是数字 4 演示了您在第一张图片中看到的内容,而数字 7 显示了您在第二张图片中看到的内容。
如果有人可以查看我在此处共享的代码和原理图并帮助我找到问题,我将不胜感激。
非常感谢,
#include <avr/io.h>
#include <util/delay.h>
#include "global.h"
#include <avr/interrupt.h>
uint8_t Codes[] = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xF6};
uint8_t count=0;
//temp=0
void display(uint8_t digit);
void config(void);
ISR(INT0_vect)
{
if(count<9)
{
count++;
display(count);
}
}
ISR(INT1_vect)
{
if(count>0)
{
count--;
display(count);
}
}
int main(void)
{
config();
while(1)
{
}
}
void config(void)
{
DDRA=0xFF;
PORTA=0;
cbi(DDRD,2);
cbi(DDRD,3);
sbi(PORTD,2);
sbi(PORTD,3);
GICR=(1<<INT1) | (1<<INT0);
MCUCR=0; //low level sensitivity
GIFR=(1 << INTF1) | (INTF0);
sei();
}
void display(uint8_t digit)
{
PORTA=Codes[digit];}
您的代码看起来是正确的,我什至检查了 Codes[]
的模式。
模式的每一位都分配给显示器的一个特定部分:
Port bit
Segment
PA7
a
PA6
b
PA5
c
PA4
d
PA3
e
PA2
f
PA1
g
你的接线错误,不幸的是原理图没有显示显示器的引脚名称。好像倒过来了。
我已经为我的 At-mega 32 编写了一个程序,以便用两个触觉 s 将数字从 0 增加和减少到 9 以及反转(9 到 0)可以在图片中看到。
但问题是,虽然所有的数字都通过按这些键来显示,但只有数字 4 和 7 显示不正确!?。
我的七段而不是数字 4 演示了您在第一张图片中看到的内容,而数字 7 显示了您在第二张图片中看到的内容。
如果有人可以查看我在此处共享的代码和原理图并帮助我找到问题,我将不胜感激。
非常感谢,
#include <avr/io.h>
#include <util/delay.h>
#include "global.h"
#include <avr/interrupt.h>
uint8_t Codes[] = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xF6};
uint8_t count=0;
//temp=0
void display(uint8_t digit);
void config(void);
ISR(INT0_vect)
{
if(count<9)
{
count++;
display(count);
}
}
ISR(INT1_vect)
{
if(count>0)
{
count--;
display(count);
}
}
int main(void)
{
config();
while(1)
{
}
}
void config(void)
{
DDRA=0xFF;
PORTA=0;
cbi(DDRD,2);
cbi(DDRD,3);
sbi(PORTD,2);
sbi(PORTD,3);
GICR=(1<<INT1) | (1<<INT0);
MCUCR=0; //low level sensitivity
GIFR=(1 << INTF1) | (INTF0);
sei();
}
void display(uint8_t digit)
{
PORTA=Codes[digit];}
您的代码看起来是正确的,我什至检查了 Codes[]
的模式。
模式的每一位都分配给显示器的一个特定部分:
Port bit | Segment |
---|---|
PA7 | a |
PA6 | b |
PA5 | c |
PA4 | d |
PA3 | e |
PA2 | f |
PA1 | g |
你的接线错误,不幸的是原理图没有显示显示器的引脚名称。好像倒过来了。