📄 f0e4ac886489001d1e908c0bc771dfd8
字号:
#include <io.h>
#include "GUI.h"
#include "system.h"
#include "alt_types.h"
#include <math.h>
#include "stdio.h"
alt_u32 FRAME_BUFFER;
alt_u32 FRAME_LENGTH;
alt_u32 START_REG;
alt_u32 CURRENT_COLOR;
int cover_data[25][48];
int star_cover_x = 50;
int star_cover_y = 50;
static double SIN45 = 0.70711;
static alt_u32 base = LCD_INTERFACE_0_BASE;
static alt_u32 SDRAM_FRAMEBUFFER_ADDRESS = (SDRAM_0_BASE + 10000);
//static short int CNChar_Num = 121;
//设置颜色
void setColor(alt_u32 colorValue)
{
IOWR_32DIRECT(base,0,colorValue);
CURRENT_COLOR = colorValue;
}
//设置屏幕横宽
void setFrameLength(alt_u32 frameLength)
{
IOWR_32DIRECT(base,4,frameLength);
FRAME_LENGTH = frameLength;
}
//开始传输标志
void setStartReg(alt_u32 startReg)
{
IOWR_32DIRECT(base,8,startReg);
START_REG = startReg;
}
//帧缓存地址
void setFrameBuffer(alt_u32 frameBuffer)
{
IOWR_32DIRECT(base,12,frameBuffer);
FRAME_BUFFER = frameBuffer;
}
//设置光标显示
void setCursorShow(alt_u32 cursorShow)
{
IOWR_32DIRECT(base,24,cursorShow);
}
//设置光标位置X
void setCursorBaseX(alt_u32 cursorBaseX)
{
IOWR_32DIRECT(base,16,cursorBaseX);
}
//设置光标位置Y
void setCursorBaseY(alt_u32 cursorBaseY)
{
IOWR_32DIRECT(base,20,cursorBaseY);
}
//设置光标坐标
void setCursorPosition(alt_u32 x,alt_u32 y)
{
setCursorBaseX(x * 3);
setCursorBaseY(y);
}
int abs(int a)
{
if(a < 0){
a = -a;
}
return a;
}
//初始化屏幕操作
void init()
{
int i,j;
int raw_data;
for(i = 0;i < 223938;i++){
IOWR_8DIRECT(SDRAM_FRAMEBUFFER_ADDRESS,i,0);
}
for(i = 0;i < 233;i++){
for(j = 0;j < 319;j++){
raw_data = IORD_8DIRECT(CFI_FLASH_0_BASE,i * 957 + j * 3 + 4096);
IOWR_8DIRECT(SDRAM_FRAMEBUFFER_ADDRESS,i * 957 + j * 3 + 2,raw_data);
raw_data = IORD_8DIRECT(CFI_FLASH_0_BASE,i * 957 + j * 3 + 1 + 4096);
IOWR_8DIRECT(SDRAM_FRAMEBUFFER_ADDRESS,i * 957 + j * 3 ,raw_data);
raw_data = IORD_8DIRECT(CFI_FLASH_0_BASE,i * 957 + j * 3 + 2 + 4096);
IOWR_8DIRECT(SDRAM_FRAMEBUFFER_ADDRESS,i * 957 + j * 3 + 1,raw_data);
}
}
setFrameBuffer(SDRAM_FRAMEBUFFER_ADDRESS);
setFrameLength(957);
setStartReg(1);
setCursorShow(1);
setCursorBaseX(50);
setCursorBaseY(50);
}
//描点
void drawPixel(alt_u16 x,alt_u16 y)
{
alt_u32 pix_addr = FRAME_BUFFER + (y * FRAME_LENGTH + x*3) + 2;
IOWR_8DIRECT(pix_addr,0,CURRENT_COLOR);
IOWR_8DIRECT(pix_addr,1,CURRENT_COLOR>>8);
IOWR_8DIRECT(pix_addr,2,CURRENT_COLOR>>16);
}
//抗锯齿描点
void draw_AA_Pixel(alt_u16 x,alt_u16 y,alt_u32 color)
{
alt_u32 pix_addr = FRAME_BUFFER + (y * FRAME_LENGTH + x*3);
IOWR_8DIRECT(pix_addr,0,color);
IOWR_8DIRECT(pix_addr,1,color>>8);
IOWR_8DIRECT(pix_addr,2,color>>16);
}
//刷背景屏幕颜色
void setBKColor(alt_u32 bkColor)
{
int temColor;
temColor = CURRENT_COLOR;
setColor(bkColor);
fillRect(0,0,319,232);
setColor(temColor);
}
//画竖线
void drawVLine(alt_u16 x,alt_u16 y1,alt_u16 y2)
{
short int i;
short temp;
//保证y1上侧
if(y1 > y2){
temp = y1;
y1 = y2;
y2 = temp;
}
//画线
for(i = y1;i <= y2;i++){
drawPixel(x,i);
}
}
//填充矩形
void fillRect(alt_u16 x,alt_u16 y,alt_u16 width,alt_u16 height)
{
int i;
for(i = 0;i <= width;i++){
drawVLine(x + i,y,y + height);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -