STM32F103ZE通过字符串对R61509VN显示屏画线的程序

时间: 2023-12-23 16:03:18 浏览: 31
以下是基于STM32F103ZE通过字符串对R61509VN显示屏画线的程序的示例代码: ```c #include "stdio.h" #include "stdlib.h" #include "string.h" #include "stm32f10x.h" #define LCD_CMD (*((volatile unsigned short *)0x60000000)) #define LCD_DATA (*((volatile unsigned short *)0x60020000)) void LCD_Init(void) { LCD_CMD = 0x0000; //软复位 delay(1000); LCD_CMD = 0x00E3; //Power Control 2 LCD_DATA = 0x3008; LCD_DATA = 0x0013; LCD_CMD = 0x00E7; //Driver Output Control LCD_DATA = 0x0012; LCD_CMD = 0x00EF; //Power Control 3 LCD_DATA = 0x1231; LCD_CMD = 0x0025; //VCOM Control LCD_DATA = 0x0023; LCD_CMD = 0x00B1; //Frame Rate Control LCD_DATA = 0x000B; LCD_DATA = 0x0003; LCD_CMD = 0x00B4; //Display Inversion Control LCD_DATA = 0x0000; LCD_CMD = 0x00C0; //Power Control 1 LCD_DATA = 0x0026; LCD_DATA = 0x0004; LCD_CMD = 0x00C1; //Power Control 2 LCD_DATA = 0x0011; LCD_CMD = 0x00C5; //VCOM Control 2 LCD_DATA = 0x0035; LCD_DATA = 0x003E; LCD_CMD = 0x00C7; //VCOM Control 3 LCD_DATA = 0x00BE; LCD_CMD = 0x003A; //Pixel Format Set LCD_DATA = 0x0005; LCD_CMD = 0x0036; //Memory Access Control LCD_DATA = 0x0028; LCD_CMD = 0x002A; //Column Address Set LCD_DATA = 0x0000; LCD_DATA = 0x0000; LCD_DATA = 0x0001; LCD_DATA = 0x003F; LCD_CMD = 0x002B; //Page Address Set LCD_DATA = 0x0000; LCD_DATA = 0x0000; LCD_DATA = 0x0001; LCD_DATA = 0x00DF; LCD_CMD = 0x0029; //Display On } void LCD_WriteReg(unsigned short index, unsigned short value) { LCD_CMD = index; LCD_DATA = value; } void LCD_SetWindow(unsigned short x0, unsigned short y0, unsigned short x1, unsigned short y1) { LCD_CMD = 0x002A; //Column Address Set LCD_DATA = x0 >> 8; LCD_DATA = x0 & 0xFF; LCD_DATA = x1 >> 8; LCD_DATA = x1 & 0xFF; LCD_CMD = 0x002B; //Page Address Set LCD_DATA = y0 >> 8; LCD_DATA = y0 & 0xFF; LCD_DATA = y1 >> 8; LCD_DATA = y1 & 0xFF; LCD_CMD = 0x002C; //Memory Write } void LCD_DrawLine(unsigned short x0, unsigned short y0, unsigned short x1, unsigned short y1, unsigned short color) { int dx = x1 - x0; int dy = y1 - y0; int stepx, stepy; if (dy < 0) { dy = -dy; stepy = -1; } else { stepy = 1; } if (dx < 0) { dx = -dx; stepx = -1; } else { stepx = 1; } dy <<= 1; dx <<= 1; LCD_SetWindow(x0, y0, x0, y0); LCD_DATA = color; if (dx > dy) { int fraction = dy - (dx >> 1); while (x0 != x1) { if (fraction >= 0) { y0 += stepy; fraction -= dx; } x0 += stepx; fraction += dy; LCD_SetWindow(x0, y0, x0, y0); LCD_DATA = color; } } else { int fraction = dx - (dy >> 1); while (y0 != y1) { if (fraction >= 0) { x0 += stepx; fraction -= dy; } y0 += stepy; fraction += dx; LCD_SetWindow(x0, y0, x0, y0); LCD_DATA = color; } } } void delay(unsigned int n) { volatile unsigned int i; for (i = 0; i < n; i++); } int main(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); LCD_Init(); LCD_WriteReg(0x002c, 0x0000); //Clear Screen LCD_DrawLine(0, 0, 319, 239, 0xF800); //Draw Red Line while(1) { } } ``` 在上述代码中,我们首先定义了一些常量和函数,如LCD_CMD和LCD_DATA分别表示LCD的命令和数据,LCD_Init用于初始化LCD,LCD_WriteReg用于向LCD写入寄存器,LCD_SetWindow用于设置LCD的窗口范围,LCD_DrawLine用于在LCD上绘制线段,delay用于延时。 在main函数中,我们首先初始化GPIO和LCD,然后调用LCD_WriteReg清屏,最后调用LCD_DrawLine绘制一条红色的直线。 需要注意的是,此代码仅为示例代码,具体实现可能需要根据具体的硬件和接口进行修改。

相关推荐

最新推荐

recommend-type

启明欣欣stm32f103rct6开发板原理图

启明欣欣stm32f103rct6开发板原理图 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈...
recommend-type

stm32f103数据手册

完全免积分!!!!! 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈...
recommend-type

STM32F103C8T6开发板+GY521制作Betaflight飞控板详细图文教程

STM32F103C8T6黑色开发板1个(11.5元) GY-521加速度计模块1个(3.8元) ams1117-3.3电压转换芯片1个(0.38元) 5V有源蜂鸣器1个(0.43元) 5cm*7cm洞洞板1个(0.45元)  肖特基二极管2个 ss8050三极管2个 1k电阻2个,...
recommend-type

STM32F103RET6TR中文数据手册.pdf

STM32F103RET6TR中文数据手册,同样适用于STM32F103RE 、 STM32F103ZE 、 STM32F103VE、STM32F103RD、 STM32F103VD、 STM32F103ZD、STM32F103RC、 STM32F103VC、 STM32F103ZC
recommend-type

STM32F103单片机系统时钟部分归纳

——时钟控制(RCC) 三种不同的时钟源可用作系统时钟(SYSCLOCK): HIS振荡器时钟(由芯片内部RC振荡器提供) HSE振荡器时钟(由芯片外部晶体振荡器提供) ... LSE外部32.768kHz低速外部输入时钟,用于驱动RTC
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SQL怎么实现 数据透视表

SQL可以通过使用聚合函数和GROUP BY子句来实现数据透视表。 例如,假设有一个销售记录表,其中包含产品名称、销售日期、销售数量和销售额等信息。要创建一个按照产品名称、销售日期和销售额进行汇总的数据透视表,可以使用以下SQL语句: ``` SELECT ProductName, SaleDate, SUM(SaleQuantity) AS TotalQuantity, SUM(SaleAmount) AS TotalAmount FROM Sales GROUP BY ProductName, SaleDate; ``` 该语句将Sales表按照ProductName和SaleDat
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。