基于ht1632c芯片的点阵驱动模块在STM32F103mini的应用(一)行走的小人

注:代码已开源,有会员的走个积分,无会员的麻烦给个star,谢谢啦!

GitHub开源地址: https://github.com/goolete/stm32-ht1632.git

  • 工具/原料

ht1632c点阵模块

STM32F103RC(mini)

杜邦线

工程代码:https://download.csdn.net/download/goolete/10922678

驱动代码:https://download.csdn.net/download/goolete/10922879

取模软件:https://download.csdn.net/download/goolete/10922876

(取模软件用之前必须破解,否则生成为乱码,破解文件在压缩包里)

HT1632C点阵模块使用手册V1.0:https://download.csdn.net/download/goolete/10922908

HT1632C中文资料:

HT1632CV130 datasheet:https://download.csdn.net/download/goolete/10924443

  • 方法/步骤

注:代码注释部分因时间问题可能有误,本文只给出部分代码。

次点阵模块由HT1632C芯片驱动,MCU与HT1632C通信只需要4根线便可。 /CS用来使能串行接口信号的传输以及终止其与外部MCU的通信。如果/CS被置1,则数据和命令的传输被禁止。DATA引线用来串行传输数据, /RD引线用来输入读时钟, RAM数据在/RD的下降沿被读出,该数据将会在DATA引线上被传输。 /WR引线用来输入写时钟,数据,地址和命令将会在DATA引线上被输入在/WR的下降沿。

查询STM32F103RC的IO引脚图,可知PA7\PA6\PA5\PA4可作为本次实验的IO。

  1. 1.连线。

使用杜邦线将DATA\#WR\#RD\#CS分别连接到MCU的PA7-4上,此外,将VCC\GND分别连接到MCU的VOUT1或VOUT2上。

  1. 2.检查线路无误后,开始编写驱动接口。

#include "ht1632c.h"

void HT1632C_Interface_Init(void)
{
	GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	 //使能PA,PD端口时钟
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_4;				
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
 GPIO_Init(GPIOA, &GPIO_InitStructure);					
}

接口设置 

#define DAT_SET GPIO_SetBits(GPIOA,GPIO_Pin_7);	// PA7
#define	LCD_CS_SET  GPIO_SetBits(GPIOA,GPIO_Pin_5);    //片选端口  		 
#define	LCD_WR_SET	GPIO_SetBits(GPIOA,GPIO_Pin_6);   //写数据			
#define	LCD_RD_SET	GPIO_SetBits(GPIOA,GPIO_Pin_4);    //读数据	

 

  1. 3.小人点阵图片代码

//行走的小人图像1

//一个页面需要48个字节数据

unsigned char page1[48]={

0X00,0X00,0X01,0XC0,0X06,0X30,0X04,0X10,0X08,0X08,0X08,0X08,0X08,0X08,0X04,0X10,

0X06,0X30,0X03,0XE0,0X00,0X80,0X00,0X80,0X03,0XC0,0X0C,0XB0,0X10,0X88,0X00,0X84,

0X01,0XC0,0X01,0XC0,0X03,0X60,0X06,0X30,0X0C,0X18,0X0C,0X0E,0X00,0X00,0X00,0X00};



//行走的小人图像2

//一个页面需要48个字节数据

unsigned char page2[48]={

0X00,0X00,0X01,0XC0,0X06,0X30,0X04,0X10,0X08,0X08,0X08,0X08,0X08,0X08,0X04,0X10,

0X06,0X30,0X03,0XE0,0X00,0X80,0X00,0X80,0X03,0XC0,0X0C,0XB0,0X10,0X88,0X00,0X84,

0X01,0XC0,0X01,0XC0,0X01,0X40,0X01,0X40,0X01,0X40,0X01,0X60,0X00,0X00,0X00,0X00};





//行走的小人路面1数据,只是一行数据,2个字节

unsigned char road1[2]={0xF3,0xCF};

//行走的小人路面2数据,只是一行数据,2个字节

unsigned char road2[2]={0xCF,0x3C};

//行走的小人路面3数据,只是一行数据,2个字节

unsigned char road3[2]={0x3C,0xF3};
  1. 4.编写主程序

int main(void)

{

unsigned char *p1,*p2; //定义指向page数组的指针



delay_init();

p1=&page1[0]; //使指针指向数组地址

p2=&page2[0]; //使指针指向数组地址





HT1632C_Interface_Init(); //初始化1632接口

HT1632C_Init(); //初始化HT1632

HT1632C_clr(); //清屏

while(1)

{

HT1632C_Update_OnePage(p1); //显示人物1

HT1632C_Update_Onerow(24,road1); //显示路面1

delay_ms(60); //移动延时

HT1632C_Update_Onerow(24,road2); //显示路面2

delay_ms(50); //移动延时

HT1632C_Update_OnePage(p2); //显示人物2

delay_ms(50); //移动延时

HT1632C_Update_Onerow(24,road3); //显示路面3

delay_ms(60); //移动延时

}

}
  1. 5.烧录程序到MCU。

 

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值