AVR单片机教程——EasyElectronics Library v1.2手册
索引: bit.h delay.h pin.h wave.h pwm.h led.h rgbw.h button.h switch.h segment.h ? 主要更新:
头文件与静态库文件下载:release。 ? 1. bit.h<bit.h>定义了用于位操作的宏函数,适用于8或16位整数。 set_bit(r,b):将r的第b位置为1。 reset_bit(r,courier;">b位置为0。 read_bit(r,b):读取b位,若为1则返回(1 << b),否则返回0。 cond_bit(c,r,b):若c为真,则将b位置为1,否则置为0。 flip(r,?b):将r的第b位翻转。 clock(r,courier;">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个宏之一(推荐前者),将_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_pin:pin_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~9、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两引脚不能用于输出方波。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |