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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10044|回復: 11
打印 上一主題 下一主題
收起左側

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)


評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:344852 發表于 2018-6-4 17:55 | 只看該作者
好好借鑒學習一下,謝謝大佬
回復

使用道具 舉報

板凳
ID:345288 發表于 2018-6-5 11:33 | 只看該作者
謝謝大佬,很給力
回復

使用道具 舉報

地板
ID:262075 發表于 2018-6-19 20:00 | 只看該作者
非常給力,感謝分享
回復

使用道具 舉報

5#
ID:434132 發表于 2018-11-27 14:01 | 只看該作者
謝謝大佬
回復

使用道具 舉報

6#
ID:436231 發表于 2018-11-30 00:56 | 只看該作者
感謝大佬
回復

使用道具 舉報

7#
ID:428195 發表于 2018-12-19 10:09 | 只看該作者
學習一下
回復

使用道具 舉報

8#
ID:428195 發表于 2018-12-19 15:09 | 只看該作者
nice,頂一個
回復

使用道具 舉報

9#
ID:472917 發表于 2019-1-25 17:52 | 只看該作者
謝謝大佬
回復

使用道具 舉報

10#
ID:555069 發表于 2019-6-4 21:05 來自手機 | 只看該作者
在嗎?
回復

使用道具 舉報

11#
ID:568794 發表于 2019-6-22 20:18 | 只看該作者
這里有pcb圖嗎
回復

使用道具 舉報

12#
ID:467970 發表于 2019-6-23 10:52 | 只看該作者
好東西!學習!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲热在线视频 | 欧美国产视频一区二区 | 久久鲁视频 | 国产视频一区二区 | 亚洲美女在线一区 | 99精品视频一区二区三区 | 一级毛片免费看 | 美国一级片在线观看 | 国产一区二区影院 | 午夜视频免费在线 | 99re视频 | 欧美日韩国产在线观看 | 久久99精品久久久久久国产越南 | 精品久久久久久国产 | 中文字幕免费在线 | 国产精品欧美一区二区 | 天天玩天天操天天干 | 国产激情三区 | 成在线人视频免费视频 | 欧美一区二区三区在线视频 | 精品在线一区二区三区 | 国产一区在线免费观看视频 | 亚洲精品乱码 | 伊人久久精品一区二区三区 | 五月婷婷激情 | 精精国产xxxx视频在线野外 | 正在播放国产精品 | 亚洲一区二区三区视频 | 成年人视频在线免费观看 | 波波电影院一区二区三区 | 91 在线 | 国内av在线 | 国产精品毛片无码 | 亚洲精品在线免费看 | 在线国产小视频 | 日韩成人一区 | 国产99久久久国产精品 | 国产精品一区二 | 久久一区二区精品 | 日韩欧美国产精品一区二区三区 | 亚洲一区综合 |