历史上的今天
返回首页

历史上的今天

今天是:2024年11月18日(星期一)

正在发生

2019年11月18日 | Mini2440裸机程序之ADC

2019-11-18 来源:51hei

源代码及注释


#define GLOBAL_CLK  1

#include
#include
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "memtest.h"
#include "Mylib.h"

#define LED1 (1 << (5 * 2))
#define LED2 (1 << (6 * 2))
#define LED3 (1 << (7 * 2))
#define LED4 (1 << (8 * 2))
#define LEDS (LED1 | LED2 | LED3 | LED4)

#define LED1_ON   ~(1<<5)
#define LED2_ON   ~(1<<6)
#define LED3_ON   ~(1<<7)
#define LED4_ON   ~(1<<8)

#define LED1_OFF   (1<<5)
#define LED2_OFF   (1<<6)
#define LED3_OFF   (1<<7)
#define LED4_OFF   (1<<8)

void init()

    cal_cpu_bus_clk();//在MyLib.h中有定义

    Uart_Init(0,115200);//PCLK、波特率为115200

    Uart_Select(0);//选择串口0

    My_Logo();//在MyLib.h中有定义 
}

int ADC_Test()
{
    int temp;

    rADCCON = (1<<14)|(0x31<<6)|(0<<3);//预分频器使能、预分频值为49、通道0
    rADCCON |=0x1;// A/D开始转换,开始之后,此位被清除
    while(rADCCON&0x1);//检测有没有开始
    while(!(rADCCON&0x8000));//检测转换是否结束
    temp = rADCDAT0&0x3ff;//返回转换值,正常A/D转换的数值只能通过ADCDAT0寄存器的[9:0]位读取 

    return temp;
}

void Main(void)
{
    int temp,Value;
    U8 key;
    init();
    MMU_Init();//内存初始化

    rGPBCON = LEDS;   //初始化LED相应引脚为输出
    rGPBDAT = rGPBDAT|(LED1_OFF)|(LED2_OFF)|(LED3_OFF)|(LED4_OFF); // LED 灭
    rGPBDAT &= ~(0x1);
  
    Uart_Printf("nnnPress 'Enter' to refresh the Screenn");//终端提示

    while(1)
    { 
           temp = ADC_Test();//调用A/D转换函数
   
           Value = ((3300/1024)*temp)*1000;//转换成电压值,单位mV,Value值比实际值放大了1000倍
   
           key=Uart_Getch();//等待从键盘接收按键
   
           Beep(2000,100);//蜂鸣器发声函数
   
   
           // 刷新A/D转换,原因很简单,我们往往在等待按键时调整电位器
           temp = ADC_Test();
   
           Value = ((3300/1024)*temp)*1000;
   
           rGPBCON = LEDS;   //还原GPB的配置,原因调用了蜂鸣器发声函数,改变了GPB原先的配置
  
   
          if(key==ENTER_KEY)//判断是否按了Enter键
          {
               key=0;//按键清零
   
               rGPBDAT = (~temp)&(~0x1);//输出到LED显示,务必把GPB0清零,否则你将会有麻烦 ^|^
    
               Uart_Printf("nnn%d %% 1000000 %(V%)n",Value);//把电压值输出到终端显示 
          }
          else
          {
               key=0;
   
               Uart_Printf("nnnPress the 'Enter' key!n");//按键非Enter键,提示按键
          }
    }
}


程序结果



推荐阅读

史海拾趣

Electronicon Kondensatoren GmbH公司的发展小趣事

ELECTRONICON一直注重技术创新和品质保证。公司不断投入研发资金,引进先进技术和设备,以确保产品的质量和性能始终处于行业领先地位。同时,ELECTRONICON还建立了完善的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格的质量控制。

Harwin公司的发展小趣事

进入20世纪80年代和90年代,Harbour Industries继续深化其在电缆领域的研发。为了满足军事和国防部门对电缆的特殊需求,公司开始研发并生产Mil-Spec(军用规格)电缆。这些电缆不仅具备高度的耐用性和可靠性,还符合严格的军事标准。Harbour凭借其在技术上的不断创新和产品质量的持续提升,成功地将Mil-Spec电缆推向市场,并赢得了众多军事客户和合作伙伴的信赖。

Davico Industrial Ltd公司的发展小趣事

随着通讯技术的快速发展,射频微波电缆的需求日益增长。Harbour Industries凭借其深厚的电缆制造经验和先进的技术实力,成功研发出了一系列高性能的射频微波电缆。这些电缆在微波射频领域展现出了优异的性能,广泛应用于通讯网络、广播电视、卫星通信等领域。Harbour的射频微波电缆不仅在国内市场占有一席之地,还远销海外多个国家和地区,进一步提升了公司的国际影响力。

B.B. Battery公司的发展小趣事

随着科技的不断发展,电池行业也在经历着深刻的变革。B.B. Battery公司紧跟时代步伐,不断加大技术创新力度。他们引进先进的生产设备和技术,研发出更高效、更环保的电池产品。同时,公司还注重与高校、科研机构的合作,共同推动电池技术的创新与发展。这些努力使得B.B. Battery公司的产品在市场上具有更强的竞争力。

Holtek(合泰)公司的发展小趣事

在国内市场取得一定成绩后,B.B. Battery公司开始积极拓展国际市场。他们参加国际电池展会,与全球知名企业建立合作关系,将产品打入国际市场。同时,公司还注重品牌建设,通过提升产品质量和服务水平,树立了良好的品牌形象。这些努力使得B.B. Battery公司的品牌在全球范围内都享有较高的知名度和美誉度。

Deltron / DEM Manufacturing公司的发展小趣事

Deltron Emcon,即现在的DEM Manufacturing,起源于四家英国制造企业的合并。这些企业分别是成立于1946年的Deltron Components,专业音频连接器和压铸盒制造商Roxburgh EMC(成立于1969年),EMC滤波器和组件的制造商Media Products(成立于1990年),以及广播跳线产品制造商BES Electronics(成立于1982年)。这些公司在各自的领域内都有着丰富的经验和卓越的技术,合并后,DEM Manufacturing凭借这些优势,在电子行业中迅速崭露头角。

问答坊 | AI 解惑

10月全国开通手机电视

文章作者:gaosi  文章来源 移动3G网 www.Goes3G.com/(原文链接地址:http://www.goes3g.com/200510/01080627.html)记者昨天从有关渠道获悉,中国移动将在全网范围开通手机电视业务。但据移动内部人士透露,该业务的具体开通日期是在10 ...…

查看全部问答>

诚邀2008波兰国际通讯信息技术和电子博览会

2008波兰国际通讯信息技术和电子博览会 (INFOSYSTEM 2008) 【展会名称】2008波兰国际通讯信息技术和电子博览会 【展会时间】2008年6月9日至11日 【展会地点】波兰波兹南国际展览中心 【展出内容】 1. 电脑周边及软件: 2. 通信网络产品: ...…

查看全部问答>

51AVR单片机学习板

51AVR单片机学习板EE21可以做以下实验: 1、LED流水灯实验 2、LED渐亮渐灭实验 3、8位数码管静态显示 4、8位数码管动态显示 5、独位按键实验 6、矩阵键盘扫描实验 7、LCD1602字符显示 8 、LCD12864汉显 9、LCD12864显示图片 10 ...…

查看全部问答>

要看懂硬件原理图需要哪些知识?

小弟是做嵌入式方向的,由于不是计算机专业,数电模电基础没有。 所以硬件原理图看不懂,这会影响到职业发展,所请问这方面有经验的大侠, 要看懂硬件原理图,进而指导嵌入式方案选型、系统设计和驱动开发,需要哪些方面的知识,有没有哪些书推荐 ...…

查看全部问答>

EVC问题

LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt EVC下选择TE2440.SDK和Win32[WCE ARMV4I]Debug出现上面的问题是怎么回事,刚学EVC .EVC跟S3C2440开发板怎么连不起来,要如何做?请高手指点…

查看全部问答>

EVC程序下载到CE上的问题

我自己配置了个OS  在导出了我自己的SDK 然后把我在EVC上写的程序下载进去怎么运行不了啊 说我缺少什么库  怎么回事啊  是不是我在配置的时候哦据没把MFC的支持选择上啊 ? …

查看全部问答>

请问evc中如何快速获取一个大文件的总行数?

文件比较大,怎样才能快速获取它的总行数,总不能一行一行的加吧。请各位高手指教!…

查看全部问答>

奔腾CPU体系结构

我要写一篇关于奔腾CPU组织体系结构的论文,包括: 1、对虚拟存储器管理的支持,对分页分段的发展; 2、保护机制; 3、Cache组织; 4、超标量部件及其工作原理。 请帮忙给一些资料,网址或文件,vido219@163.com 万分感谢!!!!!!!!…

查看全部问答>

M0的一个小问题

1   LPC_SYSCON -> SYSAHBCLKCTRL |=  (1 PIO0_1         =  0x00 ;       /* 配置为管脚GPIO功能       */   3LPC_GPIO0  ...…

查看全部问答>

LM3S811DDLLXXRR笔记之九:IIC实现

LM3S811用IIC的API十分方便,但一定注意顺序搞不好是搞不定的   对于IIC的读写一定要注意:   主机往IIC从模块里写或从IIC模块读出时一定要调下设地址函数,   I2CMasterSlaveAddveset()   另外,尽量用中断,若不用中 ...…

查看全部问答>