//1602显示中RS接PD4,WR接PD5,EN接PD6,PB接数据。PC0接舵。声波测距TRIG接PC1,ECHO接PC2。使能ENA接PC3,ENB接PC4,电机端接PA0~3。
#include <avr/io.h>
#define F_CPU 11059200UL
#include <util/delay.h>
#include <avr/interrupt.h>
#define uint unsigned int
#define uchar unsigned char
#define BIT(X) (1<<X)
#define RS PD4
#define WR PD5
#define EN PD6
uint data;
uchar pp=0,cnt=0,pwm=15,ENA=180,ENB=200,m=0,zuo,you;
uchar table[]={5,6,7,8,9,10,11,12,13,14,15,16,17,18,17,16,15,14,13,12,11,10,9,8,7,6,5};
uchar const Pang[]="juli:.";
uchar const xue[]="cm.";
void Time0_init(void)
{
cli();
TCCR0=0;
TCNT0=0x6a;
TCCR0=0x02;//8分频
}
//写数据函数
void LCD_Write_Data(unsigned char Data)
{
PORTD&=~BIT(EN); //EN=0;
PORTD|=BIT(RS); //RS=1;
PORTB=Data; //送数据
PORTD|=BIT(EN); //EN=1;
_delay_ms(10);
PORTD&=~BIT(EN); //EN=0;
}
//写命令函数
void LCD_Write_Cmd(unsigned char Cmd)
{
PORTD&=~BIT(EN); //EN-0;
PORTD&=~BIT(RS); //RS=0;
PORTB=Cmd; //送命令
PORTD|=BIT(EN); //EN=1;
_delay_ms(10);
PORTD&=~BIT(EN); //EN=0;
}
//IO初始化
void LCD_IO_Init()
{
DDRD|=BIT(RS)|BIT(WR)|BIT(EN); //PD4~PD6位输出
DDRB=0xff; //PB口为输出
PORTD&=~BIT(WR); //WR=0;
}
void LCD_display(void)
{
uchar i;
LCD_Write_Cmd(0x38);//Initial 1602
LCD_Write_Cmd(0x0c);//bit3(1),bit2(1)开显示,bit1(1)显示光标,bit0(1)光标闪耀