Stm32仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)(Proteus8.6+74LS595+數碼管)
stm32.jpg (131.93 KB, 下載次數: 102)
下載附件
2018-11-20 17:19 上傳
0.png (47.39 KB, 下載次數: 85)
下載附件
2018-11-20 17:40 上傳
單片機源程序如下:
- #include "led595.h"
- #include "delay.h"
- u8 Ledseg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0x7f};
- void LED595_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- //打開PD口時鐘
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
-
- //引腳設置
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_6;
- //端口速度
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- //端口模式,此為輸出推挽模式
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
-
- //初始化對應的端口
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- }
- //串行移位輸出8位
- void Led595_Out(u8 data)
- {
- u8 i;
- for(i=8;i>=1;i--)
- {
- if(data&0x80)
- {
- DIO_ON;
- }
- else
- {
- DIO_OFF;
- }
- data<<=1;
- SCLK_OFF;
- delayms(5);
- SCLK_ON;
- }
- }
- //顯示函數
- void Led595_Display (u8 *leddata)
- {
- u8 *led_table;
- u8 i;
- //顯示第四位
- led_table = Ledseg + *leddata;
- i = *led_table;
- Led595_Out(i);
- Led595_Out(0x01);
- RCLK_OFF;
- delayms(5);
- RCLK_ON;
- //顯示第三位
- led_table = Ledseg + *(leddata+1);
- i = *led_table;
- Led595_Out(i);
- Led595_Out(0x02);
- RCLK_OFF;
- delayms(5);
- RCLK_ON;
- //顯示第二位
- led_table = Ledseg + *(leddata+2);
- i = *led_table;
- Led595_Out(i);
- Led595_Out(0x04);
- RCLK_OFF;
- delayms(5);
- RCLK_ON;
- //顯示第一位
- led_table = Ledseg + *(leddata+3);
- i = *led_table;
- Led595_Out(i);
- Led595_Out(0x08);
- RCLK_OFF;
- delayms(5);
- RCLK_ON;
- }
復制代碼
所有資料51hei提供下載:
STM32_74HC595_SEG.rar
(982.63 KB, 下載次數: 822)
2018-11-20 17:20 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
附件:仿真及代碼下載
|