欢迎来到天天文库
浏览记录
ID:14400042
大小:41.50 KB
页数:13页
时间:2018-07-28
《avr单片机用矩阵键盘控制12864lcd显示(键盘输入距离,lcd显示)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、AVR单片机用矩阵键盘控制12864LCD显示(键盘输入距离,LCD显示)//内容:用4×4键盘控制12864LCD显示(键盘输入距离,LCD显示)//编译环境:AVRStudio4/AVRGCC//芯片:ATmega8L//系统时钟:内部1MHz//日期;2012.03.07#include#include#include#include#defineF_CPU1000000#defineDI_CLRPORTD&=~(1<2、RTD3、=1<4、=1<5、=1<6、URSE_DIR0x14//游标向右移动:AC=AC+1unsignedvolatilecharrow=0xF0;unsignedvolatilecharcol=0x0F;unsignedvolatilecharrow_col=0xFF;unsignedvolatileintcount=0;//*******************************************************//端口初始化函数//*******************************************************voidport_init7、(){//键盘端口PORTC=0x4F;//PC0-PC3使能上拉电阻;PC4、PC5低电平;PC6是复位端,使能上拉DDRC=0x70;//PC0-PC3输入;PC4、PC5输出PORTD&=(~(1<8、=0x0E;//PD2,PD3输出//LCD数据端口PORTB=0x00;DDRB=0xFF;//LCD控制端口PORTD9、=0x80;//8位并口方式DDRD10、=0xF0;}//******************************************************11、*//忙检测函数//*******************************************************voidCheck_Busy(){DDRB=0x00;//PB口置为输入口,准备读取数据DI_CLR;RW_SET;EN_SET;while(0x80&PINB);//监测忙信号,直到忙信号为0,才能进行读写操作EN_CLR;DDRB=0xFF;//PB口置为输出口,准备向端口发送数据}//*******************************************************//写命令函数//*******12、************************************************voidLCD_write_com(unsignedcharcom){Check_Busy();DI_CLR;RW_CLR;EN_SET;PORTB=com;_delay_ms(5);EN_CLR;}//*******************************************************//写数据函数//*******************************************************voidLCD_write13、_data(unsignedchardata){Check_Busy();DI_SET;RW_CLR;EN_SET;PORTB=data;_delay_ms(5);EN_CLR;}//*******************************************************//清屏函数//*******************************************************voidLCD_clear(){LCD_write_com(0x01);_delay_ms(5);}//********************14、**************************
2、RTD
3、=1<4、=1<5、=1<6、URSE_DIR0x14//游标向右移动:AC=AC+1unsignedvolatilecharrow=0xF0;unsignedvolatilecharcol=0x0F;unsignedvolatilecharrow_col=0xFF;unsignedvolatileintcount=0;//*******************************************************//端口初始化函数//*******************************************************voidport_init7、(){//键盘端口PORTC=0x4F;//PC0-PC3使能上拉电阻;PC4、PC5低电平;PC6是复位端,使能上拉DDRC=0x70;//PC0-PC3输入;PC4、PC5输出PORTD&=(~(1<8、=0x0E;//PD2,PD3输出//LCD数据端口PORTB=0x00;DDRB=0xFF;//LCD控制端口PORTD9、=0x80;//8位并口方式DDRD10、=0xF0;}//******************************************************11、*//忙检测函数//*******************************************************voidCheck_Busy(){DDRB=0x00;//PB口置为输入口,准备读取数据DI_CLR;RW_SET;EN_SET;while(0x80&PINB);//监测忙信号,直到忙信号为0,才能进行读写操作EN_CLR;DDRB=0xFF;//PB口置为输出口,准备向端口发送数据}//*******************************************************//写命令函数//*******12、************************************************voidLCD_write_com(unsignedcharcom){Check_Busy();DI_CLR;RW_CLR;EN_SET;PORTB=com;_delay_ms(5);EN_CLR;}//*******************************************************//写数据函数//*******************************************************voidLCD_write13、_data(unsignedchardata){Check_Busy();DI_SET;RW_CLR;EN_SET;PORTB=data;_delay_ms(5);EN_CLR;}//*******************************************************//清屏函数//*******************************************************voidLCD_clear(){LCD_write_com(0x01);_delay_ms(5);}//********************14、**************************
4、=1<5、=1<6、URSE_DIR0x14//游标向右移动:AC=AC+1unsignedvolatilecharrow=0xF0;unsignedvolatilecharcol=0x0F;unsignedvolatilecharrow_col=0xFF;unsignedvolatileintcount=0;//*******************************************************//端口初始化函数//*******************************************************voidport_init7、(){//键盘端口PORTC=0x4F;//PC0-PC3使能上拉电阻;PC4、PC5低电平;PC6是复位端,使能上拉DDRC=0x70;//PC0-PC3输入;PC4、PC5输出PORTD&=(~(1<8、=0x0E;//PD2,PD3输出//LCD数据端口PORTB=0x00;DDRB=0xFF;//LCD控制端口PORTD9、=0x80;//8位并口方式DDRD10、=0xF0;}//******************************************************11、*//忙检测函数//*******************************************************voidCheck_Busy(){DDRB=0x00;//PB口置为输入口,准备读取数据DI_CLR;RW_SET;EN_SET;while(0x80&PINB);//监测忙信号,直到忙信号为0,才能进行读写操作EN_CLR;DDRB=0xFF;//PB口置为输出口,准备向端口发送数据}//*******************************************************//写命令函数//*******12、************************************************voidLCD_write_com(unsignedcharcom){Check_Busy();DI_CLR;RW_CLR;EN_SET;PORTB=com;_delay_ms(5);EN_CLR;}//*******************************************************//写数据函数//*******************************************************voidLCD_write13、_data(unsignedchardata){Check_Busy();DI_SET;RW_CLR;EN_SET;PORTB=data;_delay_ms(5);EN_CLR;}//*******************************************************//清屏函数//*******************************************************voidLCD_clear(){LCD_write_com(0x01);_delay_ms(5);}//********************14、**************************
5、=1<6、URSE_DIR0x14//游标向右移动:AC=AC+1unsignedvolatilecharrow=0xF0;unsignedvolatilecharcol=0x0F;unsignedvolatilecharrow_col=0xFF;unsignedvolatileintcount=0;//*******************************************************//端口初始化函数//*******************************************************voidport_init7、(){//键盘端口PORTC=0x4F;//PC0-PC3使能上拉电阻;PC4、PC5低电平;PC6是复位端,使能上拉DDRC=0x70;//PC0-PC3输入;PC4、PC5输出PORTD&=(~(1<8、=0x0E;//PD2,PD3输出//LCD数据端口PORTB=0x00;DDRB=0xFF;//LCD控制端口PORTD9、=0x80;//8位并口方式DDRD10、=0xF0;}//******************************************************11、*//忙检测函数//*******************************************************voidCheck_Busy(){DDRB=0x00;//PB口置为输入口,准备读取数据DI_CLR;RW_SET;EN_SET;while(0x80&PINB);//监测忙信号,直到忙信号为0,才能进行读写操作EN_CLR;DDRB=0xFF;//PB口置为输出口,准备向端口发送数据}//*******************************************************//写命令函数//*******12、************************************************voidLCD_write_com(unsignedcharcom){Check_Busy();DI_CLR;RW_CLR;EN_SET;PORTB=com;_delay_ms(5);EN_CLR;}//*******************************************************//写数据函数//*******************************************************voidLCD_write13、_data(unsignedchardata){Check_Busy();DI_SET;RW_CLR;EN_SET;PORTB=data;_delay_ms(5);EN_CLR;}//*******************************************************//清屏函数//*******************************************************voidLCD_clear(){LCD_write_com(0x01);_delay_ms(5);}//********************14、**************************
6、URSE_DIR0x14//游标向右移动:AC=AC+1unsignedvolatilecharrow=0xF0;unsignedvolatilecharcol=0x0F;unsignedvolatilecharrow_col=0xFF;unsignedvolatileintcount=0;//*******************************************************//端口初始化函数//*******************************************************voidport_init
7、(){//键盘端口PORTC=0x4F;//PC0-PC3使能上拉电阻;PC4、PC5低电平;PC6是复位端,使能上拉DDRC=0x70;//PC0-PC3输入;PC4、PC5输出PORTD&=(~(1<8、=0x0E;//PD2,PD3输出//LCD数据端口PORTB=0x00;DDRB=0xFF;//LCD控制端口PORTD9、=0x80;//8位并口方式DDRD10、=0xF0;}//******************************************************11、*//忙检测函数//*******************************************************voidCheck_Busy(){DDRB=0x00;//PB口置为输入口,准备读取数据DI_CLR;RW_SET;EN_SET;while(0x80&PINB);//监测忙信号,直到忙信号为0,才能进行读写操作EN_CLR;DDRB=0xFF;//PB口置为输出口,准备向端口发送数据}//*******************************************************//写命令函数//*******12、************************************************voidLCD_write_com(unsignedcharcom){Check_Busy();DI_CLR;RW_CLR;EN_SET;PORTB=com;_delay_ms(5);EN_CLR;}//*******************************************************//写数据函数//*******************************************************voidLCD_write13、_data(unsignedchardata){Check_Busy();DI_SET;RW_CLR;EN_SET;PORTB=data;_delay_ms(5);EN_CLR;}//*******************************************************//清屏函数//*******************************************************voidLCD_clear(){LCD_write_com(0x01);_delay_ms(5);}//********************14、**************************
8、=0x0E;//PD2,PD3输出//LCD数据端口PORTB=0x00;DDRB=0xFF;//LCD控制端口PORTD
9、=0x80;//8位并口方式DDRD
10、=0xF0;}//******************************************************
11、*//忙检测函数//*******************************************************voidCheck_Busy(){DDRB=0x00;//PB口置为输入口,准备读取数据DI_CLR;RW_SET;EN_SET;while(0x80&PINB);//监测忙信号,直到忙信号为0,才能进行读写操作EN_CLR;DDRB=0xFF;//PB口置为输出口,准备向端口发送数据}//*******************************************************//写命令函数//*******
12、************************************************voidLCD_write_com(unsignedcharcom){Check_Busy();DI_CLR;RW_CLR;EN_SET;PORTB=com;_delay_ms(5);EN_CLR;}//*******************************************************//写数据函数//*******************************************************voidLCD_write
13、_data(unsignedchardata){Check_Busy();DI_SET;RW_CLR;EN_SET;PORTB=data;_delay_ms(5);EN_CLR;}//*******************************************************//清屏函数//*******************************************************voidLCD_clear(){LCD_write_com(0x01);_delay_ms(5);}//********************
14、**************************
此文档下载收益归作者所有