⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function.c

📁 51单片机C语言常用模块与综合系统设计实例精讲
💻 C
字号:
#include <./Atmel/at89x52.h>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
#include <string.h>
#include "source.h"
void Msm_init(void){//初始化msm6255
	MCSIO_ENABLE();
	REG_INSTR=0X00;//选择模式控制寄存器
	REG_DATA=0X0b;//光标关,显示开,4比特并行图形模式
	REG_INSTR=0X01;//选择字符点数寄存器
	REG_DATA=0X07;//一个字节的全部数据显示到屏幕上
	REG_INSTR=0X02;//选择水平字符个数寄存器
	REG_DATA=80;//每行显示81个字符,也就是81x8=648个点,这是根据AF1的时序设置的
	REG_INSTR=0X03;//选择显示行数寄存器
	REG_DATA=239;//选择行数为240行,因为是并行模式,所以总共为240x2=480行
	REG_INSTR=0X05;//选择低端开始地址寄存器
	REG_DATA=0;    //设置显示存开始开始地址的低8位为0
	REG_INSTR=0X06;//选择高端开始地址寄存器
	REG_DATA=0;	   //设置显示存开始开始地址的高8位为0,这样显存开始地址就从0开始
}
void Clear_Screen(void){//清除整个屏幕
	int i;
	VRAM_BUSY=1;
	for(i=0;i<81*480;i++){
		while(VRAM_BUSY==0);//如果MSM6255正在取数据则等待
		MCSIO_DISABLE();//把MSM6255的DIEN信号设置为低,访问显存
		XBYTE[i]=0;//把显存相应的位置设置为0
		MCSIO_ENABLE();//把MSM6255的DIEN信号设置为高,屏幕显示有效
	}
}
void Draw_Pic(int x,int y,int w,int h,unsigned char *buf){
	//在屏幕的x,y的位置上画高为h,宽度为W的图片,x和w必须为8的倍数,buf为图片数据
	int i,j;
	int vrbase;
	VRAM_BUSY=1;
	x=x/8;
	w=w/8;
	vrbase=SCREEN_WIDTH*y+x;//确定起始位置
	for(j=0;j<h;j++){//遍历所有图片数据
		for(i=0;i<w;i++){//画一行数据
			while(VRAM_BUSY==0);//如果MSM6255正在取数据则等待
			MCSIO_DISABLE();//把MSM6255的DIEN信号设置为低,访问显存
			XBYTE[vrbase+i]=*(buf+j*SCREEN_WIDTH+i);//设置显存相应的为图片的数值
			MCSIO_ENABLE();//把MSM6255的DIEN信号设置为高,屏幕显示有效
		}
		vrbase +=SCREEN_WIDTH;//换下一行
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -