用2051驱TM1628做数码管显示程序怎么写

用2051驱TM1628做数码管显示程序怎么写,第1张

#include<reg2051.h>#include<intrins.h> #define uchar unsigned char #define uint unsigned int //定义控制端口

sbit DIO =P2^0sbit CLK =P2^1sbit STB =P2^2 //定义数据 uchar const CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}//共阴数码管0-9的编码 uchar KEY[5]={0} //为存储按键值开辟的数组//向TM1628发送8位数据,从低位开始 ------------------------ void send_8bit(uchar dat) {uchar i for(i=0i<8i++){ if(dat&0x01) DIO=1 elseDIO=0CLK=0 CLK=1 dat=dat>>1 } } //向TM1628发送命令-------------------------------------- void command(uchar com) { STB=1 STB=0 send_8bit(com)} //读取按键值并存入KEY[]数组,从低字节开始,从低位开始----void read_key() {uchar i,j command(0x42) //读键盘命令 DIO=1 //将DIO置高 for(j=0j<5j++)//连续读取5个字节 for(i=0i<8i++) // LED驱动控制专用电路 TM1628 www.titanmec.com - 13 - {KEY[j]=KEY[j]>>1 CLK=0 CLK=1 if(DIO) KEY[j]=KEY[j]|0X80 } STB=1} //显示函数,1-7位数码管显示数字0-6---------------------------- void display() { uchar i command(0x03)//设置显示模式,7位10段模式 command(0x40) //设置数据命令,采用地址自动加模式 command(0xc0) //设置显示地址,从00H开始 for(i=0i<7i++) //发送显示数据 {send_8bit(CODE[i])//从00H起,偶数地址送显示数据 send_8bit(0)//因为SEG9-14均未用到,所以奇数地址送全“0” } command(0x8F) //显示控制命令,打开显示并设置为最亮 read_key()//读按键值 STB=1} //按键处理函数 ------------------------------------------------- void key_process() { //由用户编写 } //主函数------------------------------------------------------- void main() { display() //显示 while(1) { read_key()//读按键值 key_process()//按键处理} }

TM1628是LED驱动芯片(带按键扫描),它是由DVD上的控制芯片(MCU)控制的,程序是在MCU里,不在TM1628里,不同品牌的DVD上的TM1628是可以互换的,但是不能互换MCU。

TM1628 是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内 部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。 里面有驱动程序,不能互换。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7775194.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存