天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術熱線: 4007-888-234

技術支持

QLdsPIC3]LCD1602[C30+dsPIC30F6014A]

更新時間: 2019-03-23

深圳市英銳恩科技有限公司:臺灣麥肯單片機(Micon MDT單片機)亞太地區A級代理商

QLdsPIC3]LCD1602[C30+dsPIC30F6014A]
//實驗目的:熟悉LCD的使用方法
//LCD循環顯示本產品名稱和公司網站地址
//硬件要求:跳線全部跳好
//所有撥碼開關置OFF
//調節電位器VR2到LCD1602能正常顯示。

#include             //dsPIC30F6014標準頭文件

  _FOSC(CSW_FSCM_OFF & XT_PLL4);  //4倍頻晶振,Failsafe 時鐘關閉
  _FWDT(WDT_OFF);                 //關閉看門狗定時器
  _FBORPOR(PBOR_OFF & MCLR_EN);   //掉電復位禁止,MCLR復位使能。
  _FGS(CODE_PROT_OFF);            //代碼保護禁止


#define rs LATBbits.LATB4          //定義LCD控制位(注意這里只能用LATB寄存器,不能直接用PORTB寄存器)
#define rw LATBbits.LATB5
#define e  LATBbits.LATB6
 const int web[ ]={' ','W','W','W','.','P','I','C','1','6','.','C','O','M',' ',' '};
//定義公司web地址
const int name[ ]={' ',' ',' ',' ','Q','L','d','s','P','I','C','3',' ',' ',' ',' '};
//定義公司產品名稱

void init();                   //申明I/O口初始化函數
void lcd_init();               //申明LCD初始化函數
void write_web();              //申明顯示公司web地址函數
void write_name();             //申明顯示產品名字函數
void write(unsigned int x);    //申明顯示1字節數據函數
void lcd_enable();             //申明LCD顯示設置函數
void delay();                  //申明延時函數

//---------------------------------------
//主函數
int main(void)
 {
    while(1)
      {
        delay();
        delay();
        delay();
        delay();
        delay();
        init();                //調用I/O口初始化函數
        lcd_init();            //調用LCD初始化函數
        write_name();          //調用顯示產品名字函數
        PORTD=0X00C0;          //設置第2行顯示地址
        lcd_enable();          //調用LCD顯示設置函數
        write_web();           //調用顯示公司tel函數
          while(1);
         
      }
 }
 
//---------------------------------------
//I/O口初始化函數
void init()
 {
    TRISB=0X0000;              //設置B口為輸出
    TRISD=0X0000;              //設置D口為輸出
 }

//---------------------------------------
//LCD初始化函數
void lcd_init()
 {
    PORTD=0X1;                 //清除顯示
    lcd_enable();
    PORTD=0X38;                //8位2行5*7點陣
    lcd_enable();
    PORTD=0X0e;                //顯示開,光標開,閃爍
    lcd_enable();
    PORTD=0X06;                //文字不動,光標右移
    lcd_enable();
    PORTD=0X80;                //產品名字顯示地址
    lcd_enable();
 }
 
//--------------------------------------
//顯示公司web地址
void write_web()
 {
    unsigned char i,j;
    for(i=0;i<16;i++)          //一共16字節數據
       {
         write(web[i]);        //查表獲取數據并調用寫一個字節數據函數送LCD顯示
         for(j=0;j<5;j++)      //延時一段時間(主要是為了控制顯示的速度)
          {delay();}
       }
 }

//--------------------------------------
//顯示產品名字函數
 void write_name()
 {
    unsigned char i,j;
    for(i=0;i<0x10;i++)       //一共顯示16字節數據
       {
       
         write(name[i]);      //查表獲取數據并調用寫一個字節數據函數送LCD顯示
         for(j=0;j<5;j++)
          {delay();}
       }
 }
 
//--------------------------------------
//寫一個字節數據函數
//在電平發生改變后需要插入一段延時時間,否則LCD反應不過來。
void write(unsigned int x)
 {
  PORTD=x;                   //待顯示數據送PORTD口
  delay();                  
  rs=1;                      //該字節數據為數據,而不是命令
  delay();
  rw=0;                      //此次操作為寫,而不是讀
  delay();
  e=0;                       //拉低使能信號
  delay();                   //保持使能信號為低一段時間
  e=1;                       //拉高使能信號,建立LCD操作所需要的上升沿
  delay();
 }


//--------------------------------------
//LCD顯示設置函數
//在電平發生改變后需要插入一段延時時間,否則LCD反應不過來。
void lcd_enable()
 {
   delay();
   rs=0;                     //該字節數據為命令,而不是數據
   delay();
   rw=0;                     //此次操作為寫,而不是讀
   delay();
   e=0;                      //拉低使能信號
   delay();                  //保持使能信號為低一段時間
   e=1;                      //拉高使能信號,建立LCD操作所需要的上升沿
   delay();
}

//--------------------------------------
//延時函數
void delay()
 {
   unsigned int i;
   for(i=0;i<100;i++);
 }



404
返回首頁 |  返回上一頁
联系我们: 历史| 郴州市| 高唐县| 确山县| 鄢陵县| 保康县| 招远市| 勃利县| 天水市| 潜山县| 广州市| 陇南市| 郸城县| 满洲里市| 济宁市| 原平市| 鄂托克前旗| 灌阳县| 甘孜县| 长葛市| 南川市| 南澳县| 达拉特旗| 昭平县| 中西区| 定襄县| 界首市| 嘉祥县| 多伦县| 新源县| 三原县| 青神县| 正阳县| 汤阴县| 保康县| 靖远县| 韩城市| 车险| 富裕县| 扶风县| 望江县|