machao 发表于 2011-11-11 22:21:52

2011.10 课堂设计操作练习题以及参考代码

2011.10 课堂设计操作练习题以及参考代码

http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_694386HOCOQD.jpg
(原文件名:未标题-1 拷贝.jpg)


1.使用8个LED数码管构成一个流水灯,其中只有一段不亮,每隔0.5S顺时(或逆时针)移动。
2.采用软delay、中断+外部时钟、定时器都可以
3.交手画的硬件连接草图
4.说明如何设计0.5S移动的
5.软件(整个目录)在x:\2xx_2xx\建立新的工程,完成后将整个目录拷贝出

/*********************************************
Chip type         : ATmega16
Program type      : Application
Clock frequency   : 4.000000 MHz
Memory model      : Small
External SRAM size: 0
Data Stack size   : 256
*********************************************/
                                                                        
#include <mega16.h>

unsigned char led_7={0x39,0x09,0x09,0x09,0x09,0x09,0x09,0x0f}; //封闭图像的8段码表
unsigned char blk_7 = {
      {0,0x38},{1,0x08},{2,0x08},{3,0x08},{4,0x08},{5,0x08},{6,0x08},{7,0x0e},{7,0x0d},{7,0x0b},
      {7,0x07},{6,0x01},{5,0x01},{4,0x01},{3,0x01},{2,0x01},{1,0x01},{0,0x31},{0,0x29},{0,0x19}};
      
//unsigned char blk_7={0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfd,0xfb,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xef,0xdf};

unsigned char time_counter;          // 中断次数计数单元            
unsigned char posit,i;

void display(void)                   // 8位LED数码管动态扫描函数
{
    PORTC = 0xff;

    if (posit == blk_7)
      PORTA = blk_7;
    else
      PORTA = led_7;
         
    PORTC = ~(1<<posit);
    if (++posit >= 8 ) posit = 0;
}

// Timer 0 比较匹配中断服务,2s执行一次
interrupt void timer0_comp_isr(void)                     
{
    display();                                // 调用LED扫描显示
    if (++time_counter >= 125)
    {
      time_counter = 0;
      if(++i >= 20) i=0;
    }
}

void main(void)
{
    PORTA=0x00;                  // 显示控制I/O端口初始化
    DDRA=0xFF;
    PORTC=0xff;
    DDRC=0xff;
    // T/C0 初始化
    TCCR0=0x0B;                // 内部时钟,64分频(4M/64=62.5KHz),CTC模式
    TCNT0=0x00;
    OCR0=0x7c;                // OCR0 = 0x7c(124),(124+1)/62.5=2ms
    TIMSK=0x02;                // 允许T/C0比较匹配中断

    #asm("sei")                // 开放全局中断
    while (1)
    {
    }
}

xinjie1023 发表于 2012-2-28 20:51:15

学习。
页: [1]
查看完整版本: 2011.10 课堂设计操作练习题以及参考代码