📄 6800.c.bak
字号:
#include "cpu.h"
//==============三星S6B0724驱动程序===================
//
// 使用 6800 并行接口时序
#define LCD_EN PIN_B4 //LCD_EN IS LCD_CLK
#define LCD_RW PIN_B3 // RW=0写 RW=1读
#define LCD_RS PIN_B2 // RS=1数据 RS=0命令
#define LCD_RST PIN_B1 // LCD RESET
#define LCD_CS RIN_B5 // Chip Select
//#define LCD_DAT_BUS PO // 8bit并行数据总线
#define R_Lcd_Delay 0X02 //lcd_en 电平保持时间,根据系统频率调整
#define R_Lcd_Rst 0X2000 //lcd reset 保持时间
//================下面是BUFFER,可以改到RAM里========================
const int8 lcd_buf[]=
{// 128*64
0xFF,0x01,0x01,0x01,0x21,0x61,0x41,0xC1,0xA1,0xE1,0xB1,0xB1,0xE1,0xA1,0xA1,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0xF1,0xF1,0xD1,0xD1,0xD1,0xD1,0xF1,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0xE1,0xF1,0x61,0x61,0x61,0x61,0x61,0x61,0xF1,0x61,0x01,
0x01,0x01,0x01,0x81,0x81,0x81,0xB1,0x91,0x91,0x91,0x91,0x91,0x91,0xA1,0x81,0x81,
0x81,0x81,0x01,0x01,0xA1,0x71,0x51,0x51,0x71,0xC1,0x01,0x71,0xD1,0x51,0x71,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
0xFF,0x00,0x01,0x81,0x99,0x8A,0x86,0x81,0xBF,0x8A,0x8B,0x85,0x87,0x8B,0x98,0x98,
0x90,0x80,0x80,0x80,0xBE,0x9A,0x9B,0x9A,0xBE,0x80,0xBE,0xBE,0xAB,0xAA,0xAA,0xBE,
0x82,0x80,0x80,0xB0,0x90,0x96,0x95,0x91,0x9F,0x91,0x91,0x9F,0x91,0x95,0xB6,0xB0,
0x90,0x80,0x80,0x81,0x88,0x8C,0x86,0xA2,0xA0,0xBF,0x9F,0x80,0x86,0x84,0x89,0x91,
0x81,0x80,0x80,0x84,0x85,0x9D,0x97,0x97,0x9D,0x89,0x9D,0x9F,0x97,0x97,0xBF,0x84,
0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x02,0x22,0x62,0x42,0xE2,0x42,0xC2,0xA2,0xB2,0xA2,0xA2,0x22,0xE2,
0xC2,0x02,0x02,0x82,0x82,0x82,0xB2,0x92,0x92,0x92,0x92,0x92,0x92,0xA2,0x82,0x82,
0x82,0x82,0x02,0xC2,0xA2,0xA2,0xE2,0x92,0x92,0xF2,0xF2,0xA2,0xA2,0xA2,0xF2,0x02,
0x02,0x02,0x02,0x02,0x02,0x62,0xE2,0x22,0xA2,0xB2,0x72,0x62,0xA2,0xA2,0x22,0x22,
0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x01,0x19,0x19,0x0E,0x25,0x27,0x1B,0x1B,0x07,0x0B,0x1B,0x1F,0x20,
0x00,0x00,0x00,0x01,0x08,0x0C,0x06,0x22,0x20,0x3F,0x1F,0x00,0x06,0x04,0x09,0x11,
0x01,0x00,0x00,0x06,0x02,0x1F,0x3F,0x01,0x12,0x15,0x15,0x1F,0x1F,0x15,0x15,0x10,
0x10,0x00,0x00,0x08,0x08,0x0F,0x01,0x02,0x12,0x22,0x23,0x1F,0x02,0x02,0x02,0x06,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x45,0xC5,0x45,0x05,0x05,0x05,0x05,0x05,0x05,0x85,0x45,0x45,0x45,
0x45,0xC5,0x05,0x45,0xC5,0x45,0x45,0x45,0x85,0x05,0x05,0x05,0x45,0x45,0xC5,0x45,
0x45,0x05,0x05,0x45,0xC5,0x85,0x05,0x05,0x45,0xC5,0x45,0x45,0xC5,0x45,0x05,0x05,
0x05,0x05,0x05,0x05,0x45,0x45,0xC5,0x45,0x45,0x05,0x05,0x45,0xC5,0x85,0x05,0x05,
0x45,0xC5,0x45,0x45,0xC0,0x40,0x40,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x81,
0xFF,0x81,0x80,0x80,0xC0,0x00,0x70,0x88,0x88,0x70,0x00,0x00,0x50,0xA8,0xA8,0xF0,
0x80,0x00,0x70,0x88,0x89,0xFF,0x80,0x00,0x88,0xF9,0x80,0x00,0x00,0x88,0xF8,0x88,
0x08,0xF0,0x80,0x00,0xD0,0xA8,0xA8,0x98,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x80,0x00,0x3E,0xC1,0x00,0x00,0x00,
0x80,0x41,0x00,0x00,0xFF,0x00,0x00,0x00,0x80,0x7F,0x00,0x00,0x00,0x00,0xFF,0x00,
0x00,0x00,0x00,0x00,0xFF,0x01,0x06,0x38,0xC0,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,
0x00,0x80,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x06,0x38,
0xC0,0xFF,0x00,0x00,0xFF,0x04,0x04,0x1F,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,
0x00,0x00,0x08,0xF9,0x09,0x01,0x01,0x01,0x00,0x00,0x00,0x80,0x99,0x99,0x01,0x01,
0x01,0x00,0x80,0x81,0x01,0x01,0x00,0x80,0x80,0x01,0x00,0x81,0x81,0x81,0x81,0x81,
0x81,0x01,0x00,0x80,0x81,0x81,0x81,0x81,0x81,0x00,0x00,0x01,0x01,0x01,0x00,0x00,
0x00,0x01,0x00,0x71,0x09,0x09,0x09,0x89,0x71,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,
0xE0,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x30,0x08,0x88,0x88,0x48,
0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,
0xE0,0x00,0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0xA0,0xBF,0xA0,0xA0,0xA0,0xA0,0xB0,0x80,0x80,0xA0,0xA0,0xBF,0xA0,0xA0,
0x80,0x80,0x80,0x9F,0xA0,0xA0,0xA0,0x90,0xBF,0xA0,0x80,0xA1,0xB0,0xAC,0xA2,0xA1,
0xB0,0x80,0x80,0xA1,0xB0,0xAC,0xA2,0xA1,0xB0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0xB0,0xA8,0xA4,0xA2,0xA1,0xB0,0x80,0x80,0x8F,0x90,0xA0,0xA0,0x90,
0x8F,0x80,0x80,0x8F,0x90,0xA0,0xA0,0x90,0x8F,0x80,0x80,0x98,0xA0,0xA0,0xA0,0x91,
0x8E,0x80,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x80,0x8F,0x90,0xA0,0xA0,0x90,
0x8F,0x80,0x80,0x87,0x84,0xA4,0xA4,0xBF,0xA4,0x80,0x80,0x80,0x80,0x80,0x80,0xFF
};
//================写操作============================
//INPUT: RS表示写的为数据还是命令,DATA是需要写的数据。
//OUTPUT: NONE
void lcd_write(int8 rs,int8 data)
{
//LCD_CS=0;
output_low(LCD_CS);
if(rs==0)
output_low(LCD_RS);
else
output_high(LCD_RS);
output_low(LCD_RW);
//LCD_DAT_BUS=data; //write data
output_c(data);
output_high(LCD_EN);
// LCD_EN=1; //CLK=1
delay(R_Lcd_Delay);//delay
output_low(LCD_EN);
// delay(R_Lcd_Delay);//delay
output_high(LCD_CS);
// LCD_CS=1;
}
//=====================lcd 初始化=======================
void lcd_init(void)
{
//LCD_RST=0; //硬件复位
output_low(LCD_RST);
delay(R_Lcd_Rst);
// LCD_RST=1;
output_high(LCD_RST);
delay(R_Lcd_Rst);
lcd_write(0,0xe2); //软件复位
delay(R_Lcd_Delay);
lcd_write(0,0xa2); //1/9 bias
delay(R_Lcd_Delay);
lcd_write(0,0xa0); //SEG扫描方向when adc=0,seg1----132
delay(R_Lcd_Delay);
lcd_write(0,0xc8); //COM扫描方向
delay(R_Lcd_Delay);
lcd_write(0,0x2f); ;//打开全部的POWER,包括PUMP电路、分压电路、基准调节电路
delay(R_Lcd_Delay);
//lcd_write(0,0x27); //在这里调节RA/RB的比例关系,使V0等于玻璃电压,在用外部电阻调节时,可以不设置
//delay(R_Lcd_Delay);
lcd_write(0,0x81);
lcd_write(0,0x1F); // 0X00 ~ 0X3F 此命令和0X81连用可以调节亮度
delay(R_Lcd_Delay);
lcd_write(0,0x40); // 显示地址归位
delay(R_Lcd_Delay);
lcd_write(0,0xe0);
delay(R_Lcd_Delay);
lcd_write(0,0xaf); //开显示
}
//==================清显示内容================================
//NOTE:此函数不会影响单片机显示BUFFER的内容,仅仅对屏幕填充一个数。
//INPUT: DAT是要对每个显示单元写的数,0X00就是清屏,0XFF就是全显。
//OUTPUT:NONE
void lcd_clear(int8 dat)
{
int8 i,j;
for(i = 0xb0;i<0xb8;i++)
{
lcd_write(0,i); //写页地址
lcd_write(0,0x0a); //写初始列地址
lcd_write(0,0x00);
for(j = 0x00;j<0x41;j++)//
{ lcd_write(1,dat); //写显示数据
lcd_write(1,dat);
}
}
}
//===============更新显示======================================
//NOTE:此函数将显示BUFFER的内容刷新到屏幕上
//INPUT: NONE
//OUTPUT:NONE
void lcd_disp_update(void)
{int8 i,j;
int8 tmp=0;
for(i = 0xb0;i<0xb8;i++)
{
lcd_write(0,i); //写页地址
lcd_write(0,0x0a); //写初始列地址
lcd_write(0,0x00);
for(j = 0x00;j<0x41;j++)//
{ lcd_write(1,lcd_buf[tmp]); //写显示数据
++tmp;
lcd_write(1,lcd_buf[tmp]); //写显示数据
++tmp;
}
}
}
void delay(unsigned int i)
{
while(i)
i--;
}
void main()
{
set_tris_a(0xff);
set_tris_b(0x01);
set_tris_c(0x00);
port_b_pullups(0xff);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -