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

📄 ms12864r-串口编程(c).txt

📁 学习12864液晶显示测试
💻 TXT
字号:

//////////-- ms12864r 串口编程 示例-- //////////////
//                                                //
//  例程芯片: 430fw427,
//  注意!单片机输出口做了反向处理.
//  编程日期:   2008.11.27
//  编    者:   汤忠良
//  联系方式: 
//              电话 > 13766867932
//              Q  Q > 909987836                
//              信箱 > tangzhongliang315@163.com //
///////////////////////////////////////////////////
#include "msp430x41x.h"
 void ys(unsigned int aa);
#define lcd_cs1     P2OUT&=~BIT0;
#define lcd_cs0     P2OUT|=BIT0;
#define lcd_data1   P2OUT&=~BIT3;
#define lcd_data0   P2OUT|=BIT3;
#define lcd_clk1    P2OUT&=~BIT1;
#define lcd_clk0    P2OUT|=BIT1;
#define lcd_rest1   P2OUT&=~BIT2;
#define lcd_rest0   P2OUT|=BIT2;

#define uchar  unsigned char
#define uint   unsigned int

 void reset_12864(void);
 void w12864_command(uchar command);
 void w12864_data(uchar data);
 void a12864xs(uchar data);
 void list_12864(uchar x,uchar y,uint data);//按坐标输入字符

 void main(void)
    {
    uint ss,zz;
    uchar ii,jj;
    WDTCTL = WDTPW + WDTHOLD;   // 停掉看门狗
    P2DIR=0X0f;
    P2OUT=0X0f;
    
    reset_12864();           //复位12864
 
    list_12864(2,1,0xc0db);  //显示:"累"
    list_12864(2,2,0xbcd3);  //显示:"加"
    list_12864(2,3,0xa1c3);  //显示:" :"
    while(1)                 //从0加到99的程序
        {
      ss++; if(ss>99){ss=0;}
      ii=ss/10+0x30;jj=ss%10+0x30;
      list_12864(2,4,ii*256+jj);
      for(zz=32768;zz>0;zz--);  
        }
     }
   //***************************************************
   //写一字节数据到12864
   void write_byte(uchar data)
    {
   uchar i,temp_data;
   for(i=0;i<8;i++)
      {
   temp_data=data;
   temp_data<<=i;                  //
   if(temp_data&0x80){lcd_data1;}  //数据线输出1
   else {lcd_data0;}               //数据线输出0
   lcd_clk1;lcd_clk1;lcd_clk1;     //时钟变换为0
   lcd_clk0;lcd_clk0;lcd_clk0;     //时钟变换为0
   lcd_clk0;lcd_clk0;lcd_clk0;     //时钟变换为0
      }
    }
        //***************************************************
        //写命令到12864
   void w12864_command(uchar command)
         {
     lcd_cs1;lcd_cs1;                //片选为1
     write_byte(0xF8);               //发送命令的命令
     write_byte(command&0xF0);       //发送H_data
     write_byte((command&0x0F)<<4);  //发送L_data
     lcd_cs0;lcd_cs0;                //片选为0
         }
       //***************************************************
       //写数据到12864
  void w12864_data(uchar data)
        { 
     lcd_cs1;lcd_cs1;                //片选为1
     write_byte(0xFA);               //发送数据的命令
     write_byte(data&0xF0);          //发送H_data
     write_byte((data&0x0F)<<4);     //发送L_data
     lcd_cs0;lcd_cs0;                //片选为0
        }
      //***************************************************
      //复位12864
    void reset_12864(void)
                {
        lcd_rest0;lcd_rest0;         //准备复位
        lcd_rest1;lcd_rest1;         //执行复位
        w12864_command(0x30);        //功能设置 8位数据,基本指令
        w12864_command(0x0c);        //显示状态 ON,游标OFF,反白OFF
        w12864_command(0x01);        //清除显示
        w12864_command(0x02);        //地址归位
        w12864_command(0x80);        //设置DDRAM地址
                 }
      //***************************************************
      //按坐标输入字符  x:行数;  y:例数;  data:字符代码  
   void list_12864(uchar x,uchar y,uint data)
               {        
      // 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,//第四行汉字位置
    switch(x)
     { case 1:x=0x80;break;       //第1行
       case 2:x=0x90;break;       //第2行 
       case 3:x=0x88;break;       //第3行
       case 4:x=0x98;break;       //第4行
       default:return;   }        //不在例范围,退 出
    if(y>8){return;}              //不在行范围,退 出
    w12864_command(x+y-1);         //发送字符显示的位置
    w12864_data((data&0xff00)>>8); //发送字符的高8位
    w12864_data (data&0x00ff);     //发送字符的低8位
               }
      //***************************************************



⌨️ 快捷键说明

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