打印

TM1629驱动16X8点阵 LED面板显示驱动示例程序

[复制链接]
2841|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
528618581|  楼主 | 2017-9-8 09:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*****************************************************************************
*版权信息:深圳天微电子有限公司
*文 件 名:TM1629-V1.0
*当前版本:V1.0
*MCU 型号:STC12C5608AD
*开发环境:Keil uVision4
*晶震频率:11.0592MHZ      
*完成日期:2013-07-30
*程序功能:1.数码管驱动:驱动2组8段8位LED共阴数码管显示0~F,电路图请参考TM1629规格书共阴接法;
            2.按键功能  : 包含按键读程序驱动函数,按键后数码管第一位分别显示1、2、3、4
*免责声明:1.此程序为TM1629驱动LED数码管演示程序,仅作参考之用。
            2.如有直接使用本例程程序造成经济损失的,本公司不承担任何责任     
//如需了解芯片情况和购买芯片,请联系QQ528618581        
********************************************************************************/

#include <reg52.h>                                //MCU头文件
#include "intrins.h"                                //包含nop指令头文件

#define nop  _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //宏定义


/********************定义控制端口**********************/
sbit DIO=P1^0;                                                //定义DIO
sbit CLK=P1^1;                                                //定义CLK
sbit STB=P1^2;                                                //定义STB

/********************定义数据*************************/
unsigned char Key[4]={0};                   //为存储按键值定义的数组
unsigned char const CODE[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,};            //共阴数码管0~F字型码,以实际电路接法为准
     
/***************延时函数**************/
void delay_nms(unsigned int n)
{
  unsigned int i;
  while(n--)
    for(i=0;i<550;i++);
}

/***************发送8bit数据,从低位开始**************/
void send_8bit(unsigned char dat)       
{
  unsigned char i;
  for(i=0;i<8;i++)
  {         
    CLK=0;
    if(dat&0x01)
            DIO=1;
         else
            DIO=0;
         _nop_();
         _nop_();
         _nop_();
         CLK=1;
         dat>>=1;
  }
  CLK=0;
  DIO=0;
}

/******************发送控制命令***********************/
void send_command(unsigned char word)
{
STB=1;
nop;
STB=0;
send_8bit(word);
}

/****************读取按键值并存储*******************/
void read_key()
{
unsigned char i,j;
send_command(0x42);
DIO=1;                                        //释放DIO
for(j=0;j<4;j++)
{
   for(i=0;i<8;i++)
   {
           CLK=0;
        Key[j]=Key[j]>>1;
        CLK=1;
        if(DIO)
          Key[j]=Key[j]|0x80;
         nop;
   }
   nop;
   nop;
  }
   CLK=0;
   DIO=0;
   STB=1;
}

/************显示函数,数码管1~16位显示0~F************/
void display()               
{
unsigned char i;
send_command(0x40);        //设置数据命令:普通模式、地址自增1,写数据到显存
send_command(0xc0);        //设置显示地址命令:从00H开始
for(i=0;i<16;i++)                //发送16字节的显存数据
{
  send_8bit(CODE[i]);
}
send_command(0x8C);        //设置显示控制命令:打开显示,并设置为11/16.
STB=1;
}

/************显示函数,第一位显示按键值************/
void display0(unsigned char dat)       
{
unsigned char i;
send_command(0x40);        //设置数据命令:普通模式、地址自增1,写数据到显存
send_command(0xc0);        //设置显示地址命令:从00H开始

send_8bit(CODE[dat]);        //第一位显示数值
for(i=0;i<15;i++)        //后15位不显示
{
  send_8bit(0x00);
}
send_command(0x8C);        //设置显示控制命令:打开显示,并设置为11/16.
STB=1;
}

/*****************按键处理函数*********************/
void key_process()               
{  
   if(Key[0]!=0x00)
   {
    if((Key[0]==0x08)){display0(1);} //K0与SEG1按键按下,数码管显示数字1
    if((Key[0]==0x04)){display0(2);} //K1与SEG1按键按下,数码管显示数字2
   }
    if(Key[1]!=0x00)
   {
    if((Key[1]==0x08)){display0(3);} //K0与SEG3按键按下,数码管显示数字3
    if((Key[1]==0x04)){display0(4);} //K1与SEG3按键按下,数码管显示数字4
   }
}


void main()
{
display();         //上电显示0~F
delay_nms(1);
while(1)
{
read_key();        //读按键值
key_process();         //按键处理
delay_nms(200);         //延时200ms再读按键
}
}


相关帖子

沙发
哥大富豪| | 2019-12-25 14:07 | 只看该作者
利尔达轻尚系列智能面板可控制壁灯,窗帘开合、排风扇等家用电器。拥有助眠、会客、明亮、观影、休闲等模式。个性化定制,根据消费者的需求,控制消费者想控制的家电。
表面材质采用了细磨砂处理,安全又有质感,外型是无边框的,整个机身看起来十分简约;接入电源为标准电压供电,有利于电器的互相连接和更换;工作电压也是标准电压供电,不接任何负载,没有电流输出的电压值;内置电源是内置隔离5W电源;无线通讯Zigbee IEEE802.15.4;开关尺寸(长宽高)是90mm*86mm*40mm,这里指单联体;组网状态显示:入网后,指示灯不亮,图案字体黄光微亮,不刺激眼睛,进入待机状态;
产品找设备:入网后,在H5端或者在嵌入式WEB端点击找设备选项,产品指示灯会亮灭10次,指示灯白光高亮, 图案字体黄光高亮;按键开继电器:按键按下后,继电器触点吸合,LED指示灯高亮,按键松手后立刻熄灭,文字背光高亮10s后微亮。可个性化设置背光亮度,可设置不同时段不同亮度。可以到物联网开发者社区看看详细信息

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

376

帖子

5

粉丝