加入收藏 设为首页 帮助中心
 
论坛首页
用户登录 | 用户注册 | 最新悬赏 | 最新贴子 | 会员中心 | 贴子搜索 | 网站地图 | 帮助中心 | 联系我们
站内搜索:
现在位置 > 维库电子开发网论坛 > 单片机 > AVR单片机 > m16驱动74LS164
帖子主题: m16驱动74LS164
你还没有登录,无法发表回复,请首先 登录.. [注 册]
积分:26 youfeng
发表于:2008-9-11 10:20:00 楼主
级别:一星
积分:26分
注册:2008年09月01日
近几天为m16驱动74LS164及数码管之事,程序调试一直进展不大,大家能否提供一个类似的程序供参考,在

此表示感谢。
 
积分:57 qianggu
发表于:2008-9-19 10:06:00 1 楼
级别:二星
积分:57分
注册:2008年07月29日
SPI口与164连接最主要的是注意时序!
 
积分:59 山人
发表于:2008-9-19 10:21:00 2 楼
级别:二星
积分:59分
注册:2008年07月29日
用于增强板(带hc164)的8*8点阵的滚动显示i love you
<!---->
//ICC-AVR application builder : 2007-4-29 23:17:37
// Target : M16
// Crystal: 1.0000Mhz

#include &lt;iom16v.h&gt;
#include &lt;macros.h&gt;
unsigned char const DLY=10;
/*此表为字模*/
unsigned char const X_TAB[] =   {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0xFE,0x82,
0x00,0x00,0x00,0xFE,0x80,0x80,0x80,0x80,0x00,0x7C,0x82,0x82,0x82,0x7C,0x00,0x3E,0x40,
0x80,0x40,0x3E,0x00,0xFE,0x92,0x92,0x92,0x82,0x00,0x00,0x00,0x0E,0x10,0xE0,0x10,0x0E,
0x00,0x7C,0x82,0x82,0x82,0x7C,0x00,0x7E,0x80,0x80,0x80,0x7E,0x00,0x0C,0xBE,0x0C,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00};

void port_init(void)
{
PORTA = 0x00;
DDRA = 0xFF;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
}

//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();

MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x00; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}


void delay(unsigned int dly)

{ unsigned int i;

for(; dly&gt;0; dly--)

  for(i=0; i&lt;500; i++);

}

/*------------------------------------------------------------------------------------------------
NAME           : SPI_MasterInit()
FUNCTION   :初始化spi接口模式,MSTR=1,CPOL=1,CPHA=0,LSBF=0
--------------------------------------------------------------------------------------------------*/

void SPI_MasterInit(void)
{unsigned char temp;
DDRB=(1&lt;&lt;5)|(1&lt;&lt;7)|(1&lt;&lt;4);       //初始化,mosi、sck输出?~~(ss)为高
SPCR=(1&lt;&lt;6)|(1&lt;&lt;4)|(1&lt;&lt;0)|(1&lt;&lt;1)|(1&lt;&lt;3);     //
SPSR = 0x00;
temp = SPSR;
temp = SPDR; //清空SPI,和中断标志,使SPI空闲
}

/*-------------------------------------------------------------------------------------------------
NAME           : msend_data()
FUNCTION     :向SPI总线发送数据
-------------------------------------------------------------------------------------------------*/

void msend_data(unsigned char data)

{
SPDR = data;

while(!(SPDR&amp;(1&lt;&lt;7)));       //等待SPIF置位,即等待数据发送完毕

}





/*----------------------------------------------------------------------------------------------------------------
NAME           : main()

FUNCTION   :使用硬件SPI接口输出0-F的数据,控制LED显示。
---------------------------------------------------------------------------------------------------------------*/

void main(void)

{ unsigned char i=0,dly=DLY;
unsigned char fly=0;
init_devices();    
SPI_MasterInit();                             //初始化SPI接口

while(1)    
{ while(dly)
  { dly--;
    for(i=0; i&lt;8; i++)
    {
    PORTA=~(X_TAB[i+fly]);
    msend_data(BIT(i)); // 发送显示数据
    delay(1);      
    }
  }
  fly&gt;60?fly=0:fly++;dly=DLY;
}


}






ps:
  连接方式:porta0~7接点阵r7~r0;portb5接A/B;portb7接CLK,MR接vcc.

<!---->
 
积分:77 csbowei
发表于:2008-9-24 15:24:00 3 楼
级别:二星
积分:77分
注册:2008年09月24日

======================
该帖子内空被管理员屏蔽
======================


长沙博为自动化设备有限公司 三菱、欧姆龙、西门子、松下等品牌PLC编程电缆 联 系 人: 王经理 联系电话: 0731-2894960 业务QQ: 535710450 电子邮件: plcvip@163.com

 
快速回复:
用户名: 密码:  验证码,看不清楚?请点击刷新验证码 注册新帐号?
上传图片格式(jpg/gif/png)和文件格式(rar/pdf)
 
 
网站简介s广告服务网站地图帮助信息联系方式问题报告
Copyright 2007 - 2008 bbs.weeqoo.com
Powered By weeqoo Version 8.0.0XML