📄 3310lcd_main.c
字号:
/***********************************************
**** 本原代码转自:www.527dz.com (作者527dz) ***
**** 由HJJourAVR(www.OurAVR.com)改编GCC版本 ***
**** ***
****管脚由3310LCD_main.h定义,请根据实际电路修改***
**** ***
**** 2005.8.22 ***
***********************************************/
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/delay.h>
#include "3310LCD_main.h"
#include "3310LCD_function.h"
#include "bmp_pixel.h"
#include "chinese_string_pixel.h"
#include "move_chinese_string_pixel.h"
volatile unsigned char PWMSET=0x7F; //50%亮度
SIGNAL(SIG_INPUT_CAPTURE1)//定时器1的输入捕捉中断
{
unsigned char key1,key2;
key1 =~PIND;
key1&=(1<<KEYUP)|(1<<KEYDOWN);
if (key1)
{
_delay_ms(5); //软件防抖动
key2=~PIND;
key2&=(1<<KEYUP)|(1<<KEYDOWN);
if (key1==key2)
{
if (key1==(1<<KEYUP))//加亮度
{
if (PWMSET<=0xEF) PWMSET+=0x10;
else PWMSET=0xFF;
}
if (key1==(1<<KEYDOWN))//减亮度
{
if (PWMSET>=0x10) PWMSET-=0x10;
else PWMSET=0;
}
}
OCR0=PWMSET;
}
}
/******************************************************************************/
int main(void)
{
OSCCAL=0x9d; // 8M系统内部时钟校准,用下载软件读出然后修改这里的数值
//设置MCU的I/O口 上电/复位 DDRx=0x00,PORTx=0x00;
PORTA=0xFF;
PORTB=0xFF;
PORTC=0xFF;
PORTD=0xFF; //全部使能内部上拉电阻,减少耗电
//PORTD= (1<<KEYUP)|(1<<KEYDOWN); //使能内部上拉电阻
DDRB = (1<<LCD_nRST) | (1<<LCD_DnC) | (1<<LCD_nCE) | (1<<SPI_MOSI) | (1<<SPI_CLK)|(1<<PWMOUT);
SPSR = (1<<SPI2X); // 设置SPI时钟倍速
SPCR = (1<<SPE)|(1<<MSTR); // 使能SPI接口,主机模式,4M时钟
//Timer0 WGM=PWM Phase correct,Prescale=8.PWM=1.961KHz,OC0输出
TCNT0 = 0x00;
OCR0 = PWMSET;
TCCR0 = 0x72;
//TIMER1 WGM= 12 CTC, TOP=ICRn Prescale=64 50mSec
ICR1 = 0x1869;
TCCR1A = 0x00;
TCCR1B = 0x1B;
TIMSK = (1<<TICIE1); //WGM=12 需使能定时器1的输入捕捉中断
asm volatile("sei"::);//开全局中断
LCD_init(); //初始化液晶
while(1)
{
LCD_clear();
LCD_write_chinese_string(0,3,&chinese_string[0][0],3); //显示“我们的”,在x=0,y=2位置,显示write_chinese_string的12点阵汉字,显示3个,从第0个开始显示,行距为0,
delay_nms(300);
LCD_draw_bmp_pixel(36,2,AVR_bmp,48,24); //显示AVR大图
delay_nms(1000);
LCD_write_english_string(0,5,"www.OurAVR.com");
LCD_move_chinese_string(0, 0, &move_chinese_string[0][0],75); //在屏幕最上面一行显示:欢迎光临本网站!显示速度为100,数值越大,速度越慢。
delay_nms(1000);
LCD_Draw_Screen(GCCAVR_bmp); //显示全屏图像
delay_nms(2000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -