TM1616程序源代码附TM1616中文PDF与原理图
TM1616驱动共阴数码管接线电路图
T1616驱动共阴数码管源代码
TM1616.H
- #include <STC12C56.H>
- #include <intrins.h>
- #define clk P10 //定义时钟管脚
- #define dio P11 //定义数据管脚
- #define stb P37 //定义片选管脚
- #define nop _nop_();
- #define uchar unsigned char
- #define uint unsigned int
复制代码TM1616.C
- #include <STC12C56.H>
- #include <intrins.h>
- #include <tm1616.h>
- //---------------------TM1616发送1字节数据子程序------------------------------------------
- void tm1616write(uchar wr_date)
- {
- uchar i;
- stb =0;
- nop;
- nop;
- for(i=0;i<8;i++)
- {
- clk=0;
- nop;
- nop;
- if(wr_date&0x01!=0)
- {
- dio=1;
- }
- else
- {
- dio=0;
- }
- nop;
- nop;
- clk=1;
- nop;
- wr_date=wr_date>>1;
- }
- }
- //-------------------------TM1616采用固定地址显示数据子程序--------------------------------------------
- void tm1616show(uchar data1,uchar data2,uchar data3,uchar data4)
- {
- uchar j;
- stb = 1;
- clk = 1;
- dio = 1;
- tm1616write(0x00); //显示模式设置,设置为4个GRID,7个SEG
- stb=1; //显示模式设置完毕,STB置1
- tm1616write(0x44); //数据命令设置,设置普通模式、固定地址、写数据到显示寄存器
- stb=1; //数据命令设置完毕,STB置1
- for(j=0;j<4;j++) //4位数码管要发送4次数据
- {
- tm1616write(0xC0); //设置显示地址1
- tm1616write(data1); //传输显示数据1
- stb=1; //显示数据1发送完毕STB置1
- tm1616write(0xC2); //设置显示地址1
- tm1616write(data2); //传输显示数据1
- stb=1; //显示数据1发送完毕STB置1
- tm1616write(0xC4); //设置显示地址1
- tm1616write(data3); //传输显示数据1
- stb=1; //显示数据1发送完毕STB置1
- tm1616write(0xC6); //设置显示地址2
- tm1616write(data4); //传输显示数据1
- stb=1; //显示数据1发送完毕STB置1
- }
- tm1616write(0x8F); //控制命令设置,设置显示开、显示最亮
- stb=1; //显示数据发送完毕STB置1
- }
复制代码TM1616主函数
- #include <STC12C56.H>
- #include <intrins.h>
- #include <tm1616.c>
- #define uchar unsigned char
- #define uint unsigned int
- void ioinit(void)
- {
- P0M0 = 0x00;
- P0M1 = 0x00;
- P1M0 = 0x00;
- P1M1 = 0x00;
- P2M0 = 0x00;
- P2M1 = 0x00;
- P3M0 = 0x00;
- P3M1 = 0xE0;
- }
- void main(void)
- {
- ioinit();
- while(1)
- {
- tm1616show(0x5B,0x66,0x4F,0xFF);
- }
- }
复制代码TM1616中文PDF及原理图源代码下载
本程序基于stc12c5628单片机 如KEIL中没有STC头文件请自行添加,添加教程可以在本论坛搜索
这个是对端口进行设置,根据需要可以设置成准双向,推挽输出,输入,开漏输出,建议看一下STC的手册