"#defineucharunsignedchar#defineuintunsignedint//----- " /> "#defineucharunsignedchar#defineuintunsignedint//-----"/>

8l9961

阅读: 评论:0

马达加斯加语-广州到南昌高铁

8l9961
2023年4月2日发(作者:北京吴裕泰)

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小时内删除。

上一篇:地缝
下一篇:彪悍之旅
标签:8l9961
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2024-2030 Comsenz Inc.Powered by © 文化旅游网 滇ICP备2022007236号-403 联系QQ:1103060800网站地图