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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

T6963c液晶驅動芯片

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年02月20日   【字體:


 

/***********************************************
   名稱 :帶T6963C 控制器液晶驅動模塊
   設計者:阿飛
   時間:dec.09.10
   版本:vec1
**************************************************/
#include"reg51.h"
#include"zifu.h"
#define uchar unsigned char
#define uint  unsigned int
#define lcd_data P1
#define lcd_com  P2
extern void write_clcd_two(uchar dat1,uchar dat2,uchar com);  
extern void write_clcd_one(uchar dat1,uchar com);
extern void write_clcd(uchar com);
extern write_dlcd(uchar dat);
extern uchar read_ddata();
/******
sbit rd=lcd_com^0; sbit wr=lcd_com^1;
sbit cd=lcd_com^2; sbit ce=lcd_com^3;
**************/


/**指令格式 參數1 參數2 指令代碼 */
/**讀lcd狀態字節 state***/
uchar read_flag_lcd()  
{
 uchar dat;
 lcd_com=0x06;
 dat=lcd_data;
 lcd_com=0x0f;
 return dat;

}
/****檢查lcd狀態字state 0,1位是否為1,1表示lcd已準備好*****/
void check0_1()
{
uchar dat;
dat=read_flag_lcd() ;
while(dat&0x03!=0x03);
}

/****檢查lcd狀態字state 第2位是否為1,1表示lcd數據自動讀操作已準備好*****/
void check2()
{
uchar dat;
dat=read_flag_lcd() ;
while(dat&0x04!=0x03);
}
/****檢查lcd狀態字state 第2位是否為1,1表示lcd數據自動寫操作已準備好*****/
void check3()
{
uchar dat;
dat=read_flag_lcd()  ;
while(dat&0x08!=0x08);
}
/****檢查lcd狀態字state 第6位是否為1,1屏讀/拷貝出錯狀態****/
void check6()
{
uchar dat;
dat=read_flag_lcd()  ;
while(dat&0x40!=0x40);
}


/****寫命令字data1 data2 為參數 com為命令字節*****/
void write_clcd_two(uchar dat1,uchar dat2,uchar com)
{
 check0_1();
 lcd_com=0x01;
 lcd_data=dat1;
 lcd_com=0x0f;
 check0_1();
 lcd_com=0x01;
 lcd_data=dat2;
 lcd_com=0x0f;
 check0_1();
 lcd_com=0x05;
 lcd_data=com;
 lcd_com=0x0f;
}
/****寫命令字data1為參數 com為命令字節*****/
void write_clcd_one(uchar dat1,uchar com)
{
 check0_1();
 lcd_com=0x01;
 lcd_data=dat1;
 lcd_com=0x0f;
 check0_1();
 lcd_com=0x05;
 lcd_data=com;
 lcd_com=0x0f;
}
/****無參數 com為命令字節*****/
void write_clcd(uchar com)
{
 check0_1();
 lcd_com=0x05;
 lcd_data=com;
 lcd_com=0x0f;
}
/****讀數據 data*****/
uchar read_ddata()
      {
        uchar dat;
         check0_1();
         lcd_com=0x02;
         dat=lcd_data;
         lcd_com=0x0f;
         return dat;
        }
/****寫數據 data*****/
write_dlcd(uchar dat)
{
 check0_1();
 lcd_com=0x01;
 lcd_data=dat;
 lcd_com=0x0f;
}

lcd_clr()
{
 uint n;
 write_clcd_two(0x00,0x00,0x24);
 write_clcd(0xb0);
 for(n=0;n<480;n++)
 write_dlcd(0x00);
  write_clcd(0xb2);
}
void word_16(uchar row ,uchar list, uchar *pdat)
{
 uchar addr_h,addr_l,n;
 uint p_addr;
 if(row>29)
 {list=list+(row/30)<<4;
  row=row%30;
 }
 for(n=0;n<16;n++)
 {
 p_addr=(list+n)*30+row;
 addr_h=p_addr>>8;
 addr_l=p_addr%256;
 write_clcd_two(addr_l,addr_h,0x24);
 write_clcd(0xb0);
        check3();
       write_dlcd(*(pdat+2*n));
              check3();
       write_dlcd(*(pdat+2*n+1));

 write_clcd(0xb2);

 }

}
void word_8(uchar row ,uchar list, uchar *pdat)
{
 uchar addr_h,addr_l,n;
 uint p_addr;
 for(n=0;n<16;n++)
 {
 p_addr=(list+n)*30+row;
 addr_h=p_addr>>8;
 addr_l=p_addr%256;
 write_clcd_two(addr_l,addr_h,0x24);
 write_clcd(0xb0);
        check3();
       write_dlcd(*(pdat+n));
 write_clcd(0xb2);

 }

}

 

 

lcd_init()
{
//顯示區域設置指令格式為:D1低 D2高  0 1 0 0 0 0 n1 n0

 write_clcd_two(0x00,0x00,0x40);//文本區首地址 0x0000
 write_clcd_two(0x1e,0x00,0x41);//文本區屏寬字節數 0x1e =30 *8bit


 //write_clcd_two(0x00,0x00,0x42);// 設置圖形顯示區域首地址
 //write_clcd_two(0x1e,0x00,0x43);// 圖形區屏寬字節數


 write_clcd(0xa0);//光標形狀設置  1 0 1 0 0 N2 N1 N0 光標高度
 write_clcd(0x9d);//顯示開關 1 0 0 1 N3 N2 N1 N0 N0:1/0,光標閃爍啟用/禁止N1:1/0,光標顯示啟用/禁止N2:1/0,文本顯示啟用/禁止N3:1/0,圖形顯示啟用/禁止
 write_clcd(0x80);//顯示方式設置,邏輯"或"合成
 
}
user_letter(uchar row ,uchar list, uchar *pdat  )
{
 uchar addr_h,addr_l;
 uint p_addr,n;
  if(row>29)
 {list=list+(row/30)<<4;
  row=row%30;
 }
  p_addr=list*30+row;
 addr_h=p_addr>>8;
 addr_l=p_addr%256;
  write_clcd_two( addr_l, addr_h,0x24);
    write_clcd(0xb0);
    for(n=0;n<3840-p_addr;n++)///////////////////////////////
     {
       check3();
       write_dlcd(*(pdat+n));
     }
     write_clcd(0xb2);
}
void delay(int z) 
    {
       int x,y;
     for(x=z;x>0;x--)
    for(y=1000;y>0;y--);
    } 
main()
{
  uchar n;
 lcd_init();

write_clcd_two(0x00,0x00,0x24);

//write_clcd_two(0x00,0x00,0x24);
//user_letter(0x00 ,0x00, over1);
//for(n=0;n<57;n++)
//word_16(0x04+2*n ,0x00, word+32*n);
//delay(1000);
//user_letter(0x00 ,0x40, afei);
//delay(1000);
//write_clcd_two(0x00,0x00,0x24);
//user_letter(0x00 ,0x00, over);
//write_clcd(0xb0);//數據自動讀/寫方式設置1 0 1 1 0 0 N1 N00 0 B0H 自動寫設置0 1 B1H 自動讀設置1 * B2H/B3H 自動讀/寫結束

 //for(n=0;n<150;n++)
//{
//check3();
//write_dlcd(0x12);
//}
//write_clcd(0xb2);

 


write_clcd_one(0x03,0xc4);
write_clcd_two(0x1f,0x0f,0x21);
write_dlcd(0xf0);
 while(1)
 {

  

 };
}

關閉窗口

相關文章

主站蜘蛛池模板: 黄色在线免费观看 | 日韩三级电影一区二区 | 亚洲 欧美 日韩在线 | 91麻豆精品国产91久久久更新资源速度超快 | 亚洲视频a| 日韩欧美在| 天天草天天干天天 | 日韩二| 久久久久久久国产 | 亚洲高清av在线 | 99色综合 | 一区二区三区欧美在线观看 | www.国产精| 国产一区二区三区网站 | 日韩福利 | 久久新 | www.日本精品 | 一区二区三区四区在线视频 | 在线观看黄免费 | av一区在线观看 | 亚洲欧美综合网 | 国产日韩欧美精品一区二区 | 免费精品久久久久久中文字幕 | 国产激情一区二区三区 | 拍真实国产伦偷精品 | 国产精品99久久久久久大便 | av手机免费在线观看 | 欧美在线一区二区三区 | 一级片网址| 日本一级淫片免费啪啪3 | 亚洲精品国产电影 | 中文字幕一区二区三区乱码在线 | 欧美色性| 91麻豆精品国产91久久久资源速度 | 91天堂| 国产精品污www一区二区三区 | 亚洲一区二区三区高清 | 亚洲午夜精品一区二区三区他趣 | 成人午夜性成交 | 欧美在线观看一区 | 亚洲欧美在线观看 |