本帖最后由 nokia5320 于 2025-7-26 01:09 编辑
2023年在数码之家论坛申请了 开天斧三的开发板,试了一次就吃灰了。前几天打算做个小东西,利用红包买了几个STC8H8K64U的单片机,之前大学就玩过STC89系列的,看了下stc8系列的使用前要初始化引脚,因为没系统学过,在这里载了大跟头。买了本丁向荣老师的“单片微机原理与接口技术-基于stc8h8k64u”,感觉比文档分了条理。拿出来在数码之家那里收集的屏幕,就是建设 银行优盾拆的屏幕 ST7567,128x64像素,带背光很适合再次利用。 |
cog是st7567已经明确了,驱动就好办了。但是之前一直是89系列模拟SPI时序驱动,这次想玩玩硬件驱动的,可惜《单片微机原理与接口技术-基于stc8h8k64u》里的范例给的是SPI管理25系列ROM,可以参考但有限,网上搜也没找到这个型号的,那就自己折腾。
- // 单片机和液晶引脚连接
- LCD_CS = P2^0; // 片选 (CS)
- LCD_RST = P2^1; // 复位 (RST)
- LCD_DC = P1^0; // 数据/命令选择 (A0/DC)
- LCD_SCL=P2^5 LCD_SDA=P2^3
注意st6567电压1.8--3.3v,开天斧三5v输入 5 or 3.3v作为系统电压,按道理可以直接改3.3v,但是后续实验万一需要两路电压呢,所以直接在1117 3.3v的输出电容上焊接了3.3v插针,作为lcd的供电。这个板子为啥没提前预留。
st7567.c文件:
- #include "STC8H.H"
- #include "font16.h"
- // 引脚定义
- sbit LCD_CS = P2^0; // 片选 (CS)
- sbit LCD_RST = P2^1; // 复位 (RST)
- sbit LCD_DC = P1^0; // 数据/命令选择 (DC)
- // LCD_SCL=P2^5 LCD_SDA=P2^3
- extern void delay_ms(unsigned int ms);
- extern void delay_us(unsigned int ms);
- /******************** SPI初始化函数(优化CS控制) ********************/
- void SPI_Init() {
- // 1. 开启扩展寄存器访问
- P_SW2 = 0x80; // EAXFR=1
- // 2. 配置SPI引脚组选择
- P_SW1 = 0x04; // SPI_S[1:0]=01,选择第二组(P2.2/3/4/5)
- // 3. 配置SPI控制寄存器
- SPCTL = 0xDC; // 11011100:
- // SPEN=1, SSIG=1, CPHA=0, CPOL=1, MSTR=1
- // DORD=0, SPR1=1, SPR0=0 -> F_OSC/16 (24MHz/16=1.5MHz)
- // 4. 配置引脚模式
- P2M0 = 0x2B; // 00101011: P2.0(CS), P2.1(RST), P2.3(MOSI), P2.5(SCLK)推挽输出
- P2M1 = 0x00; // 所有P2引脚设置为模式0(推挽输出)
- P1M0 = 0x01; // P1.0(DC)推挽输出
- P1M1 = 0x00; // 所有P1引脚设置为模式0(推挽输出)
- // 5. 初始状态设置
- LCD_CS = 1; // 初始片选无效
- LCD_DC = 0; // 命令模式
- LCD_RST = 1; // 不复位
- SPDAT = 0; // 清空数据寄存器
- SPSTAT = 0xC0; // 清除状态标志
- // 6. 关闭扩展寄存器访问
- P_SW2 = 0x00; // EAXFR=0
- }
- /******************** SPI发送函数 ********************/
- void SPI_SendByte(unsigned char dat) {
- SPDAT = dat; // 写入数据
- while (!(SPSTAT & 0x80)); // 等待传输完成
- SPSTAT = 0xC0; // 清除标志位
- }
- /******************** LCD写命令函数(简化CS) ********************/
- void LCD_Write_Command(unsigned char cmd) {
- LCD_DC = 0; // 命令模式
- SPI_SendByte(cmd); // 发送命令
- delay_us(1); // 短延时确保稳定
- }
- /******************** LCD写数据函数(简化CS) ********************/
- void LCD_Write_Data(unsigned char dat) {
- LCD_DC = 1; // 数据模式
- SPI_SendByte(dat); // 发送数据
- delay_us(1);
- }
- /******************** lcd显示清屏 ********************/
- void LCD_Claer() {
- unsigned char x,y;
- for(y=0;y<8;y++)
- {
- LCD_Write_Command(0xb0+y);//页地址
- LCD_Write_Command(0x00);//低地址
- LCD_Write_Command(0x10);//高地址
- for(x=0;x<128;x++)
- LCD_Write_Data(0x00);
- }
- }
- /******************** LCD初始化函数(优化CS控制) ********************/
- void LCD_Init() {
- // 硬件复位
- LCD_RST = 0;
- delay_us(15);
- LCD_RST = 1;
- delay_us(15);
- // 开始通信:永久拉低CS
- LCD_CS = 0;
- // 初始化序列
- LCD_Write_Command(0xE2); // 软复位
- delay_us(100);
- LCD_Write_Command(0xA2); // 1/9 bias
- LCD_Write_Command(0xA0); // ADC正常方向
- LCD_Write_Command(0xC8); // COM输出反向
- LCD_Write_Command(0xA4); // 正常显示(非全亮)
- LCD_Write_Command(0xA6); // 正常显示(非反白)
- LCD_Write_Command(0x24); // V0电阻设置
- // 对比度设置
- LCD_Write_Command(0x81);
- LCD_Write_Command(0x28); // 对比度值
- // 升压电路设置
- LCD_Write_Command(0xF8);
- LCD_Write_Command(0x00); // 升压比2x
- // 分步开启电源
- LCD_Write_Command(0x2C); // Booster on
- delay_us(22);
- LCD_Write_Command(0x2E); // Regulator on
- delay_us(22);
- LCD_Write_Command(0x2F); // Follower on
- delay_us(8);
- LCD_Claer() ;
- LCD_Write_Command(0x40); // 显示起始行0
- LCD_Write_Command(0xAF); // 开启显示
- }
- /******************** 设置显示位置 ********************/
- void LCD_SetPosition(unsigned char x, unsigned char y) {
- LCD_Write_Command(0xB0 | y); // 设置页地址
- LCD_Write_Command(0x10 | (x >> 4)); // 设置列地址高4位
- LCD_Write_Command(x & 0x0F); // 设置列地址低4位
- }
- /******************** 显示字符调用font文件的函数 ********************/
- //x横坐标,y页地址=纵坐标除以8,注意每个字符高度占用16bit=2page,最多完整显示4page,y不是座标!
- //如果用font文件,那么只能完美显示4行y=0-1,2-3,4-5,6-7page.bit 这个参数是反显一个像素,没有用st7567的命令而是用像素取反运算
- void Display_Char(unsigned char x, unsigned char y, unsigned char ch_index,bit b) {
- unsigned char i;
- LCD_SetPosition(x, y);
- ch_index= ch_index-32;
- for(i=0;i<8;i++)
- {
- if(b)
- LCD_Write_Data(~F8X16[ch_index*16+i]);
- else
- LCD_Write_Data(F8X16[ch_index*16+i]);
- }//P8x16上半部分显示
- LCD_SetPosition(x,y+1);
- for(i=0;i<8;i++)
- {
- if(b)
- LCD_Write_Data(~F8X16[ch_index*16+i+8]);
- else
- LCD_Write_Data(F8X16[ch_index*16+i+8]);
- }//P8x16下半部分显示
- }
- /******************** 显示字符串调用font文件的函数 ********************/
- /*函数名称:Display_Chars
- 功能:Lcd显示字符串
- 输入:x坐标,y坐标其实是8y行,因为每Page占用8行,字符串,b反显
- 输出:无
- 备注:x<=128,y<=64
- *********************************/
- void Display_Chars(unsigned char x,y,unsigned char *ch,bit b)
- {
- while(*ch!='\0')
- {
- if(x>120){x=0;y+=2;}//如果x在最右边,则回到左边且下移1页=8行
- Display_Char(x,y,*ch++,b);
- x+=8;
- }
- }
- /*********************************
- 函数名称:Display_pic
- 功能:Lcd显示图片
- 输入:x起始坐标,y起始坐标,x终止坐标,y终止坐标,图片数组
- 输出:无
- 备注:x<=128,y<=64,x1<x2,y1<y2
- *********************************/
- void Display_pic(unsigned char x0,y0,x1,y1,unsigned char *pic)
- {
- unsigned char x,y;
- if(y1%8==0) y=y1/8;
- else y=y1/8+1;
- for(y=y0;y<y1;y++)
- {
- LCD_SetPosition(x0,y);
- for(x=x0;x<x1;x++)
- {
- LCD_Write_Data(*pic++);
- }
- }
- }
复制代码
CPHA=0, CPOL=1, 我的理解是这样的:(为了简单测试成功。我采用单片机做主机,lcd从机,忽略ss引脚,cs一直拉低)
LCD_Init里初始化st7567的参数是来自数码之家 ID:lizi 的st7565源码,修改了对比度值为0x28,
Display_Char函数是为了显示font16.h文件内字符设计的。Display_Chars顾名思义显示字符串,
main.c文件:
- #include "STC8H.H"
- #include <intrins.h>
- #include "ST7567.H"
- unsigned char code BMP0[1024] = { /* 单色bmp文件,不要文件头信息,此图片是数码之家logo */
- 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,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,0X00,0X00,
- 0X00,0X00,0X00,0X00,0XE0,0X04,0X06,0X02,0X02,0X02,0X02,0X02,0X02,0X02,0X02,0XC2,
- 0XFA,0XFA,0XFA,0XFE,0XFE,0XFE,0XFE,0X7E,0X7E,0X7E,0X7E,0X7E,0X7E,0XFE,0XFE,0XFE,
- 0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFC,0XF8,
- 0X00,0X00,0X00,0X00,0X00,0X00,0XA0,0XF0,0XE0,0XC0,0XF8,0XF0,0XE0,0XF0,0XB0,0X00,
- 0XE0,0XF8,0XF8,0XD0,0XC0,0XC0,0XC0,0X00,0X70,0XF0,0XF0,0XF0,0X70,0X70,0X70,0X70,
- 0XF0,0XF0,0X70,0X70,0X70,0XF0,0XF0,0XF0,0X00,0X00,0X00,0X80,0X80,0X80,0X80,0X80,
- 0X90,0XF0,0XF8,0XF0,0XC0,0X80,0X80,0X80,0X80,0X80,0X00,0X00,0XC0,0XE0,0XE0,0XE0,
- 0XE0,0XE0,0XE0,0XF0,0XF0,0XF0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0X00,0X00,0X00,
- 0X00,0X00,0X00,0X00,0XFF,0X00,0X00,0X00,0X80,0XC0,0XC0,0XF0,0XF0,0XF8,0XFF,0X7F,
- 0X3F,0X1F,0X0F,0X07,0X03,0X01,0X80,0XC0,0XE0,0XF0,0XF0,0XE0,0XC0,0X80,0X01,0X03,
- 0X07,0X0F,0X1F,0X3F,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
- 0X00,0X00,0X00,0X00,0X00,0X04,0X7D,0XEF,0XF7,0XFF,0X7F,0XEF,0XE7,0XEF,0X0F,0X1F,
- 0X3F,0XFF,0XF0,0XE1,0XFF,0X1F,0X01,0X10,0X7C,0XFF,0XFF,0X1F,0XFC,0XFC,0XF8,0X80,
- 0X9F,0X9F,0X98,0X98,0X9C,0X3F,0XFF,0XF8,0XF8,0X00,0X00,0X01,0X01,0X01,0X81,0XC1,
- 0XC1,0XE1,0XF1,0X79,0X79,0X1F,0X0F,0X07,0X03,0X01,0X00,0X00,0X01,0X91,0XB9,0XDB,
- 0XDF,0XEF,0X7F,0XBF,0XFF,0XFB,0XF3,0XF3,0XFB,0XFB,0XFD,0X09,0X01,0X00,0X00,0X00,
- 0X00,0X00,0X00,0X00,0XFF,0XFE,0XFE,0XFF,0XFF,0XFF,0XFF,0X07,0X03,0X01,0X00,0X00,
- 0XE0,0XF0,0X18,0X0C,0X0F,0X0F,0X0F,0X0F,0X0F,0X0F,0X1F,0X1F,0X1F,0X1F,0X3F,0X7E,
- 0XFC,0XF8,0XF8,0XE0,0XC0,0X00,0X01,0X03,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
- 0X00,0X00,0X00,0X00,0X00,0X00,0X09,0X0F,0X0F,0X0F,0X07,0X07,0X0F,0X0F,0X0C,0X1C,
- 0X0E,0X07,0X07,0X07,0X0F,0X0E,0X00,0X00,0X00,0X0F,0X0F,0X06,0X0F,0X0F,0X0F,0X01,
- 0X01,0X03,0X0D,0X0D,0X09,0X0C,0X0F,0X0F,0X03,0X00,0X0E,0X0F,0X07,0X07,0X07,0X0F,
- 0X0F,0X0D,0X0C,0X0C,0X0C,0X0C,0X0C,0X0C,0X0C,0X0C,0X0C,0X00,0X0C,0X0D,0X0D,0X07,
- 0X06,0X0F,0X1F,0X1F,0X19,0X1F,0X0F,0X07,0X00,0X03,0X07,0X07,0X06,0X00,0X00,0X00,
- 0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XC0,
- 0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0XFE,0XFE,0XFE,0X00,0X00,0X00,0X00,
- 0X00,0X87,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
- 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XE0,0XE0,0XE0,0X00,0X00,0X00,0X00,0XC0,
- 0XE0,0XE0,0XE0,0X00,0X00,0X80,0X00,0X00,0X00,0X00,0X80,0X00,0X00,0XE0,0XE0,0XE0,
- 0X60,0X60,0XE0,0XE0,0XC0,0X00,0X00,0X20,0X20,0X20,0X00,0X00,0X00,0X80,0X80,0X00,
- 0X80,0X80,0X00,0X00,0XA0,0X20,0X00,0X00,0X80,0XC0,0XA0,0X00,0X00,0X00,0X00,0X00,
- 0X00,0X00,0X00,0X80,0X80,0X80,0X00,0X00,0X80,0X00,0X00,0X80,0X80,0X00,0X00,0X00,
- 0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X80,0XC0,0XFF,
- 0XFF,0XFF,0XE0,0XE0,0XE0,0XE0,0XE0,0XE0,0XE1,0XE1,0XE1,0XE1,0XE0,0XF0,0XF0,0XF8,
- 0XFC,0XFF,0XFF,0XFF,0XFF,0XC0,0X80,0X80,0XC0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
- 0X00,0X00,0X00,0X00,0X00,0X00,0X40,0X7F,0X3F,0X03,0X03,0X7F,0X78,0X3C,0X0F,0X43,
- 0XFF,0X7F,0X0F,0X00,0X01,0XFF,0XFC,0XF8,0X3E,0X0F,0X03,0X00,0X7C,0X7F,0X7F,0X60,
- 0X60,0X70,0X3C,0X1F,0X0F,0X00,0X7C,0X7F,0X1F,0X00,0X38,0X7E,0XE3,0X61,0XE3,0XFF,
- 0XFF,0X07,0X00,0X7E,0X3F,0X00,0X00,0X3F,0X7F,0XFF,0X41,0X01,0XE0,0X60,0X00,0X00,
- 0X3C,0X7F,0XE3,0XC1,0X61,0X01,0X40,0X7E,0X3F,0X0F,0X03,0X3F,0X7F,0X1F,0X00,0X00,
- 0X00,0X00,0X00,0X00,0X07,0X1F,0X1F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,
- 0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,
- 0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X3F,0X1F,0X0F,0X07,
- 0X00,0X00,0X00,0X00,0X00,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,
- 0X01,0X01,0X03,0X03,0X03,0X03,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,
- 0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X01,0X03,0X03,0X03,0X03,0X03,0X03,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,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,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,0X00,0X00,0X00,0X00,
- };
- //// 简单延时函数//@24.000MHz
- void delay_ms(unsigned int ms) {
- unsigned char data i, j;
- while(ms--){
- i = 24;
- j = 85;
- do
- {
- while (--j);
- } while (--i);}
- }
- void delay_us(unsigned int us) //@24.000MHz
- {
- unsigned char data i;
- while(us--){
- _nop_();
- _nop_();
- i = 3;
- while (--i);}
- }
- /******************** 主函数 ********************/
- void main() {
- /* 时钟设置 */
- // P_SW2 = 0x80; // 开启扩展寄存器访问
- //
- // // 设置24MHz主时钟
- // IRCBAND = 0x01; // 内部24MHz时钟
- //
- // // 时钟分频器设置
- // #if defined(CLKDIV)
- // CLKDIV = 0x00; // 不分频
- // #elif defined(CKDIV)
- // CKDIV = 0x00; // 不分频
- // #else
- // // 直接地址访问作为备选
- // unsigned char xdata *clkdiv = (unsigned char xdata *)0xFE00;
- // *clkdiv = 0x00;
- // #endif
-
- P_SW2 = 0x00; // 关闭扩展寄存器访问
-
- SPI_Init(); // 初始化SPI
- LCD_Init(); // 初始化LCD
-
- // 显示"HELLO"
- // Display_Char(0,0,'H',1); Display_Char(0,2,'e',0);
- // Display_Char(0,4,'&',1); Display_Char(0,6,'@',0);
- // Display_Chars(8,3,"hello,STC8H",0);
- Display_pic(0,0,128,8,BMP0);
- while(1) {
- // 主循环
- Display_pic(0,0,128,8,BMP0);
- delay_ms(1000);LCD_Claer();
- Display_Chars(0,0,"hello,STC8H8K64U",0);
- Display_Chars(0,2," ST7567-SPI ",1);
- Display_Chars(0,4,"www.mydigit.cn",0);
- delay_ms(1000);LCD_Claer();
- }
- }
复制代码
字模头文件:font16.h
- /*
- 常用字母及其符号字模,8*16像素大小。使用时每个显示的字符占用16Byte,分为上下半部分显示,
- 前8Byte是字符上半部分,后8Byte是下班部分。和ascii的顺序相差32,所以要显示的ascii
- ascii[n]= F8X16[n-32]
- */
- code unsigned char F8X16[]=
- {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0
- 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1
- 0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2
- 0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3
- 0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4
- 0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5
- 0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6
- 0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7
- 0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8
- 0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9
- 0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10
- 0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14
- 0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15
- 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16
- 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17
- 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18
- 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19
- 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20
- 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21
- 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22
- 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23
- 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24
- 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25
- 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26
- 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27
- 0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28
- 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29
- 0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30
- 0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31
- 0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//[url=home.php?mod=space&uid=3057940]@[/url] 32
- 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33
- 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34
- 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35
- 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36
- 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37
- 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38
- 0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39
- 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40
- 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41
- 0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42
- 0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43
- 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44
- 0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45
- 0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46
- 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47
- 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48
- 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49
- 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50
- 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51
- 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52
- 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53
- 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54
- 0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55
- 0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56
- 0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57
- 0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58
- 0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59
- 0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60
- 0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61
- 0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63
- 0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 64
- 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65
- 0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66
- 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67
- 0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68
- 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69
- 0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70
- 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71
- 0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72
- 0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73
- 0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74
- 0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75
- 0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76
- 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77
- 0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78
- 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79
- 0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80
- 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81
- 0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82
- 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83
- 0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84
- 0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85
- 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86
- 0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87
- 0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88
- 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89
- 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90
- 0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91
- 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92
- 0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93
- 0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
- };
- //unsigned char code F16x16[]={
- //};
复制代码 ST7567.h文件
- #ifndef _ST7565_H
- #define _ST7565_H
- #include <STC8h.h>
- extern void delay_ms(unsigned int ms);
- extern void delay_us(unsigned int us);
- void SPI_Init();
- void SPI_SendByte(unsigned char dat);
- void LCD_Write_Command(unsigned char cmd);
- void LCD_Write_Data(unsigned char dat);
- void LCD_Claer();
- void LCD_Init();
- void LCD_SetPosition(unsigned char x, unsigned char y);
- void Display_Char(unsigned char x, unsigned char y, unsigned char ch_index,bit b);
- void Display_Chars(unsigned char x,y,unsigned char *ch,bit b);
- void Display_pic(unsigned char x0,y0,x1,y1,unsigned char *pic);
- //void Lcd_P8x16char(unsigned char x,y,char_,bit b);
- //void Lcd_P8x16Str(unsigned char x,y,unsigned char *ch,bit b);
- //void Lcd_P16x16Ch(unsigned char x, y, N);
- #endif
复制代码 最终显示效果:显示数码之家logo[取模方式在图片上]和字符串循环显示。
源码,取模软件,st7567.pdf 已打包,keil5测试没问题。
通过网盘分享的文件:st7567-spi 测试.zip
链接: https://pan.baidu.com/s/13ha_AQ0_4wsVe0vSxJJnIQ?pwd=ug9a 提取码: ug9a 复制这段内容后打开百度网盘手机App,操作更方便哦
有一个问题,我怎么感觉硬件spi和软件spi没啥区别啊,能节省多少资源呢?因为我是爱好者不知道实际开发中存在的问题,我想做的是STC8H8K64 + HWL8110(uart通信,电量统计的芯片)+st7567+UART蓝牙无线发送一点数据。这个工程我需要注意什么?欢迎赐教。
最终感谢stc公司送我的开天斧三开发板,好像那个送我id的号被封了。。。
|