簡易擺動顯字器的設計

名稱:簡易擺動顯字器的設計

功能

一、 電路的工作原理

型號爲MC908GP32的飛思卡爾單片機的最小系統電路圖的繪製(如下圖),根據電路圖焊接MC908GP32的飛思卡爾單片機的最小系統,實現單片機的支撐運行電路。

對MC908GP32的飛思卡爾單片機進行編程,實現16只小燈在間隔一定的時間內不停的閃爍,在擺動電路板的情況下,根據人的視覺暫留,人的肉眼能看到電路板上顯示預定的漢字(我們預定的漢字爲:中國武夷山)。


二、電路原理圖

在protel 99se 中的原理圖如下圖:

三、元件清單:

編號

元件名稱

元件個數

1

型號爲MC908GP32的飛思卡爾單片機

1個

2

電阻

4個

3

電容

7個

4

晶振

1個

5

開關

1個

6

紅色LED發光二極管

16只

7

導線

若干條

四、元器件說明:

型號爲MC908GP32的飛思卡爾單片機一片,用於控制小燈的閃爍。

電阻有:10K的一個,10M的一個,150K的一個,51歐姆的一個

電容有:0.47uf的一個,20pf的一個,15pf的一個,0.1uf的3個,0.01uf的一個,大小爲32.768的晶振一個,開關1個用於實現MC908GP32飛思卡爾單片機的最小系統的工作電路。

紅色LED發光二極管16只,在擺動的情況下用於顯示預定的漢字

實物圖:

實物圖如下:

擺動的時候的效果如下圖:

指導老師:葉希梅 、 蔡闖華

製作人員:傅世興,楊克強,張杭林。

附錄:

實現小燈顯示漢字的部分源碼(用C語言實現):

//[LED.h]小燈驅動頭文件---------------------------------------------

//小燈控制需要用到的頭文件

#ifndef LED_h

#define LED_H

#include "GP32C.h" //映像寄存器名定義

#include "Type.h" //類型別名定義

#include "GeneralFun.h"//延時調用

#define showupD DDRA //方向寄存器

#define showdownD DDRB

#define showup PTA //數據寄存器

#define showdown PTB

#define Width 16

#define TIME 30

//小燈控制相關函數聲明

void LEDinit(void); //定義控制小燈的MCU引腳爲輸出

void ToShow1(const INT8U * LED_buf); //顯示1個字

//void ToShowN(INT8U N, const INT8U * *LED_bufs); //顯示N個字

#endif

//[LED.c]小燈驅動-------------------------------------------------

//本文件包含:

// (1)LEDinit:定義控制小燈的MCU的I/O引腳爲輸出

// (2)LED_L_A:驅動小燈"亮","暗"

//硬件連接:

// (1)本處的小燈是一個發光二極管,由MCU的I/O引腳控制

// (2)控制引腳=高電平時,小燈"暗";反之,小燈"亮"

#include "LED.h" //該頭文件中包含了小燈控制引腳定義和相關函數聲明

//LEDinit:定義控制小燈的MCU引腳爲輸出

//功能:定義控制小燈的MCU引腳爲輸出,並使小燈初始爲暗

//參數:無

//返回:無

void LEDinit(void)

{

//PTA和PTB引腳全爲輸出,且全爲高(暗)

showupD = 0xff;

showdownD = 0xff;

showup = 0xff;

showdown = 0xff;

}

//功能: 顯示一個字符

//參數: LED_buf = 指向字模的指針

//返回:無

void ToShow1(const INT8U * LED_buf)

{

INT16U i;

//開始顯示

for(i = 0; i < Width * 2; ++i)

{

showup = ~LED_buf[i]; //顯示第i列上半部分

showdown = ~LED_buf[++i]; //顯示第i列下半部分

Delay(TIME); //延時

}

//最後關燈

showup = 0xff;

showdown = 0xff;

return;

}

//字模存儲

#include "Type.h" //類型別名定義

#include "stdio.h"

const INT8U LED_buf_1[] =

{//

0x00,0x00,0xF8,0x03,0x08,0x01,0x08,0x01,0x08,0x01,0x08,0x01,0x08,0x01,0xFF,0xFF,

0x08,0x01,0x08,0x01,0x08,0x01,0x08,0x01,0x08,0x01,0xFC,0x03,0x08,0x00,0x00,0x00

};

const INT8U LED_buf_2[] =

{//

0x00,0x00,0xFE,0xFF,0x02,0x40,0x0A,0x50,0x8A,0x50,0x8A,0x50,0x8A,0x50,0xFA,0x5F,

0x8A,0x50,0xCA,0x52,0x8E,0x54,0x0A,0x50,0x02,0x40,0xFF,0xFF,0x02,0x00,0x00,0x00

};

const INT8U LED_buf_3[] =

{//

0x20,0x20,0x20,0x60,0x24,0x3F,0x24,0x20,0x24,0x20,0xE4,0x1F,0x26,0x11,0x24,0x11,

0x20,0x10,0xFF,0x03,0x20,0x1C,0x22,0x20,0x2C,0x40,0x20,0x80,0x20,0xE0,0x00,0x00

};

const INT8U LED_buf_4[] =

{//

0x04,0x80,0x04,0x80,0x94,0x47,0x94,0x44,0x94,0x24,0x94,0x24,0x94,0x14,0xFF,0x0F,

0x94,0x14,0x94,0x24,0x94,0x44,0x94,0x54,0xF4,0xA5,0x06,0x9C,0x04,0x80,0x00,0x00

};

const INT8U LED_buf_5[] =

{//

0x00,0x00,0xF0,0x7F,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0xFF,0x3F,

0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0xF0,0x7F,0x00,0x00,0x00,0x00

};

//字模容器

const INT8U * LED_bufs[] =

{

LED_buf_1, LED_buf_2, LED_buf_3, LED_buf_4, LED_buf_5,

};

INT16U count = sizeof(LED_bufs);

發佈了30 篇原創文章 · 獲贊 4 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章