搜索
bottom↓
回复: 1

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

[复制链接]

出0入0汤圆

发表于 2011-11-11 22:21:52 | 显示全部楼层 |阅读模式
2011.10 课堂设计操作练习题以及参考代码


(原文件名:未标题-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[8]={0x39,0x09,0x09,0x09,0x09,0x09,0x09,0x0f}; //封闭图像的8段码表
unsigned char blk_7[20][2] = {
        {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[20]={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[0])
        PORTA = blk_7[1];
    else
        PORTA = led_7[posit];
           
    PORTC = ~(1<<posit);
    if (++posit >= 8 ) posit = 0;
}

// Timer 0 比较匹配中断服务,2s执行一次
interrupt [TIM0_COMP] 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)
    {
    }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2012-2-28 20:51:15 | 显示全部楼层
学习。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 09:03

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表