设为首页 加入收藏

TOP

SPI子系统之驱动SSD1306 OLED(十)
2016-12-28 08:16:17 】 浏览:1172
Tags:SPI 子系统 驱动 SSD1306 OLED
ex ratio(1 to 64)
ssd1306_write_byte(0x3f, SSD1306_CMD);//--1/64 duty
ssd1306_write_byte(0xD3, SSD1306_CMD);//-set display offset Shift Mapping RAM Counter (0x00~0x3F)
ssd1306_write_byte(0x00, SSD1306_CMD);//-not offset
ssd1306_write_byte(0xd5, SSD1306_CMD);//--set display clock divide ratio/oscillator frequency
ssd1306_write_byte(0x80, SSD1306_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec
ssd1306_write_byte(0xD9, SSD1306_CMD);//--set pre-charge period
ssd1306_write_byte(0xF1, SSD1306_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
ssd1306_write_byte(0xDA, SSD1306_CMD);//--set com pins hardware configuration
ssd1306_write_byte(0x12, SSD1306_CMD);
ssd1306_write_byte(0xDB, SSD1306_CMD);//--set vcomh
ssd1306_write_byte(0x40, SSD1306_CMD);//Set VCOM Deselect Level
ssd1306_write_byte(0x20, SSD1306_CMD);//-Set Page Addressing Mode (0x00/0x01/0x02)
ssd1306_write_byte(0x02, SSD1306_CMD);//
ssd1306_write_byte(0x8D, SSD1306_CMD);//--set Charge Pump enable/disable
ssd1306_write_byte(0x14, SSD1306_CMD);//--set(0x10) disable
ssd1306_write_byte(0xA4, SSD1306_CMD);// Disable Entire Display On (0xa4/0xa5)
ssd1306_write_byte(0xA6, SSD1306_CMD);// Disable Inverse Display On (0xa6/a7)
ssd1306_write_byte(0xAF, SSD1306_CMD);//--turn on oled panel


ssd1306_display_on();
ssd1306_clear_screen(0xff);

}



static int __devinit spi_ssd1306_probe(struct spi_device *spi)
{
printk("spi_ssd1306_probe\n");
spi_ssd1306_dev = spi;
spi_ssd1306_dev->bits_per_word = 9;


ssd1306_init();
ssd1306_clear_screen(0x00);
ssd1306_display_off();


ssd1306_display_string(18, 0, "hello, Linux!", 16, 1);
ssd1306_display_string(0, 16, "this is a spi driver demo!", 16, 1);
ssd1306_refresh_gram();
ssd1306_display_on();

return 0;
}



static int __devexit spi_ssd1306_remove(struct spi_device *spi)
{
printk("ssd1306_remove\n");

ssd1306_clear_screen(0x00);
ssd1306_display_off();
return 0;
}



static struct spi_driver spi_ssd1306_driver = {
.driver = {
.name = "spi_ssd1306",
.bus = &spi_bus_type,
.owner = THIS_MODULE,
},
.probe = spi_ssd1306_probe,
.remove = __devexit_p(spi_ssd1306_remove),
};



static int spi_ssd1306_init(void)
{
return spi_register_driver(&spi_ssd1306_driver);
}



static void spi_ssd1306_exit(void)
{
spi_unregister_driver(&spi_ssd1306_driver);
}



module_init(spi_ssd1306_init);
module_exit(spi_ssd1306_exit);


MODULE_LICENSE("GPL");


makefile


KERN_DIR = /work/system/linux-2.6.22.6


all:
make -C $(KERN_DIR) M=`pwd` modules


clean:
make -C $(KERN_DIR) M=`pwd` modules clean
rm -rf modules.order


obj-m += spi_platform_dev.o
obj-m += spi_s3c24xx_gpio.o
obj-m += spi_bitbang.o
obj-m += spi_ssd1306_drv.o


实验现象:







首页 上一页 7 8 9 10 下一页 尾页 10/10/10
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Linux网络驱动--snull 下一篇深入理解 Spring 事务原理

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目