【STM32】嵌入式实验二 GPIO 实验:数码管

实验内容:

编写程序,在数码管上显示自己的学号。

数码管相关电路:

 

PA7对应的应该是段码,上面的图写错了。

 注意:选中数码管是低电平选中;并且用74HC595模块驱动输出的段码,

这个模块的学习可以参考:https://blog.csdn.net/qq_44881094/article/details/123212973

简单总结就是串行输入,并行输出,高位先行。他不是像一些模块并行输入再并行输出,而是一位一位(高位先输入,因为移位寄存器每次接收数据都是左移)地输入到移位寄存器,然后再存储寄存器里,作为输出。

PA5对应的SCK,上升沿时,移位寄存器左移一位,接收从PA7输入的数据,段码的8位输入完毕后,PA8对应的RCK,来一个上升沿,将移位寄存器里的值锁存到存储寄存器,QA-QH并行输出。

代码部分:

table段码表,s你要显示的八个数字。注意位码每次置0后记得要置1,延时时间不要太长,否则会闪烁。

void write_byte(unsigned char date){
    unsigned char i;
	for(i=0;i<8;i++){
	  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,(date>>(7-i))&0x01);
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,1);
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,0);
	}
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,1);
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,0);

}


unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
	unsigned char s[]={2,1,3,4,5,6,7,8};

	for(int i=8;i<16;i++){
		write_byte(table[s[15-i]]);
		HAL_GPIO_WritePin(GPIOF,0x01<<i,0);
		HAL_Delay(1);
		HAL_GPIO_WritePin(GPIOF,0x01<<i,1);
		}

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 06:40:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 06:40:07       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 06:40:07       87 阅读
  4. Python语言-面向对象

    2024-04-23 06:40:07       96 阅读

热门阅读

  1. stm32中UWTICK使用

    2024-04-23 06:40:07       32 阅读
  2. C#关键字汇总

    2024-04-23 06:40:07       35 阅读
  3. 如何在 Ubuntu 14.04 上配置 Redis 缓存以加速 WordPress

    2024-04-23 06:40:07       37 阅读
  4. vue3 项目使用 vite 创建独立的登录页

    2024-04-23 06:40:07       34 阅读
  5. Selenium(一):八大元素定位

    2024-04-23 06:40:07       32 阅读
  6. LeetCode 438.找到字符串中所有字母异位词

    2024-04-23 06:40:07       39 阅读
  7. P4 vscode 插件

    2024-04-23 06:40:07       35 阅读