123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #include "drive_1602.h"
- #include <stdarg.h> // 标准头文件
- #include "stdio.h"
- #include "string.h"
- #define lcddata P1
- sbit rs=P2^7;
- sbit en=P2^6;
- void delay_1ms(unsigned int xms)
- {
- unsigned char i, j;
- while(xms--)
- {
- _nop_();
- _nop_();
- _nop_();
- i = 11;
- j = 190;
- do
- {
- while (--j);
- } while (--i);
- }
- }
- void Write_1602_com(unsigned char com)
- {
- rs=0;
- lcddata=com;
- delay_1ms(1);
- en=1;
- delay_1ms(1);
- en=0;
- }
- void Write_1602_date(unsigned char date)
- {
- rs=1;
- lcddata=date;
- delay_1ms(1);
- en=1;
- delay_1ms(1);
- en=0;
- }
- void WriteLcd1602_String(char x,char y,char *p)
- {
- char i=0;
- if(y == 0)
- {
- Write_1602_com(0x80 + x);
- }
- else
- {
- Write_1602_com(0xC0 + x);
- }
- while(*p != 0)
- {
- Write_1602_date(*p);
- p++;
- }
- }
- void lcd1602_init()
- {
- Write_1602_com(0x38);
- delay_1ms(1);
- Write_1602_com(0x0c);
- delay_1ms(1);
- Write_1602_com(0x06);
- delay_1ms(1);
- Write_1602_com(0x01);
- delay_1ms(1);
- Write_1602_com(0x80);
- delay_1ms(1);
-
- }
- void LCD1602_Write_address(unsigned char x,unsigned char y)
- {
- x&=0x0f;
- y&=0x01;
- if(y==0)
- Write_1602_com(x|0x80);
- else
- Write_1602_com((x+0x40)|0x80);
- }
- void LCD1602_Disp(unsigned char x,unsigned char y,unsigned char buf)
- {
- LCD1602_Write_address(x,y);
- Write_1602_date(buf);
- }
|