查看: 234|回复: 0

[SAMD21] 【WINC1500-XSTK WiFi】OLED显示白条

[复制链接]

129

主题

4

好友

4795

积分

状元

Rank: 6Rank: 6

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 528 天

    [LV.9]以坛为家II

    发表于 2016-6-26 10:21:35 |显示全部楼层
    接上一篇帖子
    Atmel评估套件专区-【WINC1500-XSTK WiFi】LED0测试-爱板网论坛 - 电子工程师学习交流园地 http://www.eeboard.com/bbs/thread-48015-1-1.html
    使用SSD1306相关例程“SSD1306_EXAMPLE1”,程序如下
    部分管脚定义
    1. #define SSD1306_SPI           SERCOM2

    2.          #define SSD1306_CLOCK_SPEED          1000000

    3.          #define SSD1306_DC_PIN               PIN_PB24
    4.          #define SSD1306_CS_PIN               PIN_PB27
    5.          #define SSD1306_RES_PIN              PIN_PA17
    复制代码
    1. #define SSD1306_CLOCK_SPEED           1000000UL
    2. #define SSD1306_DISPLAY_CONTRAST_MAX  40
    3. #define SSD1306_DISPLAY_CONTRAST_MIN  30
    复制代码
    当复位引脚低电平时,复位OLED
    1. static inline void ssd1306_hard_reset(void)
    2. {
    3.         uint32_t delay_10us = 10 * (system_gclk_gen_get_hz(0)/1000000);
    4.         port_pin_set_output_level(SSD1306_RES_PIN, false);
    5.         delay_cycles(delay_10us); // At lest 10us
    6.         port_pin_set_output_level(SSD1306_RES_PIN, true);
    7.         delay_cycles(delay_10us); // At lest 10us
    8. }
    复制代码
    页地址
    1. static inline void ssd1306_set_page_address(uint8_t address)
    2. {
    3.         // Make sure that the address is 4 bits (only 8 pages)
    4.         address &= 0x0F;
    5.         ssd1306_write_command(SSD1306_CMD_SET_PAGE_START_ADDRESS(address));
    6. }
    复制代码
    行地址
    1. static inline void ssd1306_set_column_address(uint8_t address)
    2. {
    3.         // Make sure the address is 7 bits
    4.         address &= 0x7F;
    5.         ssd1306_write_command(SSD1306_CMD_COL_ADD_SET_MSB(address >> 4));
    6.         ssd1306_write_command(SSD1306_CMD_COL_ADD_SET_LSB(address & 0x0F));
    7. }
    复制代码
    开始显示地址
    1. static inline void ssd1306_set_display_start_line_address(uint8_t address)
    2. {
    3.         // Make sure address is 6 bits
    4.         address &= 0x3F;
    5.         ssd1306_write_command(SSD1306_CMD_SET_DISPLAY_START_LINE(address));
    6. }
    复制代码
    写命令
    1. void ssd1306_write_command(uint8_t command)
    2. {
    3.         spi_select_slave(&ssd1306_master, &ssd1306_slave, true);
    4.         port_pin_set_output_level(SSD1306_DC_PIN, false);
    5.         spi_write_buffer_wait(&ssd1306_master, &command, 1);
    6.         spi_select_slave(&ssd1306_master, &ssd1306_slave, false);
    复制代码
    写数据
    1. void ssd1306_write_data(uint8_t data)
    2. {
    3.         spi_select_slave(&ssd1306_master, &ssd1306_slave, true);
    4.         port_pin_set_output_level(SSD1306_DC_PIN, true);
    5.         spi_write_buffer_wait(&ssd1306_master, &data, 1);
    6.         spi_select_slave(&ssd1306_master, &ssd1306_slave, false);
    7. }
    复制代码
    最终显示图片
    IMG_20160626_090708[1].jpg

    白条横屏,正在调试中
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /5 下一条


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-11 12:07 , Processed in 0.073156 second(s), 11 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部