使用uc1701x的12864能驱动起来,为什么换为st7567的就不显示了?

这两款芯片的驱动程序好像是兼容的呀,而且是按照st7567液晶屏的使用说明写的
#include
#include

#include
#include
#include "iic.h"

sbit cs1=P1^1;
sbit reset=P1^0;

sbit rs=P3^0;
sbit sclk=P3^1;

sbit sid=P3^2;
sbit Rom_IN=P1^2; //字库IC 接口定义:Rom_IN 就是字库IC 的SI
sbit Rom_OUT=P1^3; //字库IC 接口定义:Rom_OUT就是字库IC 的SO
sbit Rom_SCK=P1^4; //字库IC 接口定义:Rom_SCK就是字库IC 的SCK
sbit Rom_CS=P1^5; //字库IC接口定义Rom_CS就是字库IC的CS#

#define uchar unsigned char

#define uint unsigned int
#define ulong unsigned long
char xianshi[5];
int court=0;
uchar p;/*记录按键次数的变量*/
extern bit ack;
void delay_us(int i)
{
int j,k;
for(j=0;j<i;j++)
for(k=0;k<1;k++);
}
void delay(int i)
{
int j,k;
for(j=0;j<i;j++)
for(k=0;k<110;k++);
}
void transfer_command(int data1) /*写指令*/

{
char i;
cs1=0;
rs=0;
for(i=0;i<8;i++)
{
sclk=0;
delay_us(2);
if(data1&0x80) sid=1;
else sid=0;
sclk=1;
delay_us(2);
data1=data1<<=1;
}
cs1=1;
}
void transfer_data_lcd(int data1)/*写数据*/
{
char i;
cs1=0;
rs=1;
for(i=0;i<8;i++)
{
sclk=0;
delay_us(1);
if(data1&0x80) sid=1;
else sid=0;
sclk=1;
delay_us(1);
data1=data1<<=1;
}
cs1=1;
}
void initial_lcd()/*液晶屏初始化*/
{
//cs1=0;
reset=0; //低电平复位
delay(100);
reset=1; //复位完毕
delay(100);

transfer_command(0xe2); //软复位
delay(5);
transfer_command(0x2c); //升压步聚1
delay(5);

transfer_command(0x2e); //升压步聚2
delay(5);
transfer_command(0x2f); //升压步聚3
delay(5);
transfer_command(0x24); //粗调对比度,可设置范围0x20~0x27
transfer_command(0x81); //微调对比度
transfer_command(0x1f); //0x1a,微调对比度的值,可设置范围0x00~0x3f 与上一条是双指令上一条的0x81不动,下面的才是值
transfer_command(0xa2); //1/7偏压比(bias)一般不改0xa2是1/9
transfer_command(0xc8); //行扫描顺序:从上到下
transfer_command(0xa0); //列扫描顺序:从左到右
transfer_command(0x40); //起始行:第一行开始
//transfer_command(0xA7); //反显
transfer_command(0xaf); //开显示

}
void lcd_address(uchar page,uchar column) /*显示位置,行和列的设置*/
{
column=column-1; //我们平常所说的第 1 列,在 LCD 驱动 IC 里是第 0 列。所以在这里减去 1.
page=page-1;
transfer_command(0xb0+page); //设置页地址。每页是 8 行。一个画面的 64 行被分成 8 个页。我们平常所说的第 1 页,在 LCD 驱动 IC 里是第 0 页,所以在这里减去1*/
transfer_command(((column>>4)&0x0f)+0x10); //设置列地址的高4 位
transfer_command(column&0x0f); //设置列地址的低4 位
}
/*全屏清屏*/
void clear_screen()
{
unsigned char i,j;
for(i=0;i<9;i++)
{
lcd_address(1+i,1);
for(j=0;j<132;j++)
{
transfer_data_lcd(0x00);

}
}
}

//送指令到晶联讯字库IC
void send_command_to_ROM( uchar datu )
{
uchar i;
for(i=0;i<8;i++ )
{
Rom_SCK=0;
delay_us(10);
if(datu&0x80)Rom_IN = 1;
else Rom_IN = 0;
datu = datu<<1;
Rom_SCK=1;
delay_us(10);
}
}

//从晶联讯字库IC 中取汉字或字符数据(1 个字节)
static uchar get_data_from_ROM( )
{
uchar i;
uchar ret_data=0;
for(i=0;i<8;i++)
{
Rom_OUT=1;
Rom_SCK=0;
//delay_us(1);
ret_data=ret_data<<1;
if( Rom_OUT )
ret_data=ret_data+1;
else
ret_data=ret_data+0;
Rom_SCK=1;
//delay_us(1);
}
return(ret_data);
}

//从指定地址读出数据写到液晶屏指定(page,column)座标中
void get_and_write_16x16(ulong fontaddr,uchar page,uchar column)
{
uchar i,j,disp_data;
Rom_CS = 0;
send_command_to_ROM(0x03);
send_command_to_ROM((fontaddr&0xff0000)>>16); //地址的高8 位,共24 位
send_command_to_ROM((fontaddr&0xff00)>>8); //地址的中8 位,共24 位
send_command_to_ROM(fontaddr&0xff); //地址的低8 位,共24 位
for(j=0;j<2;j++)
{
lcd_address(page+j,column);
for(i=0; i<16; i++ )
{
disp_data=get_data_from_ROM();
transfer_data_lcd(disp_data); //写数据到LCD,每写完1 字节的数据后列地址自动加1
}
}
Rom_CS=1;
}

void get_and_write_8x16(ulong fontaddr,uchar page,uchar column)
{
uchar i,j,disp_data;
Rom_CS = 0;
send_command_to_ROM(0x03);
send_command_to_ROM((fontaddr&0xff0000)>>16); //地址的高8 位,共24 位
send_command_to_ROM((fontaddr&0xff00)>>8); //地址的中8 位,共24 位
send_command_to_ROM(fontaddr&0xff); //地址的低8 位,共24 位
for(j=0;j<2;j++)
{
lcd_address(page+j,column);
for(i=0; i<8; i++ )
{
disp_data=get_data_from_ROM();
transfer_data_lcd(disp_data); //写数据到LCD,每写完1 字节的数据后列地址自动加1
}
}
Rom_CS=1;
}

//****************************************************************

ulong fontaddr=0;
void display_GB2312_string(uchar page,uchar column,uchar *text)
{

uchar i= 0;

while((text[i]>0x00))
{
if(((text[i]>=0xb0) &&(text[i]<=0xf7))&&(text[i+1]>=0xa1))
{

//国标简体(GB2312)汉字在晶联讯字库IC 中的地址由以下公式来计算:
//Address = ((MSB - 0xB0) * 94 + (LSB - 0xA1)+ 846)*32+ BaseAdd;BaseAdd=0
//由于担心8 位单片机有乘法溢出问题,所以分三部取地址
fontaddr = (text[i]- 0xb0)*94;

fontaddr += (text[i+1]-0xa1)+846;
fontaddr = (ulong)(fontaddr*32);
get_and_write_16x16(fontaddr,page,column); //从指定地址读出数据写到液晶屏指定(page,column)座标中
i+=2;
column+=16;
}
else if(((text[i]>=0xa1) &&(text[i]<=0xa3))&&(text[i+1]>=0xa1))
{

//国标简体(GB2312)15x16 点的字符在晶联讯字库IC 中的地址由以下公式来计算:
//Address = ((MSB - 0xa1) * 94 + (LSB - 0xA1))*32+ BaseAdd;BaseAdd=0
//由于担心8 位单片机有乘法溢出问题,所以分三部取地址
fontaddr = (text[i]- 0xa1)*94;

fontaddr += (text[i+1]-0xa1);
fontaddr = (ulong)(fontaddr*32);

get_and_write_16x16(fontaddr,page,column); //从指定地址读出数据写到液晶屏指定(page,column)座标中
i+=2;
column+=16;
}
else if((text[i]>=0x20) &&(text[i]<=0x7e))

{

fontaddr = (text[i]- 0x20);
fontaddr = (unsigned long)(fontaddr*16);
fontaddr = (unsigned long)(fontaddr+0x3cf80);

get_and_write_8x16(fontaddr,page,column); //从指定地址读出数据写到液晶屏指定(page,column)座标中
i+=1;
column+=8;
}
else
i++;

}

}

void timer0_chushihua()/*定时器初始化*/
{
TMOD=0x01;
TH0=0x00;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
}

uchar read(uchar ch )
{
uchar temp=0;

iic_start();
iic_writebyte(0x90);//确认芯片
if(ack==0)return(0);
//iic_respons();
iic_writebyte(0x00|ch);//确认通道
iic_respons();
//读出数据,放进temp
iic_start();
iic_writebyte(0x91);
if(ack==0)return(0);
//iic_respons(); /*如果采用iic_respons(),而不要if(ack==0)return(0),则显示是从0001开始,而不是0000,为什么?*/
temp=readbyte();
NoAck_I2c();
iic_stop();
return temp;
}

void dis(void)/*将采集的电压信号变为字符串,以便LCD显示*/
{

int H, M, S, W;
p=read(0);

    H=((p/1000)%10);
    M=(p/100)%10;
    S=(p/10)%10;
    W=(p%10);
    sprintf(xianshi, "%d%d%d%d", H, M, S,W);             // 将整数转换成字符串

}

void timer0() interrupt 1
{

   TH0=(65536-45536)/256;/*设定定时器初始值,定时20ms*/
   TL0=(65536-45536)%256;
   dis();

   court++;

}

void main(void)
{

iic_init();
initial_lcd();/*液晶屏初始化*/
clear_screen();/*液晶屏清屏*/
timer0_chushihua();

while(1)
{

if(court==1)
{

    display_GB2312_string(7,33,xianshi);/*显示按键按过的次数*/

    display_GB2312_string(5,1,"∑  000000");/*显示固定字符和数字*/
    //display_GB2312_string(1,1,"dshyhuf");/*显示固定字母*/
    court=0;
   }

 }

}

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

OpenCV图像处理,怎么把CV_64FC1的图像转换为CV_8UC1或者CV_16UC1?

OpenCV图像处理,怎么把CV_64FC1的图像转换为CV_8UC1或者CV_16UC1?从而可以显示出来,比如通过imshow。 分块DCT变换:dct(float_R(subwindows), DCTR(subwindows)); 现在DCTR是CV_64FC1矩阵,无法显示;怎么转成CV_8UC1或者CV_16UC1呢???急

部分图片在UC浏览器不显示

我在index.html中使用了如下的图片(看相关代码和相关图片),但是在服务器测试时出现了下面关于手机UC浏览器的问题,这种情况一般是啥原因?在不改变原图片的情况下是不是没有解决办法?如果是图片的问题,那一般会是什么问题? ********************************************************************* 在PC端测试,是正常显示的; 在手机上的其它非UC浏览器上全部也显示正常; 但是,在手机的UC浏览器上不显示,一片空白; 不再服务器环境测试,直接在本地打开index.html的话在所有浏览器上是正常显示的; 换成其它图片,在所有浏览器上也是正常显示的; 在任何浏览器上(包括手机端UC),此图片的点击事件是正常的,加了border也能出来; ********************************************************************** 测试环境:nodejs和jsp都一样的情况; 相关代码: ``` <div class="download"> <a id='softWareDownload' href="#"> <img src="images/ad.png" class="ad" /> </a> </div> ``` 相关图片: ![图片](https://img-ask.csdn.net/upload/201608/24/1472014319_88788.png) ![图片属性](https://img-ask.csdn.net/upload/201608/24/1472014381_695942.png)

UC浏览器如何开启Cookie

今天在UC浏览器里登陆百度账号时,一直提示"开启Cookie之后才能登录"。就像这样 ![图片说明](https://img-ask.csdn.net/upload/201612/07/1481110463_835649.png) 可是我点进去查看如何开启Cookie,并没有UC的方法。(感觉好尼玛扯淡,,UC自己开发的浏览器竟然不给用户指明开启自己浏览器Cookie的方法,反而指明了IE,谷歌和火狐的开启方法,搞笑吗?)。如图 ![图片说明](https://img-ask.csdn.net/upload/201612/07/1481110653_472017.png) 我在网上查了好久也没找到。只能求助于万能的CSDN了

CV_64FC1 做不了轮廓提取啊,求问怎么转换成 CV_8UC1

CV_64FC1 做不了轮廓提取啊,求问怎么转换成 CV_8UC1

安卓应用程序能不能获取到浏览器(如UC)打开的URL

安卓应用程序能不能获取到浏览器(如UC)打开的URL?本人初学安卓,望各位大神多多指教!

opencv如何将16位深度影像转换为8位深度并显示?

请问opencv如何将16位深度影像转换为8位深度的影像?我想用opencv处理一幅16位无符号整型3个波段的遥感影像,直接处理会报错而且imshow显示不出来。所以需要转换成8位的,下面是我的代码,imshow显示一片黑,不知为何? //输入影像为16位无符号整型,3个波段 Mat img3 = imread("example.tif"); Mat img4; img3.convertTo(img4, CV_8UC3); imshow("3", img4);

在JS写的页面使用active x控件问题

问题是这样:我做了一个active x控件暂时叫A吧(A是基于mfc做的一个复杂的图形界面),A嵌入到我们公司网站的一个页面上这个页面叫W(JJavaScript写的)。在ie浏览器打开W后再关闭再打开A,A不能正常显示(也不是所有浏览器都不能正常显示),根据调试情况可以推断是关闭W时,没有释放掉A对象,DLL模块没有卸载,重新打开W时,A所依赖的Dll模块没有重新加载,在新的界面线程调用afxGetThread返回都是空,也就是mfc机制在这种情况下失效。上述问题在使用UC浏览器不会出现(根据UC打开进程数猜测两次打开W不是同一进程)。有没有大神指点下。我是做c++开发的,Js不太熟悉

opencv 8UC2的问题以及scalar()参数.md

小白一枚,今天在敲代码的时候发现当我输入 ``` Mat src = Mat(500, 500, CV_8UC2, Scalar(0,0,255)); ``` 时是报错的,但是输入 ``` Mat src = Mat(500, 500, CV_8UC3, Scalar(0,0,255)); ``` 却是正确的,查过资料,8UC2是三通道图像,8UC3是带有alpha通道的三通道图像,为什么第一个就不能执行 还有请教一下Mat()中的500指的是500px吗? 十分感谢!

网站在手机UC浏览器中文乱码

用手机UC浏览器打开,发现静态部分中文没问题,从后台获取的数据就全部出现中文乱码,应该怎么设置啊

手机UC浏览器 select下拉框内容被遮挡,不能正常显示,求解决。

![图片说明](https://img-ask.csdn.net/upload/201603/02/1456904569_398745.jpg) ``` <div class="col-xs-10 col-xs-offset-1 form-box"> <div class="form-content"> <form> <div class="form-group"> <label class="sr-only">学校</label> <select class="form-control input-lg" id="school"> <option>选择学校</option> </select> </div> <div class="form-group"> <label class="sr-only">用户名</label> <input type="text" class="form-control input-lg" id="username" placeholder="用户名"> </div> <div class="form-group"> <label class="sr-only">密码</label> <input type="password" class="form-control input-lg" id="password" placeholder="密码"> </div> <div class="checkbox"> <label> <input type="checkbox" id="UserMsg"> 记住密码 </label> </div> <a id="login" class="btn btn-lg btn-primary btn-block">登 录</a> </form> <br> <div class="mesg1 alert alert-danger" role="alert" style="display:none">请选择学校!</div> <div class="mesg2 alert alert-danger" role="alert" style="display:none">用户名或密码不能为空!</div> <div class="mesg3 alert alert-danger" role="alert" style="display:none">用户名或密码错误,请重试!</div> </div> </div> ``` 上面是我的登录部分代码,使用bootstrap写的,手机UC会出现这样的情况,自带浏览器倒是没有问题,求大神点睛!!!

IOS UC浏览器中极速模式下不运行js

IOS 下的uc浏览器,开启极速模式后,js代码不发送请求,也不运行,怎样才能让js运行。

怎样实现UC浏览器的抓取文章功能

现在的手机版UC浏览器可以根据用户的选择来分类抓取显示文章,我在学校工作室想制作一个app要用到类似的功能,请问要借助什么工具来实现

uc浏览器长按弹出菜单怎么取消?

安卓手机uc浏览器长按弹出菜单怎么取消?我自己的网站长按有我自己的操作,但是UC本身也会跳出菜单,这样就影响了我的网站的用户体验,请问各位大神怎么取消?

求助:手机web页面怎么调用UC浏览器或者QQ浏览器

如果打开我html页面的是UC或者QQ浏览器,点击分享到微信好友时就分享。如果不是UC或者QQ浏览器,点击分享给微信好友时我就调用UC或者QQ浏览器然后把自己的页面分享出去。求各位大神指教怎么调用UC和QQ浏览器。

请教一下UC手机版支持target=_blank吗?

各位大神,我在开发移动端页面时,给HTML中的一个form的target属性设置为_blank,但是表单submit时, 在其他移动端浏览器上,都能打开新窗口,但是唯独在uc手机版上测试时,发现浏览器没有打开新窗口, 而是刷新了原来的页面,我将UC浏览器设置为允许弹框也不行啊,各位有没有遇到过类似的,怎么解决的啊

网站配置https之后,移动端浏览器无法下载附件,但是PC端和移动端的UC浏览器却能正常下载

遇到了一个问题,我给网站项目配置https之后,移动端如(平板、手机)无法通过下载附件,但是通过移动端的UC浏览器却可以,并且PC也能正常下载,在servlet我设置了response.setHeader("Cache-Control","public");response.setHeader("Pragma","public"); 有没有哪位大侠遇到过类似的问题啊?求告知

在OpenCV4Android中怎样获取图片类型为CV_8UC3每个像素的RGB值?

我用了Mat :: get (row, col, data)这个方法过去像素,但是搞不懂怎么分离出RGB值。。。

手机端,UC浏览器的onclick触发不了,求教大牛~~~

求教各位: 如下代码, 是在手机网站上的,其他浏览器都可以,唯独,UC浏览器,点击图片的时候onclick事件响应不了,是咋回事,有哪位大侠遇到过,求解,十万火急: <script src="/Content/js/Advertisement/advertisement.js"></script> <div class="ads"> <h3><span class="">更多精彩</span></h3> <div class="m-ad fl" onclick="Advertise('dd1171d3-9b2c-40e7-a744-add9e4314ecb','http://www.baidu.com',0);"> <a href="javascript:void(0)"><img src="http://cloudimg.b0.upaiyun.com/p/656d2518-9a9e-4d70-8419-ecb5e32ef14c.jpg" alt=""></a> </div> </div>

UC浏览器显示网页异常

看图,这是怎么回事呢,急啊!![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/18.gif)![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/18.gif)![图片](https://img-ask.csdn.net/upload/201606/07/1465308006_490315.jpg)![图片](https://img-ask.csdn.net/upload/201606/07/1465308011_956070.jpg)

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c#跨线程停止timer c#批量写入sql数据库 c# 自动安装浏览器 c#语言基础考试题 c# 偏移量打印是什么 c# 绘制曲线图 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行
立即提问