L1602靜止顯示字符仿真圖和源程序
0.png (52.17 KB, 下載次數: 82)
下載附件
2018-3-20 16:30 上傳
單片機源程序如下:
- 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)
2018-3-20 10:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
Lcd1602靜止顯示字符程序.docx
(15.49 KB, 下載次數: 7)
2018-3-20 10:21 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|