分享

基于51的TM1620 C程序

 hmc688 2012-12-05
2009-08-26 09:31

基于51的TM1620 C程序

#include<REG52.h>
#include<stdio.h>
#include<intrins.h>

//#define tm1620    4
//#define icmodel   tm1620
//#elif icmodel==tm1620
//#define seg         8
//#define grid        7
//#define dismodel    3

#define dissetmode    0x03    //显示模式设置
#define writedatamode_z   0x40    //自动加一方式显存
#define writeledmode_z   0x41    //自动加一方式写LED显存命令
#define readkeymode    0x42    //读按键命令
#define readswmode    0x43    //读SW命令
#define writedatamode_g   0x44    //固定模式
#define writeledmote_g   0x45      //固定模式写LED显存命令
#define startaddress   0xc0    //起始地址
#define disconmode    0x8c    //显示控制
//#define datacount

#define uchar unsigned char
uchar a[4]={0x3f,0x06,0x5b,0x4f};   
unsigned int i;
           
sbit   STB    =P1^4;        //定义端口
sbit   CLK    =P1^7;
sbit   DIN   =P1^5;

void delay(int k)     //延迟程序
{ unsigned char i,j;
for(;k>0;k--)
for(j=255;j>0;j--)
for(i=255;i>0;i--);
}

void indate(unsigned char p)
{ unsigned int i;
STB=0;

for(i=0;i<8;i++)
   {
     CLK=0;
if((p&0x01)!=0)
        {
    DIN=1;
   }
   else
       {
     DIN=0;
    }
CLK=1;
p=p>>1;
   }
}

void display()
{

   DIN=1;
   CLK=1;
   STB=1;     //初始化
   indate(writedatamode_z);   //自动加1方式
   STB=1;

    for(i=0;i<4;i++)
      {
    indate(startaddress); //传起始地址
   indate(a[i]);    //传数据
   }
STB=1;
indate(disconmode);     //显示控制命令
STB=1;
}

void main()
{
   
   DIN=1;
   CLK=1;
   STB=1;
   indate(0x00);
   STB=1;

   display();
delay(10);
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多