L1602静止显示字符仿真图和源程序
单片机源程序如下:
- Lcd1602静止显示字符程序
- 显示第一行显示welcome!第二行显示Hello world!
- (1)lcd_busy() 忙状态函数
- (2)lcd_command() 发数据到指令寄存器IR函数
- (3)lcd_write() 写数据(显示)
- (4)lcd_pos() 设定显示位置函数
- (5)lcd_init() lcd初始化
- #include<reg52.h>
- #include<intrins.h>
-
- unsigned char code dis1[] = {"welcome!"};
- unsigned char code dis2[] = {"Hello world!"};
- sbit rs = P2^0; //
- sbit rw = P2^1;
- sbit ep = P2^2;
- void delay(unsigned char ms) // 延时子程序
- {
- unsigned char i;
- while(ms--)
- {
- for(i = 0; i< 250; i++)
- {
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- }
- }
- }
- bit lcd_busy() //忙状态
- {
- bit temp;
- rs=0;
- rw=1;
- ep=1;
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- temp=(bit)(P0&0x80);
- ep=0;
- return temp;
- }
- void lcd_command(unsigned char dat) //发数据到指令寄存器IR
- {
- while(lcd_busy());
- rs=0;
- rw=0;
- ep=0;
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- P0=dat;
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- ep=1;
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- ep=0;
- }
- void lcd_write(unsigned char dat) //写数据
- {
- while(lcd_busy());
- rs=1;
- rw=0;
- ep=0;
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- P0=dat;
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- ep=1;
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- ep=0;
- }
- //-------------------------------------------
- // x为列,y为行
- //-------------------------------------------
- void lcd_pos(unsigned char x,unsigned char y)//设定显示位置
- {
- if(y==0) x |= 0x80;
- else x |= 0xc0;
-
- lcd_command(x);
- }
- void lcd_init() //lcd初始化
- {
- lcd_command(0x38);//设置功能:DL=1,N=1,F=0(8位数据总线,5*8点阵,2行显示)
- delay(1);
- lcd_command(0x0c);//显示开/关控制:D=1,C=0,B=0(开显示,光标不显示)
- delay(1);
- lcd_command(0x06);//设置输入模式:I/D=1,S=0(AC地址增1,不移位)
- delay(1);
- lcd_command(0x01);//清屏显示
- delay(1);
- //lcd_command(0x0e);//显示开/关控制:D=1,C=1,B=0(开显示,光标显示)
- }
- void main(void)
- {
- unsigned char i;
-
- lcd_init();
-
- lcd_pos(5,0);
- i=0;
- while(dis1[i]!='\0')
- {
- lcd_write(dis1[i]);i++;
- }
-
- lcd_pos(3,1);
- i=0;
- while(dis2[i]!='\0')
- {
- lcd_write(dis2[i]);i++;
- }
-
- while(1);
- }
复制代码
所有资料51hei提供下载:
L1602静止显示字符.rar
(51.31 KB, 下载次数: 14)
|