AVR單片機教程——EasyElectronics Library v1.2手冊

索引:git

bit.h delay.h數組

pin.h wave.h pwm.h函數

led.h rgbw.hui

button.h switch.hspa

segment.hblog

 

主要更新:索引

  • 添加了segment.h的文檔;
  • 新增基於中斷的數碼管驅動,自動完成動態掃描;

頭文件與靜態庫文件下載:release
ip

 

1. bit.h

<bit.h>定義了用於位操做的宏函數,適用於8或16位整數。開發

set_bit(r, b):將r的第b位置爲1。文檔

reset_bit(r, b):將r的第b位置爲0。

read_bit(r, b):讀取r的第b位,若爲1則返回(1 << b),不然返回0。

cond_bit(c, r, b):若c爲真,則將r的第b位置爲1,不然置爲0。

flip(rb):將r的第b位翻轉。

clock(r, b):將r的第b位翻轉2次。

BIT_MASK(n, b):宏函數,內部使用。

 

2. delay.h

<delay.h>定義了延時函數。

void delay(uint16_t _time)延時_time毫秒。

 

3. pin.h

<pin.h>定義了引腳操做的函數。

pin_t:枚舉類型,表示引腳。

PIN_NULL:表示空引腳。全部接受pin_t參數的函數若是接受PIN_NULL參數,則不會執行任何動做,返回void或0。

PIN_?:宏常量,?爲0~9或A~F,表示開發板上引腳。

pin_mode_t:枚舉類型,表示引腳工做模式。

INPUT:表示輸入;

OUTPUT:表示輸出。

void pin_mode(pin_t _pin, pin_mode_t _mode)_pin引腳設爲_mode模式。

3個表示引腳電平的宏:

LOW:宏常量,輸入模式下表示高阻態,輸出模式下表示低電平;

HIGH:宏常量,輸出模式下表示高電平;

PULLUP:宏常量,輸入模式下表示上拉。

void pin_write(pin_t _pin, bool _level)_level應爲bool量或上述3個宏之一(推薦前者),將_pin引腳設爲_level狀態(根據先前調用pin_mode決定模式,默認爲輸入)。

PIN_BIT(p):宏函數,內部使用。

void pin_write_multi(pin_t _pin, uint8_t _mask, uint8_t _value):內部使用。

void pin_flip(pin_t _pin):將_pin引腳電平翻轉。

bool pin_read(pin_t _pin):返回_pin引腳電平是否爲高。

 

4. wave.h

<wave.h>定義了波形輸出相關函數。

WAVE_COUNT:宏常量,波形輸出引腳個數。

wave_t:枚舉類型,表示波形輸出引腳。

WAVE_NULL:表示空引腳,看成爲參數時,函數不進行任何操做;

WAVE_??爲0~3,分別表示一個引腳。

void wave_init():初始化波形輸出(實際上什麼都沒有作,能夠不調用)。

wave_mode_t:枚舉類型,表示波形輸出模式。

WAVE_MODE_OFF:關閉波形輸出;

WAVE_MODE_PWM:PWM輸出;

WAVE_MODE_TONE:方波輸出。

void wave_mode(wave_t _channel, wate_mode_t _mode):將_channel波形輸出通道設置爲_mode模式。

wave_t wave_map(pin_t _pin):內部使用。

 

5. pwm.h

<pwm.h>定義了輸出PWM波形的函數。

pwm_init():初始化PWM(實際上什麼都沒有作,能夠不調用)。

pwm_set(wave_t _channel, uint8_t _value):將_channel通道的佔空比設置爲_value(必須先調用wave_mode)。

 

 

6. led.h

<led.h>定義了板載LED操做的函數。

LED_COUNT:宏常量,LED的個數。

void led_init():初始化LED。

led_t:枚舉類型,表示LED。

LED_RED:表示紅色LED;

LED_YELLOW:表示黃色LED;

LED_GREEN:表示綠色LED;

LED_BLUE:表示藍色LED。

2個表示LED狀態的宏:

LED_OFF:宏常量,表示LED不亮;

LED_ON:宏常量,表示LED亮。

void led_set(led_t _which, bool _on)_on應爲bool量或上述表示LED狀態的宏(推薦前者),將_which設爲_on的狀態。

void led_flip(led_t _which):將_which的狀態翻轉。

void led_on():點亮全部LED。

void led_off():關閉全部LED。

 

7. rgbw.h

<rgbw.h>定義了驅動板載RGBW LED的函數。

RGBW_COUNT:宏常量,RGBW LED的獨立顏色數。

rgbw_t:枚舉類型,表示RGBW的顏色。

RGBW_RED:表示紅色LED;

RGBW_GREEN:表示綠色LED;

RGBW_BLUE:表示藍色LED;

RGBW_WHITE:表示白色LED。

rgbw_pinpin_t類型數組,存儲RGBW LED的顏色對應的引腳。

void rgbw_init(pin_t _r, pin_t _g, pin_t _b, pin_t _w):初始化RGBW LED,4個參數分別爲紅、綠、藍、白LED的引腳。

void rgbw_set(rgbw_t _which, uint8_t _value)_value爲亮度值。對於4~7號引腳,_value爲亮度;對於其餘引腳,_value≥128則LED亮。

RGBW_COLOR(r, g, b, w):宏函數,接受4個0~3的數(取二進制最低兩位),生成一個表示顏色的數。

void rgbw_color(uint8_t _color)_color應爲RGBW_COLOR生成的數,使RGBW LED顯示相應的顏色。

void rgbw_off():關閉RGBW LED。

 

8. button.h

<button.h>定義了讀取板載按鍵狀態的函數。

BUTTON_COUNT:宏常量,按鍵個數。

button_t:枚舉類型,表示按鍵。

BUTTON_??爲0~3,表示按鍵。

pin_t button_pin[BUTTON_COUNT]:存儲按鍵所鏈接的引腳。

void button_init(pin_t _button2, pin_t _button3)_button2_button3分別爲按鍵2和3鏈接的引腳,能夠爲PIN_NULL。初始化按鍵操做。

bool button_down(button_t _which):返回_which按鍵是否被按下(調用時狀態)。

bool button_pressed(button_t _which):返回從上一次對_which調用開始,該按鍵是否被按下(只管兩次調用時的狀態,沒法檢測中間過程)。

 

9. switch.h

<switch.h>定義了讀取板載撥動開關狀態的函數。

SWITCH_COUNT:宏常量,開關個數。

switch_t:枚舉類型,表示開關。

SWITCH_??爲0~3,表示開關。

pin_t switch_pin[SWITCH_COUNT]:存儲開關所鏈接的引腳。

void switch_init(pin_t _switch2, pin_t _switch3)_switch2_switch3分別爲開關2和3鏈接的引腳,能夠爲PIN_NULL。初始化開關操做。

bool switch_status(switch_t _which):返回_which開關的狀態。

bool switch_changed(switch_t _which):返回從上一次對_which調用開始,該開關狀態是否被改變(只管兩次調用時的狀態,沒法檢測中間過程)。

 

10. segment.h

<segment.h>定義了設置數碼管顯示數據與控制顯示的函數。

SEGMENT_DIGIT_COUNT:宏常量,數碼管位數

segment_t:枚舉類型,表示數碼管的位。

  SEGMENT_DIGIT_L:左邊的位

  SEGMENT_DIGIT_R:右邊的位

pin_t segment_pin[SEGMENT_DIGIT_COUNT]:存儲數碼管負極鏈接的引腳。

void segment_init(pin_t _digit0, pin_t _digit1)_digit0_digit1分別爲數碼管左右兩位負極鏈接的引腳,能夠爲PIN_NULL。初始化數碼管操做。

extern const uint8_t segment_digit[16]:0~九、A~F的段碼。

extern const uint8_t segment_dot:小數點的段碼。與segment_digit中的元素位或的結果表示帶小數點的數字段碼。

如下函數只設置顯示數據,不控制顯示,返回值均爲是否設置成功:

bool segment_raw(uint8_t _digit0, uint8_t _digit1):左位顯示段碼_digit0,右位顯示段碼_digit1

bool segment_hex(uint8_t _value):按十六進制顯示_value

bool segment_dec(uint16_t _value):按十進制顯示_value。若是是三位數,將四捨五入保留到十位,顯示百位和十位,顯示右位小數點。

bool segment_frac(uint16_t _int, uint8_t _dec)_int爲整數部分,_dec爲十分位。若是_dec大於等於10,返回false。若是_int是一位數,顯示_int._dec;不然按segment_dec顯示,未顯示出的位會四捨五入。

如下函數根據數據控制顯示:

void segment_display(segment_t _digit):根據當前的數據顯示_digit位,可用於動態掃描。

void segment_off():關閉數碼管,不顯示任何位。

void segment_auto():使用定時器2中斷,自動進行動態掃描。當使用自動動態掃描時,6和7兩引腳不能用於輸出方波。

相關文章
相關標籤/搜索