/*********************************************************************
* INCLUDES
*/
#include "TM1620.H"
/*********************************************************************
* LOCAL VARIABLES
*/
unsigned char NumCode[] =
{
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,
0x77,0x7C,0x39,0x5E,0x79,0x71,0x76,0x73,0x3E,0x00
};
/*********************************************************************
* LOCAL FUNCTIONS
*/
void TM1620_WriteByte( unsigned char byteData );
/*********************************************************************
* EXTERNAL FUNCTIONS
*/
/*********************************************************************
* @函数名 TM1620_Init
*
* @描述 初始化TM1620,设置显示模式, 初始化MCU的对应GPIO
*
* @参数 无
*
* @返回值 无
*/
void TM1620_Init( void )
{
PE_DDR |= (GPIO_TM1620_STB | GPIO_TM1620_CLK | GPIO_TM1620_DIN);
PE_CR1 |= (GPIO_TM1620_STB | GPIO_TM1620_CLK | GPIO_TM1620_DIN);
TM1620_IO_STB_PUT_HI();
TM1620_IO_STB_PUT_LO();
TM1620_WriteByte( SHOW_MODE_6B8S );
TM1620_IO_STB_PUT_HI();
}
/*********************************************************************
* @函数名 TM1620_Open
*
* @描述 开启TM1620显示
*
* @参数 luminance - 亮度等级
* DIS_CTRL_LUMI_1 至 DIS_CTRL_LUMI_8 共8个亮度等级
*
* @返回值 无
*/
void TM1620_Open( unsigned char luminance )
{
TM1620_IO_STB_PUT_LO();
TM1620_WriteByte( DATA_CMD_BASE | DATA_CMD_ADDR_CST);
TM1620_IO_STB_PUT_HI();
TM1620_IO_STB_PUT_LO();
TM1620_WriteByte( DIS_CTRL_BASE | DIS_CTRL_DIS_ON | luminance );
TM1620_IO_STB_PUT_HI();
}
/*********************************************************************
* @函数名 TM1620_Write
*
* @描述 在7段数码管上显示的数字
*
* @参数 num - 要显示的数字
*
* @返回值 无
*/
void TM1620_Write( unsigned long num )
{
TM1620_IO_STB_PUT_LO();
TM1620_WriteByte( ADDR_CMD_BASE | ADDR_CMD_ADDR_A );
TM1620_WriteByte( NumCode[num / 100000] );
TM1620_IO_STB_PUT_HI();
TM1620_IO_STB_PUT_LO();
TM1620_WriteByte( ADDR_CMD_BASE | ADDR_CMD_ADDR_8 );
TM1620_WriteByte( NumCode[(num % 100000) / 10000] );
TM1620_IO_STB_PUT_HI();
TM1620_IO_STB_PUT_LO();
TM1620_WriteByte( ADDR_CMD_BASE | ADDR_CMD_ADDR_6 );
TM1620_WriteByte( NumCode[(num % 10000) / 1000] );
TM1620_IO_STB_PUT_HI();
TM1620_IO_STB_PUT_LO();
TM1620_WriteByte( ADDR_CMD_BASE | ADDR_CMD_ADDR_4 );
TM1620_WriteByte( NumCode[(num % 1000) / 100] );
TM1620_IO_STB_PUT_HI();
TM1620_IO_STB_PUT_LO();
TM1620_WriteByte( ADDR_CMD_BASE | ADDR_CMD_ADDR_2 );
TM1620_WriteByte( NumCode[(num % 100) / 10] );
TM1620_IO_STB_PUT_HI();
TM1620_IO_STB_PUT_LO();
TM1620_WriteByte( ADDR_CMD_BASE | ADDR_CMD_ADDR_0 );
TM1620_WriteByte( NumCode[num % 10] );
TM1620_IO_STB_PUT_HI();
}
/*********************************************************************
* @函数名 TM1620_Close
*
* @描述 关闭TM1620显示
*
* @参数 无
*
* @返回值 无
*/
void TM1620_Close( void )
{
TM1620_IO_STB_PUT_LO();
TM1620_WriteByte( DIS_CTRL_BASE );
TM1620_IO_STB_PUT_HI();
}
/*********************************************************************
* LOCAL FUNCTIONS
*/
void TM1620_WriteByte( unsigned char byteData )
{
unsigned char i = 0;
TM1620_IO_STB_PUT_LO();
for ( i = 0x01; i != 0; i <<= 1 )
{
TM1620_IO_CLK_PUT_LO();
if ( byteData & i )
TM1620_IO_DIN_PUT_HI();
else
TM1620_IO_DIN_PUT_LO();
TM1620_IO_CLK_PUT_HI();
}
TM1620_IO_CLK_PUT_LO();
}

GJZGRB
- 粉丝: 3165
最新资源
- 大数据时代下计算机网络技术中的人工智能应用.docx
- LINUX安装配置手册.doc
- 使用 Python 编写的单层神经网络实现代码
- 某高速公路业主项目管理汇总.doc
- 央行大数据建设与应用展望.docx
- (源码)基于Qt框架的Markdown编辑器.zip
- 基于单片机内部定时计数器的数字钟方案设计书.doc
- 计算机专业技能竞赛辅导的实践与思考.docx
- 智慧水务生产运营大数据平台新构想.docx
- 油气田开发中计算机技术的应用.docx
- 不在同一网段计算机如何共享打印机电脑问题.doc
- 探讨互联网环境下云终端在高校图书馆服务中的应用.docx
- 大工13春《ACAD船舶工程应用》在线作业123.docx
- 大学生互联网应用安全情况调查及应对策略研究.docx
- (源码)基于AVR微控制器的嵌入式示波器项目avrimos.zip
- 能源行业-大数据与分析.ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


