打印
[Atmel]

用AtmelStudio6.2跑mega16例程(46)键控频率输出

[复制链接]
792|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本例中T/C1与 OC1A引角连接,所生成的率频由该引角输出。

本例通过4个按键分别调节频率值的千位、百位、十位、个位,通过示波可观察不同的频率。

Proteus截图:

Studio6.2编译通过截图:

程序清单:
/*
* GccApplication9.c
*
* Created: 2014-11-4 20:37:39
*  Author: Administrator
*/

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>

#define  K1 (uint8_t)(~_BV(PC0))
#define  K2 (uint8_t)(~_BV(PC2))
#define  K3 (uint8_t)(~_BV(PC4))
#define  K4 (uint8_t)(~_BV(PC6))

const uint8_t SEG_CODE[] = {0x3f,0x06,0x58,0x4f,0x66,0x6d,0x7d,0x7d,0x07,0x7f,0x6f};
uint8_t FRQ_DATA[] = {0,1,0,0};
uint8_t Key_State;

void Show_FRQ_ON_DSY()
{
        uint8_t i = 0;
        for(i=0;i<4;i++)
        {
                PORTB = ~_BV(i);
                PORTA = SEG_CODE[FRQ_DATA[i]];
                if(i==0) PORTA |= 0x80;
                _delay_ms(2);
        }
}

void Set_Frequency()
{
        uint16_t f;
        f=FRQ_DATA[0]*1000+FRQ_DATA[1]*100+FRQ_DATA[2]*10+FRQ_DATA[3];
        OCR1A = F_CPU/2.0/f;
}
int main(void)
{
    uint8_t i=0;Key_State = 0xFF;
        DDRA = 0xFF; PORTA = 0xFF;
        DDRB = 0xFF; PORTB = 0xFF;
        DDRD = 0xFF; PORTD = 0xFF;
        DDRC = 0x00; PORTC = 0xFF;
        TCCR1A = 0x40;
        TCCR1B = 0x09;
        TCNT1 = 0;
        Set_Frequency();
       
        while(1)
    {
        if(PINC^Key_State)
                {
                    Key_State = PINC;
                        if(Key_State != 0xFF)
                        {
                                switch(Key_State)
                                {
                                        case K1:i=0;break;
                                        case K2:i=1;break;
                                        case K3:i=2;break;
                                        case K4:i=3;break;
                                }
                                FRQ_DATA[i] = (FRQ_DATA[i]+1)%10;
                                Set_Frequency();
                        }
                }
                Show_FRQ_ON_DSY();
    }
}




相关帖子

沙发
yklstudent| | 2014-11-5 07:25 | 只看该作者
楼主在默默的推广AVR,可惜感兴趣的人很少啊
楼主能推广ATMEL的ARM芯片使用资料啊

使用特权

评论回复
板凳
coody| | 2014-11-5 09:55 | 只看该作者
对的,楼主很执着。

使用特权

评论回复
地板
ddllxxrr|  楼主 | 2014-11-5 14:54 | 只看该作者
yklstudent 发表于 2014-11-5 07:25
楼主在默默的推广AVR,可惜感兴趣的人很少啊
楼主能推广ATMEL的ARM芯片使用资料啊 ...

楼上,对Atmel ARM 感兴趣?????:)

使用特权

评论回复
5
ddllxxrr|  楼主 | 2014-11-5 14:54 | 只看该作者
yklstudent 发表于 2014-11-5 07:25
楼主在默默的推广AVR,可惜感兴趣的人很少啊
楼主能推广ATMEL的ARM芯片使用资料啊 ...

楼上,对Atmel ARM 感兴趣?????:)

使用特权

评论回复
6
yklstudent| | 2014-11-5 16:50 | 只看该作者
ddllxxrr 发表于 2014-11-5 14:54
楼上,对Atmel ARM 感兴趣?????

有兴趣学着玩玩

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6949

帖子

66

粉丝