比特138

 找回密码
 立即注册
搜索
查看: 51|回复: 0

Proteus仿真STM32F103R6系列液晶lcd1602并口方式

[复制链接]

495

主题

495

帖子

105

积分

初级会员

Rank: 2

金币
105
发表于 2020-5-20 17:20:21 | 显示全部楼层 |阅读模式
一,打开文件(可以随文下载放置在文档中打开)。(如下图1所示)
234422kz1x0d1dz7dbdht1.png
图1

二,调整原理图大小,适合可视,另存工程文件。(如下图2,3,4所示)
234423ku1pd8zv91pmvzt8.png
图2

234423hye6yf57l9g6ky56.png
图3

234423dpguhtuh3pp5tf3z.png
图4

三,点击Source Code标签。(如下图5所示)
234423jwhhqkttrmqqwarz.png
图5

四,编辑main.c 代码如Proteus8.9 VSM Studio Keil编译器仿真STM32F103R6系列011_lcd1602并口(如下图6所示)
234424po85fpfldsv7fpuh.png
图6

五,Main.c 代码:
  1. #include "delay.h"
  2. #include "usart.h"
  3. #include "led.h"
  4. #include "lcd1602.h"

  5. int main(void)
  6. {
  7.         u16 l;
  8.         RCC_ClocksTypeDef     RCC_Clocks; //初始化程序
  9.         RCC_Configuration(); //时钟设置
  10.     RCC_GetClocksFreq(&RCC_Clocks);

  11.         USART1_Init(57600); //串口初始化(参数是波特率)

  12.        LED_Init();                     //初始化LED端口 if(USART_RX_STA&0x8000)
  13.        GPIOSt_Init();
  14.                 GPIOB->ODR= (0xff<<8);
  15.                 lcd_init();

  16.         for(l=0; l<5000; l++) delay_ms(1);      
  17.        LED0=1;
  18.                 printf("LED0灯亮!\r\n");
  19.        LED1=0;
  20.                 printf("LED1灯灭!\r\n");
  21.        while(1)
  22.        {                        
  23.                         LClear();
  24.                         for(l=0; l<5000; l++) delay_ms(1);
  25.                         ShowStr(1, 0, "Kaillen Work", 12);
  26.                         ShowStr(2, 1, "Wellcom YOU!", 12);
  27.                         for(l=0; l<50000; l++) delay_ms(1);
  28.                         LED0=~LED0;
  29.                    printf("LED0转换!\r\n");
  30.                         for(l=0; l<50000; l++) delay_ms(1);
  31.                         LED1=~LED1;
  32.                    printf("LED1转换!\r\n");
  33.                         LClear();
  34.                         for(l=0; l<5000; l++) delay_ms(1);
  35.                         ShowStr(1, 0, "Code Made", 9);
  36.                         ShowStr(2, 1, "---Ziegler Yin", 14);
  37.                         for(l=0; l<50000; l++) delay_ms(1);
  38.      }
  39. }
复制代码
Lcd1602.h:
  1. #ifndef _LCD1602_H_
  2. #define _LCD1602_H_

  3. #include "delay.h"

  4. void GPIOSt_Init(void);
  5. void delay(int z);
  6. void WaitReady(void);
  7. void write_com(u8 com);
  8. void write_data(u8 dat );
  9. void SetCursor(u8 x, u8 y);
  10. void ShowStr(u8 x, u8 y, char *str, u8 len);
  11. void ShowChar(u8 x, u8 y, char str);
  12. void lcd_init(void);
  13. void LClear(void);

  14. #endif
复制代码

六,点击构建工程按钮,编译工程。(如下图7所示)
234424o9ngueuwwzsng4o2.png
图7

七,点击窗口左下方仿真按钮,可见lcd1602和虚拟串口的信息显示在屏。 (如下图8,9,10所示)
234424bps9hqe84qsqxzsg.png
图8

234425l25febo5zybcxgya.png
图9
234425mmonvpg99gs1wvd2.png
图10


八,选择release,点击构建工程按钮,编译工程生成Hex文件。(如下图11所示)
234426drggy87mg0rajxz8.png
图11


附件在已安装Proteus8.9的计算机文件夹中打开即可
Keil_STM32F103RT6_011_lcd1602并口仿真文件.rar (827.52 KB, 售价: 1 金币)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|比特138 |网站地图

GMT+8, 2020-10-27 09:30 , Processed in 0.080031 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表