Mình mới học led7 avr trên kit atmega16 của minh hà group, hiện mới biết làm đếm tăng giảm và hiển thị nhiều số cùng lúc
Nhưng từ hqa đến h mình muốn cho hiển thị 1 số cố định lên 8 LED7 cùng 1 lúc như là 99990000 hay là 20092858 thì nó lại chỉ hiện đúng 5 bit bên trái ngoài cùng, 3 bit còn lại thì sai
Đây là hình kết nối phần cứng của kit
Đây là code quét của mình
Mọi người liếc qua giúp mình chút vì mình cũng đau đầu vì nó cả chiều
Nhưng từ hqa đến h mình muốn cho hiển thị 1 số cố định lên 8 LED7 cùng 1 lúc như là 99990000 hay là 20092858 thì nó lại chỉ hiện đúng 5 bit bên trái ngoài cùng, 3 bit còn lại thì sai
Đây là hình kết nối phần cứng của kit
Đây là code quét của mình
Mọi người liếc qua giúp mình chút vì mình cũng đau đầu vì nó cả chiều
Code:
#include <mega16.h> #include <delay.h> #include <math.h> #include <stdio.h> #include <stdlib.h> typedef signed char int8_t; typedef signed int int16_t; typedef signed long int int32_t; /* Kieu So Nguyen Khong Dau */ typedef unsigned char uint8_t; typedef unsigned int uint16_t; typedef unsigned long int uint32_t; static uint8_t num[]= { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; uint32_t a,j; int temp,i ; void display(uint32_t number) { j=0x01; for(i=7;i>=0;i--) { a=pow(10,i); temp = (uint32_t)number / a; PORTA = 0x08; //allow number PORTB = num[temp]; PORTA = 0x10; //allow led PORTB = j; delay_us(900); j=j<<1; number = number % a; } }; void main() { PORTA=0x00; DDRA=0xFF; PORTB=0x00; DDRB=0xFF; while (1) { display(99990000); } }
Comment