LED TM1638 手把手教你学单片机机

树莓派打造视频监控机器人Verybot...
根据自己的一些从业经验,将这些系统设计时针对波特率自适应问题做一些阐述和分享..
关于TM1638驱动程序问题。
<em style="color:#999;font-size:12 margin-left:10" id="authorposton12-8-3 17:10:50&nbsp
我用的STC的单片机,共阳极的数码管,用的驱动芯片TM1638,你们看看我的程序,哪里出了问题,数码管不亮啊。帮忙指点下谢谢了。在线等~~~电路图在下面。
#include &stc12c5a60.h&
#define& & & & DATA_COMMAND& & & & 0X40
#define& & & & DISP_COMMAND& & & & 0x80
#define& & & & ADDR_COMMAND& & & & 0XC0
#define uchar unsigned char
#define uint unsigned int
//TM1638模块引脚定义
sbit& & & & DIO=P2^1;
sbit& & & & CLK=P2^0;
sbit& & & & STB=P4^0;
void display1638();
//uchar data DisBuffer[8]={0,0,0,0,0,0,0,0,0,0};& & /*显示缓存区*/& & & & //各个数码管显示的值
//uchar code tab[]={0xc0,0xf9,0xa4,0xb0,
//0x99,0x92,0x82,0xf8,
//0x80,0x90,0x88,0x83,
//0xc6,0xa1,0x86,0x8e};
void TM1638_Write(unsigned char& & & & DATA)& & & & & & & & & & & & //写数据函数
& & & & for(i=0;i&8;i++)
& & & & & & & & CLK=0;
& & & & & & & & if(DATA&0X01)
& & & & & & & & & & & & DIO=1;
& & & & & & & & else
& & & & & & & & & & & & DIO=0;
& & & & & & & & DATA&&=1;
& & & & & & & & CLK=1;
/*unsigned char TM1638_Read(void)& & & & & & & & & & & & & & & & & & & & //读数据函数
& & & & unsigned char temp=0;
& & & & DIO=1;& & & & //设置为输入
& & & & for(i=0;i&8;i++)
& & & & & & & & temp&&=1;
& & & & & & & & CLK=0;
& & & & & & & & if(DIO)
& & & & & & & & & & & & temp|=0x80;
& & & & & & & & CLK=1;
void Write_COM(unsigned char cmd)& & & & & & & & //发送命令
& & & & STB=0;
& & & & TM1638_Write(cmd);
& & & & STB=1;
void Write_DATA(unsigned char add,unsigned char DATA)& & & & & & & & //指定地址写入数据
& & & & Write_COM(0x44);& &&&& & & & & & & & //设置固定地址
& & & & STB=0;
& & & & TM1638_Write(0xc0|add);
& & & & TM1638_Write(DATA);
& & & & STB=1;
void init_TM1638(void)
& & & & Write_COM(0x8a);//亮度
& & & & Write_COM(0x40); //写 数据命令
& & & & //Write_COM(0x88);//开显示
& & & & STB=0;
& & & & TM1638_Write(0xc0);& & & & & & & & //设置起始地址
& & & & for(i=0;i&16;i++)
& & & & TM1638_Write(0x00);
& & & & STB=1;
void main()
& & & & init_TM1638();& & & &
& & & & while(1)
& & & & & & & & display1638();
void display1638()
//& & & & CLK=0;
& & & & Write_DATA(0xc0,0x01);
& & & & Write_DATA(0xc2,0x01);
& & & & Write_DATA(0xc4,0x01);
& & & & Write_DATA(0xc6,0x01);
& & & & Write_DATA(0xc8,0x01);
& & & & Write_DATA(0xca,0x01);
& & & & Write_DATA(0xcc,0x00);
& & & & Write_DATA(0xce,0x00);
//& & & & CLK=1;
(72.38 KB, 下载次数: 15)
17:10 上传
顶下,高手帮忙下,谢谢了
还得自己顶,
斑竹救命啊,帮忙看下程序啊
帮忙一下。
额,斑竹都去哪了哦
没用过这个片子,口子够的话你直接用IO口控制
我最近也遇到了同样的问题!你现在解决了吗?发个好使的历程让我看看,谢谢啦!
是不是时序的问题,看一下datasheet,检查一下时序,有些地方是需要延时的。
TM的 驱动的都是共阴极数码管、楼主显然没看datasheet
没有,我们用的是共阳极的数码管,所以驱动程序不太好些啊
#include&reg52.h&
#include&tm1628_1.h&
uchar code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};
//引脚定义
sbit& & & & DIO=P0^4;
sbit& & & & CLK=P0^5;
sbit& & & & STB_1=P0^6;
sbit& & & & STB=P0^7;
& & & & & & & &
void TM1638_Write(unsigned char& & & & DATA)& & & & & & & & & & & & //写数据函数
& & & & for(i=0;i&8;i++)
& & & & & & & & CLK=0;
& & & & & & & & if(DATA&0X01)
& & & & & & & & & & & & DIO=1;
& & & & & & & & else
& & & & & & & & & & & & DIO=0;
& & & & & & & & DATA&&=1;
& & & & & & & & CLK=1;
void Write_COM(bit mode,unsigned char cmd)& & & & & & & & //发送命令字
& & & & if(mode==1)
& & & & & & & & STB_1=0;
& & & & else
& & & & & & & & STB=0;
& & & & TM1638_Write(cmd);
& & & & if(mode==1)
& & & & & & & & STB_1=1;
& & & & else
& & & & & & & & STB=1;
unsigned char TM1638_Read(void)& & & & & & & & & & & & & & & & & & & & //读数据函数
& & & & unsigned char temp=0;
& & & & DIO=1;& & & & //设置为输入
& & & & for(i=0;i&8;i++)
& & & & & & & & temp&&=1;
& & & & & & & & CLK=0;
& & & & & & & & if(DIO)
& & & & & & & & & & & & temp|=0x80;
& & & & & & & & CLK=1;
void Write_1_DATA(unsigned char add,unsigned char DATA)& & & & & & & & //指定地址写入数据
& & & & Write_COM(1,0x44);
& & & & STB_1=0;
& & & & TM1638_Write(0xc0|add);
& & & & TM1638_Write(DATA);
& & & & STB_1=1;
unsigned int Read_key(void)
& & & & unsigned int c[4],c1[4],date[16],i,key_value=0,key_value1=0;
& & & & STB=0;
& & & & TM1638_Write(0x42);
& & & & for(i=0;i&4;i++)
& & & & & & & & c[i]=TM1638_Read();
& & & & STB=1;& & & & & & & & & & & & & & & & & & & & //4个字节数据合成一个字节
& & & & for(i=0;i&4;i++)
& & & & & & & & key_value|=c[i]&&i;
& & & & for(i=0;i&8;i++)
& & & & {& & & &
& & & & & & & & if(key_value&(1&&i))
& & & & & & & & & & & & date[i]=1;
& & & & & & & & else
& & & & & & & & & & & & date[i]=0;
& & & & }& & & & & & & &
& & & & key_value=date[0]+(date[2]&&4)+(date[4]&&1)+(date[6]&&5)+(date[1]&&2)+(date[3]&&6)+(date[5]&&3)+(date[7]&&7);
& & & & STB_1=0;
& & & & TM1638_Write(0x42);
& & & & for(i=0;i&4;i++)
& & & & & & & & c1[i]=TM1638_Read();
& & & & STB_1=1;& & & & & & & & & & & & & & & & & & & & //4个字节数据合成一个字节
& & & & for(i=0;i&4;i++)
& & & & & & & & key_value1|=c1[i]&&i;
& & & & for(i=0;i&8;i++)
& & & & {& & & &
& & & & & & & & if(key_value1&(1&&i))
& & & & & & & & & & & & date[i]=1;
& & & & & & & & else
& & & & & & & & & & & & date[i]=0;
& & & & }& & & & & & & &
& & & & key_value1=date[0]+(date[2]&&4)+(date[4]&&1)+(date[6]&&5)+(date[1]&&2)+(date[3]&&6)+(date[5]&&3)+(date[7]&&7);
& & & & key_value=(key_value1&&8)+key_
& & & & return key_
& & & & & & & &
void Write_DATA(unsigned char add,unsigned char DATA)& & & & & & & & //指定地址写入数据
& & & & Write_COM(0,0x44);
& & & & STB=0;
& & & & TM1638_Write(0xc0|add);
& & & & TM1638_Write(DATA);
& & & & STB=1;
void init_TM1638(void)
& & & & Write_COM(0,0x8f);//亮度
& & & & Write_COM(0,0x40); //写 数据命令
& & & & STB=0;
& & & & TM1638_Write(0xc0);& & & & & & & & //写地址命令
& & & & for(i=0;i&16;i++)
& & & & TM1638_Write(0x00);
& & & & STB=1;
& & & & Write_COM(1,0x8f);//亮度
& & & & Write_COM(1,0x40); //写 数据命令
& & & & STB_1=0;
& & & & TM1638_Write(0xc0);& & & & & & & & //写地址命令
& & & & for(i=0;i&16;i++)
& & & & TM1638_Write(0x00);
& & & & STB_1=1;
TM1638 是一种带键盘扫描接口的内存映射型LED(发光二极管显示器)驱动控制专用电路,可以驱动10段*8位,80点阵,8*2按键识别。内部集成有MCU 数字接口、数据锁存器、LED 高压驱动及8级灰度调节电路、内部RC振荡、内置上电复位及低电压复位电路、键盘扫描等电路,芯片的段位可通过软件设置来实现10*8进行配置来适应不同连接的LED数码屏,同时可根据不同的显示场合调节LED的灰度,以实现降低功耗的要求,同时具备多段方便数字计算显示。本产品性能优良,质量可靠。采用SOP28 的封装形式。
我这里是深圳市天微电子有限公司,可以提供关于TM1638技术支持和服务,
欢迎来电,手机: 肖R
橄榄叶 发表于
我最近也遇到了同样的问题!你现在解决了吗?发个好使的历程让我看看,谢谢啦! ...
我这里是深圳天微电子原厂,TM1638是我公司出的一款LED数码管驱动芯片,你如果需要例程可以联系我。QQ:
手机: 肖生
(467.91 KB, 下载次数: 272)
14:11 上传
点击文件名下载附件
TM1638规格书
xiaolh 发表于
TM1638规格书我已经上传了,希望对大家有帮助。
如还有什么需要可以电话联系:
ding定顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
太好了太有用了谢谢了太好了太有用了谢谢了太好了太有用了谢谢了太好了太有用了谢谢了太好了太有用了谢谢了
clk信号后是不是还得需要延时一段时间?
站长推荐 /4
Powered bytm1668 基于 的数码管显示驱动; 。 Other Embeded program 其他嵌入式/单片机内容 182万源代码下载-
&文件名称: tm1668
& & & & &&]
&&所属分类:
&&开发工具: C-C++
&&文件大小: 1 KB
&&上传时间:
&&下载次数: 76
&&提 供 者:
&详细说明:基于TM1668的数码管显示驱动;基于TM1668的数码管显示驱动。-digital display
based on the TM1668-driven
文件列表(日期:~)(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&[]:还行&[]:一般,勉强可用&[]:很好,推荐下载
&近期下载过的用户:
&相关搜索:
&输入关键字,在本站182万海量源码库中尽情搜索:
&[] - 数码管驱动芯片tm1618的C语言驱动程序,通过调试,程序可以运行,另外加芯片FDP资料
&[] - 机顶盒源码,epg部分,有需要的可以下载下来,大家一起研究
&[] - 一种1668的C语言驱动程序,具有完整的注释.
&[] - tm1618 数码管驱动芯片 的C语言 程序,通过调试,
&[] - SM1668标准化参考资料
是新通用文件
&[] - sm1628控制lcd显示屏以及按键的程序,
&[] - tm1628用于DVD比较多的LED驱动源程序,学习最好的源程序!
&[] - 按键LED控制芯片tm1628的中文资料,1628的使用范围很广,在以前的家电,DVD,vcd等上均有使用。其控制的LED亮度可调,分为16级亮度。
&[] - tm1638 单片机控制 TM1628 按钮演示程序 9454为单片机
&[] - PIC单片机的学习应用资料,全套应用资料,包括AD、内部资源、狗等各种应用例子,C语言编写TM1638芯片+DS1302驱动共阴数码管时钟
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
TM1638芯片+DS1302驱动共阴数码管时钟
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口tm1638驱动 - 下载频道
- CSDN.NET
&&&&tm1638驱动
tm1638驱动
stm32驱动tm1638 键盘及led灯的显示
若举报审核通过,可奖励20下载分
被举报人:
brotherwyz
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行树莓派打造视频监控机器人Verybot...
根据自己的一些从业经验,将这些系统设计时针对波特率自适应问题做一些阐述和分享..
怎么驱动不了数码管呢?
<em style="color:#999;font-size:12 margin-left:10" id="authorposton12-7-27 09:13:40&nbsp
我用的STC的单片机,共阳极的数码管,用的驱动芯片TM1638,你们看看我的程序,哪里出了问题,数码管不亮啊。帮忙指点下谢谢了。在线等~~~
#include &stc12c5a60.h&
#define& & & & DATA_COMMAND& & & & 0X40
#define& & & & DISP_COMMAND& & & & 0x80
#define& & & & ADDR_COMMAND& & & & 0XC0
//TM1638模块引脚定义
sbit& & & & DIO=P2^1;
sbit& & & & CLK=P2^0;
sbit& & & & STB=P4^0;
unsigned char num[10];& & & & & & & & //各个数码管显示的值
//共阴数码管显示代码
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
& && && && && && && && &&&0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//共阳极数码管0~F
void TM1638_Write(unsigned char& & & & DATA)& & & & & & & & & & & & //写数据函数
& & & & for(i=0;i&8;i++)
& & & & & & & & CLK=0;
& & & & & & & & if(DATA&0X01)
& & & & & & & & & & & & DIO=1;
& & & & & & & & else
& & & & & & & & & & & & DIO=0;
& & & & & & & & DATA&&=1;
& & & & & & & & CLK=1;
/*unsigned char TM1638_Read(void)& & & & & & & & & & & & & & & & & & & & //读数据函数
& & & & unsigned char temp=0;
& & & & DIO=1;& & & & //设置为输入
& & & & for(i=0;i&8;i++)
& & & & & & & & temp&&=1;
& & & & & & & & CLK=0;
& & & & & & & & if(DIO)
& & & & & & & & & & & & temp|=0x80;
& & & & & & & & CLK=1;
}& & & & & & & & */
void Write_COM(unsigned char cmd)& & & & & & & & //发送命令字
& & & & STB=0;
& & & & TM1638_Write(cmd);
& & & & STB=1;
void Write_DATA(unsigned char add,unsigned char DATA)& & & & & & & & //指定地址写入数据
& & & & Write_COM(0x44);
& & & & STB=0;
& & & & TM1638_Write(0xc0|add);
& & & & TM1638_Write(DATA);
& & & & STB=1;
void init_TM1638(void)
& & & & Write_COM(0x8b);//亮度
& & & & Write_COM(0x40); //写 数据命令
& & & & STB=0;
& & & & TM1638_Write(0xc0);& & & & & & & & //写地址命令
& & & & for(i=0;i&16;i++)
& & & & TM1638_Write(0x00);
& & & & STB=1;
/*unsigned char led(unsigned char adress_led,da_led)
& & & & STB=1;
& & & & TM1638_Write(0x44);
& & & & STB=1;
& & & & TM1638_Write(adress_led);
& & & & TM1638_Write(da_led);
& & & & STB=1;
& & & & return 0;
int main(void)
& & & & //
& & & & init_TM1638();
//初始化TM1638
//& & & & for(i=0;i&8;i++)
//& & & & Write_DATA(i&&1,tab[0]);& & & && && && && && & //初始化寄存器& & & &
& & & & while(1)
& & & & {& & & &
& & & & & & & & Write_DATA(0x00,0x01);
& & & & & & & & Write_DATA(0x02,0x01);
& & & & & & & & Write_DATA(0x04,0x01);
& & & & & & & & Write_DATA(0x06,0x01);
& & & & & & & & Write_DATA(0x08,0x01);
& & & & & & & & Write_DATA(0x0a,0x01);
& & & & & & & & Write_DATA(0x0c,0x00);
& & & & /*i=Read_key();& && && && && && && && &&&//读按键值
& & & & & & & & if(i&8)
& & & & & & & & {
& & & & & & & & & & & & num[i]++;
& & & & & & & & & & & & while(Read_key()==i);& & & & & & & && && &&&//等待按键释放
& & & & & & & & & & & & if(num[i]&15)
& & & & & & & & & & & & num[i]=0;
& & & & & & & & & & & & Write_DATA(i*2,tab[num[i]]);
& & & & & & & & & & & & Write_allLED(1&&i);
& & & & & & & & }*/
麻烦高手指点下
{:1:}{:1:}{:1:}
{:1:}{:1:}{:1:}{:1:}
把电路贴上来,我帮你看一下
还得电路图!!
本帖最后由 yangjun4414 于
15:11 编辑
谢谢斑竹了。这个共阴极的,共阳极就是把GR1-7和SG1-10换一下。
(72.38 KB, 下载次数: 0)
15:08 上传
这个事电路图
现在解决了吗?还有那些按键咋回事啊?
TM1638 是一种带键盘扫描接口的内存映射型LED(发光二极管显示器)驱动控制专用电路,可以驱动10段*8位,80点阵,8*2按键识别。内部集成有MCU 数字接口、数据锁存器、LED 高压驱动及8级灰度调节电路、内部RC振荡、内置上电复位及低电压复位电路、键盘扫描等电路,芯片的段位可通过软件设置来实现10*8进行配置来适应不同连接的LED数码屏,同时可根据不同的显示场合调节LED的灰度,以实现降低功耗的要求,同时具备多段方便数字计算显示。本产品性能优良,质量可靠。采用SOP28 的封装形式。
我这里是深圳市天微电子有限公司,可以提供关于TM1638技术支持和服务,
欢迎来电,手机: 肖R
PCB打样找华强 /3 样板2天出货
站长推荐 /4
Powered by}

我要回帖

更多关于 单片机led闪烁 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信