STM8s Discovery Step:3 Drive 7 Segment

June 21, 2010 by 10Logic.com  
Filed under Featured, Microcontroller, STM8s-Discovery



วันนี้มาต่อกันเรื่อง stm8s drive 7′ segment ผมพึ่งทดลองเล่น stm8 ทำเสร็จอันไหนก็จะมาเขียนไว้ในบล็อกแล้วกันครับ เผื่อว่ามันจะเป็นประโยชน์กับผู้ที่กำลังเริ่มต้น ผมค้นการเขียนไม่พบลิงค์ในประเทศไทยเลยส่วนมากจะเป็นประเทศจีน ไม่แน่ใจว่าที่มีขายใน ett ซื้อไปเล่นกันแล้วเป็นอย่างไรกัน ไม่เห็นพบข้อมูลในประเทศไทย อาจจะยังไม่มีใครเอามาลง

สำหรับการเขียน stm8s drive 7′ segment นี้ผมจะ drive แค่ 1 digit นับเลข 0-9 วงจรตามรูปด้านล่างนี้เลยครับ ผมตัดแปะเอาไม่ได้วาดวงจรทั้งหมด

โค้ดโปรแกรม

/* Includes -------------------------------------------------*/
#include "stm8s.h"
#include "inigpio.h"
/* Private defines -------------------------------------------*/
/* Private function prototypes -------------------------------*/
/* Private functions -----------------------------------------*/
void initialGPIO(void){
		// Reset ("de-initialise") GPIO port D.
    GPIO_DeInit(GPIOB);
    // Initialise pin 0 of port D.
    GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST);
		GPIO_Init(GPIOB, GPIO_PIN_1, GPIO_MODE_OUT_PP_LOW_FAST);
		GPIO_Init(GPIOB, GPIO_PIN_2, GPIO_MODE_OUT_PP_LOW_FAST);
		GPIO_Init(GPIOB, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);
		GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);
		GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST);
		GPIO_Init(GPIOB, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST);
}
void Delay(unsigned int i){
 unsigned int j;
 while(i--){
  for(j=0;j<10000;j++);
 }
}
void main(void){

	// Delay for a short while.
	u16 d=0;
	char digithex[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

	initialGPIO();
	// Infinite loop.
	for(;;) {
		if(d>9)
			d=0;

		GPIO_Write(GPIOB,digithex[d]);
		Delay(10);
		d++;
	}
}

ก่อนจบ ผมรู้สึกดีกับกระทู้นี้มาก http://www.electoday.com/bbs/viewthread.php?tid=6399 ทาง http://www.thaieasyelec.com/ ได้จัดอบรมสัมนาเรื่อง sourcing ผมลงทะเบียนไปแล้วเรียบร้อย อย่างไรก็ขอขอบคุณการจัดสัมนาดีๆแบบนี้นะครับ

Source
SegmentTest.rar

ิby @10

เนื้อหาที่เกี่ยวข้องกันด้านล่างนี้ครับ!

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Comments

3 Responses to “STM8s Discovery Step:3 Drive 7 Segment”
  1. 10Logic.com says:

    ขอเปลี่ยนตรงฟังก์ชัน void initialGPIO(void) ไม่ต้องกำหนด GPIO_Init(GPIOB, GPIO_PIN_1, GPIO_MODE_OUT_PP_LOW_FAST); ทุกบิทมี macro ตัวหนึ่งคือ GPIO_PIN_ALL ดังนั้นแก้ใหม่จะได้

    void initialGPIO(void){
    // Reset (“de-initialise”) GPIO port D.
    GPIO_DeInit(GPIOB);
    // Initialise pin 0 of port D.
    GPIO_Init(GPIOB, GPIO_PIN_ALL, GPIO_MODE_OUT_PP_LOW_FAST);
    }

  2. ton says:

    กำลังศึกษาอยู่เหมือนกันครับ ขอบคุณครับ

  3. 10Logic.com says:

    ยินดีครับ ปรึกษาได้ผมกำลังเล่นอยู่ครับ ตอนนี้ก็ได้ uart2 polling, uart2 interrupt, function printf

    กำลังเอาไปต่อ sd card แล้วทำให้รองรับ fat32 อยู่ครับ

แสดงความคิดเห็น

เขียนความคิดของคุณลงในช่องด้านล่างนี้ครับ!...
และถ้าคุณต้องการแสดงรูปภาพเมื่อแสดงความคิดเห็น สมัครใช้บริการที่นี่ >> gravatar!

*