main.c
来自「F2812实现电机控制源程序.rar」· C语言 代码 · 共 164 行
C
164 行
/*********************************************************************
** Module Name: 12864 LCD **
** Author: Cbq **
** Version: 1.0 **
** CreateDate: 2008-05-21 **
** Description: **
** Remark: Huozq **
** Revision History: 2008-11-10 **
**********************************************************************/
/*********************************************************************
** 实验目的:通过学习本实验理解液晶在DSP中的使用. **
** 实验说明:从原理图我们可以看到,外围硬件主要由DSP和CPLD来组成的, **
** 其他配置大家打开我们提供的FYD12864使用手册看一下,里面 **
** 讲的很清楚. **
** 注意:两个重要的控制信号,是由DSP引出的T3CTRIP和T4CTRIP, **
** 分别是做为数据命令切换信号和使能控制信号. **
** 实验结果:运行程序后,在看LCD上看到4行开发板之家欢迎您的字体. ** **
**********************************************************************/
#include "DSP28_Device.h"
volatile unsigned int * LCDData = (unsigned int *) 0x4400;//液晶数据线写地址,可用此地址锁存要送给液晶的数据
void WriteLcdCom(unsigned char c);///写命令函数
void WriteLcdDat(unsigned char d);///写数据函数
long int a;
void main(void)
{
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
/*初始化外设*/
InitPeripherals();
for(a=0;a<100000;a++);
//因为我们前面已经配置了GPIO为输出,所以这里我们用了GPIO数据寄存器来控
//制其输出变量
GpioDataRegs.GPDDAT.bit.GPIOD5 = 0;///输出为低
GpioDataRegs.GPDDAT.bit.GPIOD6 = 0;///输出为低
WriteLcdCom(0x01);////清屏
WriteLcdCom(0x0e);////整体显示开,游标开
WriteLcdCom(0x80);////第一行第一个字节地址
WriteLcdDat(0xbf);
WriteLcdDat(0xaa);
WriteLcdDat(0xb7);
WriteLcdDat(0xa2);
WriteLcdDat(0xb0);
WriteLcdDat(0xe5);
WriteLcdDat(0xd6);
WriteLcdDat(0xae);
WriteLcdDat(0xbc);
WriteLcdDat(0xd2);
WriteLcdDat(0xbb);
WriteLcdDat(0xb6);
WriteLcdDat(0xd3);
WriteLcdDat(0xad);
WriteLcdDat(0xc4);
WriteLcdDat(0xfa);
WriteLcdCom(0x90); ////第二行第一个字节地址
WriteLcdDat(0xbf);
WriteLcdDat(0xaa);
WriteLcdDat(0xb7);
WriteLcdDat(0xa2);
WriteLcdDat(0xb0);
WriteLcdDat(0xe5);
WriteLcdDat(0xd6);
WriteLcdDat(0xae);
WriteLcdDat(0xbc);
WriteLcdDat(0xd2);
WriteLcdDat(0xbb);
WriteLcdDat(0xb6);
WriteLcdDat(0xd3);
WriteLcdDat(0xad);
WriteLcdDat(0xc4);
WriteLcdDat(0xfa);
WriteLcdCom(0x88); ////第三行第一个字节地址
WriteLcdDat(0xbf);//开
WriteLcdDat(0xaa);
WriteLcdDat(0xb7);//发
WriteLcdDat(0xa2);
WriteLcdDat(0xb0);//板
WriteLcdDat(0xe5);
WriteLcdDat(0xd6);//之
WriteLcdDat(0xae);
WriteLcdDat(0xbc);//家
WriteLcdDat(0xd2);
WriteLcdDat(0xbb);//欢
WriteLcdDat(0xb6);
WriteLcdDat(0xd3);//迎
WriteLcdDat(0xad);
WriteLcdDat(0xc4);//您
WriteLcdDat(0xfa);
WriteLcdCom(0x98);////第四行第一个字节地址
WriteLcdDat(0xbf);
WriteLcdDat(0xaa);
WriteLcdDat(0xb7);
WriteLcdDat(0xa2);
WriteLcdDat(0xb0);
WriteLcdDat(0xe5);
WriteLcdDat(0xd6);
WriteLcdDat(0xae);
WriteLcdDat(0xbc);
WriteLcdDat(0xd2);
WriteLcdDat(0xbb);
WriteLcdDat(0xb6);
WriteLcdDat(0xd3);
WriteLcdDat(0xad);
WriteLcdDat(0xc4);
WriteLcdDat(0xfa);
}
void WriteLcdCom(unsigned char c)
{
GpioDataRegs.GPDDAT.bit.GPIOD5 = 0; //写命令控制数据
* LCDData=c; //将命令数据写入CPLD地址
GpioDataRegs.GPDDAT.bit.GPIOD6 = 1; //负跳变脉冲,把数据送入DR
GpioDataRegs.GPDDAT.bit.GPIOD6 = 0;
for(a=0;a<5000;a++);
}
void WriteLcdDat(unsigned char d)
{
GpioDataRegs.GPDDAT.bit.GPIOD5 = 1; //写显示数据
* LCDData=d; //送入地址
GpioDataRegs.GPDDAT.bit.GPIOD6 = 1;
GpioDataRegs.GPDDAT.bit.GPIOD6 = 0;
for(a=0;a<5000;a++);
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?