用labview代替单片机程序
我要用max7219控制几个led,这是在网上找的程序,我用proterus用单片机运行是可以的。可是我希望利用现成的ni程序代替单片机功能。我写了一个vi,可是led都没点亮。请问
哪里出了问题,或者说有没有更好的办法实现,这样感觉好傻。先谢谢大家。
单片机c程序
#include<reg51.h>
#defineuchar unsigned char
#define uintunsigned int
#define ulong unsigned long
//管脚定义
sbit LOAD=P1^2; //MAX7219片选 12脚
sbit DIN=P1^1; //MAX7219串行数据 1脚
sbit CLK=P1^0; //MAX7219串行时钟 13脚
//寄存器宏定义
#define DECODE_MODE0x09 //译码控制寄存器
#define INTENSITY 0x0A //亮度控制寄存器
#define SCAN_LIMIT 0x0B //扫描界限寄存器
#define SHUT_DOWN 0x0C //关断模式寄存器
#define DISPLAY_TEST 0x0F //测试控制寄存器
//函数声明
void Write7219(unsigned char address,unsigned char dat);
void Initial(void);
//地址、数据发送子程序
void Write7219(unsigned char address,unsigned char dat)
{
unsigned char i;
LOAD=0; //拉低片选线,选中器件
//发送地址
for (i=0;i<8;i++) //移位循环8次
{
CLK=0; //清零时钟总线
DIN=(bit)(address&0x80); //每次取高字节
address<<=1; //左移一位
CLK=1; //时钟上升沿,发送地址
}
//发送数据
for (i=0;i<8;i++)
{
CLK=0;
DIN=(bit)(dat&0x80);
dat<<=1;
CLK=1; //时钟上升沿,发送数据
}
LOAD=1; //发送结束,上升沿锁存数据
}
//MAX7219初始化,设置MAX7219内部的控制寄存器
void Initial(void)
{
Write7219(SHUT_DOWN,0x01); //开启正常工作模式(0xX1)
Write7219(DISPLAY_TEST,0x00); //选择工作模式(0xX0)
Write7219(DECODE_MODE,0xff); //选用全译码模式
Write7219(SCAN_LIMIT,0x07); //8只LED全用
Write7219(INTENSITY,0x04); //设置初始亮度
}
void main(void)
{
unsigned char i;
Initial(); //MAX7219初始化
while(1)
{
for(i=1;i<9;i++)
{
Write7219(i,i+1); //数码管显示1~8
}
附件是我的vi程序
[ 本帖最后由 libme 于 2008-9-3 13:02 编辑 ] string write, hex display,then inpute C01, 0F00 ,0B07,0A04 你的意思是只要把输入框改成string就可以了? 还是不行。。。。。
页:
[1]