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

📄 main.c

📁 EasyARM1138人机界面扩展板方案源码
💻 C
字号:
/****************************************Copyright (c)****************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File Name:           main.c
** Last modified Date:  2008/07/29
** Last Version:        V1.00
** Description:         LCD的混合输出及键盘的中断输入
** 
**--------------------------------------------------------------------------------------------------------
** Created By:          周小明
** Created date:        2008/07/29
** Version:             V1.00
** Descriptions: 
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
*********************************************************************************************************/
//  包含必要的头文件
#include  <hw_types.h>
#include  <hw_memmap.h>
#include  <hw_sysctl.h>
#include  <hw_gpio.h>
#include  <sysctl.h>
#include  <gpio.h>
#include  "hw_ints.h"
#include  "interrupt.h"
#include  "LCD_KEY.h"
 
//  定义预防JTAG失效按键
#define  KEY_PERIPH             SYSCTL_PERIPH_GPIOG
#define  KEY_PORT               GPIO_PORTG_BASE
#define  KEY_PIN                GPIO_PIN_5

//  防止JTAG失效
void  jtagWait(void)
{
    SysCtlPeriEnable(KEY_PERIPH);                           //  使能KEY所在的GPIO端口
    GPIOPinTypeIn(KEY_PORT , KEY_PIN);                      //  设置KEY所在管脚为输入

    if ( GPIOPinRead(KEY_PORT , KEY_PIN)  ==  0x00 )        //  如果复位时按下KEY,则进入
    {
        for (;;);                                           //  死循环,以等待JTAG连接
    }

    SysCtlPeriDisable(KEY_PERIPH);                          //  禁止KEY所在的GPIO端口
}


//  定义全局的系统时钟变量
unsigned long  TheSysClock;

//  定义显示字符指针
char *line1;
char *line2;
char *line3;
char *line4;

//  字符表(映射对应的按键图标)
uint8 code[20] = 
{
    48,49,50,51,52,53,54,55,56,57,                          //  48~57 -> 0~9
    42,35,25,27,67,60,26,24,79,62                           //  42,35 -> *,#
};                                                          //  24,25,26,27 -> 上,下,左,右 
                                                            //  67,79 -> 取消,确认
                                                            //  60,62 -> F1,F2功能选择
//  端口B中断服务函数
void GPIO_Port_A_ISR(void)
{
    uint8 ucIntStatus;
    uint8 ucKey;

    ucIntStatus = GPIOPinIntStatus( LCD_KEY_PORT , 1);      //  读PA口中断状态

    if(ucIntStatus & LCD_KEY_KEY)                           //  判断是否为按键中断
        {
            GPIOPinIntClear( LCD_KEY_PORT , LCD_KEY_KEY);   //  清中断
            ucKey = zlg7289Key();                           //  读按键值

            if (ucKey != 0xff)
            {
                GPIOPinTypeOut(LCD_KEY_PORT , LCD_KEY_DIO); //   设置DIO为输出
                clear_all();
                LCD_ComdWrite(0x80);
                LCD_DataWrite(code[ucKey]);
            }
        }
}

//  系统初始化
void  sysInit(void)
{
    SysCtlLDOSet(SYSCTL_LDO_2_50V);                         //  设置LDO输出电压

    SysCtlClockSet(SYSCTL_USE_OSC |                         //  系统时钟设置,采用主振荡器
                   SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_6MHZ |
                   SYSCTL_SYSDIV_1);

/*
    SysCtlLDOSet(SYSCTL_LDO_2_75V);                         //  配置PLL前须将LDO电压设置为2.75V

    SysCtlClockSet(SYSCTL_USE_PLL |                         //  系统时钟设置,采用PLL
                   SYSCTL_OSC_MAIN |                        //  主振荡器
                   SYSCTL_XTAL_6MHZ |                       //  外接6MHz晶振
                   SYSCTL_SYSDIV_10);                       //  分频结果为20MHz
*/
    TheSysClock  =  SysCtlClockGet();                       //  获取系统时钟,单位:Hz

}


//  主函数(程序入口)
void  main(void)
{   
    jtagWait();                                             //  防止JTAG失效,重要!

    sysInit();                                              //  系统初始化

    zlg7289Init();                                          //  初始化ZLG7289
    GPIOPinTypeIn( LCD_KEY_PORT , LCD_KEY_KEY);             //  设置KEY端口为输入
    GPIOIntTypeSet( LCD_KEY_PORT , LCD_KEY_KEY, GPIO_FALLING_EDGE);
                                                            //  配置引脚下降沿触发中断
    GPIOPinIntEnable( LCD_KEY_PORT , LCD_KEY_KEY);          //  使能引脚输入中断
    IntEnable(INT_GPIOA);                                   //  使能GPIO PB口中断
    LCDInit();                                              //  LCD初始化

    clear_all();                                            //  清屏

    LCD_PictureOff();                                       //  关图片显示功能
    LCD_PowerOnPictureInit_disp();                          //  显示初始界面
    LCD_PictureOn();                                        //  开图片显示功能


    line1 = "            广州";                             //  显示文字
    line2 = "          周立功";
    line3 = "          单片机";
    line4 = "        有限公司";

    LCD_ComdWrite(0x80);                                    //  显示第一行文字
    while( *line1!=0x00 )
	{
        LCD_DataWrite(*line1);
        line1++;
	}

    LCD_ComdWrite(0x90);                                    //  显示第二行文字
	while( *line2!=0x00 )
	{
        LCD_DataWrite(*line2);
        line2++;
	}

    LCD_ComdWrite(0x88);                                    //  显示第三行文字
    while( *line3!=0x00 )
	{
        LCD_DataWrite(*line3);
        line3++;
	}

    LCD_ComdWrite(0x98);                                    //  显示第四行文字
    while( *line4!=0x00 )
	{
        LCD_DataWrite(*line4);
        line4++;
	}

    while(1);                                               //  等待进入按键中断
}

⌨️ 快捷键说明

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