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

📄 ex8-9.c

📁 《增强型8051单片机实用开发技术》例程代码
💻 C
字号:
#include"stc12c5a.h"
sbit BLED=P2^2;			                       //背光控制
void spi_init(void);                           //SPI初始化子程序
void delay(unsigned int us10);                 //延时子程序
void sendspi(unsigned char spidata,unsigned char read,unsigned char dat);  //显示数据发送子程序
void lcd_init_usual(void);                     //液晶初始化子程序
void set_position(unsigned char position);     //确定光标位置子程序
void data_write(unsigned char data1);          //显示单个字符子程序
void chinese_series(unsigned char *series);    //显示汉字字符串子程序
void main (void)  
{	
	spi_init();
	lcd_init_usual();
	BLED=0;
	set_position(0x82);
	chinese_series("单片机");
	data_write('0');
	data_write('1');
	while(1);
}
void spi_init(void)  //SPI初始化子程序
{
	AUXR1=0x20; 		   //将SPI转移到P4口	SPI初始化
	SPCTL=0xd3;		       //SPI使能,主机模式,/SS无关,先发高(很关键很重要)
	SPSTAT=0xC0;		   //清传输完成标志和写冲突标志
}
void delay(unsigned int us10)  //延时子程序
{
 	while(us10--);
}
void sendspi(unsigned char spidata,unsigned char read,unsigned char dat)    //显示数据发送子程序
{   
  	unsigned char cmd,dat1,dat2,spi1_status=0;	
	cmd=(0xf8|read|(dat<<1));
   	SPDAT=cmd;
	while(spi1_status==0)         //等起始命令传输完毕
	{
		spi1_status=SPSTAT;
		spi1_status=spi1_status&0x80;
	}
  	SPSTAT=0xC0;                  //写1清SPIF标志位
  	spi1_status=0;
	dat1=spidata&0xf0;
	SPDAT=dat1;
	while(spi1_status==0)   	  //等高4位数据传输完毕
	{
		spi1_status=SPSTAT;
		spi1_status=spi1_status&0x80;
	}
  	SPSTAT=0xC0;         	      //写1清SPIF标志位
	spi1_status=0;
	dat2=(spidata<<4)&0xf0;
	SPDAT=dat2;
	while(spi1_status==0)     	  //等低4位传输完毕
	{
		spi1_status=SPSTAT;
		spi1_status=spi1_status&0x80;
	}
  	SPSTAT=0xC0;         		  //写1清SPIF标志位	
}
void lcd_init_usual(void)    //液晶初始化子程序
{
	sendspi(0x30,0,0);       //基本指令集
	sendspi(0x01,0,0);       //清显示,地址复位
	delay(2000);
	sendspi(0x0e,0,0);       //整体显示,开游标,关位置
	sendspi(0x06,0,0);       //游标方向及移位
}
void set_position(unsigned char position)     //确定光标位置子程序
{
	sendspi(position,0,0);
}
void data_write(unsigned char data1)          //显示单个字符子程序
{
	sendspi(data1,0,1);
} 
void chinese_series(unsigned char *series)    //显示汉字字符串子程序
{
	for(series;*series!=0;series++)
		data_write(*series);
}

⌨️ 快捷键说明

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