在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 8091|回复: 18

SPI接口实验LED显示

[复制链接]
发表于 2007-4-21 10:11:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
SPI接口实验LED显示

SPI接口实验LED显示.rar

44.88 KB, 下载次数: 91 , 下载积分: 资产 -2 信元, 下载支出 2 信元

SPI接口实验LED显示

发表于 2007-4-24 13:59:16 | 显示全部楼层

先看看,回来再评论,呵呵

先看看,回来再评论,呵呵
发表于 2007-4-24 14:00:46 | 显示全部楼层

不会是抄的把!

谢谢了!太简单!!
发表于 2007-5-9 16:39:36 | 显示全部楼层

ddd

ao
发表于 2007-5-10 01:16:01 | 显示全部楼层
先看看,!!
发表于 2007-9-24 11:18:50 | 显示全部楼层
好东西~~~~
发表于 2007-9-25 11:02:27 | 显示全部楼层
谢谢分享!
发表于 2007-9-27 13:53:59 | 显示全部楼层
怎么是C代码啊??
发表于 2007-11-24 18:34:10 | 显示全部楼层

好东西,大家分享!

好东西,大家分享!
发表于 2007-12-15 01:31:11 | 显示全部楼层
请注明是AVR  mega16学习板,及电路图也附上嘛。不然,别人都不知道是什么东东。
我以为是C51呢,下一次写清楚一点方便大家。好吗?

/*
实验四:
    SPI接口实险,LED数据管显示。
    1、程序通过SPI接口输出数据到HC595芯片驱动LED数据管简单显示。
    2、内部1 M晶振,程序采用单任务方式,软件延时。
    3、进行此实验请插上JP1的所有8个短路块,JP6(SPI_EN)短路块。

    AVR  mega16学习板
    www.iccavr.com
    2006-01-10
*/

#include "iom16v.h"

unsigned char disp[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

/*延时函数*/
void delay_ms(unsigned char i) {

    unsigned char a, b;
    for (a = 1; a < i; a++) {
        for (b = 1; b; b++) {
            ;
            }
        }
}

/*SPI接口初始化*/
void SPI_MasterInit(void) {

    DDRB |= (1<<PB5) | (1<<PB7);        /* 设置MOSI 和SCK 为输出,其他为输入 */
    SPCR = (1<<SPE) | (1<<MSTR)
        | (1<<SPR1) | (1<<SPR0);        /* 使能SPI 主机模式,设置时钟速率为fck/128 */
}

/*SPI数据发送*/
void SPI_MasterTransmit(unsigned char i) {
   
    SPDR = i;                            /* 启动数据传输 */
    while (!(SPSR & (1<<SPIF))) {        /* 等待传输结束 */
        ;
        }
}

/*595数据输出*/
void SPI_595_Out(unsigned char i) {
    PORTB &= ~(1 << 4);                    /*准备锁存*/
    SPI_MasterTransmit(i);
    PORTB |= (1 << 4);                    /*锁存数据*/
}

void main(void) {

    unsigned int i = 0;

    DDRA = 0x00;                        /*方向输入*/
    PORTA = 0xFF;                        /*打开上拉*/
    DDRB = 0xFF;                        /*方向输出*/
    PORTB = 0xFF;                        /*电平设置*/
    DDRC = 0x00;
    PORTC = 0xFF;
    DDRD = 0xFF;
    PORTD = 0xFF;

    SPI_MasterInit();
    while (1)
    {
        i ++;
        if (i > 9999)
         {
            i = 0;
            }
        //delay_ms(250);
        //delay_ms(250);
        SPI_595_Out(disp[(i/1000)%10]);
        PORTB &= ~(1 << 3);
        delay_ms(50);
        //delay_ms(250);
        PORTB |=(1 << 3);

        SPI_595_Out(disp[(i/100)%10]);
        PORTB &= ~(1 << 2);
        delay_ms(50);
        //delay_ms(250);
        PORTB |=(1 << 2);

        SPI_595_Out(disp[(i/10)%10]);
        PORTB &= ~(1 << 1);
        delay_ms(50);
        //delay_ms(250);
        PORTB |=(1 << 1);

        SPI_595_Out(disp[i%10]);
        PORTB &= ~(1 << 0);
        delay_ms(50);
        PORTB |=(1 << 0);
        //delay_ms(250);
        }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 15:05 , Processed in 0.033550 second(s), 13 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表