这段代码是C语言中包含头文件的预处理指令,具体包含了Microchip Technology公司的16位单片机系列(如PIC24,dsPIC DSC)相关的定义和寄存器配置。该指令用于初始化硬件接口及设置IO端口属性等操作,为后续程序开发提供基础支持环境。
以下是经过调整的代码段:
```c
#include
#include
#define RS_0 PORTD &= ~(1 << PD3)
#define RS_1 PORTD |= (1 << PD3)
#define RW_0 PORTD &= ~(1 << PD4)
#define RW_1 PORTD |= (1 << PD4)
#define EN_0 PORTD &= ~(1 << PD6)
#define EN_1 PORTD |= (1 << PD6)
// 微秒级延时程序,晶振8MHz
void delay_us(int time) {
do {
time--;
} while (time > 1);
}
// 毫秒级延时程序,晶振8MHz
void delay_ms(unsigned int time){
while(time != 0) {
delay_us(1000);
time--;
}
}
/* 显示屏命令写入函数 */
void LCD_write_com(unsigned char com) {
RS_0; RW_0;
PORTB = com;
EN_1; delay_us(20);
EN_0;
}
/* 显示屏数据写入函数 */
void LCD_write_data(unsigned char data){
RS_1;
RW_0;
PORTB = data;
EN_1; delay_us(200);
EN_0;
}
/* 清空显示屏显示*/
void LCD_clear(void) {
LCD_write_com(0x01);
delay_ms(5);
}
/* 显示屏字符串写入函数 */
void LCD_write_str(unsigned char x,unsigned char y,unsigned char *s){
if (y == 0) {
LCD_write_com(0x80 + x);
} else {
LCD_write_com(0xC0 + x);
}
while (*s){
LCD_write_data(*s);
s++;
}
}
/* 显示屏单字符写入函数 */
void LCD_write_char(unsigned char x,unsigned char y,unsigned char data) {
if (y == 0){
LCD_write_com(0x80 + x);
} else {
LCD_write_com(0xC0 + x);
}
LCD_write_data(data);
}
/* 显示屏初始化函数 */
void LCD_init(void){
DDRB = 0xFF; /* I/O口方向设置*/
DDRD |= (1 << PD3) | (1 << PD4) | (1 << PD6);
// 初始化显示模式
LCD_write_com(0x38);
delay_ms(5);
// 设置显示功能
LCD_write_com(0x38);
delay_ms(5);
// 显示开启,光标关闭,不闪烁, 光标移动方向设置为向右移一位
LCD_write_com(0x06);
delay_ms(5);
// 清屏指令
LCD_write_com(0x01);
// 设置显示开及光标位置
LCD_write_com(0x0C);
}
void main(void) {
unsigned char i;
unsigned char *p;
PORTA = 0xFF; /* 打开上拉 */
DDRA = 0x00; /* 方向输入 */
delay_ms(100);
LCD_init();
while (1){
i = 1;
p = yixiangongren;
//LCD_clear();
LCD_write_str(1,0,www.eehome.cn);
delay_ms(50);
while (*p) {
LCD_write_char(i,1,*p);
i++;
p++;
}
delay_ms(500);
}
}
```
这段代码主要用于初始化和操作一个基于8位微控制器的LCD显示屏,通过一系列宏定义来简化对数据寄存器的操作,并提供了基本的功能如显示字符串、清屏等。