这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » stc12c5a串口

共1条 1/1 1 跳转至

stc12c5a串口

助工
2014-11-25 20:29:13     打赏
#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);
}

 


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]