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

📄 lcd_sio_@iob14and15.c

📁 61半做信号发生器
💻 C
字号:
//程序方式的串口,用来驱动LCD,IOB15为数据,IOB14为同步时钟。
//一个字节分为两次传输,先传输起始字节,5个1为开始标志,其后为RW,RS
//接口函数有
//lcd_init_usual(),作用是常用初始化液晶,无入口,无出口中
//chinese_series();作用是输出汉字串,参量为字串的指针
//code_write();    参量为命令字。
//data_write();    参量为要写入的数。
//================================================
//用户指令集:
//清除显示:01     
//地址归零:02
//点设定:  04 整体显示不移动,光标左移,AC自动减1
//          05 整体显示不移动,光标右移,AC自动加1
//          06 写入时整体显示向右移动,
//          07 整体显示向左移动。
//显示状态:08 关闭整体显示,关闭光标,光标位置不反白闪烁
//          0C 开启整体显示,关闭光标,光标位置不反白闪烁
//          0D 开启整体显示,关闭光标,光标位置反白闪烁
//          0E 开启整体显示,开启光标,光标位置不反白闪烁     
//          0F 开启整体显示,开启光标,光标位置反白闪烁
//光标或显示移位控制:
//          10 光标左移,AC减1
//          14 光标右移,AC加1 
//          18 整体显示,向左移动,光标跟随,AC不变
//          1C 整体显示,向右移动,光标跟随,AC 不变
//功能设定:20 4 BIT 控制口,基本指令集 
//          24 4 BIT 控制口,扩充指令集
//          30 8 BIT 控制口,基本指令集
//          34 8 BIT 控制口,扩充指
//////////////////////////////////////////////////////////////
#include "SPCE061.h"
#define code_start  0xf800
#define data_start  0xfa00
////////////////////////////////////////////////
///命令区定义;
//设定显示地址;
#define row1_line1  0x0080 
#define row1_line2  0x0081
#define row1_line3  0x0082
#define row1_line4  0x0083
#define row1_line5  0x0084
#define row1_line6  0x0085
#define row1_line7  0x0086
#define row1_line8  0x0087
#define row2_line1  0x0090
#define row2_line2  0x0091
#define row2_line3  0x0092
#define row2_line4  0x0093
#define row2_line5  0x0094
#define row2_line6  0x0095
#define row2_line7  0x0096
#define row2_line8  0x0097
//状态设定
#define lcd_clear      0x0001
#define lcd_addres_0   0x0002;
//////////////////////////////////////
//public lcde_init_usual();
//public chinese_series();
//public code_write();
//public data_write();
//public set_position();
//============================================

void lcd_init_usual(void)
 {
   init_iob_out();
   code_write(1);
   code_write(0x000f);
   code_write(0x0006);
 }
 
//=========================================== 
 void init_iob_out(void)
 {
    
    *P_IOB_Dir|=0xc000;
    *P_IOB_Attrib|=0xc000;
    *P_IOB_Data&=0x3fff;
 }
 
//===========================================
void set_position(int position)
  {
   code_write(position);
  }
  
//=========================================
void chinese_series(int *series)
   {
     for(series;*series!=0;series++)
     data_write(*series);
   }
//========================================   
   
 void code_write(int code) 
  {
    int i,j;
    code=code<<8;
    i=j=code;
    i&=0xf000;
    j=j<<4;
    j&=0xf000;
    byte_write(code_start);
    byte_write(code_start);
    byte_write(i);
    byte_write(j);
  }  
  
 //================================
  
void data_write(int data)
 {
    int i,j;
    
    data=data<<8;
    i=j=data;
    i&=0xf000;
    j=j<<4;
    j&=0xf000;
    byte_write(data_start);                   //启始字符
    byte_write(data_start);
    byte_write(i);
    byte_write(j);
 } 
   
///////////////////////////////////////
   
void   byte_write(byte)
int byte;
   {
     int x=byte,i,r;
     for(i=0;i<=7;i++)
       {
         r=*P_IOB_Data;
         r&=0x3fff;                    // 最高2位B14,B15清零        
         x=byte;
         x&=0x8000;
         r|=x;
         *P_IOB_Data=r;
         *P_IOB_Data|=0x4000;
         byte=byte<<1;
       }
     
   }
//////////////////////////////////////////////////////   

⌨️ 快捷键说明

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