LPC2138+LCD1602计数器proteus仿真与源码 添加注释的和改管脚

发布者:算法之手最新更新时间:2019-10-15 来源: eefocus关键字:LPC2138  LCD1602  计数器 手机看文章 扫描二维码
随时随地手机看文章

LPC2138仿真简单计算器的原理图如下(proteus仿真工程文件可到本帖附件中下载)lcd1602液晶显示
0.png0.png 

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()));

……………………

关键字:LPC2138  LCD1602  计数器 引用地址:LPC2138+LCD1602计数器proteus仿真与源码 添加注释的和改管脚

上一篇:ARM7 LPC2138数字频率计的设计源码与报告
下一篇:开源ARM7驱动拼接1024X1024LCD屏Proteus仿真源码

推荐阅读最新更新时间:2024-11-06 16:11

初步认识51单片机-2.2单片机控制LCD1602液晶显示模块
上面学的两招,控制IO和延时,在这里要举的第一个例子就是LCD1602。LCD1602什么意思,表示一行可以显示16个字符,一共有两行。先来个LCD1602的简单介绍,1602LCD主要技术参数: 显示容量:16 2个字符 芯片工作电压:4.5 5.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.95 4.35(W H)mm 引脚功能说明 1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表1所示: 第1脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产
[单片机]
初步认识51单片机-2.2单片机控制<font color='red'>LCD1602</font>液晶显示模块
LCD1602几种调试方法(NIOSii)
#include system.h #include stdio.h int main (void) { FILE *lcd1; lcd1 = fopen( /dev/lcd , w ); if (lcd1 == NULL) printf( lcd not ready...n ); else { printf( lcd ready...n ); fprintf(lcd1, 111111111111111111111n ); } fclose(lcd1); printf( can you see something? ); return 0; } #include system.h #include altera_av
[单片机]
AVR单片机定时计数器学习笔记分享
  定时计数器的结构与应用定时计数器(Timer/Counter)常用于计数、延时、测量 周期、频率、脉宽、提供定时脉冲信号等。在实际应用中,对于转速,位移、速度、流量等物理量的 测量,通常也是由传感器转换成脉冲电信号,通过使用定时计 数器来测量其周期或频率,再经过计算处理获得。   AVR的定时计数器接口功能: 通过定时计数器与比较匹配寄存器相互配合,生成占空比 可变的方波信号,即脉冲宽度调制输出PWM信号,可用于 D/A、马达无级调速控制、变频控制等。本文主要介绍的是AVR单片机定时/计数器学习笔记,具体的跟随小编来了解下。      AVR单片机定时/计数器学习笔记   定时/计数器1(16位)有普通模式、CTC模式、
[单片机]
AVR单片机定时<font color='red'>计数器</font>学习笔记分享
基于LPC2138控制的双向交通信号灯 (最后3s绿灯闪烁)
/**************************************************************************** * File:Main.C * 功能:计数器,通过两个按键来控制加减计数器,并输出数码管显示.。 ****************************************************************************/ #include config.h #include Math.h #define CON 0x00ffffff //控制P0.0~P0.23作为输出引脚 #define SW1 (1 30) #define SW2
[单片机]
基于<font color='red'>LPC2138</font>控制的双向交通信号灯 (最后3s绿灯闪烁)
倒转脉冲计数器电路
如果在一个运算放大器的反馈回路中使用一个数模转换器,则放大增益和数模转换器的输入数字或输入代码成反比,倒转使得缩放比例和正电压也成反比。倒转 脉冲计数器电路 :
[电源管理]
倒转脉冲<font color='red'>计数器</font>电路
AT89S51单片机实现可预置可逆4位计数器的设计
1. 利用AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,用来指示当前计数的数据;用P1.4-P1.7作为预置数据的输入端,接四个拨动开关K1-K4,用P3.6/WR和P3.7/RD端口接两个轻触开关,用来作加计数和减计数开关。具体的电路原理图如下图所示 2. 电路原理图 图4.12.1 3. 系统板上硬件连线 (1. 把“单片机系统”区域中的P1.0-P1.3端口用8芯排线连接到“八路发光二极管指示模块”区域中的L1-L4上;要求:P1.0对应着L1,P1.1对应着L2,P1.2对应着L3,P1.3对应着L4; (2. 把“单片机系统”区域中的P3.0/RXD,P3.1/TXD,P3.2/INT0,P3.
[单片机]
AT89S51单片机实现可预置可逆4位<font color='red'>计数器</font>的设计
基于数字相关的时栅信号处理设计LPC2138源程序及proteus仿真
设计要求如下: 1.时栅传感器模拟器:通过输入两路时间和空间的信号。 (1) 设计一路正弦载波信号模拟信号输出 sina * cos(wt) (2) 设计一路余弦信号模拟信号输出 cosa *sin(wt) (3) 设计两路信号的合成模拟信号输出 sin(wt+a) 2. 设计数据采集模块。(要求整周期采样) 3. ARM硬件接口电路设计:显示路和键盘电路 4. 软件设计:数字相关算法求解角度、显示、按键、A/D. 5. proteus仿真和实做。希望对大家有用! 仿真原理图如下 LPC2138单片机源程序如下: #include config.h //#include LPC21xx.h #include
[单片机]
基于数字相关的时栅信号处理设计<font color='red'>LPC2138</font>源程序及proteus仿真
交换位技术改进FPGA-PWM计数器性能
  简单改变FPGA计数器规格使作为DAC功能PWM计数器的纹波降低。   当需要一些模拟输出和系统中有FPGA时,很可能选择使用如图1的PWM模块和简单低通滤波器。FPGA的输出是固定频率、计数器和数字比较器使占空比可变的典型波形(表1)。   假设高信号使能,计数器每个时钟周期进行计数,PWM输出的频率为时钟频率的2次幂分频。通过连接前置比例器,使用使能来降低输出频率。由于输出频率固定,滤波器容易计算。已知占空比50%时,出现最坏的纹波。最大纹波和上升时间的限制结合决定滤波器类型和RC(电阻/电容)值。   对表1中编码进行非小改动,能够改进PWM电路的性能。但在原先系统中,最大纹波电流发生在50%占
[嵌入式]
交换位技术改进FPGA-PWM<font color='red'>计数器</font>性能
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved