📄 armok0137251.txt
字号:
#include "delay.h"
#define dataport PORTB //定义数据寄存器端口
#define dirport_data DDRB //定义方向寄存器端口
#define conport PORTA
#define dirport_con DDRA
#define LCD_E (1 << 6) //引脚定义
#define LCD_RS (1 << 4)
#define LCD_RW (1 << 5)
#define lcd_set_e() (conport |= LCD_E) //置位与清零
#define lcd_set_rs() (conport |= LCD_RS)
#define lcd_set_rw() (conport |= LCD_RW)
#define lcd_clear_e() (conport &= ~LCD_E)
#define lcd_clear_rs() (conport &= ~LCD_RS)
#define lcd_clear_rw() (conport &= ~LCD_RW)
/*********************************************************/
void lcd_pulse(void); //产生LCD所需的短脉冲
void lcd_wait(void); //等待
void lcd_send(unsigned char data); //向LCD写一个字节数据
void clrscr(void); //清屏函数
void gotoz(unsigned char z); //定位坐标
void gotoxy(unsigned char x,unsigned char y); //定位字符位置
void put_char(char c); //向LCD写字符
void outtext(char* text); //向LCD写字符串
void initgraph(void); //初始化LCD
/**************************************************************************************/
//函数名 :lcd_pulse
//属性 :私有
//功能 :产生LCD所需的短脉冲
//输入参数 :无
//输出参数 :无
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void lcd_pulse(void)
{
lcd_set_e();
delay_nms(1);
lcd_clear_e();
delay_nms(1);
}
/**************************************************************************************/
//函数名 :lcd_wait
//属性 :私有
//功能 :延时等待
//输入参数 :无
//输出参数 :无
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void lcd_wait(void) // medium delay (long for lcd, but much less than a second)
{
asm("nop");
}
/**************************************************************************************/
//函数名 :lcd_send
//属性 :私有
//功能 :写一个字符到LCD
//输入参数 :data--要显示的字符
//输出参数 :无
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void lcd_send(unsigned char data) // send byte to lcd
{
lcd_wait();
dataport = data;
lcd_pulse();
}
/**************************************************************************************/
//函数名 :clrscr
//属性 :私有
//功能 :清除屏幕
//输入参数 :无
//输出参数 :无
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void clrscr(void) // clear screen
{
lcd_clear_rs();
lcd_clear_rw();
lcd_send(0x01);
lcd_wait();
}
/**************************************************************************************/
//函数名 :gotoz
//属性 :私有
//功能 :坐标定位
//输入参数 :z--位置
//输出参数 :无
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void gotoz(unsigned char z) // goto lcd memory address
{
lcd_clear_rs();
lcd_clear_rw();
lcd_send(z | 0x80);
}
/**************************************************************************************/
//函数名 :gotoxy
//属性 :私有
//功能 :在LCD上的位置
//输入参数 :x--字符的列;y--字符的行
//输出参数 :
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void gotoxy(unsigned char x,unsigned char y)
{
gotoz((x)|((y)<<6));
}
/**************************************************************************************/
//函数名 :put_char
//属性 :私有
//功能 :在LCD上显示一个字符
//输入参数 :c--要显示的字符
//输出参数 :
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void put_char(char c) // output single character
{
lcd_clear_rw();
lcd_set_rs();
lcd_send(c);
}
/**************************************************************************************/
//函数名 :outtext
//属性 :私有
//功能 :输出字符串到LCD显示
//输入参数 :text--要显示的字符串
//输出参数 :无
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void outtext(char* text) // output string
{
unsigned char i;
for(i = 0; text[i] && i < 16; i++)
put_char(text[i]);
}
/**************************************************************************************/
//函数名 :initgraph
//属性 :私有
//功能 :初始化LCD
//输入参数 :无
//输出参数 :无
//返回值 :
//修改日期 :
//修改人 :
/**************************************************************************************/
void initgraph(void) // init display
{
dirport_data = 0xFF;
dirport_con |= (LCD_E | LCD_RS | LCD_RW);
lcd_clear_rs();
lcd_clear_rw();
lcd_send(0x3C);
lcd_send(0x3C);
lcd_send(0x3C);
lcd_send(0x06);
lcd_send(0x0C);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -