"#defineucharunsignedchar#defineuintunsignedint//----- " /> "#defineucharunsignedchar#defineuintunsignedint//-----"/>
STM8单⽚机驱动TM1628的⽰例程序
STM8单⽚机驱动LED驱动芯⽚TM1628的⽰例程序,四位共阴数码管,显⽰“1234”,开发环境为IARFORSTM8,程序代码如下:
#include"iostm8s105s4.h>"
#defineucharunsignedchar
#defineuintunsignedint
//------显⽰任务变量定义-------------------------------------------------------
#defineDIS_STB_H()(PE_ODR|=0x20)//SPI接⼝PE5
#defineDIS_STB_L()(PE_ODR&=0xdf)//SPI接⼝
#defineDIS_S重庆洲际酒店 CK_H()(PC_ODR|=0x04)//SPI接⼝PC2
#defineDIS_SCK_L()(PC_ODR&=0xfb)//SPI接⼝
#defineDIS_DIO_H()(PC_ODR|=0x08)//SPI接⼝PC3
#defineDIS_DIO_L()(PC_ODR&=0xf7)//SPI接⼝
ucharDisplay_Value[4]={0,0,0,0};
constucharDISP_TAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9
constucharDISP_POSITIO[4]={0xc0,0xc2,0xc4,0xc6};//显⽰地址
/*********************************************
*发送⼀字节数据到TM1628
*********************************************/
voidTM1628_Send_Byte(uchardat)
{
uchari;
for(i=0;i<8;i++)
{
DIS_SCK_L();
if(dat&0x01)
{
DIS_DIO_H();
}
else
{
DIS_DIO_L();
}
dat>>=1;
DIS_SCK_H();
}
}
/*********************************************
*发送⼀字节命令到TM1628
*********************************************/
voidTM1628_Send_Cmd(uchardat)
{
uchari;
DIS_STB_L();
for(i=0;i<8;i++)
{
DIS_SCK_L();
if(dat&0x01)
{
DIS_DIO_H();
}
else
{
DIS_DIO_L();
}
dat>>=1;
DIS_SCK_H图片 ();
}
DIS_STB_H();
DIS_DIO_H();
}
/*********************************************
*采⽤固定地址模式发送数据
*********************************************/
voidDisplay_OneByt泰来 e(uchardat,ucharaddr)
{
TM1628_Send_Cmd(0x03);//显⽰模式是7位10段
TM1628_Send_Cmd(0x44);//写数据到显⽰寄存器,固定地址模式
DIS_STB_L();
TM1628_Send_Byte(addr);//显⽰地址STB下降沿时,默认第⼀个数据是命令
TM1628_Send_Byte(dat);//数据
DIS_STB_H();
TM1628_Send_Cmd(0x8f);//显⽰亮度设置,最亮
}
/*********************************************
*更新需显⽰内容
*********************************************/
voidUpdata_Display(uintindata)
{
Display_Value[0]=DISP_TAB[indata%10];
Display_Value[1]=DISP_TAB[(indata/10)%10];
Display_Value[2]=DISP_TAB[(indata/100)%10];
Disp富阳恩波网 lay_Value[3]=DISP_TAB[indata/1000];
}
/*********************************************
*将数据发送给四位数码管
*********************************************/
voidDisplay(void)
{
ucharnum;
for(num=0;num<4;num++)
{
Display_OneByte(Display_Value[num],DISP_POSITIO[num]);
}
}
/*******************日本料理 ***************************************
*初始化
**********************************************************/
voidDisplay_Init()
{
PC_DDR|=0x0c;//配置PC端⼝的⽅向寄存器PC2/PC3输出
PC_CR1|=0x0c;//设置PC2/PC3为推挽输出
PC_CR2&=0xf3;
PE_DDR|=0x20;//配置PE端⼝的⽅向寄存器PE5输出
PE_CR1|=0x20;//设置PE5为推挽输出
PE_CR2&=0xdf;
DIS_STB_苹果香港 H();
DIS_DIO_L();
DIS_SCK_L();
}
voidCLK_Init(void)
{
CLK_ECKR=0x03;//外部时钟寄存器外部时钟准备就绪,外部时钟开
CLK_SWCR=0x02;//切换控制寄存器使能切换机制
CLK_SWR=0xB4;//主时钟切换寄存器选择HSE为主时钟源
while(!(CLK_SWCR&0x08));
//Waitforswitchdone该语句如果没有则不能切
//换成功,在仿真时使⽤内部时钟,停⽌仿真时,切换到外部时钟,但重新上电或复位后
//⼜回到内部时钟状态(Debug模式)
CLK_CSSR=0x01;//时钟安全系统寄存器
}
voidDelay_ms(uintms)
{
uinti,j;
for(j=0;j
{
for(i=0;i<1000;i++)
{;}
}
}
voidmain(void)
{
Delay_ms(200);
CLK_Init();
Display_Init();
Updata_Display(1234);//四位数码管显⽰1234
Display();
while(1)
{
}
}
本文发布于:2023-04-02 18:33:30,感谢您对本站的认可!
本文链接:http://www.035400.com/whly/4/33522.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |