今天主要写了三个程序,是老师之前布置得一秒定时切换图片,滑屏切换图片和按键切换图片三个程序,主要涉及到的之前的知识点有定时器中断,按键中断,adc转换,触摸屏,和lcd图片显示
开始觉得内容比较多,而且只是比较散碎,毫无头绪,但是分开到某一项功能细化知识点思路就比较清晰了
定时器的只需要初始化定时器、将图片显示部分写到中断服务当中就可以了
触摸屏切换需要做初始化触摸屏,adc转换,等待触屏中断,判断左右滑动,然后显示图片
而按键切换图片相对比较简单了,只需要配置按键中断,然后将图片显示部分放到中断服务当中去
而最繁琐的还是屏幕驱动部分,寄存器数量多且功能繁琐,还需要时间来慢慢消化
另外一部分是汉字在屏幕上的显示,需要先查到汉字的区位码,然后调用函数即可显示
code
按键切换
#define GLOBAL_CLK 1
#include <stdlib.h>
#include <string.h>
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "profile.h"
#include "lcd.h"
#include "memtest.h"
#include "bmp.h"
void key_init(void);
static void __irq key_handler(void);
extern void show_pic();
unsigned int value;
extern unsigned char gImage_mei[153608];
extern unsigned char gImage_mein[153608];
extern unsigned char gImage_li[153608];
extern unsigned char gImage_lii[153608];
extern unsigned char gImage_liii[153608];
static void __irq key1_irq(void);
static void __irq key2_irq(void);
int i = 0;
//按键初始化
void key_init(void)
{
rGPGCON &= ~((0x3<<0)|(0x3<<6)|(0x3<<10) );
rGPGCON |= ((0x2<<0)|(0x2<<6)|(0x2<<10) ); // 设置成第三功能模式
rEXTINT1 &= ~((0xf<<0)|(0xf<<12)|(0xf<<20) ); // 触发条件
//rEXTINT2 &= ~(0xf<<12);
rEINTPEND |= ((0x1<<8)|(0x1<<11)|(0x1<<13) ); // 清中断标志 写1
rEINTMASK &= ~((0x1<<8)|(0x1<<11)|(0x1<<13) ); // 打开中断屏蔽字 开中断
/*设置ISR*/
pISR_EINT8_23=(U32)key_handler;// 注册中断向量
EnableIrq(BIT_EINT8_23);
}
/