久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3189|回復(fù): 3
收起左側(cè)

修改的原子哥的串口寫數(shù)據(jù)顯示到1602液晶STM32源程序

[復(fù)制鏈接]
ID:470422 發(fā)表于 2019-1-19 09:42 | 顯示全部樓層 |閱讀模式
使用原子哥的程序,自己改動了一下能夠通過串口寫數(shù)據(jù)顯示到1602液晶上。

STM32單片機(jī)源程序如下:
  1. #include "stm32f10x.h"
  2. #include "sys.h"
  3. #include "delay.h"
  4. #include "usart.h"

  5. #define LCD_1602RS GPIO_Pin_12
  6. #define LCD_1602RW GPIO_Pin_13
  7. #define LCD_1602EN GPIO_Pin_14

  8. //unsigned char table[];
  9. unsigned char table2[13];
  10. unsigned char a;
  11. u8 i;
  12. u8 res;
  13. u8 flag;
  14. u8 j;

  15. //串口初始化

  16. void My_USART1_Init(void)
  17. {
  18.         GPIO_InitTypeDef GPIO_InitStrue;
  19.         USART_InitTypeDef USART_InitStrue;
  20.         NVIC_InitTypeDef NVIC_InitStrue;
  21.         
  22.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);    //使用相應(yīng)的時鐘
  23.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
  24.         GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;
  25.   GPIO_InitStrue.GPIO_Pin=GPIO_Pin_9;
  26.         GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;
  27.         GPIO_Init (GPIOA,&GPIO_InitStrue);       //初始化IO口
  28.         
  29.         GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING ;
  30.   GPIO_InitStrue.GPIO_Pin=GPIO_Pin_10;
  31.         GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;
  32.         GPIO_Init (GPIOA,&GPIO_InitStrue);      //初始化IO口
  33.         
  34.         USART_InitStrue.USART_BaudRate=115200;
  35.         USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
  36.         USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
  37.   USART_InitStrue.USART_Parity=USART_Parity_No;
  38.         USART_InitStrue.USART_StopBits=USART_StopBits_1;
  39.         USART_InitStrue.USART_WordLength=USART_WordLength_8b;

  40.         USART_Init(USART1,&USART_InitStrue);
  41.         USART_Cmd(USART1,ENABLE);  //使能串口1
  42.         USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);    //開啟接受中斷
  43.                
  44.         NVIC_InitStrue.NVIC_IRQChannel=USART1_IRQn;
  45.         NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;
  46.         NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;
  47.         NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;
  48.         NVIC_Init(&NVIC_InitStrue);     //中斷優(yōu)先級的設(shè)置
  49. }         

  50. //寫命令
  51. void LCD1602_Write_Cmd(unsigned char cmd)
  52. {

  53.            GPIO_ResetBits(GPIOF,LCD_1602RS);   //RS 0
  54.                 delay_us(2);
  55.                 GPIO_ResetBits(GPIOF,LCD_1602RW);   //RW 0
  56.          
  57.                 GPIO_Write(GPIOD, cmd);
  58.                 GPIO_ResetBits(GPIOF,LCD_1602EN);   //E 0
  59.                 delay_us(2);
  60.                 GPIO_SetBits(GPIOF,LCD_1602EN);   //E 1
  61.                 delay_us(2);
  62.           GPIO_ResetBits(GPIOF,LCD_1602EN); //E 0
  63. }


  64. //寫數(shù)據(jù)        
  65. void LCD1602_Write_Date(unsigned char dat)           
  66. {               

  67.                 GPIO_SetBits(GPIOF,LCD_1602RS);   //RS 1    RS高是數(shù)據(jù),低是命令
  68.                 delay_us(2);
  69.                 GPIO_ResetBits(GPIOF,LCD_1602RW);  //RW 0
  70.                 GPIO_Write(GPIOD, dat);
  71.                 GPIO_ResetBits(GPIOF,LCD_1602EN);  //E 0
  72.                  delay_us(2);
  73.                 GPIO_SetBits(GPIOF,LCD_1602EN);   //E 1
  74.     delay_us(2);
  75.                 GPIO_ResetBits(GPIOF,LCD_1602EN);  //E 0
  76.                 delay_us(2);
  77. }

  78.   

  79.     //VO   11
  80.     //RS   12
  81.     //RW   13
  82.     //E    14         

  83. int main(void)
  84. {        

  85.   GPIO_InitTypeDef  GPIO_InitStructure;
  86.         SystemInit();          //系統(tǒng)時鐘初始化
  87.   delay_init();                        //延時函數(shù)初始化         
  88.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOF, ENABLE);            //使能PF,PD端口時鐘

  89.         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;
  90.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽輸出
  91.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //IO口速度為50MHz
  92.         GPIO_Init(GPIOD, &GPIO_InitStructure);                                //初始化GPIOD0~7

  93.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;
  94.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽輸出
  95.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //IO口速度為50MHz
  96.         GPIO_Init(GPIOF, &GPIO_InitStructure);                                //初始化GPIOB 11,14,13,12
  97.          
  98.          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  
  99.          
  100.                                 delay_ms(300);         
  101.          //液晶初始化
  102.         LCD1602_Write_Cmd(0x38);           //顯示16*2
  103.         delay_us(10);
  104.         LCD1602_Write_Cmd(0x0c);        
  105.         delay_us(10);
  106.         LCD1602_Write_Cmd(0x06);      //讀寫字符后地址加1,屏顯不移動
  107.         delay_us(10);
  108.         LCD1602_Write_Cmd(0x01);   //清屏,數(shù)據(jù)指針清零
  109.         delay_us(10);        

  110.         //LCD1602_Write_Cmd(0x80);     //設(shè)置數(shù)據(jù)地址指針初始值
  111.         delay_us(2);

  112.         My_USART1_Init();
  113.                                        
  114. while(1)
  115.         {
  116.                 //LCD1602_Write_Cmd(0x01);   //清屏,數(shù)據(jù)指針清零
  117.                 if(flag == 1)        
  118.                         {

  119.                                 LCD1602_Write_Cmd(0x01);   //清屏,數(shù)據(jù)指針清零
  120.                                 delay_ms(1);                        
  121.                                 flag = 0;
  122.                                 for(i = 0;i<j-1;i++)
  123.                                 {
  124.                                         LCD1602_Write_Cmd(0x80+i);
  125.                                         delay_ms(1);
  126.                                         LCD1602_Write_Date(table2[i]);
  127.                                         delay_ms(1);
  128.                                 }
  129.                                 delay_ms(30000);
  130.                                 i = 0;
  131.                         //        LCD1602_Write_Cmd(0x01);   //清屏,數(shù)據(jù)指針清零
  132.                         }
  133.         }        
  134.         
  135. }

  136. void USART1_IRQHandler(void)
  137. {

  138.          if(USART_GetITStatus(USART1,USART_IT_RXNE))
  139.          {
  140.             table2[i++] = USART_ReceiveData(USART1);
  141.                   USART_SendData(USART1,table2[i-1]);                                 
  142.                  if(table2[i-1] == '#')
  143.                  {
  144.                    flag = 1;
  145.                          j = i;
  146.                          i = 0;

  147.                  }
  148.          }
  149. }
復(fù)制代碼

所有資料51hei提供下載:
串口——液晶.7z (182.12 KB, 下載次數(shù): 40)



評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:441972 發(fā)表于 2019-1-26 17:33 | 顯示全部樓層
樓主可不可以做一個用USMART調(diào)試串口的,這個更加方便,但是我還不熟悉STM32,因?yàn)閁SMART版本兼容問題老是各種報錯,謝謝!
回復(fù)

使用道具 舉報

ID:383374 發(fā)表于 2019-2-3 02:59 來自手機(jī) | 顯示全部樓層
不錯,51黑有你更精彩
回復(fù)

使用道具 舉報

ID:160995 發(fā)表于 2019-7-25 19:30 | 顯示全部樓層
謝謝分享,學(xué)習(xí)中。。。。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区三区 | 特级特黄特色的免费大片 | 欧美夜夜 | 欧美激情一区二区三区 | 国产一区中文字幕 | 日韩影院在线 | 91原创视频 | 国产网站久久 | 日韩三级在线观看 | 蜜臀网| 亚洲成人免费视频 | 青草青草久热精品视频在线观看 | 亚洲国产精品99久久久久久久久 | 免费看国产一级特黄aaaa大片 | 亚洲系列第一页 | 亚洲一页 | 国产98在线 | 免费, | 成人一区二区电影 | 久久人人爽人人爽人人片av免费 | 日本h片在线观看 | 日本午夜精品一区二区三区 | 亚洲国产一区二区视频 | 亚洲国产黄 | 国产精品久久久久久吹潮日韩动画 | 午夜精品视频在线观看 | 欧美一级片 | 日本淫视频 | 久久久影院 | 麻豆a级片 | 91综合在线观看 | 国产精品视频一区二区三区 | 色视频在线观看 | 久久久久久久av | 日韩成人在线网址 | 日日草夜夜草 | 成人精品鲁一区一区二区 | 天天操综合网站 | 欧美日韩三区 | 精品久久久久久久久久久久 | 欧美日韩黄色一级片 | 韩国成人在线视频 |