历史上的今天
今天是:2025年01月13日(星期一)
2021年01月13日 | MSP430 G2553 硬件IIC OLED 单片机 OLED滚动显示
2021-01-13 来源:eefocus
效果:


总结:
(1)网上没好用的源码;
(2)SSD1306地址是0X3C,7位地址模式。
(3)G2553手册确实介绍得很好。
(4)SSD1306写入命令顺序:开始信号–>等待UCB0TXIFG–>写入0X3C地址–>等待UCB0TXIFG->写入0X00控制字–>等待UCB0TXIFG–>写入命令字符–>等待UCB0TXIFG–>发送停止信号。
(5)SSD1306写入数据顺序:开始信号–>等待UCB0TXIFG–>写入0X3C地址–>等待UCB0TXIFG->写入0X40控制字–>等待UCB0TXIFG–>写入数据字符–>等待UCB0TXIFG–>发送停止信号。
(6)USCI模块支持的东西不一样:
IIC通信的细节:
(1)是7位地址,最后一个表示读写,0是主机写入从机,很多器件地址都得考虑一下了。这和软件IIC有很大的区别。
(2)不需要停止信号,数据线就可以重定义数据流方向。只需要在中途重新发开始信号,然后给的地址最后一位R/W决定一下,数据可以任意方向流动。搞完后还是发停止信号。
(3)IIC操作模式分为四种:从机发送者角色、从机接受者角色、主机发送者角色、主机接受者角色。
下图中,UCA10 Own addressing mode select是决定7位地址还是10位地址。UCMST Master是决定是从机还是主机。UCMODEx给11是IIC模式。
下图中UCTR是决定发送者还是接受者的。
(4)网上程序都使用了中断,好处就是中断处理利于程序健壮性,坏处就是看着有点跳跃,各有各的好吧。
(5)IIC说是能达到100K HZ时钟,但也是做好PCB,走线的线粗+线短,最好加个1K的上拉电阻。我做这个实验用的杜邦线,杜邦线搞的,时钟高了就直接无响应了。
(6)
滚动
http://www.51hei.com/bbs/dpj-180145-1.html
向右滚动显示
#include #include "oled.h" #include "bmp.h" // MSP430G2xx3 // ----------------- //OLED | | --|RST XOUT|- //--- | | | | //SDA|<-|---+---->|P1.7/UCB0SDA | // | | | | // | | | | //SCL|<-+---------|P1.6/UCB0SCL | // | | | int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT OLED_Init(); delay_ms(100); OLED_DrawBMP(0, 0, 128, 64, BMP1); OLED_WrCmd(0x2e);//停止滚动 OLED_WrCmd(0x26);//0x26向右 0x27向左 OLED_WrCmd(0x00);//虚拟字节 OLED_WrCmd(0x00);//起始页 OLED_WrCmd(0x07);//速度 OLED_WrCmd(0x07);//中止页 OLED_WrCmd(0x00);//虚拟字节 OLED_WrCmd(0xff);//虚拟字节 OLED_WrCmd(0x2f);//开启滚动 while (1) { } } (7)控制像素点显示。unsigned char OLED_GRAM[128][8];导致G2553内存瘫痪了,这一点需要使用别的单片机实现,比如MSP430F5529。好像也可以依靠读取SSD1302中的数据,但只有8080接口或者6800接口,详见下面的图,有R/W选择的。
SSD1306通信方式靠硬件选择:
史海拾趣
|
目前设计小组凸显了两个设计方案,主要区别是处理器不同,大家赶快投票参与吧!第一组设计简单,使用了大家熟悉的51单片机第二组主要目标就是在利用SHT21的同时,将东西做得小巧,初定为纽扣电池可用USB充电目前在方案选定阶段,我们随后会公布最小 ...… 查看全部问答> |
|
简介: 做一个2440上LCD的驱动 原来平台上用的LCD型号为:WXCAT35 现在由于出货问题换了一款替代的LCD,型号为:NMA35QV65 问题描述: 看这两款屏的资料发现,硬件引脚定义完全一样,但资料上都介绍需要加一个驱动ICHX8238 , 该驱动IC与处理 ...… 查看全部问答> |
|
以下是打印信息(正常的话,后面应该是RTC的打印信息,但现在到这里就进行不下去了): Windows CE Kernel for ARM (Thumb Enabled) Built on May 6 2008 at 19:46:56 ProcessorType=0b76 Revision=6 OEMAddressTable = 8 ...… 查看全部问答> |
|
linux驱动编程的一下问题,有关驱动与应用通信和驱动内部多进程 一直被几个问题困扰,不得其解,请各位给解答下吧,非常感谢。 1、linux的设备驱动程序内部能否支持多进程?比如fork、execlp之类的系统调用能用吗?如果能用要怎么实现? 2、如何在驱动程序内部执行shell脚本命令? 3、驱动与应用程序的通信方 ...… 查看全部问答> |
|
#include <msp430x14x.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; TACTL = TASSEL0 + TACLR; CCTL0 = CCIE; CCR0 = 16384; ...… 查看全部问答> |
|
已经安装arm-linux-gcc-4.1.2。在对linux-2.6.31进行内核编译时,使用到“make manuconfig”命令,但是出错了!出错提示信息如下: HOSTCC scripts/basic/fixdep/usr/local/libexec/gcc/i686-pc-linux-gnu/4.6.1/cc1:error while loading shared li ...… 查看全部问答> |




