Easyeda,史上最强大的电路设计工具,在线pcb design
TM1620 是天微公司生产的二极管驱动芯片,SOP20封装。芯片如下图所示:
最多可以驱动6个8位数码管,如下图所示:
程序如下:
/************************************************** * 名称:STC51驱动TM1620 3位数码管显示 * MCU: STC12C5608AD * 主频:12Mhz(外部接12MHz晶振) * 作者:Ration * 时间:2013年
12月5日(整理) * 版权:版权归《
单片机学习网》所有,传播请保持完整性 * * 更多
程序请访问:http://www.rationmcu.com *************************************************/ #include 'stc12c5608ad.h' #include
#define uint unsigned int // 宏定义uint (0~65535) #define uchar unsigned char // #define uint32 unsigned long sbit STB =P3^2; // 定义片选通讯口 sbit CLK =P3^3; // 定义时钟通讯口 sbit DIO =P3^4; // 定义数据输入/输出通讯口 uchar bai_num,shi_num,ge_num; static uchar code LED_tab[11]={ // 定义数码管0~9数字码表 0x3f, //0B00111111, //0 0x30, //0B00000110, //1 0x6d, //0B01011011, //2 0x79, //0B01001111, //3 0x33, //0B01100110, //4 0x5b, //0B01101101, //5 0x5f, //0B01111101, //6 0x70, //0B00000111, //7 0x7f, //0B01111111, //8 0x7B, //0B01101111, //9 0x4f, //E }; void delay_ms(uchar cyc) { //当将=1的时候,延时1ms uchar ii,jj; for(jj=1;jj<=cyc;jj++) ="" {="" ="" for(ii="">=cyc;jj++)><200;ii++) ="" {="" ="" ="" ="" _nop_();="" ="" }="" ="" }="" }="" void="" tm1620_write(uchar="" wr_data)="" {="" ="" uchar="" i;="" ="" for(i="">200;ii++)><8;i++) ="" {="" ="" ="" clk="0;" ="" ="" if(wr_data&0x01)dio="1;" ="" ="" else="" dio="0;" ="" ="" clk="1;" ="" ="" wr_data="">>=1; } } void Write_COM(unsigned char cmd) //发送命令字 { STB = 0; TM1620_Write(cmd); STB = 1; } void init_TM1620(void) { Write_COM(0x44); // 01000000准备写数据到显示寄存器,普通模式,自动地址增加 STB=0; TM1620_Write(0xc0); // 11000000 设置显示地址从0开始 TM1620_Write(0x00); // 所有显示为灭 STB=1; STB=0; TM1620_Write(0xc2); TM1620_Write(0x00); STB=1; STB=0; TM1620_Write(0xc4); TM1620_Write(0x00); STB=1; Write_COM(0x8f); // 最亮 10001111 设置消光脉冲14/16 显示开 } void led_show() { // Write_COM(0x44); // 01000000准备写数据到显示寄存器,普通模式,自动地址增加 STB=0; TM1620_Write(0xc0); // 11000000 设置显示地址从0开始 TM1620_Write(LED_tab[bai_num]); // 所有显示为灭 STB=1; STB=0; TM1620_Write(0xc2); // 11000000 设置显示地址从0开始 TM1620_Write(LED_tab[shi_num]); // 所有显示为灭 STB=1; STB=0; TM1620_Write(0xc4); // 11000000 设置显示地址从0开始 TM1620_Write(LED_tab[ge_num]); // 所有显示为灭 STB=1; } void main() { CLK = 1; // 上拉TM1620通信时钟引脚 STB = 1; // 上拉TM1620通信片选引脚 DIO = 1; // 上拉TM1620通信数据引脚 init_TM1620(); // 初始化LED控制芯片 bai_num=0; shi_num=0; ge_num=0; led_show(); while(1) { ; } } 完整keil工程文件,请按如下方法获取!
填写您的qq邮箱地址,资料自动发送到邮箱!
推荐:我的微信公众号(扫一扫关注)
8;i++)>
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。