久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3931|回復: 0
打印 上一主題 下一主題
收起左側

12232c液晶顯示和8051單片機的接口c語言程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:76190 發表于 2015-4-5 18:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在atmega128中寫通訊協議的頭四位數字時好像不能分開一位一位的送,而是要把它當作一個16進制的整體移位寫入!程序中的comm為寫0表示寫12232c的指令,dat為1表示寫數據。cs,sclk,std分別為片選、時鐘、及數據io口,可用sbit指令定義。
/************lcd初始化程序**************/
void init_lcd (void)                        
{
  wr_lcd (comm,0x30);                       /*30---基本指令集動作,8位控制接口*/   
  wr_lcd (comm,0x01);                       /*清屏,地址指針指向00H*/
  delay (80);
  wr_lcd (comm,0x06);                        /*光標的移動方向,光標右移*/
  wr_lcd (comm,0x0c);                        /*開顯示,關光標*/
}
/******************LCD顯示任意量程序********************/
void eng_disp (uchar x,uchar y,uchar code *eng)
{
  uchar i,j;
  wr_lcd (comm,0x30);
  wr_lcd (comm,0x80);                       /*第一行的起始地址*/
  for(j=0;j<y;j++)
  {
  for (i=0;i<x;i++)
  wr_lcd (dat,eng[j*16+i]);                 
  if((y==2)&&(j==1))
  {wr_lcd (comm,0x90);
  for (i=0;i<8;i++)
  wr_lcd (dat,eng[j*16+i]);
  }
  }
}
/*********************LCD顯示中文(歡迎界面)程序******************/
void chn_disp (uchar code *chn)             /*lcd顯示中文*/
{
  uchar i,j;
  wr_lcd (comm,0x30);
  wr_lcd (comm,0x80);                       /*第一行的起始地址*/
  j=0;
  for (i=0;i<16;i++)
  wr_lcd (dat,chn[j*16+i]);
  wr_lcd (comm,0x90);                      //第二行的起始地址
  j=1;
  for (i=0;i<16;i++)
  wr_lcd (dat,chn[j*16+i]);
}
/***************************LCD清內存程序*******************/
void clrram (void)                         //lcd清內存
{
  wr_lcd (comm,0x30);
  wr_lcd (comm,0x01);
  delay (120);
}
/*************LCD寫數據或寫命令子程序****************/
void wr_lcd (uchar dat_comm,uchar content)                 /*lcd寫數據*/
{
  uchar a,i,j;
  delay (40);
  a=content;                                             //a為指令代碼或者數據
  cs=1;                                                  //置位cs開始傳輸數據
  sclk=0;                                                //拉低sclk準備給上升沿,發送數據
  std=1;                                                 //置1
  for(i=0;i<5;i++)                                        /*先傳輸起始字節,首先5個1,sclk的上升沿傳輸啟動*/
  {
    sclk=1;
    sclk=0;
  }
  std=0;                                                  //RW=0;
  sclk=1;
  sclk=0;
  if(dat_comm)
    std=1;                                               //如果是數據則RS為1
  else
  std=0;                                              //如果是控制字則RS為0
  sclk=1;                                              //給上升沿,啟動傳輸
  sclk=0;                                              //拉低sclk
  std=0;                                               //第8位為0,起始字節傳輸完畢
  sclk=1;                                              //給上升沿,啟動傳輸
  sclk=0;
  for(j=0;j<2;j++)         //一個字節分兩次發送,第一次發送高四位,后面補4個0,第二次發送低4位,后面同樣補4個0
  {
    for(i=0;i<4;i++)                                  //先傳輸高4位
    {
      a=a<<1;                                        //數據循環左移一位,低位補0
      std=CY;                                        //把進位進行傳輸                     
      sclk=1;
      sclk=0;
    }
    std=0;
    for(i=0;i<4;i++)                                 //后4位數據為4個0
    {
      sclk=1;
      sclk=0;
    }
  }
}
/**********************LCD延時程序************************************/
void delay (uint us)                                 //lcd延時時間
{
  while(us--);
}
void delay1 (uint ms)
{
  uint i,j;
  for(i=0;i<ms;i++)
  for(j=0;j<15;j++)
  delay(1);
}
/*********************顯示數據位子程序*******************/
void math_disp(uint math)
{      uint k;
       uchar i;
       uchar j;
       k=math;
    dispbuf[0]=k/10000;                       //得到萬位數
    k=k%10000;
    dispbuf[1]=k/1000;                       //得到千位數
    k=k%1000;
    dispbuf[2]=k/100;                        //得到百位數
    k=k%100;
    dispbuf[3]=k/10;                         //得到十位數
    dispbuf[4]=k%10;                         //得到個位數
       wr_lcd (comm,0x90);                      //給第二行的起始地址以讓數據在第二行顯示,
       for(i=0;i<5;i++)
  {
   for(j=0;j<2;j++)                 //連續顯示兩個tab2中的字節,LCD自動把這兩個字節聯系起來顯示一個數據
   {
     wr_lcd(dat,tab2[xs2*dispbuf[i]+j]);  //調用顯示子函數
     }
    }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 这里只有精品999 | 蜜桃视频一区二区三区 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 日韩图区| 免费午夜视频在线观看 | 日韩中文字幕一区二区 | 大陆一级毛片免费视频观看 | 91精品一区二区三区久久久久 | 成人h动漫亚洲一区二区 | 中文一区二区视频 | 中国一级毛片免费 | 日韩视频91| 中文字幕一二三 | 欧美在线视频一区 | 国产午夜精品一区二区三区 | 香蕉视频1024 | 亚洲视频一 | 自拍亚洲| 国产欧美日韩一区 | 99在线视频观看 | 欧美日产国产成人免费图片 | 91久久| 亚洲免费视频一区 | 在线一区视频 | 中文字幕免费在线观看 | 国产一区二区在线免费 | 国产网站在线播放 | 精品视频一区二区 | 婷婷色婷婷 | www.狠狠操| 黑人一级黄色大片 | 午夜影视在线观看 | 日本特黄a级高清免费大片 成年人黄色小视频 | 国产乱码精品一区二区三区中文 | 成人精品国产一区二区4080 | av网站免费 | 伊人网站在线观看 | 成人av一区 | 日韩区| 天天搞天天操 | 在线免费中文字幕 |