打印
[AVR单片机]

ATmega128,用595连接数码管,如何编程序,很茫然,求帮助。

[复制链接]
2752|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
lirunze| | 2013-7-4 19:27 | 只看该作者
这个百度里面一搜,程序应该一大把

使用特权

评论回复
板凳
airwill| | 2013-7-4 20:32 | 只看该作者
ATmega128,编程控制 595 连接数码管, 非常方便.
配置一下 SPI 口, 就只要写 SPI 数据寄存器就行了.
也不用控制 E.

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
qin552011373 + 6 很给力!
地板
qin552011373| | 2013-7-4 21:59 | 只看该作者
程序可以给一个参考的  但是你也要自己改一下

使用特权

评论回复
5
qin552011373| | 2013-7-4 22:00 | 只看该作者
配置文件
#ifndef HC595_CONFIG_H_
#define HC595_CONFIG_H_

#define HC595_PORT                PORTC
#define HC595_DDR                DDRC
#define HC595_CLOCK                BIT1
#define HC595_CS                BIT0
#define HC595_MOSI                BIT2

#endif /* HC595_CONFIG_H_ */

使用特权

评论回复
6
qin552011373| | 2013-7-4 22:01 | 只看该作者
HC595函数头文件
#ifndef HC595_H_
#define HC595_H_

//宏定义
#define HC595_SELECT                CLRBIT(HC595_PORT,HC595_CS);SETBIT(HC595_PORT,HC595_CS);CLRBIT(HC595_PORT,HC595_CS)
#define HC595_UNSELECT                CLRBIT(HC595_PORT,HC595_CS)
#define HC595_SET_CLOCK         SETBIT(HC595_PORT,HC595_CLOCK)
#define HC595_CLR_CLOCK                CLRBIT(HC595_PORT,HC595_CLOCK)
#define HC595_SET_MOSI                SETBIT(HC595_PORT,HC595_MOSI)
#define HC595_CLR_MOSI                CLRBIT(HC595_PORT,HC595_MOSI)

//函数原型声明
void HC595_Init(void);
void HC595_WriteByte(uint8 u8_Byte);

#endif /* HC595_H_ */

使用特权

评论回复
7
qin552011373| | 2013-7-4 22:01 | 只看该作者
HC595函数
#if EXTERNAL_MODULE_HC595_MODE!=0

void HC595_Init(void)
{
        SETBIT(HC595_DDR,HC595_CLOCK);
        SETBIT(HC595_DDR,HC595_CS);
        SETBIT(HC595_DDR,HC595_MOSI);
        HC595_UNSELECT;
        HC595_SET_CLOCK;
}

void HC595_WriteByte(uint8 u8_Byte)
{
        uint8 i, j;
       
        for(i=0; i<8; i++)
        {
                if(CHKBIT(u8_Byte, 0x80 >> i))
                {
                        HC595_SET_MOSI;
                }
                else
                {
                        HC595_CLR_MOSI;
                }
                HC595_CLR_CLOCK;
                for(j = 0; j <= 10; j++);
                HC595_SET_CLOCK;
                for(j = 0; j <= 10; j++);
        }
        HC595_SET_CLOCK;
}

#endif

使用特权

评论回复
8
qin552011373| | 2013-7-4 22:01 | 只看该作者
你具体参考  对照改一下就可以用了

使用特权

评论回复
9
xuexixuexiqq|  楼主 | 2013-7-4 22:03 | 只看该作者
关键是PB4——PB7是位选,比如我想让第一个数码管亮PB7如何设置?段选数据从什么地方输入,段选没有直接和单片机相连???求解释

使用特权

评论回复
10
xuexixuexiqq|  楼主 | 2013-7-4 22:06 | 只看该作者
qin552011373 发表于 2013-7-4 22:01
你具体参考  对照改一下就可以用了

关键是PB4——PB7是位选,比如我想让第一个数码管亮PB7如何设置?段选数据从什么地方输入,段选没有直接和单片机相连???求解释

使用特权

评论回复
11
xuexixuexiqq|  楼主 | 2013-7-4 22:11 | 只看该作者
airwill 发表于 2013-7-4 20:32
ATmega128,编程控制 595 连接数码管, 非常方便.
配置一下 SPI 口, 就只要写 SPI 数据寄存器就行了.
也不 ...

如果不配置 SPI 口,又应该怎么操作呢?

使用特权

评论回复
12
xuexixuexiqq|  楼主 | 2013-7-4 22:15 | 只看该作者
airwill 发表于 2013-7-4 20:32
ATmega128,编程控制 595 连接数码管, 非常方便.
配置一下 SPI 口, 就只要写 SPI 数据寄存器就行了.
也不 ...

如果不配置 SPI 口,应该怎么操作?请详细讲解,本人是菜鸟

使用特权

评论回复
13
xuexixuexiqq|  楼主 | 2013-7-4 22:15 | 只看该作者
airwill 发表于 2013-7-4 20:32
ATmega128,编程控制 595 连接数码管, 非常方便.
配置一下 SPI 口, 就只要写 SPI 数据寄存器就行了.
也不 ...

如果不配置 SPI 口,应该怎么操作?请详细讲解,本人是菜鸟

使用特权

评论回复
14
qin552011373| | 2013-7-4 22:26 | 只看该作者
xuexixuexiqq 发表于 2013-7-4 22:06
关键是PB4——PB7是位选,比如我想让第一个数码管亮PB7如何设置?段选数据从什么地方输入,段选没有直接 ...

自己想  这都要我教你的话  建议你可以转行不做开发了   仔细分析原理图  肯定会明白

使用特权

评论回复
15
airwill| | 2013-7-5 08:42 | 只看该作者
你参考 595 的数据手册, 根据时序要求配置 SPI 口嘛.
新人, 首先要学会动脑子, 可不要学伸手党!

使用特权

评论回复
16
zqxat2007| | 2013-7-5 08:45 | 只看该作者
xuexixuexiqq 发表于 2013-7-4 22:15
如果不配置 SPI 口,应该怎么操作?请详细讲解,本人是菜鸟

SPI初始化 是必须的,这就相当于修桥,不修桥你飞过去哦

使用特权

评论回复
17
xuexixuexiqq|  楼主 | 2013-7-23 15:49 | 只看该作者
airwill 发表于 2013-7-5 08:42
你参考 595 的数据手册, 根据时序要求配置 SPI 口嘛.
新人, 首先要学会动脑子, 可不要学伸手党! ...

谢谢你,本来我就给这个问题放下了,不去管它了。但是今天我又静下心看了看,我下了595的数据手册,对照着原理图,自己编写了一个小程序,居然成功了,很高兴。
以后不会再遇到问题就发帖,自己要先学会动脑子。谢谢你

使用特权

评论回复
18
xuexixuexiqq|  楼主 | 2013-7-23 15:52 | 只看该作者
airwill 发表于 2013-7-5 08:42
你参考 595 的数据手册, 根据时序要求配置 SPI 口嘛.
新人, 首先要学会动脑子, 可不要学伸手党! ...

我没有用SPI,还是直接操作IO,SPI也行

使用特权

评论回复
19
airwill| | 2013-7-23 16:14 | 只看该作者
直接操作IO,SPI也行,
是的. 如果你不嫌麻烦, 也不怕软件效率降低的话.
不过本人不建议软件 IO 操作来实现.

使用特权

评论回复
20
qin552011373| | 2013-7-24 15:28 | 只看该作者
xuexixuexiqq 发表于 2013-7-23 15:52
我没有用SPI,还是直接操作IO,SPI也行

软件IO的会慢一点  但是程序的移植性好一点  硬件SPI速度很快  但是移植性差了很多   鱼与熊掌不可兼得   你自己取舍

使用特权

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

本版积分规则

2

主题

15

帖子

0

粉丝