程序是18B20温度传感器+TM1620,我使用的是共阴极数码管。
部分源码:(完整源码请下载附件)
- #include "tm1260.h"
- //---重定义关键词---//
- void sendDataToTM1620(unsigned char sdata){
- //在时钟的上升沿进行移位写入,低位先传
- unsigned char a;
- stb = 0;
- _nop_();
- _nop_();
- for(a=0;a<8;a++){
- if(sdata&0x01)
- din = 1;
- else
- din = 0;
- sdata >>= 1;
- clk = 0;
- _nop_();
- _nop_();
- clk = 1;
- }
- }
- void initialTM1620(int temp){
- unsigned char i,TempNum[4]={0};
- unsigned char code TubYinNum[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };//0-9 //共阴极
- unsigned char code TubYanNum[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };//0-9
-
- TempNum[0] = TubYinNum[temp/100];//温度十位
- TempNum[1] = TubYinNum[temp%100/10];//温度个位
- TempNum[1] = TempNum[1]|0x80;//加上小数点
- TempNum[2] = TubYinNum[temp%10];//温度小数点
-
- stb = 1;
- din = 1;
- clk = 1;
- _nop_();
- stb = 0;
- sendDataToTM1620(0x02);//显示模式设置,设置为6个GRID,8个SEG
- stb = 1;
- _nop_();
- stb = 0;
- sendDataToTM1620(setAddrMode);//固定地址 44
- // sendDataToTM1620(0x0C);//显示寄存器的c0H单元开始
- //地址数据清零
- for(i=0;i<3;i++){//因为控制的是3位数码管,所以这里循环只有3
- stb = 1;
- _nop_();
- stb = 0;
- _nop_();
- sendDataToTM1620(0xc0+i*2);//选择要写入的地址
- sendDataToTM1620(TempNum[ i]);//写入数值
- }
- //设置亮度和开关
- stb = 1;
- _nop_();
- stb = 0;
- _nop_();
- //0x88是最暗的,8F是最亮的这期间的数可以任意选
- //当时还带着蓝牙模块,大体测了下亮度设为88的情况下电流好像是120ma左右(图片是80的亮度),8F大约是180ma左右。
- sendDataToTM1620(0x88);//显示控制参数,点亮数码屏幕,亮度可以通过改变低三位调节
- stb = 1;
- _nop_();
- }
- void OffTM1620()
- {//息屏函数
- stb = 1;
- _nop_();
- stb = 0;
- _nop_();
- sendDataToTM1620(0x80);//关闭显示
- stb = 1;
- _nop_();
- }
复制代码
51单片机数码管温度显示.rar
(287.15 KB, 售价: 2 E币)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|