⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 avr单片机编写的金鹏公司的8x15d液晶显示屏程序
💻 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 + -