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

📄 3310lcd_main.c

📁 本程序简单的示范了如何使用3310液晶。 显示静止的英文显示静止的中文 显示移动的中文显示静止的图片 使用PWM控制3310的背光亮度
💻 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 + -