暂时先贴上程序:(我再整理整理)

#include "code_tab.h"#define  LCD_SCL   P0_4  // 串行时钟输入
#define  LCD_SDA   P0_5  // 串行数据输入
#define  LCD_RST   P0_6  // 复位输入端
#define  LCD_DC    P0_7  // 数据/命令控制#define XLevelL      0x00
#define XLevelH      0x10
#define XLevel       ((XLevelH&0x0F)*16 + XLevelL)
#define Max_Column   132
#define Max_Row      32
#define Brightness   0xCF
#define X_WIDTH      132
#define Y_WIDTH      32#define   oledWrDat(val)    spiWriteByte(val, 1)
#define   oledWrCmd(val)    spiWriteByte(val, 0)void delay_ms(uint ms)
{unsigned int a;while(ms){a = 1800;while(a--);ms--;}return;
}/** * OLED SSD1306初始化*/
void lcdInit(void)
{  P0DIR = 0xF0;      // 设置相关端口LCD_SCL = 1;LCD_RST = 0;delay_ms(50);LCD_RST = 1;        // 从上电到下面开始初始化要有足够的时间,即等待RC复位完毕   oledWrCmd(0xae);    // turn off oled paneloledWrCmd(0x00);    // set low column addressoledWrCmd(0x10);    // set high column addressoledWrCmd(0x40);    // set start line address  Set Mapping RAM Display Start Line (0x00~0x3F)oledWrCmd(0x81);    // set contrast control registeroledWrCmd(0x8f);    // Set SEG Output Current BrightnessoledWrCmd(0xa1);    // Set SEG/Column Mapping     0xa0左右反置 0xa1正常oledWrCmd(0xc8);    // Set COM/Row Scan Direction   0xc0上下反置 0xc8正常oledWrCmd(0xa6);    // set normal displayoledWrCmd(0xa8);    // set multiplex ratio(1 to 64)oledWrCmd(0x1f);    // 1/32 dutyoledWrCmd(0xd3);    // set display offset   Shift Mapping RAM Counter (0x00~0x3F)oledWrCmd(0x00);    // not offsetoledWrCmd(0xd5);    // set display clock divide ratio/oscillator frequencyoledWrCmd(0x80);    // set divide ratio, Set Clock as 100 Frames/SecoledWrCmd(0xd9);    // set pre-charge periodoledWrCmd(0xf1);    // Set Pre-Charge as 15 Clocks & Discharge as 1 ClockoledWrCmd(0xda);    // set com pins hardware configurationoledWrCmd(0x02);oledWrCmd(0xdb);    // set vcomholedWrCmd(0x40);    // Set VCOM Deselect LeveloledWrCmd(0x20);    // Set Page Addressing Mode (0x00/0x01/0x02)oledWrCmd(0x02);    //oledWrCmd(0x8d);    // set Charge Pump enable/disableoledWrCmd(0x14);    // set(0x10) disableoledWrCmd(0xa4);    // Disable Entire Display On (0xa4/0xa5)oledWrCmd(0xa6);    // Disable Inverse Display On (0xa6/a7) oledWrCmd(0xaf);    // --turn on oled paneloledFill(0x00);     //初始清屏oledSetPos(0,0);
} /*** 串行数据总线传输一字节数据* @param[in] byte:传输的数据* @param[in] sel:0-写命令,1-写数据*/
static void spiWriteByte(uchar byte, uchar sel)
{uchar i;LCD_DC = 0;  if(sel == 1)  LCD_DC = 1;  for (i=0; i<8; i++) {   // 发送一个八位数据 if((byte << i) & 0x80)LCD_SDA  = 1;else LCD_SDA  = 0;LCD_SCL = 0;LCD_SCL = 1;}
}/*** 设置显示坐标*/
void oledSetPos(uchar x, uchar y)
{ x += 4;oledWrCmd(0xb0+y);oledWrCmd(((x&0xf0)>>4)|0x10);oledWrCmd((x&0x0f)|0x01);
} /** * 全屏*/
void oledFill(uchar bmp_dat)
{unsigned char y, x;for (y=0; y<8; y++) {oledWrCmd(0xb0+y);oledWrCmd(0x01);oledWrCmd(0x10);for(x=0; x<X_WIDTH; x++)oledWrDat(bmp_dat);}
}/** * 复位清屏*/
void oledClear(void)
{uchar y, x; for (y=0; y<8; y++) {oledWrCmd(0xb0+y);oledWrCmd(0x01);oledWrCmd(0x10); for(x=0; x<X_WIDTH; x++)oledWrDat(0);}
}/*** 描述:显示6*8一组标准ASCII字符串,显示的坐标(x,y),y为页范围0~7*/
void lcdP6x8Str(uchar x, uchar y, uchar ch[])
{unsigned char c=0, i=0, j=0;  while (ch[j] != '\0') {    c = ch[j]-32;if(x>126) {x=0; y++;}oledSetPos(x,y);    for(i=0; i<6; i++)     oledWrDat(F6x8[c][i]);  x += 6;j++;}
}/*** 描述:显示8*16一组标准ASCII字符串,显示的坐标(x,y),y为页范围0~7*/
void lcdP8x16Str(uchar x, uchar y, uchar ch[])
{unsigned char c=0,i=0,j=0;while (ch[j] != '\0') {    c = ch[j]-32;if (x>120) { x = 0; y++; }oledSetPos(x,y);    for(i=0;i<8;i++)     oledWrDat(F8X16[c*16+i]);oledSetPos(x,y+1);    for(i=0; i<8; i++)     oledWrDat(F8X16[c*16+i+8]);  x+=8;j++;}
}/*** 描述:显示显示BMP图片128×64起始点坐标(x0, y0),x的范围0~127,y为页的范围0~7*/
void lcdDrawBMP(uchar x0, uchar y0, uchar x1, uchar y1, uchar BMP[])
{   uint j=0;uchar x, y;if(y1%8 == 0) y = y1/8;      else y = y1/8+1;for (y=y0; y<y1; y++) {oledSetPos(x0,y);               for (x=x0; x<x1; x++) {      oledWrDat(BMP[j++]);            }}
}

CC2530之OLED12864程序详解相关推荐

  1. 从程序详解拒绝服务***

    从程序详解拒绝服务*** 拒绝服务(Denial of Service,  DoS)***是最简单的网络***形式之一,它只阻止对服务或资源的访问,而不是试图窃取信息.DoS***有两种常见的形式:使 ...

  2. 车牌识别与计算机编程,基于MATLAB的车牌识别程序详解.ppt

    基于MATLAB的车牌识别程序详解 自定义一个字符函数,用来从车牌区域中提取出7个字符,其中利用切割函数来进行切割. 程序:function [word,result]=getword(d) word ...

  3. 中断程序_ABB机器人中断程序详解(安川FANUC)

    ABB机器人中断程序详解 1.新建一个中断程序 test001,类型中断 TRAP hanmianshadiaoliao StopMove; SetDO DO04, 0; !Stop; StartMo ...

  4. linux系统设置服务开机启动3种方法,Linux开机启动程序详解

    linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图 方法2:利用命令行chkconfig命令进行设置 简要说明一下ch ...

  5. 非局部相似性 matlab,非局部均值滤波(NLM)和MATLAB程序详解视频教程保持图像细节...

    [内容简介]<非局部均值滤波与应用和MATLAB程序详解视频>共6章28节视频,总学时698分钟,合11.6小时.主要内容包括:非局部均值滤波类算法入门,基于滤波参数自适应的非局部均值滤波 ...

  6. STM32利用SPI读写SD卡的程序详解

    STM32利用SPI读写SD卡的一些程序详解 关于SD卡的基础知识这里不做过多陈述,如果有对这方面感兴趣的朋友可以直接百度一下,有很多讲SD卡的文章,这里主要是针对SD卡的读写程序实现做一些详细说明. ...

  7. Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇

    Oracle11g安装教程.配置实例.监听.客户端程序详解_Windows篇 文章目录 Oracle11g安装教程.配置实例.监听.客户端程序详解_Windows篇 前言 一.数据库的安装前准备,前提 ...

  8. Dede二次开发程序详解(dede爱好者必备)

    Dede二次开发程序详解(dede爱好者必备) 调用说明:推荐会员(带用户头像)  [quote] {dede:sql sql="SELECT mid,mtype,userid,uname, ...

  9. 诺基亚5800软件测试初学者,诺基亚5800XM的各个程序详解

    <诺基亚5800XM的各个程序详解>由会员分享,可在线阅读,更多相关<诺基亚5800XM的各个程序详解(2页珍藏版)>请在人人文库网上搜索. 1.诺基亚5800XM的各个程序详 ...

  10. 单片机c语言程序流程图,ds1302时钟程序详解,ds1302程序流程图(C程序)

    ds1302时钟程序详解 DS1302 的控制字如图2所示.控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RA ...

最新文章

  1. Android开发者必备的42个链接
  2. Mac 技术篇-Oracle数据库连接工具SQL Developer启用、关闭自动提交事务,设置自动commit
  3. Ubuntu通过windows代理上网
  4. 掌握 Angular2 的服务 (service)
  5. 华为2015年实习生招聘考试试题
  6. 【渝粤教育】国家开放大学2018年春季 0064-22T20世纪欧美文学 参考试题
  7. 周记随笔-php5.6与apache2.4的windows32安装
  8. SpringBoot简要
  9. 用Java开发一个停车场系统
  10. python爬虫网页图片并保存到本地
  11. C++ STL 源码剖析之 Traits 编程技法
  12. web_MDN学习资源导航_js初学者快速入门指南项目/javascript高级程序设计vsMDN javascript教程/指南(official)
  13. java安装后打开jar文件_java环境变量配置好后双击jar文件无法运行的解决办法
  14. 用excel产生多组随机抽签数
  15. 在登陆Fedora 9时选择语言
  16. stm32有源蜂鸣器程序,高效简洁优雅。
  17. [摘]研究方法 - 实证研究
  18. docker-compose 安装常用服务
  19. c语言程序设计超市会员卡管理系统,C语言程序设计课程设计报告超市水果信息管理系统...
  20. 2018百度沸点国人年度榜单出炉

热门文章

  1. 使用js实现画笔功能
  2. 遥感影像数据下载网址
  3. DDS原理以及MATLAB实现
  4. VUE3-Cesium(加载GeoJSON、KML、KMZ数据)
  5. 浏览器辅助神器:油猴脚本使用教程
  6. 原创 | 一文了解人工智能对精准扶贫的作用及数字乡村建设现状
  7. 数据结构与算法中的经典算法
  8. Arduino 利用PWM对板载LED实现呼吸灯效果
  9. Mac 笔记本 对Micro sd卡烧制镜像详解
  10. Gdiplus的使用 gdi+