12864带字库显示屏按键选择菜单显示

这个博客介绍了如何使用C语言驱动LCD12864显示屏,并实现按键选择菜单的功能。通过设置GPIO接口,实现对12864显示屏的初始化和数据写入。同时,利用按键消抖技术,实现了按键上移、下移选择菜单项的功能。
摘要由CSDN通过智能技术生成

/*****************************************************/
//描述:LCD12864的驱动
//作者:小四叶草
//时间:2015/07/16
//描述:显示与按键
//s2 ---------GPIO52 ;s3-----------GPIO54 ; s4 -------GPIO72 ; s5 ----GPIO71;
//两种写法:1.消抖;2.状态机
//按键消抖的是时间是20ms
/*****************************************************/
#include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h"   // DSP2833x Examples Include File

#define LCD_DATA (*((volatile Uint16 *)0x45EF))
#define E GpioDataRegs.GPBDAT.bit.GPIO61
#define RW GpioDataRegs.GPADAT.bit.GPIO27
#define RS GpioDataRegs.GPBDAT.bit.GPIO60
#define LOW 0
#define HIGH 1
#define CLEAR_SCREEN 0x01 //清屏指令:清屏且AC值为00H
#define AC_INIT 0x02 //将AC设置为00H。且游标移到原点位置
#define CURSE_ADD 0x06 //设定游标移到方向及图像整体移动方向(默认游标右移,图像整体不动)
#define FUN_MODE 0x30 //工作模式:8位基本指令集
#define DISPLAY_ON 0x0c //显示开,显示游标,且游标位置反白
#define DISPLAY_OFF 0x08 //显示关
#define CURSE_DIR 0x14 //游标向右移动:AC=AC+1
#define SET_CG_AC 0x40 //设置AC,范围为:00H~3FH
#define SET_DD_AC 0x80
#define s2 GpioDataRegs.GPBDAT.bit.GPIO54
#define s3 GpioDataRegs.GPBDAT.bit.GPIO55
#define s4 GpioDataRegs.GPBDAT.bit.GPIO56
#define s5 GpioDataRegs.GPBDAT.bit.GPIO57

#define DELAY_MS(A) DELAY_US((long double)A * 1000.0L)
#define DELAY_100US(B) DELAY_US((long double)B * 100.0L)

void InitXintf(void);
void ConfigGpio(void);
void InitLcd(void);
void Read_Busy(void);
void WriteCmd12864(Uint16 cmd);
void WriteData12864(Uint16 dat);
void DisplayDdram(uchar *hz);
void DispBMP(uchar *adress);
void CLR_GDRAM(void);
void Disp(void);
void fanbai(uchar y,uchar x1,uchar x2);
void  key(void);
void xuanze();
void xunhuan(uchar hang);
void jiantou(uchar hang);


uchar tab1[]="设置参数值";
uchar tab2[]="查询参数值";

uchar tab3[]="查询历史故障";
uchar tab4[]="清除历史故障";
uchar tab5[]="第二级菜单显示";

uchar key2 = 0;
uchar key3 = 0;
uchar key4 = 0;
uchar key5 = 0;

uchar keyindex = 0; //初始化的时候是第一行,选择行的索引
uchar keycur = 0; //0,1,2,3 显示屏的当前行

void main(void)
{
InitSysCtrl();
InitXintf();
InitXintf16Gpio();
DINT;
InitPieCtrl();

IER = 0x0000;
IFR = 0x0000;

ConfigGpio();
InitLcd();
WriteCmd12864(CLEAR_SCREEN);
DELAY_US(50);

Disp();

WriteCmd12864(0x34); //开启扩展指令

fanbai(0,2,11

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值