arduino 微信红包怎么免费领取机器人爱好者之家

?找回密码
?立即注册

QQ登录

只需一步,快速开始

查看: 2785|回复: 3
打印 上一主题 下一主题

mini12864 竖屏显示 不带字库

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
发表于 2015-7-16 10:44:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#define cs_mini12864 12? ?//片选 低电平片选
#define rst_mini12864 11 //物理重置.低电平有效
#define rs_mini12864 10? ?//寄存器选择 1:数据寄存器 0:指令寄存器
#define sck_mini12864 9 //时钟
#define sda_mini12864 8 //数据
//上面的脚可以自己修改
#define??Display??0xAF? ???//显示开启
#define??Power? ? 0x2F? ?? ?? ???//电源全开
#define??VO? ?? ? 0x24? ???//对比度调节? ?? ?? ?? ?
#define??AllPoint 0xA4? ?? ?? ???//非全屏显示
#define??ADCset? ?0xA1? ?? ?? ?? ?//负向,131-4
#define??COMset? ?0xc0? ?? ?? ?? ?//com0-com63
#define??ELECTVO??0x81? ???//亮度调节? ?? ?? ?调节颜色? ?? ?? ?不同的模块需要不同的??ELECTSET
#define??ELECTSET 0x2a? ?? ?? ???//亮度数值? ?? ?? ?调节颜色? ?? ?? ?不同的模块需要不同的? ?? ???数值
#define??BIASSET??0xA2? ? //占空比1/9


void send_8bit_mini12864(unsigned char d)??//传8位数据,高位先传
{
? ?? ???for(int i=0;i<8;i++)? ?? ?? ?? ?? ?? ???//循环8次,每次发送1个最高位
? ?? ???{
? ?? ?? ?? ?? ? digitalWrite(sck_mini12864,0);? ?? ? //时钟拉低,一位数据开始
? ?? ?? ?? ?? ? if(d&0x80)? ?? ?? ?? ?? ?? ?? ?? ???//与上10000000,最高位如果是1,就数据位就高
? ?? ?? ?? ?? ?? ?? ?? ?digitalWrite(sda_mini12864,1);
? ?? ?? ?? ?? ? else? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???//与上10000000,最高位如果是0,就数据位就低
? ?? ?? ?? ?? ?? ?? ?? ?digitalWrite(sda_mini12864,0);
? ?? ?? ?? ?? ? digitalWrite(sck_mini12864,1);? ?? ? //一位数据发送完毕,时钟拉高
? ?? ?? ?? ?? ? d<<=1;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?// d|ddddddd0? ? 抛掉最高位,其余数据左移一位,最低位填0
? ?? ???}
}

void write_cmd_mini12864(unsigned char cmd)??//写命令
{
? ?? ???digitalWrite(cs_mini12864,0); //片选拉低,选中芯片
? ?? ???digitalWrite(rs_mini12864,0); //rs为低,写入命令
? ?? ???send_8bit_mini12864(cmd);? ???//写入8位命令
}

void write_dat_mini12864(unsigned char dat)??//写数据
{
? ?? ???digitalWrite(cs_mini12864,0); //片选拉低,选中芯片
? ?? ???digitalWrite(rs_mini12864,1); //rs为高,写入数据
? ?? ???send_8bit_mini12864(dat);? ?? ?? ? //写入8位数据
}

void mini12864_cl()? ?? ?? ?//清屏,其实就是把所有的地址全部填成0
{? ?? ?? ?
??unsigned char x,y;
??for(y=0;y<8;y++)
??{? ?
? ? write_cmd_mini12864(0xb0+y);
? ? write_cmd_mini12864(0x10);? ?? ?? ?? ?? ?
? ? write_cmd_mini12864(0x00);
? ? for(x=0;x<132;x++)??write_dat_mini12864(0);
??}? ?? ???
}

void mini12864_Init()? ?//初始化
{

??pinMode(cs_mini12864,OUTPUT);? ?//设置各个I/O为输出
??pinMode(rst_mini12864,OUTPUT);??
??pinMode(rs_mini12864,OUTPUT);
??pinMode(sck_mini12864,OUTPUT);
??pinMode(sda_mini12864,OUTPUT);??
? ?
??digitalWrite(cs_mini12864,LOW);??
??digitalWrite(rst_mini12864,LOW);? ?? ?? ? //物理重置
??delay(200);
??digitalWrite(rst_mini12864,HIGH);
??delay(1000);? ?? ???
??write_cmd_mini12864(0xe2);? ?? ?? ?? ?? ? //软件重置
??delay(200);

//以下为初始设置,具体请参考数据手册

??write_cmd_mini12864(0x23);//对比度
??write_cmd_mini12864(0xa2);//BR=1/9
??write_cmd_mini12864(0xa0);//set seg direction
??write_cmd_mini12864(0xc8);//set com direction
??write_cmd_mini12864(0x2f);//set power control
??write_cmd_mini12864(0x40);//set scroll line
??write_cmd_mini12864(0x81);//SET ELECTRONIC VOLUME
??write_cmd_mini12864(0x20);//set pm: 通过改变这里的数值来改变电压
??//write_cmd(0xa6);//set inverse display? ?? ?? ???a6 off, a7 on
??//write_cmd(0xa4);//set all pixel on
??write_cmd_mini12864(0xaf);//开显示

??mini12864_cl();??//清屏
}

void write_add(unsigned char p, unsigned char l)??//页列转换
{
??write_cmd_mini12864(0xb0+p);? ?? ?? ?? ?? ?? ?? ?? ? //先给页数据 0-7,从上到下,页码是直接读取8位数据作为地址? ?
??write_cmd_mini12864(0x10+(8*l/16));? ?? ???//再是列 0-127,从左到右,列是先读取高四位,后读取低四位
??write_cmd_mini12864(0x00+(8*l%16));? ?//低四位
}


void show_string(unsigned char p, unsigned char l,char??*string)? ?//在第p页的l列
{? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //显示一个字符串(数组中的元素)
? ? unsigned int X,i=0;
? ?write_add(p,l);? ?? ?? ?? ?? ?? ?? ?//页列转换函数
? ?while(string[i++])? ?? ?? ?? ?? ?//判断是否为空
? ?{
? ? X=(string[i-1]-32)*16;? ?? ?? ???//将string中的元素(ASC码)匹配到预先写好的ASC数组之中
? ? for(int j=0;j<16;j++) write_dat_mini12864(ASCII8_16[X++]);? ?? ?? ?//发显示数据
? ?}
}

void show_number(unsigned char p, unsigned char l,unsigned int d)? ?//在第p页的l列
{? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? //显示一个字数字
??char s[8];? ?
??unsigned char m;
??m=0;
??do? ?? ?//将d分离到数组s中
??{
? ? s[m]=d%10;
? ? m++;
? ? d=d/10;? ?
??}while(d);//此时m就是d的位数??
? ?
? ?unsigned int X,i=0;
? ?write_add(p,l);? ?? ?? ?? ?? ?? ?? ?//页列转换函数
? ?for(int z=m;z>0;z--)? ?? ?? ?? ?? ?//循环m次,没就是数字的位数
? ?{
? ? X=(s[z-1]+48-32)*16;? ?? ?? ???//由于此时数组中的并非ASC码,而是真真的数字,所以转换时候系数不同
? ? for(int j=0;j<16;j++) write_dat_mini12864(ASCII8_16[X++]);? ?? ?? ?//发显示数据
? ?}
}


void setup()
{
? ?? ???mini12864_Init();? ?//初始化液晶
}

void loop()
{??
? ?
? ?show_string(0,0,"HELLO!");
? ?show_string(1,0,"Arduino");
? ?show_number(2,0,12345);
? ?
? ?show_string(6,0,"I'm Kiwi");
? ?? ?? ?
}

签到天数: 7 天

[LV.3]偶尔看看II

沙发
发表于 2015-7-16 13:42:52 | 只看该作者
什么都没有,就程序,屏的资料也没有?

该用户从未签到

板凳
?楼主| 发表于 2015-7-16 17:49:48 | 只看该作者
这个是资料

2345_image_file_copy_1.jpg (130.11 KB, 下载次数: 8)

2345_image_file_copy_1.jpg

2345_image_file_copy_2.jpg (103.18 KB, 下载次数: 9)

2345_image_file_copy_2.jpg

2345_image_file_copy_3.jpg (155.33 KB, 下载次数: 8)

2345_image_file_copy_3.jpg

2345_image_file_copy_4.jpg (95.62 KB, 下载次数: 12)

2345_image_file_copy_4.jpg

签到天数: 4 天

[LV.2]偶尔看看I

地板
发表于 2017-2-24 09:07:51 | 只看该作者
学习学习,很好的资料
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|联系我们|YFRobot ( 苏ICP备13017135 )???

GMT+8, 2019-9-19 02:45 , Processed in 0.099713 second(s), 26 queries .

Powered by Discuz! X3.1

? 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表