设置
|
登录
|
注册
进入侃吧
搜索帖子
首页
>
AVR单片机吧
>
浏览帖子
回复帖子
|
取消只看楼主
作者共发了
10
篇帖子。
[案例]ATtiny13驅動74HC595
1楼
巨大八爪鱼
2015-7-18 21:11
2楼
巨大八爪鱼
2015-7-18 21:11
「main.c」
#include <avr/io.h>
#define F_CPU 1200000U
#include <util/delay.h>
#include "74HC595.h"
unsigned char display = 0x00;
int main(void)
{
DDRB = PORTB = 0xff;
while (1)
{
HC595_SerIn(~display);
HC595_ParOut();
if (display % 2 == 0)
PORTB |= _BV(4);
else
PORTB &= ~_BV(4);
_delay_ms(500);
display++;
}
return 0;
}
3楼
巨大八爪鱼
2015-7-18 21:12
「74HC595.c」
#include <avr/io.h>
#include "74HC595.h"
void HC595_ParOut(void)
{
HC595_STCK0;
HC595_STCK1;
}
void HC595_SerIn(unsigned char data)
{
unsigned char i;
for (i = 0; i < 8; i++)
{
HC595_SHCK0; // CLOCK_MAX = 100MHz
if (data & _BV(7 - i))
HC595_SD1;
else
HC595_SD0;
HC595_SHCK1;
}
}
4楼
巨大八爪鱼
2015-7-18 21:12
「74HC595.h」
#define HC595_SHCK1 PORTB|=_BV(2) // PIN11
#define HC595_SHCK0 PORTB&=~_BV(2)
#define HC595_STCK1 PORTB|=_BV(1) // PIN12
#define HC595_STCK0 PORTB&=~_BV(1)
#define HC595_SD1 PORTB|=_BV(0) // PIN14
#define HC595_SD0 PORTB&=~_BV(0)
void HC595_ParOut(void);
void HC595_SerIn(unsigned char data);
5楼
巨大八爪鱼
2015-7-18 21:12
「Makefile」
# make
main.hex: main.c 74HC595.c
avr-gcc -mmcu=attiny13 -Wall -Os main.c 74HC595.c -o main.o
avr-objcopy -j .text -j .data -O ihex main.o main.hex
# make run
run: main.hex
sudo avrdude -p t13 -c usbasp -e -U flash:w:main.hex
6楼
巨大八爪鱼
2015-7-18 21:14
執行make run編譯並燒寫程序。
7楼
巨大八爪鱼
2015-7-18 21:16
#define HC595_SHCK1 PORTB|=_BV(2) // PIN11
#define HC595_SHCK0 PORTB&=~_BV(2)
#define HC595_STCK1 PORTB|=_BV(1) // PIN12
#define HC595_STCK0 PORTB&=~_BV(1)
#define HC595_SD1 PORTB|=_BV(0) // PIN14
#define HC595_SD0 PORTB&=~_BV(0)
代碼說明:
74HC595的第11腳連接ATtiny的PB2口
第12腳連接ATtiny的PB1口
第14腳連接ATtiny的PB0口
8楼
巨大八爪鱼
2015-7-18 21:17
右下角黃LED的正極連接到單片機的PB4口上。
9楼
巨大八爪鱼
2015-7-18 21:20
單片機熔絲位的設定:E:FF, H:FF, L:2A
晶振採用默認的內部9.6MHz晶振,開啟8分頻。
10楼
巨大八爪鱼
2015-7-18 21:29
内容转换:
不转换
大陆简体
台灣正體
港澳繁體
马新简体
回复帖子
内容:
用户名:
您目前是匿名发表。
验证码:
看不清?换一张