欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
求助LCD12864(ST7920)液晶屏反白問題
[打印本頁]
作者:
一袋天驕
時間:
2018-6-21 10:47
標題:
求助LCD12864(ST7920)液晶屏反白問題
最近在學12864(ST7920)液晶屏,使用stc89c52rc單片機,串行方式顯示,在網(wǎng)上找的反白程序,第一個是花屏,第二個能正常反白,但是會有很長時間的延時,不知道為什么,麻煩大家看看
作者:
一袋天驕
時間:
2018-6-21 10:59
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#include "4.h"
uchar code table[] =" 首頁 ";
uchar code table1[]=" 第一頁第一行 ";
uchar code table2[]=" 第一頁第二行 ";
uchar code table3[]=" 第二頁第一行 ";
uchar code table4[]=" 第二頁第二行 ";
uchar code table5[]=" 第三頁第三行 ";
uchar code table6[]=" 第三頁第四行 ";
uchar fanye;
uchar i,l,m,n,r,s,u,v;
sbit LCD_SID=P0^6;
sbit LCD_SCLK=P0^5;
sbit key1=P1^1; //光標開關(guān)
sbit key2=P1^2; //按鍵減一頁
sbit key3=P1^3; //按鍵加一頁
void delay_ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void sendbyte(unsigned char bbyte) //發(fā)送一個字節(jié)
{
unsigned char i;
for(i=0;i<8;i++)
{
LCD_SID=bbyte&0x80; //取出最高位
LCD_SCLK=1;
LCD_SCLK=0;
bbyte<<=1; //左移
}
}
void write(bit start, unsigned char ddata) //寫指令或數(shù)據(jù)
{
unsigned char start_data,Hdata,Ldata;
if(start==0)
start_data=0xf8; //寫指令
else
start_data=0xfa; //寫數(shù)據(jù)
Hdata=ddata&0xf0; //取高四位
Ldata=(ddata<<4)&0xf0; //取低四位
sendbyte(start_data); //發(fā)送起始信號
delay_ms(1); //延時
sendbyte(Hdata); //發(fā)送高四位
delay_ms(1);
sendbyte(Ldata); //發(fā)送低四位
delay_ms(1);
}
//***********一行顯示8個漢字***********
//***************漢字顯示***************
//***X為行Y為列,K為字的個數(shù),*P為數(shù)組*
//*************************************
void chinese(uchar x,uchar y,uchar k,uchar *p)
{
uchar hang,out,i;
y=y-1;
switch(x)
{
case 1:hang=0x80;break;
case 2:hang=0x90;break;
case 3:hang=0x88;break;
case 4:hang=0x98;break;
}
out=hang+y;
write(0,out);
for(i=0;i<k*2;i++) {
write(1,*p);
p++;
}
//write(1,p);
}
//**********一行顯示16個字母***********
//***********英文數(shù)字顯示***************
//***X為行Y為列,K為字的個數(shù),*P為數(shù)組*
//************************************
void english(uchar x,uchar y,uchar k,uchar *p)
{
uchar hang,out,i;
y=y-1;
switch(x)
{
case 1:hang=0x80;break;
case 2:hang=0x90;break;
case 3:hang=0x88;break;
case 4:hang=0x98;break;
}
out=hang+y;
write(0,out);
for(i=0;i<k;i++) {
write(1,*p);
p++;
}
}
void lcd_init()
{
write(0,0x30); //8位介面,基本指令集
write(0,0x0c); //顯示打開,光標關(guān),光標位置關(guān)
write(0,0x01); //清屏,將DDRAM地址計數(shù)器歸零
delay_ms(10);
}
/*******************************反白1*************************
void fanbai(uchar data1,uchar data2,uchar x0,uchar y0,uchar x1,uchar y1)
{
uchar i,j;
for(j=0;j<y1;j++)
{
for(i=0;i<x1;i++)
{
write(0,0x34);
write(0,y0+j); //寫y坐標
write(0,x0+i); //寫x坐標
write(0,0x30);
write(1,data1);
write(1,data2);
}
}
write(0,0x36);
}
/*****************************反白2****************************/
void fanbai(uchar x)
{
uchar i,j;
if(x<2)
{
for(j=0;j<32;j++)
{
for(i=0;i<8;i++)
{
write(0,0x34);
write(0,0x80+j);
write(0,0x80+i);
write(0,0x30);
if(x<1)
{
if(j<16)
{
write(1,0xff);
write(1,0xff);
}
else
{
write(1,0x00);
write(1,0x00);
}
}
else
{
if(j<16)
{
write(1,0x00);
write(1,0x00);
}
else
{
write(1,0xff);
write(1,0xff);
}
}
}
}
for(j=32;j<64;j++)
{
for(i=0;i<8;i++)
{
write(0,0x34);
write(0,0x80+j-32);
write(0,0x88+i);
write(0,0x30);
write(1,0x00);
write(1,0x00);
}
}
}
else
{
for(j=0;j<32;j++)
{
for(i=0;i<8;i++)
{
write(0,0x34);
write(0,0x80+j);
write(0,0x80+i);
write(0,0x30);
write(1,0x00);
write(1,0x00);
}
}
for(j=32;j<64;j++)
{
for(i=0;i<8;i++)
{
write(0,0x34);
write(0,0x80+j-32);
write(0,0x88+i);
write(0,0x30);
if(x<3)
{
if(j<48)
{
write(1,0xff);
write(1,0xff);
}
else
{
write(1,0x00);
write(1,0x00);
}
}
else
{
if(j<48)
{
write(1,0x00);
write(1,0x00);
}
else
{
write(1,0xff);
write(1,0xff);
}
}
}
}
}
write(0,0x36);
}
/******************顯示***********************************/
void display1()
{
write(0,0x01);
english(1,1,15,table1);
english(2,1,15,table2);
}
void display2()
{
write(0,0x01);
english(1,1,15,table3);
english(2,1,15,table4);
}
void display3()
{
write(0,0x01);
english(3,1,15,table5);
english(4,1,15,table6);
}
void main()
{
lcd_init();
write(0,0x01);
english(2,1,15,table);
while(1){
if(key1==0)
{
delay_ms(5);
if(key1==0){
//fanbai(0xff,0xff,0x88,2,0x90,2);
fanbai(3); // 范圍0,1,2,3
write(0,0x30); //8位介面,基本指令集
while(!key1);
}
}
//*********************按鍵翻頁*******************/
if(key3==0){
delay_ms(5);
if(key3==0){ //key3向右翻頁
fanye++;
if(fanye>3){
fanye=3;
}
while(!key3);
}
if(fanye==1){display1();}
if(fanye==2){display2();}
if(fanye==3){display3();}
}
if(key2==0){
delay_ms(5);
if(key2==0){ //key2向左翻頁
fanye--;
if(fanye<1){
fanye=1;
}
while(!key2);
}
if(fanye==3){display3();}
if(fanye==2){display2();}
if(fanye==1){display1();}
}
}
}
復制代碼
作者:
一袋天驕
時間:
2018-6-21 11:01
本帖最后由 一袋天驕 于 2018-6-21 11:27 編輯
反白測試程序
反白測試.zip
2018-6-21 11:01 上傳
點擊文件名下載附件
53.34 KB, 下載次數(shù): 58
作者:
一袋天驕
時間:
2018-6-25 10:18
第一個花屏是因為燒上程序之后畫圖沒有重置,不過也有3秒延時,第二個延時10秒,沒辦法
作者:
來生只想做頭豬
時間:
2018-11-9 09:12
我的也是延時
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1