LPC2138仿真简单计算器的原理图如下(proteus仿真工程文件可到本帖附件中下载)lcd1602液晶显示
LPC2138源程序如下:
#define IN_TARGET
#include "config.h"
#define LED1 1 << 18 // P0.18 控制LED1
/*********************************************************************************************************
** 函数名称: IRQ_Exception
** 功能描述: 中断异常处理程序,用户根据需要自己改变程序
********************************************************************************************************/
void __irq IRQ_Exception(void)
{
while(1); // 这一句替换为自己的代码
}
/*********************************************************************************************************
** 函数名称: FIQ_Exception
** 功能描述: 快速中断异常处理程序,用户根据需要自己改变程序
********************************************************************************************************/
void FIQ_Exception(void)
{ uint32 i;
i = IO0SET; // 读取当前LED1的控制值
if ((i & LED1) == 0) IO0SET = LED1;
else IO0CLR = LED1;
/* 等待外部中断信号恢复为高电平,若信号保持为低电平,中断标志会一直置位 */
while ((EXTINT & 0x01) != 0)
{ EXTINT = 0x01; // 清除EINT0 中断标志
}
}
/*********************************************************************************************************
** 函数名称: TargetInit
** 功能描述: 目标板初始化代码,在需要的地方调用,根据需要改变
********************************************************************************************************/
void TargetInit(void)
{
/* 添加自己的代码 */
}
/*********************************************************************************************************
** 函数名称: TargetResetInit
** 功能描述: 调用main函数前目标板初始化代码,根据需要改变,不能删除
********************************************************************************************************/
void TargetResetInit(void)
{
/* 设置存储器映射方式 */
#ifdef DEBUG_RAM // 如果在片内RAM 调试
MEMMAP = 0x02; // 映射到片内RAM
#endif
#ifdef DEBUG_FLASH // 如果在片内FLASH 调试
MEMMAP = 0x01; // 映射到片内FLASH
#endif
#ifdef IN_CHIP // 如果在片内FLASH 发布
MEMMAP = 0x01; // 映射到片内FLASH
#endif
/* 设置系统各部分时钟 */
PLLCON = 1; // 设置激活但未连接PLL
#if ((Fcclk / 4) / Fpclk) == 1 // 此值由系统硬件决定
VPBDIV = 0;
#endif
#if ((Fcclk / 4) / Fpclk) == 2 // 此值由系统硬件决定
VPBDIV = 2;
#endif
#if ((Fcclk / 4) / Fpclk) == 4 // 此值由系统硬件决定
VPBDIV = 1;
#endif
/* 设定PLL 的乘因子M 和除因子P 的值 */
#if (Fcco / Fcclk) == 2
PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
#endif
#if (Fcco / Fcclk) == 4
PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
#endif
#if (Fcco / Fcclk) == 8
PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
#endif
#if (Fcco / Fcclk) == 16
PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
#endif
PLLFEED = 0xaa; // 发送PLL馈送序列,执行设定PLL的动作
PLLFEED = 0x55;
while((PLLSTAT & (1 << 10)) == 0); // 等待PLL锁定
PLLCON = 3; // 设置激活并连接PLL
PLLFEED = 0xaa; // 发送PLL 馈送序列,执行激活和连接动作
PLLFEED = 0x55;
/* 设置存储器加速模块 */
MAMCR = 0; // 禁止MAM功能
#if Fcclk < 20000000
MAMTIM = 1; // 系统时钟低于20M,建议设置为1
#else
#if Fcclk < 40000000
MAMTIM = 2; // 系统时钟在20M~40M之间,建议设置为2
#else
MAMTIM = 3; // 系统时钟高于40M,建议设置为3
#endif
#endif
MAMCR = 2; // 使能MAM功能
/* 初始化VIC */
VICIntEnClr = 0xffffffff; // 清零所有中断
VICVectAddr = 0; // 默认向量地址寄存器
VICIntSelect = 0; // 0:对应的中断请求分配为IRQ, 1:对应的中断请求分配为FIQ。
/* 添加自己的代码 */
}
/*******************************************************************************************
** 以下为一些与系统相关的库函数的实现,用户可以根据自己的要求修改
*******************************************************************************************/
#include "rt_sys.h"
// for printf and scanf fuctions
int sendchar (int ch) { /* Write character to Serial Port */
while (!(U0LSR & 0x20));
return (U0THR = ch);
}
int getkey (void) { // Read character from Serial Port
while (!(U0LSR & 0x01));
return (U0RBR);
}
int fputc(int ch,FILE *f)
{
return (sendchar(ch));
}
int fgetc(FILE *f) {
return (sendchar(getkey()));
……………………
上一篇:ARM7 LPC2138数字频率计的设计源码与报告
下一篇:开源ARM7驱动拼接1024X1024LCD屏Proteus仿真源码
推荐阅读最新更新时间:2024-11-06 16:11
设计资源 培训 开发板 精华推荐
- 旋钮10键小键盘
- 使用 Richtek Technology Corporation 的 RT8241D 的参考设计
- MIC2026A-1YM双通道热插拔配电开关典型应用
- 基于m.2的stm32f103核心板
- LT3484EDCB-2 演示板,闪光灯充电器,Vin=2.8V-4.2V,Vbat=1.8V-4.2V,5V 最大值
- MIKROE-3521,用于 STM32 STM32L081CB 的 MCU 卡 6
- LTC1290单片机12位数据采集系统典型应用
- ESP8266 Demo Board
- 用于电池充电指示器的 NCP300LSN46T1 4.6V 电压检测器的典型应用
- LT1171HVCQ、5V/2.5A 反激式转换器的典型应用
- 下载【ADI 6本精选电子书】,截图抽红包啦~
- 2016 TI嵌入式产品研讨会全网首映,下载有好礼!
- ADI有奖下载活动之11 ADI锂电池测试设备解决方案
- 年末芯币竞价最后一期——RIGOL 数字示波器
- 【EEWORLD第二十三届】2011年02月社区明星人物揭晓!
- 报名直播赢【保温杯】等好礼|TI MSPM0 MCU 在汽车系统中的应用
- 《射频技术 For Dummies系列》书籍读后感征集
- 2024 DigiKey 应用说:树莓派 5 在视频直播中的应用
- 下载有礼|电路设计的参考书《ADI 参考电路合集 (第4册) 》
- 拆招有礼:洞悉电子产品中的大数据,招招解决测量难题!Keysight DAQ970系列活动