- 打卡等级:以坛为家II
- 打卡总天数:535
- 最近打卡:2025-06-15 08:26:34
荣誉版主
- 积分
- 3785
|
发表于 2024-12-14 22:32:31
|
显示全部楼层
按照惯例,应该是先来一个“跑马灯”例程的,但是这次,有一个例外......
本实验为驱动控制彩屏显示,
大凡传统的STC89C52学习开发板,都会设计一个LCD1602的排母接口,引出8位数据口和三个控制IO口,以及支持背光控制端。
恰好现在市面流行的一些小尺寸彩屏,都遵循这样的排列:
GND VCC SCL SDA RST DC CS BLK
所采用的TFT彩色显示屏为 1.8寸 ST7735驱动,分辨率为128*160,8针引脚也是上述排列。
恰好利用,将屏反序插入LCD1602的排母中,即:屏第1脚对应排母第16脚,屏第2脚对应排母第15脚,依次类推...
与事先设想的一致,顺利驱动。如图:
本实验内容有二:
一是展示对彩屏的控制显示,包括中西文显示,简单线、色块绘图,如上图;
二是实现串口通讯,启用核心板UART3串口(P50、P51),开发板的DB9针接口,经过一个RS232转USB的通讯线,接上位PC机,实现PC机与单片机的通讯,
上位机向单片机发送的字符串,单片机将原路返回给上位机。可用ISP软件或普通串口调试助手操作观察。
实验体会:
1, “擎天柱”核心板,用一根USB数据线,供电和下载调试,极为方便;
2,制作成仿真芯片,选USB模式,下载与调试,十分顺利;
主程序:(为了确保串口通讯正常,下载时主频设为22.1184MHz)
//===========================================================
// OLED 1.8" 彩色显示屏 160*128 实验程序
// 驱动: ST7735S
// 基于: AI8051U @ 先悦实验板编程
// 整理:编程: 浦晓明(浦江一水) For 国芯论坛 2024-12-14
//===========================================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "AI8051U.h"
#include "AI8051U_SYS.h"
#include "LCD_7735.H"
#include "PIC.H"
#include "UART3.H"
//全局变量说明
char S[20]; //显示缓存
void Delay1ms(void) //@22.1184MHz
{ unsigned char data i, j;
_nop_();_nop_();
i = 22; j = 128;
do
{ while (--j);
} while (--i);
}
void Delayms(unsigned int count)
{ unsigned int i;
for(i=0;i<count;i++)
Delay1ms();
}
//主程序入口
void main(void)
{ unsigned char i;
unsigned int wait=0;
SYS_Init(); //系统初始化
LCD_Init(); //显示屏初始化
UART3_Init(0); //串口3通讯初始化 (@22.1184MHz 波特率115200)
EA = 1; //开总中断
PrintString3("AI8051U UART3 Test Programme!\r\n"); //UART3发送一个字符串
while(1)
{ //for(i=0;i<16;i++)LCD_CLS(i); //基本16色清屏测试
LCD_CLS(1); //蓝色清屏
LCD_H24(20,4,"**单片机**",12,1); //24点阵中西文混合显示字符串
LCD_A24(38,30,"Ai8051U",15,1,7); //显示12*24西文字符串
LCD_H16(28,60,"Ai8051U单片机",10,1); //16点阵中西文混合显示字符串
LCD_A08(47,80,"A08_Ai8051U",15,1,11); //显示6*8西文字符串
LCD_A12(36,99,"A12_Ai8051U",14,1,11); //显示8*12西文字符串
Delayms(2000);
LCD_CLS(0);
LCD_A16(0,0,"LCDST7735_PIC&BMP",14,0,17);
LCD_LineH(0,18,160,12); //画水平线
LCD_BMP(12,40,64,64,P_SET); //彩色图标显示
LCD_BMP(84,40,64,64,P_ZER);
LCD_Line(0,125,160,125,11); //画两点一线
Delayms(2000);
LCD_CLS(0);
LCD_A16(0,0,"ST7735S_32_COLOR",13,0,16);
for(i=0;i<16;i++)LCD_Box(i*10,20,10,50,7,7,i); //显示彩色条(色号0..15)
for(i=0;i<16;i++)LCD_Box(i*10,70,10,50,7,7,(unsigned char)(i+16)); //显示彩色条(色号16..31)
Delayms(2000); //延时2s
PrintString3("UART3 OK!\r\n"); //UART3发送一个字符串(运行指示)
}
}
工程文件包:供有兴趣的初学单片机的同学坛友参考。
04-TestLCD7735(128x160) UART3.rar
(127.89 KB, 下载次数: 90)
|
|