|
MSP430單片機做的驅動常見的LCD1602液晶屏的源程序:
完整的程序下載:
MSP430單片機驅動LCD1602液晶屏源程序.rar
(23.6 KB, 下載次數: 333)
2017-3-7 01:27 上傳
點擊文件名下載附件
下面是部分源碼預覽:
- #include <msp430x22x4.h> /*單片機寄存器頭文件*/
- #include "lcd1602.h" /*LCD驅動頭文件*/
- /*-////////////////////////////函數說明///////////////////////////////-*/
- /*- 名 稱:Serial_To_Parallel() -*/
- /*- 功 能:輸出通過74HC164由并行轉為串行 -*/
- /*- 輸入變量:無 -*/
- /*- 輸出變量:無 -*/
- /*-///////////////////////////////////////////////////////////////////-*/
- void Serial_To_Parallel(char dat)
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- if(dat&0x80)
- Data_OUT_H;
- else
- Data_OUT_L;
- CLK_H;
- _NOP();//空延遲
- _NOP();
- _NOP();
- CLK_L;
- dat<<=1;
- }
- }
- /*-////////////////////////////函數說明///////////////////////////////-*/
- /*- 名 稱:Delay() -*/
- /*- 功 能:延時 -*/
- /*- 輸入變量:無 -*/
- /*- 輸出變量:無 -*/
- /*-///////////////////////////////////////////////////////////////////-*/
- void Delay(unsigned int count)
- {
- unsigned int i=count;
- while (i != 0)
- {
- i--;
- }
- }
- /*-////////////////////////////函數說明///////////////////////////////-*/
- /*- 名 稱:LCD_WriteCommand(unsigned char Com) -*/
- /*- 功 能:LCD寫入命令 -*/
- /*- 輸入變量:unsigned char Com(命令字) -*/
- /*- 輸出變量:無 -*/
- /*-///////////////////////////////////////////////////////////////////-*/
- void LCD_WriteCommand(unsigned char Com)
- {
- RS_SET_L; //命令
- RW_SET_L; //寫操作
- _NOP();
- Serial_To_Parallel(Com);
- _NOP();
- E_SET_H;
- _NOP();
- E_SET_L;//使能端下降沿沿寫入
- Delay(Delay_Count);
- }
- /*-////////////////////////////函數說明///////////////////////////////-*/
- /*- 名 稱:LCD_WriteData(unsigned char Dat) -*/
- /*- 功 能:LCD寫入數據 -*/
- /*- 輸入變量:unsigned char Dat(數據) -*/
- /*- 輸出變量:無 -*/
- /*-///////////////////////////////////////////////////////////////////-*/
- void LCD_WriteData(unsigned char Dat)
- {
- RS_SET_H; //數據
- RW_SET_L; //寫操作
- Serial_To_Parallel(Dat);
- _NOP();
- E_SET_H;
- _NOP();
- E_SET_L;//使能端下降沿沿寫入
- Delay(Delay_Count);
- }
- /*-////////////////////////////函數說明///////////////////////////////-*/
- /*- 名 稱:LCD_SetXY(char x,char y) -*/
- /*- 功 能:設定LCD寫入數據指針 -*/
- /*- 輸入變量:unsigned char Dat(數據) -*/
- /*- 輸出變量:無 -*/
- /*-///////////////////////////////////////////////////////////////////-*/
- void LCD_SetXY(char x,char y)
- {
- switch(y)//數據指針=80+地址碼(0-27H,40-67H)
- {
- case 1:LCD_WriteCommand(0x7f + x);break; //第1行
- case 2:LCD_WriteCommand(0xbf + x);break; //第2行
- }
- }
- /*-////////////////////////////函數說明///////////////////////////////-*/
- /*- 名 稱: LCD_DispStr(...) -*/
- /*- 功 能: LCD寫入字符 -*/
- /*- 輸入變量:x(列數),y(行數),*p字符串指針,length(長度) -*/
- /*- 特殊說明:x或者y為0時候,液晶顯示使用默認地址(不指定新地址) -*/
- /*- 輸出變量:無 -*/
- /*-///////////////////////////////////////////////////////////////////-*/
- void LCD_DispCharArray(char x,char y,char *p,unsigned char length)
- {
- if (x !=0x00 && y!=0x00)
- {
- LCD_SetXY(x,y);//數據有效重新設置位置
- }
- while(length!=0)
- {
- LCD_WriteData(*p);
- p++;
- length--;
- }
- }
- /*-////////////////////////////函數說明///////////////////////////////-*/
- /*- 名 稱: LCD_DispStr(...) -*/
- /*- 功 能:LCD寫入字符串,自動識別結束符號‘\0’ -*/
- /*- 輸入變量:x(列數),y(行數),*p(字符串指針) -*/
- /*- 特殊說明:x或者y為0時候,液晶顯示使用默認地址(不指定新地址) -*/
- /*- 輸出變量:無 -*/
- /*-///////////////////////////////////////////////////////////////////-*/
- void LCD_DispStr(char x,char y,char *p) //exp:LCD_DispStr(1,1,"LCD_Serial_test");
- {
- if (x !=0x00 && y!=0x00)
- {
- LCD_SetXY(x,y);//數據有效重新設置位置
- }
- while(*p!='\0')
- {
- LCD_WriteData(*p);
- p++;
- }
- }
- /*-////////////////////////////函數說明///////////////////////////////-*/
- /*- 名 稱:LCD_Init() -*/
- /*- 功 能:LCD初始化 -*/
- /*- 輸入變量:無 -*/
- /*- 輸出變量:無 -*/
- /*-///////////////////////////////////////////////////////////////////-*/
- void LCD_Init()
- {
- E_SET_OUT; //輸出端口初始化部分
- RW_SET_OUT;
- RS_SET_OUT;
- DataPort_SET_OUT;
- E_SET_L; //使能拉低
- RW_SET_L; //讀寫拉低
- RS_SET_L; //選擇拉低
- CLK_SET_OUT;
-
- LCD_WriteCommand(0x38); //寫命令部分
- LCD_WriteCommand(0x01); //清屏
- LCD_WriteCommand(0x06);
- LCD_WriteCommand(0x0c); //開顯示,不顯示光標
- LCD_WriteCommand(0x00);
- }
- /*-////////////////////////////函數說明///////////////////////////////-*/
- /*- 名 稱:LCD_CLR() -*/
- /*- 功 能:LCD清屏 -*/
- /*- 輸入變量:無 -*/
- /*- 輸出變量:無 -*/
- /*-///////////////////////////////////////////////////////////////////-*/
- void LCD_CLR()
- {
- LCD_WriteCommand(0x01); //清屏
- }
復制代碼
|
評分
-
查看全部評分
|