找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1979|回复: 0
收起左侧

蓝桥杯CT117E STM32测试源程序

[复制链接]
ID:365810 发表于 2018-7-5 19:03 | 显示全部楼层 |阅读模式
“蓝桥杯”使用的CT117E嵌入式。
0.png

单片机源程序如下:
  1. /******************** (C) COPYRIGHT 2009 STMicroelectronics ********************
  2. * File Name          : main.c
  3. * Author             : MCD Application Team
  4. * Version            : V3.0.0
  5. * Date               : 04/06/2009
  6. * Description        : Virtual Com Port Demo main file
  7. ********************************************************************************
  8. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  9. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
  10. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  11. * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
  12. * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
  13. * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  14. *******************************************************************************/

  15. /* Includes ------------------------------------------------------------------*/
  16. #include "stm32f10x.h"
  17. #include "stdio.h"

  18. #include "main.h"
  19. #include "lcd.h"
  20. #include "i2c.h"
  21. #include "adc_single.h"
  22. #include "usart.h"
  23. #include "stdlib.h"

  24. #define COL(X) (319-(X)*16+16)

  25. /* Private typedef -----------------------------------------------------------*/
  26. /* Private define ------------------------------------------------------------*/
  27. /* Private macro -------------------------------------------------------------*/
  28. /* Private variables ---------------------------------------------------------*/
  29. static __IO uint32_t TimingDelay;
  30. extern USART_TypeDef* USARTx;
  31. extern vu16 dummy;  //LCD型号定位
  32. void Delay_Ms(__IO uint32_t nTime);

  33. /* Extern variables ----------------------------------------------------------*/
  34. /* Private function prototypes -----------------------------------------------*/
  35. /* Private functions ---------------------------------------------------------*/
  36. /**
  37.   * @}
  38.   */
  39. void RCC_Configuration(void)
  40. {
  41.   /* GPIOA Periph clock enable */
  42.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  43.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  44.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  45.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
  46.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

  47. //  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
  48. }

  49. /**
  50.   * @}
  51.   */
  52. void GPIO_Configuration(void)
  53. {
  54.   GPIO_InitTypeDef GPIO_InitStructure;

  55.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  56.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_2  ;
  57.   GPIO_Init(GPIOD, &GPIO_InitStructure);
  58.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4  ;
  59.   GPIO_Init(GPIOB, &GPIO_InitStructure);

  60.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 |
  61.                                                                            GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15  ;
  62.   GPIO_Init(GPIOC, &GPIO_InitStructure);

  63.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_1 | GPIO_Pin_4 |
  64.                                                                            GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7   ;
  65.   GPIO_Init(GPIOA, &GPIO_InitStructure);


  66.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  67.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_8;
  68.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  69.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;
  70.   GPIO_Init(GPIOB, &GPIO_InitStructure);

  71. }

  72. //void NVIC_Configuration(void)
  73. //{
  74. //  NVIC_InitTypeDef NVIC_InitStructure;
  75. //  
  76. //#ifdef  VECT_TAB_RAM  
  77. //  /* Set the Vector Table base location at 0x20000000 */
  78. //  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
  79. //#else  /* VECT_TAB_FLASH  */
  80. //  /* Set the Vector Table base location at 0x08000000 */
  81. //  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
  82. //#endif
  83. //
  84. //  /* Configure one bit for preemption priority */
  85. //  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  86. //  
  87. //  /* Enable the EXTI9_5 Interrupt */
  88. //  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
  89. //  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  90. //  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  91. //  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  92. //  NVIC_Init(&NVIC_InitStructure);
  93. //}

  94. //void delay()
  95. //{
  96. //        unsigned int i,j;
  97. //        for (i = 0;i<0xffff;++i)
  98. //                for(j=0;j<0x7f;++j);
  99. //}

  100. /*******************************************************************************
  101. * Function Name  : main.
  102. * Description    : Main routine.                                                                                                                                 
  103. * Input          : None.
  104. * Output         : None.
  105. * Return         : None.
  106. *******************************************************************************/
  107. int main(void)
  108. {
  109.         int n;
  110. //  unsigned short Pin;
  111.         unsigned char lcd_type[4];  //保存LCD型号的数组
  112.         unsigned char bai,shi,ge;
  113.         float ad_value;
  114.         int toggle;

  115.         RCC_Configuration();
  116.         GPIO_Configuration();

  117.                                                         GPIO_PinRemapConfig ( GPIO_Remap_SWJ_NoJTRST ,ENABLE);  

  118. //  NVIC_Configuration();
  119.         i2c_init();
  120.         adc_init();
  121.         usart_init();

  122.         if (SysTick_Config(SystemCoreClock / 1000))
  123.         {
  124.         /* Capture error */
  125.                 while (1);
  126.         }   

  127.     n=x24c02_read(0xff);
  128.         Delay_Ms(10);
  129.         ++n;
  130.         x24c02_write(0xff,n);
  131.         
  132.         bai = n/100;
  133.         shi = (n-bai*100) / 10;                //ADC数值的十号准备情况参考这些数值  Capture error
  134.         ge = n % 10;                                //ADC数值的个位准备情况参考这些数值  Capture error准备情况

  135.     STM3210B_LCD_Init();
  136.     LCD_Clear(Blue);
  137.     LCD_SetBackColor(Red);

  138.     /* Set the LCD Text Color */
  139.     LCD_SetTextColor(Grey);

  140.         lcd_type[0] = (dummy>>12)+'0';
  141.         lcd_type[1] = ((dummy&0x0f00)>>8)+'0';
  142.         lcd_type[2] = ((dummy&0x00f0)>>4)+'0';
  143.         lcd_type[3] = (dummy&0x000f)+ '0';
  144.          
  145.     LCD_DisplayStringLine(Line0, "                    ");
  146.     LCD_DisplayStringLine(Line1, "    Welcome to      ");
  147.     LCD_DisplayStringLine(Line2, "                    ");

  148.     LCD_SetBackColor(Green);
  149. //        LCD_SetTextColor(Grey);

  150.     LCD_DisplayStringLine(Line4, "        GXCT        ");
  151.     LCD_DisplayStringLine(Line3, "                    ");
  152.     LCD_DisplayStringLine(Line5, "                    ");


  153.     LCD_SetBackColor(Blue);
  154. //        LCD_SetTextColor(Grey);

  155.     LCD_DisplayStringLine(Line6, "                    ");
  156.         LCD_DisplayStringLine(Line7, "   LCD TYPE:        ");
  157.         LCD_SetTextColor(Yellow);
  158.         LCD_DisplayChar(Line7,COL(13),lcd_type[0]);
  159.         LCD_DisplayChar(Line7,COL(14),lcd_type[1]);
  160.         LCD_DisplayChar(Line7,COL(15),lcd_type[2]);
  161.         LCD_DisplayChar(Line7,COL(16),lcd_type[3]);

  162.     LCD_DisplayStringLine(Line8, "                    ");
  163.     LCD_DisplayStringLine(Line9, "                    ");

  164.         LCD_SetTextColor(Green);        
  165.         LCD_DisplayChar(Line9,COL(19),ge+'0');
  166.         if ( n > 9 ) LCD_DisplayChar(Line9,COL(18),shi+'0');  
  167.         if ( n > 99 ) LCD_DisplayChar(Line9,COL(17),bai+'0');  
  168.         LCD_SetTextColor(Grey);

  169.         GPIO_Write(GPIOC,0xffff);
  170.         GPIO_SetBits(GPIOD,GPIO_Pin_2);
  171.         GPIO_ResetBits(GPIOD,GPIO_Pin_2);

  172.         while(1) {

  173.                 if ( GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == RESET ) {
  174. //                        Pin=GPIO_Pin_8 | GPIO_Pin_12;
  175.                         GPIO_Write(GPIOC,0xfcff);
  176.                         GPIO_SetBits(GPIOD,GPIO_Pin_2);
  177.                         GPIO_ResetBits(GPIOD,GPIO_Pin_2);
  178.                 } else if  ( GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8) == RESET ) {
  179. //                        Pin=GPIO_Pin_9 | GPIO_Pin_13;
  180.                         GPIO_Write(GPIOC,0xf3ff);
  181.                         GPIO_SetBits(GPIOD,GPIO_Pin_2);
  182.                         GPIO_ResetBits(GPIOD,GPIO_Pin_2);
  183.                 } else if  ( GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == RESET ) {
  184. //                        Pin=GPIO_Pin_10 | GPIO_Pin_14;
  185.                         GPIO_Write(GPIOC,0xcfff);
  186.                         GPIO_SetBits(GPIOD,GPIO_Pin_2);
  187.                         GPIO_ResetBits(GPIOD,GPIO_Pin_2);
  188.                 } else if  ( GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2) == RESET ) {
  189. //                        Pin=GPIO_Pin_11 | GPIO_Pin_15;
  190.                         GPIO_Write(GPIOC,0x3fff);
  191.                         GPIO_SetBits(GPIOD,GPIO_Pin_2);
  192.                         GPIO_ResetBits(GPIOD,GPIO_Pin_2);
  193.                 }


  194.                 if  ( GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2) == RESET ) {
  195.                         GPIO_ResetBits(GPIOB,GPIO_Pin_4);
  196.                 } else {
  197.                         GPIO_SetBits(GPIOB,GPIO_Pin_4);
  198.                 }

  199. //                Pin=GPIO_Pin_8;
  200. //                for ( i=0;i<8;++i) {
  201. //                        GPIO_SetBits(GPIOD,GPIO_Pin_2);
  202. //                        GPIO_Write(GPIOC,Pin);
  203. //                        GPIO_ResetBits(GPIOD,GPIO_Pin_2);

  204. //                        delay();
  205. //                        Pin<<=1;
  206. //                }

  207.                 ad_value= adc_read();
  208.                 ge=ad_value;
  209.                 shi=(int)(ad_value*10)%10;
  210.                 bai= (int)(ad_value*100)%10;
  211.                 LCD_SetTextColor(Red);
  212.                  LCD_DisplayChar(Line9,COL(2),ge+'0');
  213.                  LCD_DisplayChar(Line9,COL(3),'.');
  214.                 LCD_DisplayChar(Line9,COL(4),shi+'0');  
  215.                 LCD_DisplayChar(Line9,COL(5),bai+'0');  

  216.                    USARTx = USART2;
  217.                 if( (n=USART_getch()) != -1 ) {
  218.                         LCD_DisplayChar(Line8,COL(12),n);  
  219.                         printf("USART2 Echo: %f\r\n",rand()*25./RAND_MAX);
  220.                         
  221. //                        printf("USART2 Echo: %c\r\n",n);
  222.                 }
  223.                    USARTx = USART1;
  224.                 if( (n=USART_getch()) != -1 ) {
  225.                         LCD_DisplayChar(Line8,COL(9),n);
  226.                         printf("USART1 Echo: %c\r\n",n);
  227.                 }

  228.                 toggle = ! toggle;
  229.                 if ( toggle ) {
  230.                         GPIO_SetBits(GPIOA,GPIO_Pin_1);
  231.                         GPIO_SetBits(GPIOA,GPIO_Pin_4);
  232.                         GPIO_SetBits(GPIOA,GPIO_Pin_5);
  233.                         GPIO_SetBits(GPIOA,GPIO_Pin_6);
  234.                         GPIO_SetBits(GPIOA,GPIO_Pin_7);
  235.                 }else{
  236.                         GPIO_ResetBits(GPIOA,GPIO_Pin_1);
  237.                         GPIO_ResetBits(GPIOA,GPIO_Pin_4);
  238.                         GPIO_ResetBits(GPIOA,GPIO_Pin_5);
  239.                         GPIO_ResetBits(GPIOA,GPIO_Pin_6);
  240.                         GPIO_ResetBits(GPIOA,GPIO_Pin_7);
  241.                 }
  242.         }
  243. }        


  244. void Delay_Ms(__IO uint32_t nTime)
  245. {
  246.   TimingDelay = nTime;

  247. ……………………

  248. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
CT117E-测试程序.zip (2.52 MB, 下载次数: 15)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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