TM1638单片机怎么烧写程序序

TM1638 按键数码管模块电路图和测试程序
TM1638 按键数码管模块电路图和测试程序。
TM1638 按键数码管模块电路图和测试程序下载
下载资料需要,并消耗一定积分。
下载此资料的人还喜欢:
技术交流、我要发言! 发表评论可获取积分! 请遵守相关规定。
本周热点资料
电子资料热门词
上传者其它资料
单片机下载排行谁做过STM8S103驱动TM1638的C程序!现在就是读不出按键值!【stm8吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,145贴子:
谁做过STM8S103驱动TM1638的C程序!现在就是读不出按键值!收藏
谁做过STM8S103驱动TM1638的C程序!显示控制已经正常!现在就是读不出按键值!TM1638模块是淘宝买的,拿送的c51程序改STM8S103上用,结果如上所述!
提供各种低功耗,功能强的解决方案,满足工业,消费电子和汽车市场的需求.规格非常齐全,并包含一套丰富的模拟,通信,定时和控制外设.
有哪位大神做过类似的,讲一讲哦!
百度了一天也没有关于STM8S驱动TM1638的解决方案!是不是本来就读不出模块按键值的?
以下是改后的程序:就改了端口!TM1638模块能显示了!就是按键值没有!#ifndef_TM1638_H#define_TM1638_H//#defineDATA_COMMAND0X40//#defineDISP_COMMAND0x80//#defineADDR_COMMAND0XC0//引脚定义//sbit
DIO=P3^1;//sbit
CLK=P3^2;//sbit
STB=P3^3;//sbit
DIO=P1^2;//sbit
CLK=P1^4;//sbit
STB=P1^3;unsigned char const tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};void TM1638_Write(unsigned charDATA)//写数据函数{PC_DDR = 0x38;PC_CR1 = 0x00; // PC_CR2 = 0x00;for(i=0;i&8;i++){PC_ODR = PC_ODR & 0xDF;//CLK=0;if(DATA&0X01)PC_ODR = PC_ODR | (~0xEF);//DIO=1;elsePC_ODR = PC_ODR & 0xEF;//DIO=0;DATA&&=1;PC_ODR = PC_ODR | (~0xDF);//CLK=1;}}unsigned char TM1638_Read(void)//读数据函数{unsigned char temp=0;PC_DDR = 0x28;PC_CR1 = 0x00; // PC_CR2 = 0x00;//PC_CR1 = 0xFF; // //PC_CR2 = 0x00;//DIO=1;//设置为输入for(i=0;i&8;i++){temp&&=1;PC_ODR = PC_ODR & 0xDF;//CLK=0;if((PC_IDR | 0xEF)==0xEF)//if(DIO){temp|=0x80;}PC_ODR = PC_ODR | (~0xDF);//CLK=1;}}void Write_COM(unsigned char cmd)//发送命令字{PC_ODR = PC_ODR & 0xF7;//STB=0;TM1638_Write(cmd);PC_ODR = PC_ODR | (~0xF7);//STB=1;}unsigned char Read_key(void){unsigned char c[4],i,key_value=0;PC_ODR = PC_ODR & 0xF7;//STB=0;TM1638_Write(0x42);for(i=0;i&4;i++)c[i]=TM1638_Read();PC_ODR = PC_ODR | (~0xF7);//STB=1;//4个字节数据合成一个字节for(i=0;i&4;i++)key_value|=c[i]&&i;for(i=0;i&8;i++)if((0x01&&i)==key_value)}void Write_DATA(unsigned char add,unsigned char DATA)//指定地址写入数据{Write_COM(0x44);PC_ODR = PC_ODR & 0xF7;//STB=0;TM1638_Write(0xc0|add);TM1638_Write(DATA);PC_ODR = PC_ODR | (~0xF7);//STB=1;}void Write_oneLED(unsigned char num,unsigned char flag)//单独控制一个LED函数,num为需要控制的led序号,flag为0时熄灭,不为0时点亮{Write_DATA(2*num+1,flag&0x03);}/*void Write_allLED(unsigned char LED_flag)//控制全部LED函数,LED_flag表示各个LED状态{for(i=0;i&8;i++)Write_DATA(2*i+1,LED_flag&0x03);} */void init_TM1638(void){Write_COM(0x88);//亮度调节
取值:0X88---0X8F,0X88最暗,0X8F最亮。Write_COM(0x40);PC_ODR = PC_ODR & 0xF7;//STB=0;TM1638_Write(0xc0);for(i=0;i&16;i++)TM1638_Write(0x00);PC_ODR = PC_ODR | (~0xF7);//STB=1;}#endif
声明:模块在STC单片机上测试过,模块是没有问题的!说回来,我也是刚接触STM8S系列,IO口读写还真是麻烦啊!有没有!
stm8s 的IO多了模式控制和时钟控制,另外STM8的速度快很多,与其它器件连接很多时候要加nop延时。
回复 eex21 :哦哦,谢谢
登录百度帐号推荐应用他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)查看: 3210|回复: 9
通过单片机读取TM1638的按键数据
通过单片机读取TM1638的按键数据,并通过数码管显示。
0.png (53.59 KB, 下载次数: 25)
21:44 上传
#ifndef _TM1638_H
#define _TM1638_H
#include &reg51.h&
#define segA 0x40
#define segB 0x20
#define segC 0x10
#define segD 0x08
#define segE 0x04
#define segF 0x02
#define segG 0x01
#define segDP 0x80
#define ndp0 (segA+segB+segC+segD+segE+segF)
#define ndp1 (segB+segC)
#define ndp2 (segA+segB+segG+segE+segD)
#define ndp3 (segA+segB+segG+segC+segD)
#define ndp4 (segF+segG+segB+segC)
#define ndp5 (segA+segF+segG+segC+segD)
#define ndp6 (segA+segF+segG+segC+segD+segE)
#define ndp7 (segA+segB+segC)
#define ndp8 (segA+segB+segC+segD+segE+segF+segG)
#define ndp9 (segA+segB+segC+segD+segF+segG)
#define ndpA (segA+segB+segC+segE+segF+segG)
#define ndpB (segC+segD+segE+segF+segG)
#define ndpC (segA+segD+segE+segF)
#define ndpD (segB+segC+segD+segE+segG)
#define ndpE (segA+segD+segE+segF+segG)
#define ndpF (segA+segE+segF+segG)
#define wdp0 (segA+segB+segC+segD+segE+segF+segDP)
#define wdp1 (segB+segC+segDP)
#define wdp2 (segA+segB+segG+segE+segD+segDP)
#define wdp3 (segA+segB+segG+segC+segD+segDP)
#define wdp4 (segF+segG+segB+segC+segDP)
#define wdp5 (segA+segF+segG+segC+segD+segDP)
#define wdp6 (segA+segF+segG+segC+segD+segE+segDP)
#define wdp7 (segA+segB+segC+segDP)
#define wdp8 (segA+segB+segC+segD+segE+segF+segG+segDP)
#define wdp9 (segA+segB+segC+segD+segF+segG+segDP)
#define wdpA (segA+segB+segC+segE+segF+segG+segDP)
#define wdpB (segC+segD+segE+segF+segG+segDP)
#define wdpC (segA+segD+segE+segF+segDP)
#define wdpD (segB+segC+segD+segE+segG+segDP)
#define wdpE (segA+segD+segE+segF+segG+segDP)
#define wdpF (segA+segE+segF+segG+segDP)
//引脚定义
sbit& & DIO=P1^0;
sbit& & CLK=P1^1;
sbit& & STB=P1^2;
void TM1638_Write(unsigned char DATA);& && && & //写数据函数
unsigned char TM1638_Read(void);
unsigned char Read_key(void);
void Write_COM(unsigned char cmd);
void Write_DATA(unsigned char add,unsigned char DATA);
void init_TM1638(void);
复制代码全部资料(压缩包)下载:
(36.4 KB, 下载次数: 52)
21:49 上传
点击文件名下载附件
下载积分: 黑币 -5
(1.19 MB, 下载次数: 12)
21:50 上传
点击文件名下载附件
下载积分: 黑币 -5
(38.23 KB, 下载次数: 23)
21:50 上传
点击文件名下载附件
下载积分: 黑币 -5
这个,正是我在寻找的谢谢!
在寻找的谢谢!
这个,正是我在寻找的谢谢!
很好的东西,谢谢楼主分享
这个TM1638的头文件需要另外下载么?谢谢!
谢谢楼主,如果前面部分再注释一下的就更完美了!
好资料,51黑有你更精彩!!!
终于可以下载了,谢谢管理员和楼主
您好&&恳请大神解释这两段代码含义吧 谢谢了unsigned char code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0xef};这个编码是什么上面的编码
& & & & 还有这个writedata0=(tab[data0]&0x01)+((tab[data1]&0x01)&&1)+((tab[data2]&0x01)&&2)+((tab[data3]&0x01)&&3)+((tab[data4]&0x01)&&4)
& & & & & & & & +((tab[data5]&0x01)&&5)+((tab[data6]&0x01)&&6)+((tab[data7]&0x01)&&7);是什么意思啊,谢谢您了
Powered by还没有帐号? 赶紧
用户版块帖子
proteus下TM1638芯片的仿真,附DS3231时钟测试程序
UID:1960906
在线时间144小时
M币909专家2
TM1638是使用串行数据传输的键盘、数码管驱动芯片,使用很方便,只用MCU的三个IO口就可以驱动8位数码管和24个按键。小生初学单片机,测试电路图和调试程序基本依赖proteus。但在proteus中没有TM1638的元件库,就想自己写一个。对照百度来的不甚明了的自建元件库资料,经过n次试验,终于完成了TM1638在proteus下的仿真。小生下载的自建元件库范例中对函数virtual EVENT *setclockcallback (ABSTIME starttime, RELTIME period, IDSIMMODEL *model,CALLBACKHANDLERFN func, EVENTID id) = 0;的参数没有说明,只能凭猜测和试验。所以仿真时CPU占用较多。另一个问题是:小生对单片机还没入门,TM1638更是第一次使用。写仿真程序时完全对照TM1638的手册,并使用网上下载的“TM1638测试程序C51”进行测试。在测试过程中发现手册上键扫数据的存储格式和测试程序的格式不同,但测试程序在我的“TM1638按键数码管模块”上运行是正常的,就使用了测试程序的存储格式。下面是小生用DS3231和TM1638做的一个测试版时钟绿色的板子是小生自己焊的STC89C52最小系统板,蓝色的是淘宝上买的TM1638成品模块,ds3231也是用的成品模块(照片没照出来)。下面的附件中包含了:TM1638元件库(在proteus\LIBRARY下,需要拷贝到proteus安装目录的LIBRARY文件夹下)TM1638仿真程序(在proteus\MODELS下,需要拷贝到proteus安装目录的MODELS文件夹下)TM1638测试程序(是购买模块的店铺提供的,基本没做修改)DS3231实时钟程序(程序是在网上下载的,由于原程序有错误,做了大量修改,并改用TM1638驱动数码管。程序及电路图经过实物测试。) &&修改了CPU占用过多的BUG。 或到我的网盘下载:http://pan.baidu.com/s/1pLgpNdx [ 此帖被roguell在 13:44重新编辑 ]
本文内容包含图片或附件,获取更多资讯,请
后查看;或者
成为会员获得更多权限
感谢楼主分享!
UID:238997
在线时间141小时
M币364专家10
好资料不过我见过一个用单片机直接做智能I/O借口的电路
UID:1960906
在线时间144小时
M币909专家2
回 lxa0 的帖子
:好资料不过我见过一个用单片机直接做智能I/O借口的电路 其实我这个是用proteus软件仿真tm1638芯片,是验证电路图和程序用的。主要是用VS2010写DLL,添加到proteus元件库后就可以在软件环境下直接看到程序的运行结果,而不必先搭建硬件。
UID:1353131
在线时间259小时
M币4445专家1
感谢楼主分享!
UID:1085794
在线时间1477小时
M币3293专家3
有什么功能?闹钟有没有?
UID:1960906
在线时间144小时
M币909专家2
回 gdszyrx 的帖子
:有什么功能?闹钟有没有? ( 14:59) 其实DS3231程序只是用来测试TM1638芯片的proteus仿真的,很简单,只有时间、日期和温度显示。
UID:1160927
在线时间189小时
M币3016专家0
牛啊,楼主自己做PROTUES元件
访问内容超出本站范围,不能确定是否安全
温馨提示:所有技术区严禁灌水,“沙发”“顶”字样;禁止广告贴;以免被删除
您目前还是游客,请
&回复后跳转到最后一页
Code by , Time now is:02-02 00:40, Total 0.206201(s) query 11,
Gzip enabled&}

我要回帖

更多关于 iar怎么烧写程序 的文章

更多推荐

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

点击添加站长微信