libme 发表于 2008-9-3 09:39:03

用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 编辑 ]

wdyjz 发表于 2008-9-3 11:35:28

string write,   hex display,then inpute C01, 0F00 ,0B07,0A04

libme 发表于 2008-9-3 12:40:47

你的意思是只要把输入框改成string就可以了?

libme 发表于 2008-9-3 20:54:35

还是不行。。。。。
页: [1]
查看完整版本: 用labview代替单片机程序