51单片机和LCD1602的接法
时间:10-02
整理:3721RD
点击:
谁能给我解释一下液晶的这种接法。下面是代码,但是看不懂
- #include "reg51.h"
- #include"absacc.h"
- typedef unsigned char BYTE;
- typedef unsigned int WORD;
- /* 液晶1602口地址 */
- #define wr_com XBYTE[0xC000] //写命令
- #define wr_data XBYTE[0xC100] //写数据
- #define rd_com XBYTE[0xC200] //读命令
- #define rd_data XBYTE[0xC300] //读数据
- void lcd_init(void); // lcd初始化
- void write_cmd(BYTE cmd); // lcd写命令
- void write_data(BYTE dat) ; // 写数据
- void set_display_place(BYTE line,column);
- void write_string_lcd(BYTE line,column,unsigned char *string);
- void Delay(WORD n)
- {
- WORD x;
- while(n--)
- {
- x=500;
- while(x--);
- }
- }
- /************************************************************************
- Function name: write_cmd
- Descriptions: 向lcd输入指令
- ************************************************************************/
- void write_cmd(BYTE cmd)
- {
- BYTE dl;
- do {
- dl=rd_com;
- } while((dl&0x80)!=0); //判忙
- wr_com= cmd;
- Delay(1);
- }
- /**********************************************************************
- Function name: write_data
- Descriptions: 写入数据
- **********************************************************************/
- void write_data(BYTE dat)
- {
- BYTE dl;
- do {
- dl=rd_com;
- } while((dl&0x80)!=0); //判忙
- wr_data= dat;
- Delay(1);
- }
- /***********************************************************************
- Function name: write_string
- Descriptions: 写入字符串
- ***********************************************************************/
- void write_string(BYTE *s)
- {
- while(*s != '\0') //'\0'为字符串结束标志
- {
- write_data(*s);
- s++;
- }
- }
- /**********************************************************************
- Function name: set_display_place
- Descriptions: 设置字符的显示位置
- **********************************************************************/
- void set_display_place(BYTE line,column)
- {
- BYTE address;
- if(line == 1)
- {
- address = 0x80 + column;
- }
- else if(line == 2)
- {
- address = 0xc0 + column;
- }
- write_cmd(address);
- }
- /*******************************************************************
- Function name: 将字符串写到指定的位置
- Descriptions: 将字符串显示在lcd的特定位置
- *******************************************************************/
- void write_string_lcd(BYTE line,column,unsigned char *string)
- {
- set_display_place(line,column);
- write_string(string);
- Delay(1);
- }
- /***************************************************
- ************液晶模块初始化******************************
- ****************************************************/
- void lcd_init(void)
- {
- write_cmd(0x38);//
- write_cmd(0x38);//
- write_cmd(0x06);//
- write_cmd(0x0c);//
- write_cmd(0x01);//
- }
- /*****************LED显示位置********************/
- void main()
- {
- lcd_init();
-
- while(1)
- {write_string_lcd(1,1,"0123456789");
- write_string_lcd(2,1,"ABCDEFGHIJ");
-
- }
- }