Quét LED 7 Đoạn trên STM8S003F3

emeien_13

Sinh viên đại học
#1
Mình đang chưa biết quét LED 7 đoạn trên con này như thế nào. Bạn nào có thể hướng dẫn cho mình với được k?
Như các dòng khác thì 1 port có đủ 8 pin thì mình đã hiểu qua. Nhưng con này các port k có port nào có 8 PIN nên chưa biết quét ntn
Không dùng các IC quét led chuyên dụng nhé.
 

vanthong

Học sinh phổ thông
#2
mình có đoạn code quét led 7 thanh đây... bạn có thể tham khảo
#include"stm8s_conf.h"

#define led1 (GPIO_PIN_2)
#define led2 (GPIO_PIN_3)
#define led3 (GPIO_PIN_1)
#define led4 (GPIO_PIN_5)


unsigned char maled[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned int i,j;
void delay(unsigned int timer)
{
while(timer--);
}
void hien_thi(unsigned char data)
{
GPIO_Write(GPIOC,(maled[data])<<3);
GPIO_Write(GPIOD,((maled[data])>>4));
}
static void CLK_Config(void)
{
CLK_DeInit();
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //f_Master = HSI/1 = 16MHz
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); //f_CPU = f_Master/1 = 16MHz
while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY)!=SET); //wait until HSI ready
}
int main( void )
{
CLK_Config();
GPIO_DeInit(GPIOD);
GPIO_DeInit(GPIOC);
GPIO_DeInit(GPIOA);
GPIO_Init(GPIOD,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_Init(GPIOA,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_Init(GPIOC,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_Init(GPIOB,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_HIGH_FAST);
while(1)
{
for(i=0;i<=9999;i++)
{
for(j=0;j<=100;j++)
{
GPIO_WriteHigh(GPIOA,led1);
GPIO_WriteHigh(GPIOA,led2);
GPIO_WriteHigh(GPIOA,led3);
GPIO_WriteHigh(GPIOB,led4);
GPIO_WriteLow(GPIOA,led1);
hien_thi(i/1000);
delay(1000);
GPIO_WriteHigh(GPIOA,led1);
GPIO_WriteHigh(GPIOA,led2);
GPIO_WriteHigh(GPIOA,led3);
GPIO_WriteHigh(GPIOB,led4);
GPIO_WriteLow(GPIOA,led2);
hien_thi((i%1000)/100);
delay(1000);
GPIO_WriteHigh(GPIOA,led1);
GPIO_WriteHigh(GPIOA,led2);
GPIO_WriteHigh(GPIOA,led3);
GPIO_WriteHigh(GPIOB,led4);
GPIO_WriteLow(GPIOA,led3);
hien_thi(((i%1000)%100)/10);
delay(1000);
GPIO_WriteHigh(GPIOA,led1);
GPIO_WriteHigh(GPIOA,led2);
GPIO_WriteHigh(GPIOA,led3);
GPIO_WriteHigh(GPIOB,led4);
GPIO_WriteLow(GPIOB,led4);
hien_thi(((i%10000)%100)%10);
delay(1000);
}
}
}
}
 

thongtinvtd

Sinh viên đại học
#3
Luồng này cũng lâu rồi nhưng em xin phép tiếp tục vì em có vấn đề chưa làm đc. Dưới đây là sơ đồ nguyên lý cũng như mạch tự làm, em dựa vào code phía trên để nạp vào (em có thay đổi một số chân), mạch nạp tốt, nhưng không chạy theo ý định, các bác có kinh nghiệm có thể giúp em đc không ạ
Schematic Prints.jpg
20160812_115938.jpg
20160812_120107.jpg
 

NgoHungCuong

http://ngohungcuong.com
#4
Luồng này cũng lâu rồi nhưng em xin phép tiếp tục vì em có vấn đề chưa làm đc. Dưới đây là sơ đồ nguyên lý cũng như mạch tự làm, em dựa vào code phía trên để nạp vào (em có thay đổi một số chân), mạch nạp tốt, nhưng không chạy theo ý định, các bác có kinh nghiệm có thể giúp em đc không ạ Xem đính kèm 73789 Xem đính kèm 73790 Xem đính kèm 73791
led bạn quét là loại chung âm hay chung dương? Không có code và bạn cũng ko mô tả rõ lỗi như thế nào? Mạch mắc cần có transistor chứ vđk không đủ dòng để quét trực tiếp.
 

ga_cong

Kỹ sư
#5
chạy theo ý định là ý định gì ? video lúc chạy đâu ? mô tả như bạn ai mà đoán được
 

thongtinvtd

Sinh viên đại học
#6
led bạn quét là loại chung âm hay chung dương? Không có code và bạn cũng ko mô tả rõ lỗi như thế nào? Mạch mắc cần có transistor chứ vđk không đủ dòng để quét trực tiếp.
em dùng luôn code phía trên đấy,em đã nói là thay đổi chân thôi
( nếu các bác ko rõ thì code bạn trên dùng cho led âm chung, PORTA, PORTB làm chân chung, PORTC, PORTD cấp mã led, em đổi chân chung,theo code cũ là
led1 (GPIO_PIN_2) PORTA
led2 (GPIO_PIN_3) PORTA
led3 (GPIO_PIN_1) PORTA
led4 (GPIO_PIN_5) PORTB
em đổi lại như sơ đồ của em
led1 (GPIO_PIN_1) PORTA
led2 (GPIO_PIN_2) PORTA
led3 (GPIO_PIN_3) PORTA
led4 (GPIO_PIN_5) PORTB
mạch này có ý định là đếm từ 0->9999)

khi em nạp thì led không sáng, đo điện áp các chân đều bằng khoảng 1,5V
nhờ các bác giúp em với, em nghĩ có lẽ do em hàn lỗi làm chết IC nên thay một con khác vào mà vẫn vậy, em mua một lúc 10 con luôn, con đầu tiên em dùng với mạch chỉ test GPIO thì ok, khi làm mạch này thì vẫn thấy nạp ok (bằng phần mềm STM8 Tool của anh Hùng Cường)
 

NgoHungCuong

http://ngohungcuong.com
#8
Mạch bạn mắc có mấy chỗ mình thấy thế này. Đầu tiên là không có trở hạn dòng cho các thanh led, cần thêm trở hạn dòng tầm 330-560 ôm x 8 con trở. Thứ 2 là cần có transistor vì 1 chân của stm8 sẽ không cấp đủ dòng cho các con led.
 
Sửa lần cuối:

Quảng cáo Google