📄 main.c
字号:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/wdt.h>
#include "lcd8x15d.h"
#define LED0_ON() PORTB&=~_BV(PB0)
#define LED0_OFF() PORTB|=_BV(PB0)
uchar tab[]="当你看到显示表示成功调试";
uchar tab2[]="紫微机电";
uchar tab81[]={0x00,0x00,0x10,0x00,0x00,0x08,0x28,0x00,0x00,0x01,0x20,0x00,0x00,0x12,0x42,0x00,
0x01,0x96,0x12,0x40,0x01,0x16,0x58,0x00,0x09,0xB2,0x54,0x00,0x00,0xDA,0x76,0x70,
0x00,0x6B,0xFC,0xD0,0x19,0x3F,0xAD,0xC0,0x03,0xD9,0x3B,0x40,0x44,0xE8,0x66,0xE8,
0x8F,0xA0,0x2F,0x82,0x61,0xF8,0x02,0x30,0x17,0x90,0x03,0xF8,0x00,0xC0,0x07,0x04,
0x20,0xE0,0x03,0x00,0x0F,0xC0,0x0D,0xE8,0x0C,0x40,0x1F,0x86,0x41,0xF4,0x05,0xF9,
0x1F,0x76,0x17,0x32,0x42,0xCE,0xBB,0xC0,0x01,0xD5,0xFC,0x98,0x0B,0x3F,0xD6,0x00,
0x0E,0x6E,0x5B,0x00,0x00,0x6A,0x4D,0x90,0x01,0x1A,0x60,0x80,0x02,0x58,0x49,0x80,
0x00,0x0A,0x08,0x00,0x00,0x04,0x80,0x00,0x00,0x14,0x10,0x00,0x00,0x08,0x00,0x00
};
uchar tab91[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFE,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x03,0xBD,0xDF,0x55,0x57,
0xAA,0xAA,0xAA,0xAB,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x03,0x9F,0xFF,0xD5,0x57,
0xBF,0xFF,0xEA,0xAF,0x90,0x00,0xD5,0x57,0xB7,0xFF,0xEA,0xAF,0x97,0xFF,0xF5,0x57,
0xB4,0x00,0x3A,0xAF,0x95,0xFF,0xFD,0x57,0xBD,0xFF,0xFE,0xAF,0x95,0x00,0x0D,0x57,
0xAD,0x00,0x0E,0xAF,0x97,0x00,0x0D,0x57,0xAB,0x00,0x0E,0xAF,0x95,0x00,0x0D,0x57,
0xAB,0xFF,0xFE,0xAF,0x95,0xFF,0xFD,0x57,0xAA,0xAA,0xAA,0xAF,0xBF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
uchar tab101[]={0x00,0x3F,0xF8,0x00,0x00,0x1D,0xF0,0x00,0x00,0x0E,0xE0,0x00,0x00,0x0C,0x60,0x00,
0x00,0x0E,0xE0,0x00,0x00,0x0C,0x60,0x00,0x00,0x0E,0xE0,0x00,0x00,0x0C,0x60,0x00,
0x00,0x1A,0xB0,0x00,0x00,0x1C,0x70,0x00,0x00,0x38,0xB8,0x00,0x00,0x71,0x5C,0x00,
0x00,0xEA,0xAE,0x00,0x01,0xDF,0xF7,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,
0x03,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0x80,
0x01,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x7F,0xFC,0x00,
0x00,0x3F,0xF8,0x00,0x00,0x1F,0xF0,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,
};
//volatile unsigned char FLAG;
ISR(INT0_vect)
{
uchar reg_rddata;
reg_rddata = LCD_reRead(0xa0);
if(reg_rddata & 0x40)
{
reg_rddata = LCD_reRead(0xa0);
reg_rddata &= 0xfb; //禁能触摸中断
lcd_regwrite(0xa0,reg_rddata);
get_touch();
//LED0_OFF();
}
reg_rddata = LCD_reRead(0xa0);
reg_rddata |= 0x04; //致能触摸中断
lcd_regwrite(0xa0,reg_rddata);
}
int main(void)
{
DDRA=0xff; //液晶的8位DATA口设置为输出
DDRD=0xdb;
DDRB =0xff; //输出
PORTB&=~_BV(PB0);
SFIOR&=~_BV(PUD);
PORTD|=_BV(PD2);//将PD2的内部上拉电阻置为有效
MCUCR&=~_BV(ISC01);
MCUCR&=~_BV(ISC00);
GIFR|=_BV(INTF0);//写1清除标志位,在使能中断前最好先把对应
// 的标志位清除,以免误触发
GICR|=_BV(INT0);
delay_nms(500);
PORTD|=_BV(lcd_wr);
PORTD|=_BV(lcd_rd);
PORTD|=_BV(lcd_cs2);
PORTD&=~_BV(lcd_rst);
wait_us(5);
PORTD|=_BV(lcd_rst);
//lcd_reset();
lcd_clear();
lcd_init();
lcd_datawrite('@');
lcd_character(tab,25);
delay_nms(5000);
lcd_clear(); //清屏时将原来的设置也一同清除了,所以要再初始化一下
lcd_init();
lcd_regwrite(0x00,0xc5);
Display_graphi(tab81,0,0,32,4,0);
Display_graphi(tab91,5,0,32,4,0);
Display_graphi(tab101,10,0,32,4,1);
delay_nms(5000);
delay_nms(5000);
lcd_clear(); //清屏时将原来的设置也一同清除了,所以要再初始化一下
lcd_init();
gotoxy(0x0001,0x0014);
lcd_character(tab2,8);
gotoxy(0x000a,0x0020);
lcd_character(tab2,8);
delay_nms(5000);
lcd_clear();
lcd_init();
sei();
lcd_regwrite(0xa0,0x04);
while(1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -