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

📄 fm12864.c

📁 IAR开发Cortex--M3底层驱动 及相关文档
💻 C
字号:
#include "fm12864.h"

unsigned char code hz_add[4][8]={   0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 
                                    0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 
                                    0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
                                    0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f };//DDRAM地址 用于确定字符的启始位置



void delay(unsigned int t)
{
  while(t--);
 }
/*********************************************************** 
函数名称: 
函数功能: 
入口参数: 
出口参数: 
备 注: 
***********************************************************/
void DelayUS(unsigned int n)       //N us延时函数
  {
   unsigned int i=0;
   for (i=0;i<n;i++)
       _nop_();
  }
/*********************************************************** 
函数名称: 
函数功能: 
入口参数: 
出口参数: 
备 注: 
***********************************************************/
void Send(unsigned char senddata)
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		if((senddata)&0x80)
		    SID = 1;
		else
			SID = 0;	
		CLK = 1;
		_nop_();
		CLK = 0;
		senddata<<=1;
	}
}
void write_cmd(unsigned char cmd)
{
    Send(0xf8);

	Send(cmd&0xf0);
	Send(cmd<<4);
	DelayUS(5);
  }
void write_dat(unsigned char dat)
{
   Send(0xfa);
	Send(dat&0xf0);
	Send(dat<<4);
	DelayUS(5); 
  }
void lcdinit(void)
{
    RST=0;
	delay(45000);		 //复位启动时间大于40ms
	RST=1;				 //完成启动

	FSB=0;
	CS=1;

	write_cmd(0x30);		 //设定系统为 :8位数据,基本指令
	delay(150);			 //功能设定时间大于100ms 

	write_cmd(0x30);		  //
	delay(45);

	write_cmd(0x0c);		  //开整体(DB2),游标(DB1),反白显示(DB0)  
	delay(150);

	write_cmd(0x01);		  //清显示 ,DDRAM清零;也叫待机模式
	delay(15000);

	write_cmd(0x06);		   //
	_nop_();
  }
/**************************************************************************
汉字显示函数  可以是一个字也可以是字符串
输入:	 Y:行地址1表示第一行;(1,2,3,4)
         X:列地址1表示第一行;(1,2,3,4,5,7,8,)
		*S:汉字启始位
***************************************************************************/
void disp_hz_string(unsigned char y,unsigned char x,unsigned char code *s)
{	 
     write_cmd(hz_add[y-1][x-1]);
     while(*s>0)
	 {
	    write_dat(*s);
		s++;
		delay(20);
	   }
  }
void disp_shuju(unsigned char t)	   //转换成数显示
{
  
   switch(t)
      {
	     case 0:write_dat(0x30);break;
		 case 1:write_dat(0x31);break;
		 case 2:write_dat(0x32);break;
		 case 3:write_dat(0x33);break;
		 case 4:write_dat(0x34);break;
	     case 5:write_dat(0x35);break;
	     case 6:write_dat(0x36);break;
		 case 7:write_dat(0x37);break;
	     case 8:write_dat(0x38);break;
	     case 9:write_dat(0x39);break;
		 default :          break;
		 }
 }
/*------------------显示图片------------------------2007.4.22修改---lujunsong---*/
void disp_img(unsigned char code *img)
{  unsigned int j=0;
   unsigned char x,y,i;
       for(i=0;i<9;i+=8)
       for(y=0;y<32;y++) 
         for(x=0;x<8;x++)
         {  write_cmd(0x36);          //功能设置---8BIT控制界面,扩充指令集
            write_cmd(y+0x80);        //行地址
            write_cmd(x+0x80+i);     //列地址
            write_cmd(0x30);
            write_dat(img[j++]);
            write_dat(img[j++]);
         }   
           
}
void shuju(unsigned char y,unsigned char x,unsigned int t)
{
    unsigned int m;
	unsigned char j[5]={0};
	unsigned char i,k;
	m=t;
	write_cmd(hz_add[y-1][x-1]);
    j[0]=m/10000;
	j[1]=m%10000/1000;
	j[2]=m%1000/100;
	j[3]=m%100/10;
	j[4]=m%10;
	i=0;
	while(j[i]==0)i++;     
		 
		 for(k=i;k<5;k++)
		   {
		     disp_shuju(j[k]);
			      
			}
  }

⌨️ 快捷键说明

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