|
- #include <reg52.h>
- #define db P0
- sbit lcde = P2^7;
- sbit rs = P2^6;
- sbit rw = P2^5;
- void wait_ready() //等待液晶不忙
- {
- unsigned char sta = 0;
- db = 0xff;
- rs = 0;
- rw = 1;
- do
- {
- lcde = 1;
- sta = db;
- lcde = 0;
- }while(sta & 0x80);
- }
- void write_dat(unsigned char dat)//寫數(shù)據(jù)
- {
- wait_ready();
- rs = 1;
- rw = 0;
- db = dat;
- lcde = 1;
- lcde = 0;
- }
- void write_com(unsigned char com)//寫命令
- {
- wait_ready();
- rs = 0;
- rw = 0;
- db = com;
- lcde = 1;
- lcde = 0;
- }
- void set_cursor(unsigned char x,unsigned char y) //設(shè)定坐標(biāo)
- {
- unsigned char addr = 0;
- if(y == 0)
- {
- addr = 0x00 + x;
- }
- else
- {
- addr = 0x40 + x;
- }
- write_com(0x80 + addr);
- }
- void write_str(unsigned char x,unsigned char y,unsigned char *str)
- {
- set_cursor(x,y);
- while(*str != '\0')
- {
- write_dat(*str++);
- }
- }
- void clean_screen() //清屏
- {
- write_com(0x01);
- }
- void init_1602() //初始化
- {
- write_com(0x38);
- write_com(0x06);
- write_com(0x0c);
- write_com(0x01);
- }
- void lcdareaclean(unsigned char x,unsigned char y,unsigned char len)
- {
- set_cursor(x,y);
- while(len--)
- {
- write_dat(' ');
- }
- }
復(fù)制代碼
這是1602 |
|