//############################################################
// FILE: LCD12864.c
// Created on: 2016年4月11日
// Author: XY
// summary:LCD12864
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//版权所有,盗版必究
//DSP/STM32电机控制开发板
//硕历电子
//网址: https://shuolidianzi.taobao.com
//修改日期:2016/5/23
//版本:V16.3-1
//Author-QQ: 616264123
//电机控制QQ群:314306105
//############################################################
#include "LCD12864.h"
#include "GPIO_int.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
unsigned char Str_Length=0,y1old=0;
//**********************************************************//
//滑条
//**********************************************************//
const unsigned char DrawR[]={
0xFF,0x99,0xBD,0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0xFF,0xBD,0x99,0xFF
};
unsigned char LCD_DATAZHUHUAN(unsigned char DData)
{unsigned char ui=0;
ui=(DData&0x01)<<7;
ui|=(DData&0x02)<<5;
ui|=(DData&0x04)<<3;
ui|=(DData&0x08)<<1;
ui|=(DData&0x10)>>1;
ui|=(DData&0x20)>>3;
ui|=(DData&0x40)>>5;
ui|=(DData&0x80)>>7;
return(ui);
}
unsigned char LCD_Read(void)
{ unsigned char Data=0;
EALLOW;
/***************LCD_D0*********************/
GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 0; // GPIO11 = GPIO
GpioCtrlRegs.GPBDIR.bit.GPIO61 = 0;
GpioCtrlRegs.GPBPUD.bit.GPIO61=0;
GpioDataRegs.GPBCLEAR.bit.GPIO61=1;
/***************LCD_D1*********************/
GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0; // GPIO11 = GPIO
GpioCtrlRegs.GPBDIR.bit.GPIO60 = 0;
GpioCtrlRegs.GPBPUD.bit.GPIO60=0;
GpioDataRegs.GPBCLEAR.bit.GPIO60=1;
/***************LCD_D2*********************/
GpioCtrlRegs.GPBMUX2.bit.GPIO59 = 0; // GPIO11 = GPIO
GpioCtrlRegs.GPBDIR.bit.GPIO59 = 0;
GpioCtrlRegs.GPBPUD.bit.GPIO59=0;
GpioDataRegs.GPBCLEAR.bit.GPIO59=1;
/***************LCD_D3*********************/
GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 0; // GPIO11 = GPIO
GpioCtrlRegs.GPBDIR.bit.GPIO58 = 0;
GpioCtrlRegs.GPBPUD.bit.GPIO58=0;
GpioDataRegs.GPBCLEAR.bit.GPIO58=1;
/***************LCD_D4*********************/
GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 0; // GPIO11 = GPIO
GpioCtrlRegs.GPBDIR.bit.GPIO57 = 0;
GpioCtrlRegs.GPBPUD.bit.GPIO57=0;
GpioDataRegs.GPBCLEAR.bit.GPIO57=1;
/***************LCD_D5*********************/
GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 0; // GPIO11 = GPIO
GpioCtrlRegs.GPBDIR.bit.GPIO56 = 0;
GpioCtrlRegs.GPBPUD.bit.GPIO56=0;
GpioDataRegs.GPBCLEAR.bit.GPIO56=1;
/***************LCD_D6*********************/
GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 0; // GPIO11 = GPIO
GpioCtrlRegs.GPBDIR.bit.GPIO55 = 0;
GpioCtrlRegs.GPBPUD.bit.GPIO55=0;
GpioDataRegs.GPBCLEAR.bit.GPIO55=1;
/***************LCD_D7*********************/
GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 0; // GPIO11 = GPIO
GpioCtrlRegs.GPBDIR.bit.GPIO54 = 0;
GpioCtrlRegs.GPBPUD.bit.GPIO54=0;
GpioDataRegs.GPBCLEAR.bit.GPIO54=1;
EDIS;
DELAY_US(50);
Data=GpioDataRegs.GPBDAT.bit.GPIO54<<7;
DELAY_US(50);
Data|=GpioDataRegs.GPBDAT.bit.GPIO55<<6;
DELAY_US(50);
Data|=GpioDataRegs.GPBDAT.bit.GPIO56<<5;
DELAY_US(50);
Data|=GpioDataRegs.GPBDAT.bit.GPIO57<<4;
DELAY_US(50);
Data|=GpioDataRegs.GPBDAT.bit.GPIO58<<3;
DELAY_US(50);
Data|=GpioDataRegs.GPBDAT.bit.GPIO59<<2;
DELAY_US(50);
Data|=GpioDataRegs.GPBDAT.bit.GPIO60<<1;
DELAY_US(50);
Data|=GpioDataRegs.GPBDAT.bit.GPIO61;
DELAY_US(50);
return(Data);
}
//*****************************************************//
//向LCD写说指令或写数据******传送数据/指令
//当DI=0,传送指令,当DI=1,传送数据
//*****************************************************//
void TransferData(unsigned char Data,unsigned char DI)
{
unsigned long Bi,Di;
LCD_RW=0; //写
DELAY_US(100);
if(DI==0) LCD_RS=0; //指令
else if(DI==1) LCD_RS=1; //数据
DELAY_US(100);
LCD_EN=1; //允许
DELAY_US(100);
LCD_DATA&=~0X3FC00000;
Bi=LCD_DATAZHUHUAN(Data);
Di=Bi<<22;
LCD_DATA|=Di;
DELAY_US(100);
LCD_EN=0;
DELAY_US(100);
LCD_RW=1;
}
//-----------------------------------------------------//
//读取LCD上的数据
//----------------------------------------------------//
unsigned char Lcd_Read(void)
{
unsigned char Data;
LCD_RS=0; //指令
LCD_RW=1; //读
LCD_EN=1; //允许
Data=0xff;
DELAY_US(100);
Data=LCD_Read();
DELAY_US(100);
LCD_EN=0; //禁止
Init_LCD12864_Gpio();
return (Data);
}
//-----------------------------------------------------//
//读取LCD上的忙位
//----------------------------------------------------//
void Buy_Read(void)
{ unsigned char Data;
LCD_RS=0; //指令
LCD_RW=1; //读
LCD_EN=1; //允许
Data=0xff;
DELAY_US(100);
Data=LCD_Read();
DELAY_US(100);
while((Data & 0x80)==0x80);
LCD_EN=0; //禁止
Init_LCD12864_Gpio();
}
//****************************************************************************//
//全屏清除 清除GDRAM
//****************************************************************************//
void Show_Clr_All(void)
{ unsigned int i,j;
TransferData(0x34,0); //扩展指令命令
TransferData(0x36,0); //扩展指令命令
for(i=0;i<64;i++)
{ j=8*(i/32);
TransferData(0x80+(i&0x1f),0); //设定行地址(y坐标)
TransferData(0x80+j,0); //设定行地址(y坐标)
for(j=0;j<8;j++)
{
TransferData(0x00 ,1);
TransferData(0x00 ,1);
}
}
TransferData(0x30,0); //恢复到基本指令集 */
}
//****************************************************************************//
//****************************************************************************//
//*****************************************************//
//LCD清屏函数
//*****************************************************//
void Lcd_Clera(void)
{
unsigned char i;
TransferData(0x80,0);
for(i=0;i<64;i++)
{ TransferData(0x20,1);
}
}
//*****************************************************//
//LCD汉字库初始化
//*****************************************************//
void LCD12864_init(void) // LCD12864_init Lcd_Init
{ LCD_REST=0;
DELAY_US(50);//延迟100ms
LCD_REST=1;
DELAY_US(50);
TransferData(0x30,0); //功能设定:RE=0:不扩充指令集,G=0 :关闭图形显示
DELAY_US(20);
TransferData(0x30,0); //判断是否设置成功
DELAY_US(20);
TransferData(0x08,0); //整体显示
DELAY_US(20);
TransferData(0x10,0); //光标设置
DELAY_US(20);
TransferData(0x0C,0); //显示开
DELAY_US(20);
TransferData(0x01,0); //清屏
DELAY_US(20);
TransferData(0x06,0); //光标设置,光标从右向左加1位移动
DELAY_US(20);
}
//*****************************************************//
//LCD显示汉字
//*****************************************************//
void Lcd_ShowStr1(unsigned char x,unsigned char y,unsigned char *adder) //用于显示字符
{ unsigned char i=0;
if(x>16) {x=16;}
else if(0<x<16) { }
else if(x<=0) {x=0; }
if(y>48) {y=48;}
else if(0<y<48) { }
else if(y<=0) {y=0;}
if(y==48) TransferData(0x80+x,0); //设置DDRAM起始地址
else if(y==32) TransferData(0x90+x,0); //设置DDRAM起始地址
else if(y==16) TransferData(0x88+x,0); //设置DDRAM起始地址
else if(y==0) TransferData(0x98+x,0); //设置DDRAM起始地址
for(i=x;i<=15-x;i++) //while(adder[j]!='\0') //
{
TransferData(*adder,1); //传送数据
adder++;
}
}
void Lcd_ShowStr(unsigned char x,unsigned char y,unsigned char *adder)
{ unsigned char i,j=0;
switch(y)
{ case 48: i=0x80+x;
break;
case 32: i=0x90+x;
break;
case 16: i=0x88+x;
break;
case 0: i=0x98+x;
break;
default:
break;
}
TransferData(i,0
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
直流无刷电机控制算法 (105个子文件)
LCD12864.c 23KB
ThreeHall.c 12KB
KEY.c 10KB
Main_PMSM_Hall.c 7KB
GPIO_int.c 7KB
EPWM_int.c 5KB
ADC_int.c 4KB
SCI_RS232.c 3KB
Task_function.c 3KB
Timer_function.c 2KB
PI_Cale.c 1KB
Svpwm_dq.c 1KB
Axis_transform.c 1KB
.ccsproject 167B
NewTargetConfiguration.ccxml 961B
.cdtbuild 9KB
.cdtbuild_initial 9KB
.cdtproject 539B
.cproject 15KB
IQmathCPP.h 255KB
IQmathLib.h 152KB
LCD12864.h 2KB
Axis_transform.h 2KB
ADC_int.h 2KB
ThreeHall.h 2KB
Timer_function.h 1KB
PI_Cale.h 1KB
SCI_RS232.h 1KB
Task_function.h 1KB
GPIO_int.h 1KB
Svpwm_dq.h 1KB
Main_PMSM_Hall.h 1KB
EPWM_int.h 931B
KEY.h 806B
macros.ini_initial 168B
DSP28335_PMSM_HallV16_1.launch 8KB
Example_2833xGpioSetup.launch 8KB
DSP28335_PMSM_HallV16_2.launch 7KB
DSP28335_PMSM_SensorlessV16_1.launch 5KB
DSPPMSM_ThreeHall.launch 5KB
DSP28335_STEPV16_1.launch 4KB
DSP28335_STEP_V16_1.launch 4KB
IQmath_fpu32.lib 887KB
rts2800_fpu32_fast_supplement.lib 17KB
makefile 6KB
Main_PMSM_Hall.map 45KB
subdir_rules.mk 12KB
subdir_rules.mk 8KB
subdir_vars.mk 3KB
subdir_vars.mk 3KB
sources.mk 2KB
objects.mk 320B
DSP2833x_GlobalVariableDefs.obj 119KB
Main_PMSM_Hall.obj 39KB
Main_PMSM_Sensorless.obj 38KB
LCD12864.obj 36KB
DSP2833x_DefaultIsr.obj 35KB
ADC_int.obj 25KB
KEY.obj 21KB
DSP2833x_PieVect.obj 18KB
DSP2833x_SysCtrl.obj 17KB
ThreeHall.obj 16KB
GPIO_int.obj 16KB
EPWM_int.obj 15KB
SCI_RS232.obj 12KB
Step_MC.obj 12KB
Timer_function.obj 8KB
Task_function.obj 7KB
DSP2833x_PieCtrl.obj 6KB
Axis_transform.obj 4KB
PI_Cale.obj 4KB
Svpwm_dq.obj 3KB
DSP2833x_MemCopy.obj 3KB
DSP2833x_CodeStartBranch.obj 2KB
DSP2833x_usDelay.obj 1KB
DSP2833x_ADC_cal.obj 1KB
ccsObjs.opt 934B
Main_PMSM_Hall.out 192KB
Main_PMSM_Sensorless.pp 8KB
Main_PMSM_Hall.pp 7KB
Task_function.pp 6KB
LCD12864.pp 6KB
Step_MC.pp 5KB
Axis_transform.pp 5KB
EPWM_int.pp 5KB
SCI_RS232.pp 5KB
KEY.pp 5KB
Timer_function.pp 5KB
ThreeHall.pp 5KB
Svpwm_dq.pp 5KB
ADC_int.pp 5KB
GPIO_int.pp 5KB
DSP2833x_DefaultIsr.pp 4KB
DSP2833x_PieVect.pp 4KB
DSP2833x_PieCtrl.pp 4KB
DSP2833x_SysCtrl.pp 4KB
DSP2833x_GlobalVariableDefs.pp 3KB
DSP2833x_MemCopy.pp 3KB
PI_Cale.pp 621B
org.eclipse.core.resources.prefs 311B
共 105 条
- 1
- 2
资源评论
- 陶朱公发发发2019-03-18下载了,再次下载,怎么还要扣分呢??这个程序想再次看看
xueluowutong
- 粉丝: 245
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功