历史上的今天
返回首页

历史上的今天

今天是:2025年03月10日(星期一)

正在发生

2021年03月10日 | 基于AVR单片机Atmega16的ADC采集数码管显示仿真程序

2021-03-10 来源:eefocus

电路图

用到的数码管是7SEG-MPX4-CC。

程序代码

#include

#include


#define uchar unsigned char

#define uint unsigned int


flash char led_7[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};

flash char position[4] = {0xe0, 0xd0, 0xb0, 0xf0};


char ad[4];


//数码管显示函数

void display() {

    char i;

    for (i = 0; i < 4; i++) {

        PORTD = position[i];

        if (i == 3) {

            PORTA

            .6 = 0;

        }

        PORTC = led_7[ad[i]] + 0x80;

        delay_ms(2);

        PORTA

        .6 = 1;

    }

}


//处理ADC数据

void progress(uint data) {

    char i;

    for (i = 0; i < 4; i++) {

        ad[3 - i] = data % 10;

        data = data / 10;

    }

}


// ADC数据采集

uint mega16_ad() {

    uint addata;

    PORTA = 0xfe; //  PA0设为输入

    DDRA = 0xfe;

    SFIOR = 0; //连续转换模式

    ADMUX = 0x00; // ADC0单端输入 AVCC参考电压

    ADCSRA = 0xC0; //启动AD转换, 并开始转换

    while ((ADCSRA & 0x10) == 0); //等到转换结束

    addata = ADCL; //读取ADC数据 低位

    addata = addata + ADCH * 256; //读取ADC数据 低位 + 高位

    ADCSRA |= 0x10;

    addata = addata / 1024.0 * 5000; //计算电压

    return addata;

}


//主函数

void main() {


    uint ada;


    PORTC = 0xff; //初始化PC口

    DDRC = 0xff;//设置PC口为输出

    PORTA = 0xff;

    DDRA = 0xff;//设置PA口为输出

    PORTD = 0xff;

    DDRD = 0xff;  //设置PD口为输出


    while (1) {

        ada = mega16_ad();

        progress(ada);

        display();

    }

}


推荐阅读

史海拾趣

EA Elektro-Automatik公司的发展小趣事

随着产品的不断优化和市场的不断扩大,EA Elektro-Automatik开始将目光投向国际市场。公司积极寻求与全球知名企业的合作机会,建立长期且稳定的战略合作关系。通过参与各类国际展会和交流活动,EA Elektro-Automatik的产品和技术得到了更广泛的推广和应用。如今,EA Elektro-Automatik的产品已经出口到全球多个国家和地区,为当地的市场和客户提供了优质的解决方案。

HCC Industries公司的发展小趣事

随着国内市场的饱和,HCC Industries在2010年制定了国际化发展战略。公司首先选择在欧洲市场设立分支机构,利用其先进的制造工艺和技术优势,迅速打开了当地市场。随后,HCC又相继在亚洲和北美地区设立了多个办事处和生产基地,实现了全球范围内的生产和销售网络布局。这一战略不仅显著提升了HCC的品牌影响力,也为其带来了更加多元化的客户群体和更广阔的市场空间。

Capax Technologies Inc公司的发展小趣事

Capax Technologies Inc在追求经济效益的同时,也积极履行社会责任。公司注重环保和可持续发展,采用环保材料和节能技术生产电子产品。此外,Capax Technologies Inc还积极参与公益活动,为教育、扶贫等事业贡献力量。通过这些举措,公司不仅赢得了社会的认可和尊重,也为企业形象的提升和长期发展注入了正能量。

请注意,以上故事均基于虚构,不代表Capax Technologies Inc的实际发展历程。如果需要了解该公司真实的发展历程,建议查阅相关资料或联系公司获取更多信息。

CT [ Central Technologies ]公司的发展小趣事

近年来,电子行业经历了多次技术变革和产业重组。面对这些变革,CT公司积极调整战略方向,加大在人工智能、物联网等新兴领域的研发投入。同时,公司还推出了一系列创新产品和服务,以满足市场的新需求。这些举措使得CT公司在行业变革中保持了领先地位,实现了持续稳健的发展。

台湾义隆电子(ELAN)公司的发展小趣事

义隆电子在多个技术领域保持领先地位,如数字模拟混合技术、高阶设计流程等。这些技术优势使得公司能够迅速掌握市场脉动,开发出具有实用性的新产品。同时,义隆电子还注重将先进技术应用于实际产品中,如高性能的触摸屏控制器、触摸板模块等,这些产品广泛应用于智能手机、平板电脑等消费电子产品中,赢得了市场的广泛认可。

DART(英国达特)公司的发展小趣事

随着公司规模的不断扩大和业务的不断拓展,DART公司开始将目光投向全球市场。他们先后在亚洲、北美和欧洲等地设立了分公司或办事处,以便更好地服务当地客户并拓展新的市场机会。同时,公司也加大了对国际市场的投入和宣传力度,通过参加国际展会、举办技术研讨会等方式提升品牌知名度和影响力。这些努力使得DART公司逐渐成为一个具有全球影响力的电子品牌。

请注意,以上故事均为虚构,旨在展示一个电子行业公司可能的发展路径和面临的挑战。实际情况可能因公司背景、市场环境等因素而有所不同。

问答坊 | AI 解惑

加快电源启动的分流稳压器

在特定应用中,设计要求可能  需要系统的开关模式电源比普通电源能更迅速地提供输出。图 1 显示了这种电源的自举(或称启动)电路。在开关模式电源的 PFC(功率因数校正)预稳压器中,电路的 PWM(脉宽调制器),即 IC1,从辅助绕组 L1 ...…

查看全部问答>

ARM9 2440读取SHT11失败,全是0XFF,原因会有哪些呢?

ARM9 2440读取SHT11失败,全是0XFF;2440发送命令后,在第九个时钟没有检测到ACK信号。 硬件上应该是没有问题的,同一个传感器在其他处理器平台上正常运行。 软件上哪些地方容易出问题? 现在打算从头开始检查,我怎么样来测SHT11已经对处理器的 ...…

查看全部问答>

下面的汇编语言程序怎么分析

STACK  SEGMENT STACK        DB 1024 DUP(0) STACK  ENDS DATA   SEGMENT TABF   DW   262,350,352,350,441,393,350,393,441        DW  & ...…

查看全部问答>

在WINCE5中打开串口错误?

我写了一个串口程序,在模拟器PPC2003上调试是可以的,能正常的打开串口并收发数据,但部署到真机(WINCE5)串口都打不开,代码如下:                 try          &n ...…

查看全部问答>

//---------TCPMP如何指定从哪帧开始播放,播放到哪帧停止--------

TCPMP如何指定从哪帧开始播放,播放到哪帧停止. 在我的项目中,使用的视频文件是AVI格式的,打算用TCPMP实现,要准确的定位播放起始帧与结束帧,并播放从起始帧到结束帧之间的视频段。 跪求高人指点。…

查看全部问答>

用pl2303做了一个USB转串口,电脑检测不到。

用pl2303做了一个USB转串口,可是电脑怎么都检测不到。只有当我将万用表接到17脚和地时,电脑才能检测到。查了好几天了,请各位老师帮我看看。D:\\网址\\44.jpg…

查看全部问答>

做逻辑的难点在于系统结构设计和仿真验证

刚去公司的时候BOSS就和我讲,做逻辑的难点不在于RTL级代码的设计,而在于系统结构设计和仿真验证方面。目前国内对可综合的设计强调的比较多,而对系统结构设计和仿真验证方面似乎还没有什么资料,这或许也从一个侧面反映了国内目前的设计水平还比 ...…

查看全部问答>

新手提问,多多帮忙啊!!

我刚接触到TI公司的2000系列DSP,我装好CCS2000后,启动SetUpCCS2000后,在configurition里我选择的是F2812Device Sumilator,保存后启动CCS,可在打开和新建工程的时候都有问题,具体的时在新建工程的对话框里Target一栏里没有可选项,所以就不能建 ...…

查看全部问答>

zstack的时钟

使用cc2530,timer2是mac timer。某些资料上面说周期是320us。但是不明白函数osalTimeUpdate()里边的操作 tmp = (ticks320us * 8) + remUsTicks; 以及osalTimeUpdate()调用的函数 CONVERT_320US_TO_MS_ELAPSED_REMINDER( tmp, elapsedMSec, r ...…

查看全部问答>

新手求助

想用单片机控制800个灯的亮灭,如何用单片机控制,每个灯都是独立的,有思维的大侠们帮忙给个思路,新手刚接触单片机。小弟在这里膜拜了…

查看全部问答>