저는 24 핀의 공통 양극 2 색 LED 매트릭스를 가지고 있으며, 하나의 마이크로 컨트롤러를 사용하여 이들 중 두 개를 구동하려고합니다. 그래서 Max7219 드라이버를 사용하기로 결정했습니다. 하지만 초보자 인 나는 무엇을해야할지 생각하고 온라인 리소스가 arduino를 중심으로하는 것처럼 보인다. Davide Gironi가 개발 한 library을 찾았습니다. 그러나 그것은 일반적인 음극 매트릭스로 작동하는 것으로 보인다. 그래서 행을 일반적인 양극 구조에 맞춰 행렬로 변경했지만 운이 없었습니다. 해결책을 찾을 위치에 대한 단서를 알려주시겠습니까?Max7219 및 Atmega 16 또는 이와 유사한 마이크로 컨트롤러를 사용하여 2 색 8 * 8 LED를 구동하십시오.
0
A
답변
1
먼저 라이브러리가없는 행과 열을 먼저 밝게 표시하려고합니다. 작동 원리를 잘 이해하면 직접 라이브러리를 작성하거나 사용중인 라이브러리에 저수준 드라이버 펌웨어를 적용 할 수 있습니다. 작업 코드가 있으면 작동 할 때까지 라이브러리를 디버깅 할 수 있습니다.
여기에 몇 가지 의사 코드가 있습니다. 필자는 Atmega 16의 정확한 기능에 익숙하지 않지만 적절한 코드로 지연 및 포트 구성을 대체 할 수 있다고 확신합니다.
#define CLOCK PORT1.0 // Replace PORT1.x with proper port
#define DIN PORT1.1
#define LOAD PORT1.2
#define nCS PORT1.3
void SetupIO()
{
//Set clock as an output
//Set DIN as an output
//Set LOAD as an output
//Set nCS as an output
}
void DoClock()
{
CLOCK = 1;
delay_us(1);
CLOCK = 0;
delay_us(1);
}
void WriteBits(char address, char data)
{
char i;
// Set LOAD and nCS low
LOAD = 0;
nCS = 0;
delay_us(1); // replace all delay functions/macros with proper delay macro
// write address
for(i = 7; i > 0 ; i--)
{
DIN = (address >> i) & 1; // shift data to the proper bit
delay_us(1); // allow signal to settle
DoClock(); // clock the bit into the MAX7219
}
// write data
for(i = 7; i > 0 ; i--)
{
DIN = (data >> i) & 1; // shift data to the proper bit
delay_us(1);
DoClock(); // clock the bit into the MAX7219
}
// Latch the address/data
LOAD = 1;
nCS = 1;
delay_us(1);
LOAD = 0;
nCS = 0;
delay_us(1);
}
void main()
{
SetupPins();
// initialize display
WriteBits(0x0C, 0x01); // Normal operation
WriteBits(0x09, 0x00); // BCD decoder off
WriteBits(0x0A, 0xFF); // Max intensity
WriteBits(0x0B, 0x07); // Scan all digits
//Test display 8, all digits on
WriteBits(0x00, 0xff);
}
관련 문제
- 1. tcp/ip atmega 8 비트 마이크로 컨트롤러를 통한 ftp의 세분화 및 리 어셈블리
- 2. atmega 32 코드를 atmega 16 코드로 변환
- 3. Jquery.Flot 또는 이와 유사한 그래픽으로
- 4. 문자 크기 8 비트 또는 16 비트?
- 5. 인코딩 데이터베이스 utf-8 또는 utf-16
- 6. AES 256 바이트 (8 또는 16) 이외
- 7. CRC32 값을 16 또는 8 비트로 줄이기
- 8. atmega32는 8 비트 또는 16 비트입니까?
- 9. 검사 및 이와 유사한 pyKML
- 10. 어레이 패킹의 효율성 : 8 비트 (바이트) 대 16 비트 요소?
- 11. colorsequence 8 색 이상 gnuplot
- 12. DRY 및 이와 유사한 쿼리
- 13. Windows 8 또는 Windows 8 전문가
- 14. UTF-8/UTF-16 문제
- 15. 변환 8 16 비트 SSE는
- 16. 8 비트 또는 10 비트 디지털 가속도계를 16 비트 마이크로 컨트롤러에 연결할 수 있습니까?
- 17. 8 또는 12 또는 32 16 진수와 일치하는 정규식
- 18. 16 비트 변환의 상대 8 비트 색상
- 19. 16 진수, 2 진수, 8 진수에서 파일 변환
- 20. 16 비트를 8 비트 2 부분으로 나누는 레지스터
- 21. 마이크로 컨트롤러 8 비트, 16 비트, 32 비트를 프로그래밍 할 때의 차이점은 무엇입니까?
- 22. 유니 코드 utf-16/8 엉망으로 pyodbc
- 23. Silverlight에는 SecurityPrincipal 또는 이와 유사한 개념이 있습니까?
- 24. 2 진수에서 8 진수로
- 25. Java 8 Spliterator (또는 유사한) 값이 하나만있는 경우 값을 반환합니다.
- 26. 8 비트 마이크로 프로세서에서 32 비트 및 16 비트 산술을 사용합니다.
- 27. TBB concurrent_hash_map 연산자 [] 또는 이와 유사한 액세스?
- 28. Django 또는 이와 유사한 복합 기본 키
- 29. StopWatch 또는 이와 유사한 벤치 마크 코드
- 30. Windows 8 시작 화면 색 변경
코딩 부분이 Max7219를 제어하는 방법을 이해하는 데 도움이 될만한 자료를 권해주십시오. –
데이터 시트를 읽었습니까? 매우 간단합니다. '직렬 주소 지정 모드'헤더 아래의 지침을 따르십시오. 기본적으로 "do not care"에서 4 비트, 그 다음 4 비트에서 8 databits. 맥박 LOAD 또는/CS 선 및 당신은 끝난다. 이 비트 0000000011111111의 클럭은 첫 번째 디스플레이의 모든 숫자를 밝게해야합니다. – imqqmi
원래의 답변을 일부 유사 코드로 업데이트했습니다. – imqqmi