/*
Coder : Farman
Date : 2018-01-02
参考了厂家的TM1637数据手册,在此表示感谢。
*/
#include <STC89C5XRC.h> //包含52单片机头文件
#include "Delay.h"
////////////////////////////////////////////////////////////////////////////
sbit I2C_SCL = P2^1; //定义模拟IIC总线的时钟线
sbit I2C_SDA = P2^0; //定义模拟IIC总线的数据线
#define TM1637_BRIGHTNESS 7 // 0 - 7
////////////////////////////////////////////////////////////////////////////
void I2C_delay()
{
nop_();
}
void I2C_start()
{
I2C_SCL = 1;
I2C_SDA = 1;
I2C_delay();
I2C_SDA = 0; // 时钟线设置为常态,低电平。
}
/*
I2C 总线写1个字节
不包含应答位的检测
*/
void I2C_write_byte(char byte_to_write)
{
unsigned char i;
for(i=0; i<8; i++)
{
I2C_SCL = 0;
I2C_SDA = byte_to_write & 0x01;
I2C_delay();
I2C_SCL = 1;
I2C_delay();
I2C_SCL = 0;
I2C_delay();
byte_to_write >>= 1;
}
return;
}
void I2C_check_ack()
{
// I2C 检查应答位,实际未检查,只发送了应答位时钟,认为TM1637工作正常
I2C_SCL = 0;
I2C_delay();//在第八个时钟下降沿之后延时5us,开始判断ACK 信号
while(I2C_SDA)
{
;
}
I2C_SCL = 1;
I2C_delay();
I2C_SCL=0;
}
void I2C_send_ack()
{
I2C_SDA = 0;
I2C_delay();
I2C_SCL = 1;
I2C_delay();
I2C_SCL = 0;
I2C_delay();
I2C_SDA = 1;
I2C_delay();
}
void I2C_stop()
{
I2C_SCL = 0;
I2C_delay();
I2C_SDA = 0;
I2C_delay();
I2C_SCL = 1;
I2C_delay();
I2C_SDA = 1;
}
///////////////////////////////////////////////////////////////////////////
//
// TM1637模块操作函数
//
//////////////////////////////////////////////////////////////////////////
void TM1637_write_command_byte(unsigned char command)
{
I2C_start();
I2C_write_byte(command);
I2C_check_ack();
I2C_stop();
}
// bright : 0 - 7
void TM1637_display_switch_and_bright(bit enable_display, unsigned char bright)
{
TM1637_write_command_byte(0x80 + (enable_display ? 0x08 : 0x00) + bright);
}
void TM1637_write_display_bytes(unsigned char first_addr,
unsigned char bytes_to_write[],
unsigned char num_of_bytes)
{
unsigned char i;
I2C_start();
I2C_write_byte(0x40);
I2C_check_ack();
I2C_stop();
I2C_start();
I2C_write_byte(0xC0 + first_addr);
I2C_check_ack();
for(i=0; i I2C_write_byte(bytes_to_write[i]); I2C_check_ack(); } I2C_stop(); } // addr: 0 - 5 void TM1637_write_display_byte(unsigned char addr, unsigned char segments) { I2C_start(); I2C_write_byte(0x40 + addr); I2C_check_ack(); I2C_stop(); I2C_start(); I2C_write_byte(0xC0 + addr); I2C_check_ack(); I2C_write_byte(segments); I2C_check_ack(); I2C_stop(); } code unsigned char TM1637_SEG_TAB[] = { 0x3F // 00111111 0 ,0x06 // 00000110 1 ,0x5B // 01011011 2 ,0x4F // 01001111 3 ,0x66 // 01100110 4 ,0x6d // 01101101 5 ,0x7d // 01111101 6 ,0x07 // 00000111 7 ,0x7F // 01111111 8 ,0x6F // 01101111 9 ,0x77 // 01110111 A ,0x7C // 01111100 b ,0x39 // 00111001 C ,0x5E // 01011110 d ,0x79 // 01111001 E ,0x71 // 01110001 F }; void TM1637_show_digit(unsigned char pos, unsigned char digit, bit with_dot) { TM1637_write_display_byte(pos, TM1637_SEG_TAB[digit] | (with_dot ? 0x20 : 0x00)); } void TM1637_init() { unsigned char i; TM1637_display_switch_and_bright(1, TM1637_BRIGHTNESS); for(i=0; i<6; i++) { TM1637_write_display_byte(i, 0xFF); } Delay200ms(); for(i=0; i<6; i++) { TM1637_write_display_byte(i, 0x00); } Delay200ms(); for(i=0; i<6; i++) { TM1637_write_display_byte(i, 0xFF); } Delay200ms(); for(i=0; i<6; i++) { TM1637_write_display_byte(i, 0x00); } Delay200ms(); } void TM1637() { unsigned char seg; unsigned char i, j; TM1637_init(); while(1) { for(i=0; i<16; i++) { for(j=0; j<6; j++) { TM1637_show_digit(j, i, 0); } Delay1s(); } } }
上一篇:linux系统与51单片机实现串口数据交互
下一篇:89C51单片机数码管显示
设计资源 培训 开发板 精华推荐
- BETAFPV BT2.0 飞鲸 Cetus Pro 充电座
- DC1898A、LTC3899EFE 演示板、三重降压/降压/升压控制器、Vout3 为 VOUT1/VOUT2 供电,2.5V = VIN = 60V,VOUT1 = 5V,5A,VOUT2 = 8.5V,3A,Vout3 = 10V,5.5A
- LT1170HVCT 的典型应用,5A 驱动高压 NPN
- LGT-Nano
- 使用 MaxLinear, Inc 的 XRP9710 的参考设计
- LTC1923 的典型应用 - 高效热电冷却器控制器
- MIC2005A-2Y固定可调限流配电开关典型应用
- 用于荧光灯镇流器的 1 灯 54W 荧光灯驱动器
- LTC3543 演示板、具有 PLL、软启动和扩频的 600mA 同步降压稳压器
- 用于老王的2.6元2.0英寸9225驱动的并口LCD屏幕的底板
- 通过复杂组合:M1 Mac mini最多可驱动六台显示器
- M2 芯片爆料:内部代号 Jade 将用在桌面 Mac 电脑
- iPhone 12需求保持强劲:良好势头将持续到新年
- OPPO Reno5 5G两款机型现跑分平台:均配8GB RAM
- Xbox Series X通过3C认证:国行版本将发售
- 小米CC11 Pro或通过认证:6.55吋4K屏幕+4400mAh电池+6400万主摄
- iPhone 13出来后!闲鱼上的二手iPhone太香了
- 法版苹果iPhone 13系列包装盒中仍包含EarPods耳机
- iOS 15安装率估计近20%,不少用户遇到了早期问题
- Pixel手机可在紧急情况下自动录制与上传视频