找回密码
 注册
LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 1193|回复: 3

用labview代替单片机程序

[复制链接]
libme 该用户已被删除
发表于 2008-9-3 09:39:03 | 显示全部楼层 |阅读模式
我要用max7219控制几个led,这是在网上找的程序,我用proterus用单片机运行是可以的
。可是我希望利用现成的ni程序代替单片机功能。我写了一个vi,可是led都没点亮。请问
哪里出了问题,或者说有没有更好的办法实现,这样感觉好傻。先谢谢大家。


单片机c程序
#include<reg51.h>
#define  uchar unsigned char
#define uint  unsigned 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_MODE  0x09         //译码控制寄存器
#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 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 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 | 显示全部楼层
回复 顶

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2026-9-30 02:13 , Processed in 0.043891 second(s), 14 queries , Gzip On, File On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表