單片機:ATMEGA16(內部RC-8M頻率)
屏 幕:日立SP14N02L6ALCZ
仿 真:protues
編 譯:ICC AVR7.2
請大神指點迷津。謝謝!
#include "CONFIG.H"
#include "raio.h"
#define x 240
#define y 128
#define xy (x/8)*y
unsigned int i;
void lcd_clear(void)
{
int i;
lcd_registers(0x24,0x00,0x00);
for(i=0;i<8192;i++)
lcd_wdata(0xc0,0x00);
}
void lcd_initial(void)
{
lcd_cmdwrite(0xf0);
lcd_registers(0x21,0x00,0x00);
lcd_registers(0x22,0x00,0x00);
lcd_registers(0x24,0x00,0x00);
lcd_controlword(0x40,0x00,0x00);
lcd_controlword(0x41,0x1e,0x00);
lcd_controlword(0x42,0x00,0x0F);
lcd_controlword(0x43,0x1e,0x00);
lcd_cmdwrite(0x80);
lcd_cmdwrite(0x9c);
lcd_cmdwrite(0xa6);
}
void lcd_cmdwrite(unsigned char cmdx)
{
lcd_chkstatus();
// lcd_CMD = cmdx;
LCD_PORT = cmdx;
// lcd_A0 = 1;
LCD_CD_H;
lcd_nop(1);
// lcd_WR = 0;
LCD_RW_L;
// lcd_CS = 0;
LCD_CE_L;
// lcd_WR = 1;
LCD_RW_H;
// lcd_CS = 1;
LCD_CE_H;
}
void lcd_datawrite(unsigned char datax)
{
lcd_chkstatus();
// lcd_DATA = datax;
LCD_PORT = datax;
// lcd_A0 = 0;
LCD_CD_L;
lcd_nop(2);
// lcd_CS = 0;
LCD_CE_L;
// lcd_WR = 0;
LCD_RW_L;
// lcd_WR = 1;
LCD_RW_H;
// lcd_CS = 1;
LCD_CE_H;
}
unsigned char lcd_cmdread(void)
{
unsigned char address_cmd;
// lcd_DATA=https://bbs.csdn.net/topics/0xff;
LCD_DDR = 0x00; //input
LCD_PORT = 0xff;
// lcd_A0 = 1;
LCD_CD_H;
// lcd_CS = 0;
LCD_CE_L;
// lcd_RD = 0;
LCD_RD_L;
// address_cmd = lcd_DATA;
address_cmd = LCD_DATA;
// lcd_RD = 1;
LCD_RD_H;
// lcd_CS = 1;
LCD_CE_H;
return(address_cmd);
LCD_DDR = 0xFF; //output
}
unsigned char lcd_dataread(void)
{
unsigned char address_data;
LCD_DDR = 0x00; //input
LCD_PORT = 0xff;
// lcd_DATA=https://bbs.csdn.net/topics/0xff;
// lcd_A0 = 0;
LCD_CD_L;
// lcd_CS = 0;
LCD_CE_L;
// lcd_RD = 0;
LCD_RD_L;
// address_data = lcd_DATA;
address_data = LCD_DATA;
// lcd_RD = 1;
LCD_RD_H;
// lcd_CS = 1;
LCD_CE_H;
return(address_data);
LCD_DDR = 0xFF; //output
}
void lcd_chkstatus(void)
{
unsigned char busy;
do
{
busy =!(lcd_cmdread() & 0x03);
}
while(busy);
}
void delay1ms(unsigned int count)
{
uint i;
while(count--){
i=1000;
while(--i);
}
}
void lcd_nop(unsigned char cc)
{
unsigned char i;
for(i=0;i<cc;i++);
}
void lcd_reset(void)
{
// lcd_RES = 1;
LCD_RES_H;
delay1ms(2);
// lcd_RES = 0;
LCD_RES_L;
delay1ms(50);
// lcd_RES = 1;
LCD_RES_H;
delay1ms(50);
}
void lcd_registers(unsigned char a,unsigned char b,unsigned char c)
{
lcd_datawrite(b);
lcd_datawrite(c);
lcd_cmdwrite(a);
}
void lcd_controlword(unsigned char a,unsigned char b,unsigned char c)
{
lcd_datawrite(b);
lcd_datawrite(c);
lcd_cmdwrite(a);
}
void lcd_wdata(unsigned char a,unsigned char b)
{
lcd_datawrite(b);
lcd_cmdwrite(a);
}
//=================================================================================
// text
//=================================================================================
void lcd_text_1(void)
{
lcd_registers(0x24,0x00,0x00);
//RAIO TECHNOLOGY INC.
lcd_wdata(0xc0,0x32);
lcd_wdata(0xc0,0x21);
lcd_wdata(0xc0,0x29);
lcd_wdata(0xc0,0x2f);
lcd_wdata(0xc0,0x00);
lcd_wdata(0xc0,0x34);
lcd_wdata(0xc0,0x25);
lcd_wdata(0xc0,0x23);
lcd_wdata(0xc0,0x28);
lcd_wdata(0xc0,0x2e);
lcd_wdata(0xc0,0x2f);
lcd_wdata(0xc0,0x2c);
lcd_wdata(0xc0,0x2f);
lcd_wdata(0xc0,0x27);
lcd_wdata(0xc0,0x39);
lcd_wdata(0xc0,0x00);
lcd_wdata(0xc0,0x29);
lcd_wdata(0xc0,0x2e);
lcd_wdata(0xc0,0x23);
lcd_wdata(0xc0,0x0e);
lcd_registers(0x24,0x96,0x00);
//ASCII:
lcd_wdata(0xc0,0x21);
lcd_wdata(0xc0,0x33);
lcd_wdata(0xc0,0x23);
lcd_wdata(0xc0,0x29);
lcd_wdata(0xc0,0x29);
lcd_wdata(0xc0,0x1a);
lcd_registers(0x24,0xd1,0x00);
for(i=0;i<256;i++)
lcd_wdata(0xc0,i);
}
//=================================================================================
// graphic
//=================================================================================
//=================================================================================
// Pattern
//=================================================================================
void lcd_graphic_1(void)
{
//================外框=====================
lcd_registers(0x24,0x00,0x0f); //xy
for(i=0;i<xy;i++)
if(i<(x/8))
lcd_wdata(0xc0,0xff);
else if(i>(xy-(x/8)-1))
lcd_wdata(0xc0,0xff);
else if((i+1)%(x/8)==0)
lcd_wdata(0xc0,0x01);
else if(i%(x/8)==0)
lcd_wdata(0xc0,0x80);
else
lcd_wdata(0xc0,0x00);
//==========================================
}
void lcd_graphic_2(void)
{
//=================全亮=====================
lcd_registers(0x24,0x00,0x0f);
for(i=0;i<xy;i++)
lcd_wdata(0xc0,0xff);
//===========================================
}
void lcd_graphic_3(void)
{
//==================全滅=====================
lcd_registers(0x24,0x00,0x0f);
for(i=0;i<xy;i++)
lcd_wdata(0xc0,0x00);
//===========================================
}
void lcd_graphic_4(void)
{
//==================直線1===================
lcd_registers(0x24,0x00,0x0f);
for(i=0;i<xy;i++)
lcd_wdata(0xc0,0xaa);
//==========================================
delay1ms(1000);
//==================直線2===================
lcd_registers(0x24,0x00,0x0f);
for(i=0;i<xy;i++)
lcd_wdata(0xc0,0x55);
//==========================================
}
void lcd_graphic_5(void)
{
//=================小棋盤1======================
lcd_registers(0x24,0x00,0x0f);
for(i=0;i<xy;i++)
if (((i/(x/8))%2)==0)
lcd_wdata(0xc0,0x55);
else
lcd_wdata(0xc0,0xaa);
//==============================================
delay1ms(1000);
//=================小棋盤2======================
lcd_registers(0x24,0x00,0x0f);
for(i=0;i<xy;i++)
if (((i/(x/8))%2)==0)
lcd_wdata(0xc0,0xaa);
else
lcd_wdata(0xc0,0x55);
//==============================================
}
void lcd_graphic_6(void)
{
//=================大棋盤1====================
lcd_registers(0x24,0x00,0x0f);
for(i=0;i<xy;i++)
if (((i/((x/8)*2))%2)==0)
lcd_wdata(0xc0,0x33);
else
lcd_wdata(0xc0,0xcc);
//=============================================
delay1ms(1000);
//=================大棋盤2====================
lcd_registers(0x24,0x00,0x0f);
for(i=0;i<xy;i++)
if (((i/((x/8)*2))%2)==0)
lcd_wdata(0xc0,0xcc);
else
lcd_wdata(0xc0,0x33);
//============================================
}
void lcd_graphic_7(void)
{
//==================橫線1=======================
lcd_registers(0x24,0x00,0x0f);
for(i=0;i<xy;i++)
if (((i/(x/8))%2)==0)
lcd_wdata(0xc0,0xff);
else
lcd_wdata(0xc0,0x00);
//==============================================
delay1ms(1000);
//==================橫線2=======================
lcd_registers(0x24,0x00,0x0f);
for(i=0;i<xy;i++)
if (((i/(x/8))%2)==0)
lcd_wdata(0xc0,0x00);
else
lcd_wdata(0xc0,0xff);
//===============================================
}
//=================================================================================
// pic
//=================================================================================
//=================================================================================
// 240x128
//=================================================================================
void lcd_graphic_8(void)
{
lcd_registers(0x24,0x00,0x0f);
for(i=0;i<xy;i++)
lcd_wdata(0xc0,sRAiO[i]);
}
#include <iom16v.h>
#include <macros.h>
#include "config.h"
#include "ra6963.h"
//#include "240128.h"
//#include "abc.h"
//#include "testchip.h"
char temp;
void port_init(void);
void main(void)
{
port_init();
lcd_clear();
lcd_reset();
lcd_initial();
temp =0;
while(1)
{
switch(temp)
{
case 0:
lcd_graphic_8(); //圖 240*128 RAiO
delay1ms(800);
// lcd_clear();
break;
case 1:
lcd_graphic_1(); //外框
delay1ms(800);
// lcd_clear();
break;
case 2:
lcd_graphic_2(); //全亮
delay1ms(800);
// lcd_clear();
break;
case 3:
lcd_graphic_3(); //全滅
delay1ms(800);
// lcd_clear();
break;
case 4:
lcd_graphic_4(); //直線
delay1ms(800);
// lcd_clear();
break;
case 5:
lcd_graphic_5(); //小棋盤
delay1ms(800);
// lcd_clear();
break;
case 6:
lcd_graphic_6(); //大棋盤
delay1ms(800);
// lcd_clear();
break;
case 7:
lcd_graphic_7(); //橫線
delay1ms(800);
lcd_clear();
break;
case 8:
lcd_text_1(); //文字
delay1ms(1000);
lcd_clear();
break;
}
temp++;
}
}




uj5u.com熱心網友回復:
原來Redmi 10x 4G和5G相機是不一樣的。。。。uj5u.com熱心網友回復:



uj5u.com熱心網友回復:
程式最好用別人測驗過沒問題的。。一般的,供應商可以提供這個。自己寫可能出問題的地方太多了。。。
確認圖里面的型號和你的實際器件是匹配的,檢查外接電壓是否都合適。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/283477.html
標籤:單片機/工控
