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

標題: stm32驅動lcd1602秒表顯示的電路與源碼 打包帶走! [打印本頁]

作者: 錦上送碳    時間: 2018-6-4 16:45
標題: stm32驅動lcd1602秒表顯示的電路與源碼 打包帶走!
stm32驅動lcd1602秒表顯示電路原理圖如下:

單片機源程序如下:
  1. /*
  2. **************************************************************************************************
  3. *                                                            深圳新元電子工作室
  4. * 文件名:stm32驅動LCD1602秒表主程序
  5. * 描  述:
  6. * 版本號:V0.0
  7. * 備  注:
  8. * 程序員:賈*
  9. ***************************************************************************************************
  10. */

  11. #include "stm32f10x.h"
  12. #include "stm32f10x_gpio.h"
  13. #include "stm32f10x_rcc.h"
  14. #include "stm32f10x_tim.h"
  15. #include "misc.h"
  16. #include "stm32f10x_exti.h"

  17. #include "lcd1602.h"
  18. #include "pbdata.h"

  19. void RCC_Configuration(void);
  20. void GPIO_Configuration(void);
  21. void NVIC_Configuration(void);
  22. void TIM3_Configuration(void);
  23. void EXTI_Configuration(void);

  24. void LCD1602Display_Hour(void);
  25. void LCD1602Display_Minute(void);
  26. void LCD1602Display_Second(void);
  27. void LCD1602Display_Millisecond(void);

  28. volatile u8 hour =0;
  29. volatile u8 second = 0;
  30. volatile u8 minute = 0;
  31. volatile u8 millisecond =0;

  32. int main(void)
  33. {
  34.           RCC_Configuration(); //系統時鐘初始化
  35.           GPIO_Configuration(); //端口初始化
  36.           TIM3_Configuration();
  37.           NVIC_Configuration();
  38.           EXTI_Configuration();
  39.           InitLcd1602();
  40.           LcdShowStr(0,0,"The stopwatch:");
  41.           LcdShowStr(4,1,":  :  :");
  42.          
  43.           while(1)
  44.                 {
  45.       LCD1602Display_Hour();
  46.                         LCD1602Display_Minute();
  47.                         LCD1602Display_Second();
  48.                         LCD1602Display_Millisecond();
  49.                 }
  50.         
  51. }   

  52. void RCC_Configuration(void)
  53. {
  54.    SystemInit();
  55.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  56.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  57.          RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
  58.          RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO, ENABLE);
  59.    GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
  60.          //關閉調試 端口重新映射  使用仿真器調試時,不能用此語
  61. }


  62. void GPIO_Configuration(void)
  63. {
  64.     GPIO_InitTypeDef GPIO_InitStructure;
  65.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
  66.           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  67.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  68.           GPIO_Init(GPIOA, &GPIO_InitStructure);   //初始化GPIOA端口
  69.           GPIO_Init(GPIOB,&GPIO_InitStructure);

  70.                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 |GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
  71.            //所有GPIO為同一類型端口
  72.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;         //開漏輸出
  73.                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         //輸出的最大頻率為50HZ
  74.                 GPIO_Init(GPIOB, &GPIO_InitStructure);   //初始化GPIOB端口
  75.         
  76.          // KEY
  77.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
  78.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  79.           GPIO_Init(GPIOA,&GPIO_InitStructure);

  80. }

  81. void TIM3_Configuration(void)
  82. {
  83.    
  84.          TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;
  85.         
  86.           TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
  87.         
  88.           TIM_TimeBaseStruct.TIM_Period = 20;
  89.           TIM_TimeBaseStruct.TIM_Prescaler = 35999;
  90.           TIM_TimeBaseStruct.TIM_ClockDivision = 0;
  91.           TIM_TimeBaseStruct.TIM_CounterMode = TIM_CounterMode_Up;
  92.         
  93.           TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStruct);
  94.    
  95.     TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
  96.     TIM_Cmd(TIM3,DISABLE);        

  97. }


  98. void EXTI_Configuration(void)
  99. {
  100.     EXTI_InitTypeDef EXTI_InitStructure;
  101.         
  102.     EXTI_ClearITPendingBit(EXTI_Line0);
  103.           GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
  104.           EXTI_InitStructure.EXTI_Line = EXTI_Line0;
  105.           EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  106.           EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  107.           EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  108.           EXTI_Init(&EXTI_InitStructure);
  109.         
  110.           EXTI_ClearITPendingBit(EXTI_Line1);
  111.           GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource1);
  112.           EXTI_InitStructure.EXTI_Line = EXTI_Line1;
  113.           EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  114.           EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  115.           EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  116.           EXTI_Init(&EXTI_InitStructure);
  117.         
  118.     EXTI_ClearITPendingBit(EXTI_Line2);
  119.           GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource2);
  120.           EXTI_InitStructure.EXTI_Line = EXTI_Line2;
  121.           EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  122.           EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  123.           EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  124.           EXTI_Init(&EXTI_InitStructure);
  125.         
  126. }

  127. void NVIC_Configuration(void)
  128. {
  129.    
  130.           NVIC_InitTypeDef NVIC_InitStructure;
  131.         
  132.           NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  133.           NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  134.           NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  135.           NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  136.           NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  137.           NVIC_Init(&NVIC_InitStructure);
  138.         
  139.           NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);           // 設置NVIC中斷分組2,  2位搶占優先級,2位響應優先級
  140.           NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;          // 設置外部中斷通道
  141.           NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;        // 搶占優先級為2
  142.           NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;        // 響應優先級為2
  143.           NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;           // 使能外部中斷通道
  144.           NVIC_Init(&NVIC_InitStructure);                                              // 根據NVIC_InitStruct結構體中指定的參數初始化外設NVIC寄存器

  145.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  146.           NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;
  147.           NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  148.           NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  149.           NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  150.           NVIC_Init(&NVIC_InitStructure);
  151.                
  152.                 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  153.           NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;
  154.           NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  155.           NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  156.           NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  157.           NVIC_Init(&NVIC_InitStructure);
  158.                
  159. }

  160. void LCD1602Display_Second(void)
  161. {
  162.    u8 str[3];
  163.          str[0] = second/10 +'0';
  164.          str[1] = second%10 + '0';
  165.          str[2] = '\0';
  166.    LcdShowStr(8,1,str);        
  167. }

  168. void LCD1602Display_Millisecond(void)
  169. {
  170.    u8 str[3];
  171.          str[0] = millisecond/10 +'0';
  172.          str[1] = millisecond%10 + '0';
  173.          str[2] = '\0';
  174.    LcdShowStr(11,1,str);        
  175. }

  176. void LCD1602Display_Minute(void)
  177. {
  178.    u8 str[3];
  179.          str[0] = minute/10 +'0';
  180.          str[1] = minute%10 + '0';
  181.          str[2] = '\0';
  182.    LcdShowStr(5,1,str);        
  183. }

  184. void LCD1602Display_Hour(void)
  185. {
  186.    u8 str[3];
  187.          str[0] = hour/10 +'0';
  188.          str[1] = hour%10 + '0';
  189.          str[2] = '\0';
  190.    LcdShowStr(2,1,str);

  191. }


復制代碼

所有資料51hei提供下載:
lcd1602秒表2.rar (309.01 KB, 下載次數: 291)



作者: 17806249183    時間: 2018-6-4 17:55
好好借鑒學習一下,謝謝大佬
作者: zhang_huai    時間: 2018-6-5 11:33
謝謝大佬,很給力
作者: gao376369127    時間: 2018-6-19 20:00
非常給力,感謝分享
作者: kk960815    時間: 2018-11-27 14:01
謝謝大佬
作者: maxttycer    時間: 2018-11-30 00:56
感謝大佬

作者: User_Ard    時間: 2018-12-19 10:09
學習一下

作者: User_Ard    時間: 2018-12-19 15:09
nice,頂一個

作者: 木頭note    時間: 2019-1-25 17:52
謝謝大佬
作者: 157673485    時間: 2019-6-4 21:05
在嗎?
作者: luo5028    時間: 2019-6-22 20:18
這里有pcb圖嗎
作者: mhunter    時間: 2019-6-23 10:52
好東西!學習!




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精品91久久 | 中文字幕在线二区 | 九九热免费视频在线观看 | 99精品欧美一区二区蜜桃免费 | 亚洲精品久久久久久久久久吃药 | 日韩 欧美 综合 | 成人水多啪啪片 | 天天操天天操 | 国产精品欧美一区二区 | 亚洲精品乱码8久久久久久日本 | 91精品国产高清一区二区三区 | 亚洲国产精品久久 | 91啪亚洲精品 | 日本三级在线视频 | 欧美日韩专区 | 99久久精品免费看国产四区 | 中文字幕一区二区视频 | 大陆一级毛片免费视频观看 | 免费成人在线网站 | 亚洲一区二区三区四区五区午夜 | 国产精品美女久久久久aⅴ国产馆 | 日韩一区二区在线视频 | 国产高清视频在线 | 中文字幕第九页 | 久草成人网 | 一级欧美 | av毛片免费 | 国产午夜精品福利 | 中文字幕免费视频 | 在线中文字幕国产 | 中文字幕在线观看一区 | 国产高清视频在线观看播放 | 国产精品久久久久婷婷二区次 | 在线中文字幕日韩 | 美女操网站 | 成人av观看 | 国产精品三级久久久久久电影 | 久久久亚洲一区 | 岛国精品| 狠狠躁躁夜夜躁波多野结依 | www.天天干.com |