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

📄 main.c

📁 这是一款智能型自带二级汉字库等功能串行SPI的128×128点阵的LCD模块MzLH06-128128的MCS51的驱动代码
💻 C
字号:
//========================================================================
//  工程名称:Prj_MzLH06_EditDemo
//  作    者: xinqiang Zhang(小丑)  (email: xinqiang@Mzdesign.com.cn)    
//  联系方式:QQ 644272644
//	版权所有:北京铭正同创科技有限公司   www.mzdesign.com.cn
//  适应芯片: MCS-51 (本例选择AT89S52)
//  编程环境: Keil uVision 3
//  实现功能: MzLH06模块的Edit控件(数字编辑控件)功能演示
//
//  系统要求: PC with CPU 233MHz,128MB RAM,
//                      Keil uVision3(or later)
//  组成文件:
//		Startup.s	----51的启动文件,自动生成的,不必要修改
//	
//     	main.c		----主程序文件
//		LCD_Dis.c
//     	LCD_Dis.h
//					----MzLH06模块的基本驱动程序
//
//		Key_Service.c	----键盘服务程序
//
//	硬件连接:
//		LCD CS		    ---P1.0
//		LCD SCK			---P1.1
//		LCD_MISO		---P1.2
//		LCD MOSI		---P1.3
//		LCD RD(Ready)	---P1.5
//  端口定义请参考LCD_Config.h文件中的定义
//
//		LCD 视实际模块而定
//
//		键盘接入请参考该例程的电路示意图
//		Key1			---P0.1
//		Key2			---P0.2
//		Key3			---P0.3
//		Key4			---P0.4
//		键盘的另外一端接地,端口最好接上拉电阻
//
//		本例所演示的MzLH06模块的Edit控件(数字编辑控件)功能,使用了MzLH06模块的指令/数据
//	写入以及数据读出的功能,所以,LCD的MISO、RD引脚需要接入MCU的端口;而LCD模块的复位引脚
//	可以不接,模块内部自有复位的电路;而MCS51速度较慢,本例亦将对模块写数据前检测busy信号的
//	代码屏蔽,所以本例仅需要连接3根端口线
//		本例程仅提供参考,并没有演示该模块的Edit控件的所有功能,建议用户详细阅读模块的编
//	程手册;而例程中使用的键盘程序为简单的范例程序,用户可以参考,或者根据自己的需要自行
//	设计更合理的代码。
//
//  当前版本:  V1.00
//  日期:  2008-11-16
//  
//  参考文件: 
//  维护记录:
//-------------------------------------------------------------------
//  Version   2008-11-16-V10   Modified By    Xinqiang Zhang(小丑)
//
//========================================================================

#include "LCD_Dis.h"
#include "Key_Service.h"


int main(void)
{
	unsigned char Key_Dat;//=0;
	int iTemp1=0,iTemp2=0,iTemp3=0;
	Key_Initial();
	LCD_Init();
	SetBackLight(0);				//设置背光的亮度等级为0
//	SetBackLightStep(5);
	ClrScreen();  					//清屏

	CreateEdit(101,10,10,60,20);		//创建一个Edit控件,ID=101  x_s=10  y_s=10  width=60  hight=20
	InitEdit(101,0,2387,1,0,6);			//初始化ID号为101的Edit控件
										//index_type=0	选择修改模式
										//Var=2378   初始化的Edit的数值
										//font=1	Edit控件的ASCII字符型号选择 1为8X16的ASCII字符
										//tiny=0	Edit控件为无外框
										//Stringlen=6	Edit控件最多为6位十进制位

	CreateEdit(102,10,40,60,20);		//创建一个Edit控件,ID=101  x_s=10  y_s=10  width=60  hight=20
	InitEdit(102,0,2387,1,1,6);			//初始化ID号为101的Edit控件
										//index_type=0	选择修改模式
										//Var=2378   初始化的Edit的数值
										//font=1	Edit控件的ASCII字符型号选择 1为8X16的ASCII字符
										//tiny=0	Edit控件为无外框
										//Stringlen=6	Edit控件最多为6位十进制位

	CreateEdit(103,10,70,60,20);		//创建一个Edit控件,ID=101  x_s=10  y_s=10  width=60  hight=20
	InitEdit(103,0,2387,1,2,6);			//初始化ID号为101的Edit控件
										//index_type=0	选择修改模式
										//Var=2378   初始化的Edit的数值
										//font=1	Edit控件的ASCII字符型号选择 1为8X16的ASCII字符
										//tiny=0	Edit控件为无外框
										//Stringlen=6	Edit控件最多为6位十进制位

	ActiveEdit(101,1);					//设置ID号为101的Edit控件为活动的
	ActiveEdit(102,1);					//设置ID号为101的Edit控件为活动的
	ActiveEdit(103,1);					//设置ID号为101的Edit控件为活动的
	//以上代码设置了三个Edit控件Active,但实际上只能有一个ID号的控制处于活动状态,以最后一个设置Active状态
	//的控件为当前Active的控件,之所以前面将它们都设置Active,是因为设置Active之后控件会重绘其自身的显示

	SetBackLightAuto(100);			//设置背光缓慢打开,至最亮

	FontSet(0,1);
	while(1)
	{
		KeyScan_Service();	
		Key_Dat = Key_Get();
		if(Key_Dat)
		{
			switch(Key_Dat)
			{
				case 1:	 				//按键1按下时,送“上”操作按键消息至控件
					SendMessageEdit(GUI_SCANCODE_UP);
					break;
				case 2:	 				//按键2按下时,送“下”操作按键消息至控件
					SendMessageEdit(GUI_SCANCODE_DOWN);
					break;
				case 3:					//按键3按下时,送“TAB”操作按键消息至控件,会使得Active状态在各控件间切换
					SendMessageEdit(GUI_SCANCODE_TAB);
					break;
				case 4:					//按键1按下时,送“右移动”操作按键消息至控件
					SendMessageEdit(GUI_SCANCODE_RIGHT);
					break;
				case 5:					//按键1长按下时,读出各控件当前的数值
					iTemp1 = GetValEdit(101);
					iTemp2 = GetValEdit(102);
					iTemp3 = GetValEdit(103);
					//将Edit 控件中当前的数值读出另外显示,但此处不能显示负数
					ShowShort(2,100,(unsigned short)iTemp1,0);
					ShowShort(42,100,(unsigned short)iTemp2,0);
					ShowShort(82,100,(unsigned short)iTemp3,0);
					break;
			}
		}	
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -