?? lcd1602.c
字號(hào):
#include <reg51.h>
#include "hardware.h"
#include "LCD1602.h"
void mdelay(unsigned int);
//char code line1[] = "024680 6 8 0 2 4";
//char code line2[] = "hjllprtvvvvxxxxx";
//char code rect_line1[16];//format : F# DR:2/3#XXXXHZ
//char code rect_line2[] = "duty ratio 5H 6L";
//char code sin_line1[16] = "Z 0.5-5.0v0000HZ";
//char code sin_line2[16] = "5 crest 6 trough";
void LCD_write_cmd(unsigned char cmd)
{
LCD_data_port = cmd;
LCD_RS = 0;
LCD_RW = 0;
LCD_E = 1;
mdelay(1);
LCD_E = 0;
}
void LCD_write_data(unsigned char row, unsigned char cow, const char Data) reentrant
{
unsigned char addr = 0;
row = row & 0x1;
cow = cow & 0xf;
if (row)
addr = (0x80 | cow) + 0x40;
else addr = 0x80 | cow;
LCD_write_cmd(addr);
LCD_data_port = Data;
LCD_RS = 1;
LCD_RW = 0;
LCD_E = 1;
mdelay(1);
LCD_E = 0;
}
void mdelay(unsigned int msec)
{
int i = 0;
while (msec--)
for (i = 0; i <= 500; i++);
}
void init_LCD1602()
{
mdelay(20);
LCD_write_cmd(0x38);//8 bites trans, 2 lines, 5*7,
LCD_write_cmd(0x8);//close display
LCD_write_cmd(0x6);//cursor right shift, AC inc, no ALL_SHIFT
LCD_write_cmd(0x2);//cursor and ac addr reset
LCD_write_cmd(0x1);//清屏
LCD_write_cmd(0xc);//open display, no cursor , no cursor flash
}
void printstr(unsigned char start, unsigned char end, const char *str)
{
unsigned char count = end -start +1;
unsigned char index = 0;
do {
LCD_write_cmd(0x80 | start);
// #pragma asm
// MOV P2, str[index];
// #pragma asmend
if (start > 0x40)
LCD_write_data(1, start + index - 0x40, str[index]);
else LCD_write_data(0, start + index , str[index]);
index++;
} while (index < count);
}
/*void LCD_check_busy()
{
//不知道怎么實(shí)現(xiàn),E 的時(shí)序圖
}
*/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -