📄 161212.c
字号:
/******************************************************************
本程序只供学习使用,未经作者许可,不得用于其它任何用途
我的邮箱:at89c58@163.com
*******************************************************************/
//HD44780 1602 程序演示
//单片机型号:ATMEGA8L-8PU
//晶振:4M
//程序没有加入忙判断
//编译软件为winavr 200705
#include<avr/io.h>
#include <util/delay.h>
#include <avr/portpins.h>
#include <compat/deprecated.h>
#define uchar unsigned char
#define LCD_E_0 cbi(PORTD,6)
#define LCD_RW_0 cbi(PORTD,5)
#define LCD_RS_0 cbi(PORTD,4)
#define LCD_E_1 sbi(PORTD,6)
#define LCD_RW_1 sbi(PORTD,5)
#define LCD_RS_1 sbi(PORTD,4)
void com(uchar init) //写指令
{
LCD_RS_0;
PORTB=init;
_delay_ms(5);
LCD_E_1;
LCD_E_0;
}
void Dat(uchar dat) //写数据
{
LCD_RS_1;
PORTB=dat;
_delay_ms(5);
LCD_E_1;
LCD_E_0;
}
void display(uchar x,uchar y,uchar dat) //精确显示字符,x为列坐标,y为行坐标,dat数据
{
uchar add;
if(y==0)
add=0x80+0x00+x;
else
add=0x80+0x40+x;
com(add);
Dat(dat);
}
void Init(void) //液晶屏初始化
{
com(0x38);
_delay_ms(5);
com(0x38);
com(0x38);
com(0x06);
com(0x0c);
com(0x01);
}
int main(void)
{
uchar i;
DDRB|=0xff; //初始化引脚
DDRD|=0Xff;
DDRC|=0Xff;
Init();
for (i=0;i<16;i++)
{
display(i,0,0x41+i); //显示1602库中自带符号A...
}
for (i=0;i<16;i++)
{
display(i,1,0x30+i); //显示1602库中自带符号1...
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -