电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

AD1549的LCD12864液晶显示程序

来源:-- 作者:-- 浏览:723

标签:

摘要: AD1549的LCD12864液晶显示程序 #include"reg52.h" #include "intrins.h" sbit AD_CS = P3^7; sbit AD_DAT = P3^5; sbit AD_CLK = P3^4; sbit RS=P3^6;

AD1549的LCD12864液晶显示程序

#include"reg52.h"
#include "intrins.h" sbit AD_CS = P3^7;
sbit AD_DAT = P3^5;
sbit AD_CLK = P3^4;

 
sbit RS=P3^6;     //RS="H",表示DB7--DB0为显示数据,
                  //RS="L",表示DB7--DB0为显示指令数据 sbit WRD = P2^5;  //R/W="H",E="H",数据被读到DB7--DB0
                   //R/W="L",E="H→L", DB7--DB0的数据被写到IR或DR sbit E = P2^6;    //使能信号 sbit PSB = P2^3;  //H:并口方式 L:串口方式
void    TransferData(char data1,bit DI); //传送数据或者地址命令(data),
                                         //当DI=0是,传送命令,当DI=1,传送数据.
void    display(void);
void    display_grapIC(void); void    delay(unsigned int m);
void    delayms(unsigned int n); void    DisplayLine(unsigned char line1,unsigned char line2);
void    DisplayGraphic(unsigned char code *adder); void    lcd_mesg(unsigned char code *adder1);
void lcd_wxs1(unsigned int j);
void lcd_wxs2(unsigned int q);
void lcd_wxs3(unsigned int p);
void lcd_wxs4(unsigned int k);
unsigned int i,j,q,p,k;     // 
unsigned int AD_Temp,Temp,TempA; unsigned char code IC_DAT[]={
"精密电压表测试仪"
"  当前电压值为  "
"佳瑞电子有限公司"
"*****       ****"
}; unsigned char data1[]={"0123456789.V"};
/***************存放要显示的数字值********/ unsigned char val[4];// /***************延时的子程序***************/ void  delayms(unsigned int n)            //延时10×n毫秒程序
                   {
                      unsigned int i,j;
                      for(i=0;i<n;i++)
                         for(j=0;j<2000;j++);
                   } void  delay(unsigned int m)              //延时程序
                   {
                      unsigned int i,j;
                      for(i=0;i<m;i++)
                         for(j=0;j<10;j++);
                   }
/**********TLC1549数据读取子程序************/ TLC1549()     
  {
  TempA=0;
  Temp=0;
 AD_CS  = 1;
 AD_CLK = 1;
 AD_DAT = 1;
 AD_CS  = 0;      _nop_();
 for(i=0;i<2;i++)
 {
  AD_CLK =0;
  _nop_();
  if(AD_DAT)
   { Temp+=0x01;}
  Temp  =Temp<<1;
  AD_CLK=1;
  _nop_();
 }
 for(i=0;i<8;i++)
 {
  AD_CLK =0;
  _nop_();
  if(AD_DAT)
   {  TempA+=0x01; }
  TempA =TempA<<1;
  AD_CLK =1;
  _nop_();
 }
 AD_CLK =1;
 AD_CS  =1;
 AD_Temp= Temp*338+TempA;
 P0=AD_Temp;    j=2*AD_Temp/1000;
   q=2*AD_Temp%1000/100;
   p=2*AD_Temp%1000%100/10;
   k=2*AD_Temp%1000%100%10;  
 } /***************LCD字库初始化程序*********************/
void initinal(void)         
          {
           delay(40);               //大于40MS的延时程序
           PSB=1;                   //设置为8BIT并口工作模式
           delay(1);                //延时
          // RES=0;                 //复位
          // delay(1);              //延时
          // RES=1;                 //复位置高
           delay(10);
           TransferData(0x30,0);  //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
           delay(100);            //大于100uS的延时程序
           TransferData(0x30,0);  //Function Set
           delay(37);             ////大于37uS的延时程序
           TransferData(0x08,0);  //Display on Control
           delay(100);            //大于100uS的延时程序
           TransferData(0x10,0);  //Cursor Display Control光标设置
           delay(100);            //大于100uS的延时程序
           TransferData(0x0C,0);  //Display Control,D=1,显示开
           delay(100);            //大于100uS的延时程序
           TransferData(0x01,0);  //Display Clear    清屏
           delay(10);             //大于10mS的延时程序
           TransferData(0x06,0);  //Enry Mode Set,光标从右向左加1位移动
           delay(100);            //大于100uS的延时程序
          }
//*************显示函数****************************** void lcd_mesg(unsigned char code *adder1)
{
    unsigned char i;
        TransferData(0x80,0);    //Set Graphic Display RAM Address 传地址指令
        delay(100);
    for(i=0;i<16;i++)
        {
              TransferData(*adder1,1);
               adder1++;
        }         TransferData(0x90,0);    //Set Graphic Display RAM Address
        delay(100);     for(i=32;i<64;i++)
        {
              TransferData(*adder1,1);
               adder1++;
        }
}
//*************位置显示函数****************************** void lcd_wxs1(unsigned int adder2)
{
        TransferData(0x8A,0);    //Set Graphic Display RAM Address 传地址指令
        delay(100);    
          TransferData(adder2,1);
} void lcd_wxs2(unsigned int adder3)
{
          TransferData(adder3,1);
} void lcd_wxs5(unsigned int adder6)
{
          TransferData(adder6,1);
} void lcd_wxs3(unsigned int adder4)
{
          TransferData(adder4,1);
} void lcd_wxs4(unsigned int adder5)
{
          TransferData(adder5,1);
} void lcd_wxs6(unsigned int adder7)
{
          TransferData(adder7,1);
}
//********写命令/数据******************************* void    TransferData(char data1,bit DI)  //传送数据或者命令,当DI=0是,传送命令,
          {                                 //当DI=1,传送数据.
            WRD=0;    //R/W="H",E="H",数据被读到DB7--DB0,R/W="L",E="H→L", DB7--DB0的数据被写到IR或DR
            RS=DI;    //RS="H",表示DB7--DB0为显示数据, RS="L",表示DB7--DB0为显示指令数据
            delay(1);
            P0=data1;
            E=1;
            delay(1);
            E=0;
           }
//************延 时******************************************* /* 主程序入口  */
int main(void)
{    initinal();
    delay(10);            //大于100uS的延时程序
    lcd_mesg(IC_DAT);      //显示中文汉字1
    delayms(100);
    while(1)
    {    
    TLC1549();
    lcd_wxs1(data1[j]);
    lcd_wxs5(data1[10]);
    lcd_wxs2(data1[q]);
    lcd_wxs3(data1[p]);
    lcd_wxs4(data1[k]);
    lcd_wxs6(data1[11]);
    delayms(20);     }
}

型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67