历史上的今天
今天是:2024年11月10日(星期日)
2020年11月10日 | 带中文字库LCD12864按键菜单设置反白单片机实验程序
2020-11-10 来源:51hei
带中文字库LCD12864 按键菜单设置反白实验分享
制作出来的实物图如下:


用的是普中的开发板 如果你的也是同型号的普中开发板 直接下载也不能显示 因为我的开发板改电路了
你需要改
#include"lcd12864.h"里面的
sbit LCD12864_RS=P2^6; //寄存器选择输入
sbit LCD12864_RW=P2^5; //寄存器选择输入
sbit LCD12864_E=P2^7; //液晶使能控制
sbit LCD12864_PSB=P3^0; //串/并方式控制
sbit LCD12864_RES=P3^2; //数据复位
即可
部分程序(还有些程序在#include"lcd12864.h"里面)
#include
#include"lcd12864.h" //lcd12864液晶屏驱动
#define uchar unsigned char //宏定义无符号字符形数据类型进行声明定义 定义名称uchar 所占位数8位 范围0~255
#define uint unsigned int //宏定义无符号整形数据类型进行声明定义 定义名称uint 所占位数16位 范围0~65535
/*按键IO引脚定义*/
sbit k1=P3^0; //菜单选择按键
uchar cdsz=0; //菜单设置标志
/*延时函数 delay_ms(1)时大约1ms*/
void delay_ms(uint ms)
{
uchar t;
while(ms--)
{
for(t=120;t>0;t--);
}
}
/*按键函数*/
void an_jian()
{
if(k1==0)
{
delay_ms(10); //消抖延时大约10ms
if(k1==0)
{
if(cdsz<2)cdsz=cdsz+1;else(cdsz=0);
}
while(!k1); //确认按键是否松开
}
}
/*菜单设置函数*/
void caidan_shezhi()
{
if(cdsz==0)Lcd12864_SetAscWhite(2,2,10,0); //如果cdsz==0 第2行 第2列 范围10个字符 0为反白
else(Lcd12864_SetAscWhite(2,2,10,1)); //如果cdsz!=0 第2行 第2列 范围10个字符 1为关闭反白
if(cdsz==1)Lcd12864_SetAscWhite(3,2,10,0); //如果cdsz==1 第3行 第2列 范围10个字符 0为反白
else(Lcd12864_SetAscWhite(3,2,10,1)); //如果cdsz!=1 第3行 第2列 范围10个字符 1为关闭反白
if(cdsz==2)Lcd12864_SetAscWhite(4,2,10,0); //如果cdsz==2 第4行 第2列 范围10个字符 0为反白
else(Lcd12864_SetAscWhite(4,2,10,1)); //如果cdsz!=2 第4行 第2列 范围10个字符 1为关闭反白
}
void main()
{
lcd12864init(); //lcd12864起初化
LCD12864_cluck(); //全面清屏 必须的 否则花屏
while(1)
{
an_jian(); //读取按键函数
caidan_shezhi(); //读取菜单设置函数*
LCD_PutString(1,3,"设置"); //第1行位置3列开始 显示 设置
LCD_PutString(2,1,"1.显示设置"); //第2行位置1列开始 显示 1.显示设置
LCD_PutString(3,1,"2.应用设置"); //第3行位置1列开始 显示 2.应用设置
LCD_PutString(4,1,"3.系统设置"); //第4行位置1列开始 显示 3.系统设置
}
}
下一篇:单片机智能灯光系统程序
史海拾趣
|
有很多介绍gcc、gdb、make工具链的使用,但是这些工具链具体用起来比较繁琐。 而Linux中提供了一些IDE(集成了gcc、gdb、make)。 你觉得应该用工具链还是IDE?… 查看全部问答> |
|
我们曾经介绍过一篇关于如何选择网络故障排除方法的文章,介绍了三种网络故障排除方法。这里我们又重拾话题,通过具体实例助您排除网络故障。 开始以前,先来简要回顾一下介绍过的三种方法。 从下至上的方法:从OSI模型底端开始,顺序向上。 从 ...… 查看全部问答> |
|
Error[e124]: Segment conflict for segment INTVEC. In module "010DT" there is a segment part that is of type RELOCATA××E, while in module "?cstart" there is a segment part that is of type COMMON Total number of errors: ...… 查看全部问答> |
|
USB端点0为控制模式,端点1批量发送,端点2为批量接受,枚举正常,可以读写,问题在于读写的速度太慢了,1M的文件需要20s。请高手帮忙 usb_endp.c中 void EP2_OUT_Callback(void) { Mass_Storage_Out(); } usb_bot.c中 void ...… 查看全部问答> |
|
https://bbs.eeworld.com.cn/thread-413866-1-2.html帖子中说明了为了方便管理大家的帖子,“需要参与DIY活动的朋友请注意,直到今天板子应该都发到了大家手里,接下来大家的任务就是开始按照周计划的安排实施了,便于我们的管理,大家发一个进度帖 ...… 查看全部问答> |
|
28027程序下载进flash需要initflash函数和MemCopy 请教将一个运行在RAM中的程序下载到flash中运行,是不是只需要将ramcmd,换成flashcmd就可以了?还是需要initflash函数和MemCopy两个函数?#ifdef FLASH MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); InitFlas ...… 查看全部问答> |




