微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > TM1620操作

TM1620操作

时间:10-02 整理:3721RD 点击:
我写的一个程序没有显示,求指教1
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
#define STB LATD7
#define CLK LATA1
#define DIN LATA0
uchar const CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};

void delay1us()
{
        uint i,j;
        for(i=1; i>0; i--)
                for(j=245; j>0; j--)
                ;
}
void init1620(void)
{
        TRISA=0x00;
        TRISD=0x00;
        PORTA=0x00;
        PORTD=0x00;
        STB=1;
        CLK=1;
        DIN=1;
}

void write_byte(uchar byte)
{
        uchar i;
        STB=0;                        //片选信号低有效
        delay1us();
        for(i=0; i<8; i++)             //开始传送8位数据,每循环一次传送一次数据
        {
                CLK=0;
                delay1us();
                if(byte&(1<<i))
                        {DIN=0;}
                else
                        DIN=0;
                        delay1us();
                        CLK=1;
                        delay1us();
        }       
}
//tm1620控制指令
void tm1620(uchar a[])
{
        uchar h;
        STB=1;
        CLK=1;
        DIN=1;
        write_byte(0x02);                 //显示模式设置,设置为6位选,8位段选
        STB=1;
        write_byte(0x40);                 // 写数据到显示寄存器,采用地址自动加一
        STB=1;
        write_byte(0xc0);                  // 显示寄存器的00H单元开始
        for(h=0; h<4; h++)
        {
                write_byte(a[h]);              //给显示寄存器传送数据
        //        write_byte(0);                 //
        }
        STB=1;
        write_byte(0x8f);
}

void main(void)
{
        uchar tempt[4];
        uint temp=4321;
        init1620();
       
        while(1)
        {
                tempt[1]=CODE[1];
                tm1620(temp);
               
        }       
}





Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top