实现功能:红外解码采用中断捕捉方式(NEC编码),显示用液晶驱动HT1261
硬件:ATMega16(8MRC)+HT1621+一体化红外接收头
AVR ATMega16液晶显示程序程序如下(WinAVR GCC环境编译):
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#define HT1621_BIAS 0x29 // 设置LCD偏压发生器为1/3偏压,4个公共端
#define HT1621_RC256K 0x18 // 设置系统时钟源为片内RC(256KHz)振荡器
#define HT1621_SYSTEN 0x01 // 打开系统时钟振荡器
#define HT1621_SYSDIS 0x00 // 停止系统时钟振荡器和LCD偏压发生器
#define HT1621_LCDON 0x03 // 打开LCD偏压振荡器
#define HT1621_LCDOFF 0x02 // 关闭LCD偏压发生器
#define HT1621_RAMSIZE 0x10 // LCD显示RAM大小16个字节
#define HT1621_TOPT 0xE0
#define HT1621_CS_SET PORTC|=(1<<PC4)
#define HT1621_CS_CLR PORTC&=~(1<<PC4)
#define HT1621_WR_SET PORTC|=(1<<PC3)
#define HT1621_WR_CLR PORTC&=~(1<<PC3)
#define HT1621_DATA_SET PORTC|=(1<<PC2)
#define HT1621_DATA_CLR PORTC&=~(1<<PC2)
#define IR_RX (PIND&(1<<PD2))
unsigned char lcd_dis_buf[16] ={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
unsigned char capt_vect_cnt=0;
unsigned char ir_rx_data_flag=0;
unsigned char ir_rx_complete_flag=0;
unsigned char bitcnt=0;
unsigned int ir_plus[33];
unsigned int user_code=0;