找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6617|回复: 0
打印 上一主题 下一主题
收起左侧

stm32单片机解决控制5v的1602液晶

[复制链接]
跳转到指定楼层
楼主


本人学生菜鸟一枚,刚从51渡过。打算把51上实现的功能在stm32上面实现一遍, 遇到5v的1602 用了很长时间才搞定。目前所有的io口都是用的sn74h245来驱动的。 我遇到的问题就是 stm32 3.3v 驱动不了 还有就是延时的问题 ,有兴趣的可以试试。

stm32单片机源程序如下:
  1. #include "stm32f10x.h"
  2. #include "delay.h"

  3. #define Set_RS  GPIO_SetBits(GPIOB,GPIO_Pin_15)
  4. //#define Set_RW  GPIO_SetBits(GPIOB,GPIO_Pin_3)
  5. #define Set_EN  GPIO_SetBits(GPIOB,GPIO_Pin_2)

  6. #define CLR_RS  GPIO_ResetBits(GPIOB,GPIO_Pin_15)
  7. #define CLR_RW  GPIO_ResetBits(GPIOB,GPIO_Pin_3)
  8. #define CLR_EN  GPIO_ResetBits(GPIOB,GPIO_Pin_2)

  9. GPIO_InitTypeDef GPIO_InitStructure;

  10. unsigned char table[]="You are big Pig";

  11. void Send_Com(unsigned char Send_Com)
  12. {

  13. CLR_RS;
  14. GPIO_Write(GPIOA,Send_Com);
  15. Delay_ms(10);
  16. Set_EN;
  17. Delay_ms(10);
  18. CLR_EN;
  19. }

  20. void Send_Dat(unsigned char Send_Dat)
  21. {

  22. Set_RS;
  23. GPIO_Write(GPIOA,Send_Dat);
  24. Delay_ms(10);
  25. Set_EN;
  26. Delay_ms(10);
  27. CLR_EN;
  28. }
  29. void init()
  30. {

  31. CLR_EN;

  32. Send_Com(0x38);

  33. Send_Com(0x0c);
  34.        
  35. Send_Com(0x06);
  36.        
  37. Send_Com(0x01);

  38. }
  39. void GPIO_Configuration(void)
  40. {
  41. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);       
  42.        
  43. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15|GPIO_Pin_3|GPIO_Pin_2;
  44. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  45. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  46. GPIO_Init(GPIOB,&GPIO_InitStructure);
  47.        
  48.        
  49. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
  50. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  51. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  52. GPIO_Init(GPIOA,&GPIO_InitStructure);



  53. }




  54. int main(void)
  55. {

  56. unsigned char num;

  57. GPIO_Configuration();

  58. init();

  59. Send_Com(0x80);

  60. for(num=0;num<=14;num++)
  61. {
  62. Send_Dat(table[num]);
  63. Delay_ms(10);
  64. }
  65. while(1);

  66. }
复制代码

所有资料51hei提供下载:
1602液晶显示.rar (216.63 KB, 下载次数: 106)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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