精华内容
下载资源
问答
  • 嵌入式实验报告

    2018-11-21 15:29:29
    实验报告 一、 小组成员 江剑豪 孙玉祥 张峻玮 二、 实验内容 1.LED发光二极管实验; 2.串口收发数据实验; 3.按键控制实验; 三、 实验环境 硬件:通用节点或任意传感器节点一个、USB仿真器、USB电缆、PC机; ...

    实验报告
    一、 小组成员 江剑豪 孙玉祥 张峻玮

    二、 实验内容
    1.LED发光二极管实验;
    2.串口收发数据实验;
    3.按键控制实验;

    三、 实验环境

    1. 硬件:通用节点或任意传感器节点一个、USB仿真器、USB电缆、PC机;
    2. 软件:IAR Embedded Workbench for MCS-51、串口调试工具;

    四、 实验目的

    1. 熟悉Zigbee硬件模块相关接口;
    2. 使用IAR 开发环境设计程序,利用CC2530 的串口0 进行数据收发通讯;利用CC2530 的GPIO读取按键值并相应对进行LED发光二极管的亮灭操作;利用CC2530 的IO口进行LED发光二极管的亮灭操作;

    五、 实验步骤
    1.LED发光二极管
    1-1.使用USB 仿真器连接PC 机和通用节点模块,模块电源开关处于中间“OFF”档,使用仿真器给模块供电。
    1-2.启动IAR 开发环境,打开“…\基础传感器实验\1-5基础例程\1-LED”目录下的实验工程。
    1-3.在IAR 开发环境中编译程序、调试程序。按“F7”使程序运行,观察现象,可以看到发光二极管轮流亮起。
    1-4.使用调试界面上的go按钮 (等同“F5”),观察现象。
    1-5.修改程序,使led灯按奇偶顺序依次亮灭。
    #include <ioCC2530.h>
    #define D_COUNT 50 //通用延时时间计数
    /***************************************
    延时函数,n为延时周期计数
    /
    void Delay(unsigned int n)
    {
    unsigned int t,tt;
    for(tt=0;tt<n;tt++)
    for(t=0;t<1000;t++)
    ;
    }
    /

    程序主函数
    ***************************************/
    void main( void )
    {
    unsigned int i;
    P0DIR = 0xff; //设置P0口全部为输出
    P1DIR = 0xff; //设置P1口全部为输出
    P0 = 0xff; //点亮所有灯
    P1 = 0xff;
    Delay(D_COUNT);Delay(D_COUNT);Delay(D_COUNT);
    P0 = 0; //熄灭所有灯
    P1 = 0;
    Delay(D_COUNT);Delay(D_COUNT);Delay(D_COUNT);
    while(1)
    {
    for(i=0;i<8;i++)
    {
    P0 = 0x01<<i; //P0的第i位为1,其它位为0
    //P1_0 ^= 1; //P1.0取反
    Delay(D_COUNT); //设置IO状态后需要一个延时来让我们看到效果
    }
    P0 = 0;
    for(i=0;i<8;i++)
    {
    P1 = 0x01<<i; //P1的第i位为1,其它位为0
    //P0_0 ^= 1; //P0.0取反
    Delay(D_COUNT); //设置IO状态后需要一个延时来让我们看到效果
    }
    P1 = 0;
    }
    }

    2.串口数据收发
    2-1. 使用USB 仿真器连接PC 机和ZIGBEE模块。将系统配套USB线一端连接PC 机,一端连接ZIGBEE模块的MINI-USB接口上。
    2-2连接USB电缆时,需要安装USB转串口的驱动程序,在“…\基础传感器实验\1-5基础例程\2-串口”目录下运行程序“CH341SER.EXE”安装驱动。
    2-3.启动IAR 开发环境,打开“…\基础传感器实验\1-5基础例程\2-串口”目录下的实验工程。
    2-4.在IAR 开发环境中编译程序、调试程序。按“F7”使程序运行。
    2-5.打开“…\基础传感器实验\1-5基础例程\2-串口”目录下的串口调试程序“串口调试程序(支持中文).EXE”。按照下图设置这几项:串口号选择刚刚在设备管理器中记下的串口号;波特率选择“115200”;点击右下角的发送数据按钮,可以看到接受文本框中显示接受到同样的数据。
    2-6.更换发送文本框“字符串输入框”中的内容,点击发送按钮。可以看到相同的字符串又被返回。
    #include “ioCC2530.h”
    #include <string.h>
    #define uint unsigned int
    #define uchar unsigned char
    //定义控制灯的端口
    #define led1 P1_0
    #define led2 P1_1
    void InitIO(void); //IO初始化
    void InitUart(void); //串口初始化
    void SendString(char*string,uint legth); //发送字符串
    uchar temp; // 存放接受的数据
    char wch[] = “Welcome to test this program!\n”;
    /*****************************************************************************
    功能描述: 延时
    Count: 延时单位数量
    /
    void DelayXms(unsigned int Count)
    {
    unsigned int i;
    unsigned int j;
    for(i = 0; i < Count; i++)
    {
    for( j=10000; j>0; j–);
    }
    }
    /

    功能描述: IO初始化
    *****************************************************************************/
    void InitIO(void)
    {
    SLEEPCMD &= ~0X04;
    CLKCONCMD = 0X10; //32k和32M时钟使用外部晶体,timer分频8M
    while(CLKCONSTA!=0X10); //等待时钟切换
    SLEEPCMD = 0X04;

    P2DIR = 0x00;              //高两位零   若设则最高优先USART0
    P1DIR|= 0X03;              //P1.0 P1.1 LEDs 灯端口配置
    P0DIR|= 0X00;              //input
    
    PERCFG = 0x00;              //UART0 默认端口
    P1SEL = 0X00;
    

    P0SEL = 0X0c; //P0<3:2>设置成外围应用

    }
    /*****************************************************************************
    功能描述: 串口初始化
    /
    void InitUart(void)
    {
    U0CSR |= 0x80; //UART方式
    U0GCR = 11; //baud_e 波特率设为115200
    U0BAUD |= 216; //baud_m = BaudRate*2^(28-buad_e)/32M-256
    //BaudRate=(256+baud_m)/2^(28-buad_e)x32MHz
    UTX0IF = 1; //接收中断标记
    U0CSR |= 0X40; //允许接收
    URX0IE = 1; //接收中断使能
    EA =1; //总中断开关打开
    }
    /

    功能描述: 串口发送字符串
    string: 字符串指针
    lenth: 长度
    */
    void SendString(char*string,uint lenth)
    {
    uint j;
    for (j=0; j<lenth; j++)
    {
    U0DBUF = string++; //将要发送字符送入U0DBUF发送寄存器
    while(UTX0IF == 0); //等待发送完成
    UTX0IF = 0; //清0标志位
    }
    }
    /

    功能描述: 主函数
    *****************************************************************************/
    void main(void)
    {
    InitIO();
    InitUart();
    DelayXms(10);

    led1=1;                         //点亮2个LED灯
    led2=1;
    SendString(wch,sizeof(wch));
    
    while(1)
    {
      ; //进入无限循环等待中断函数被处触发
    }
    

    }
    /*****************************************************************************
    功能描述: 串口中断函数
    *****************************************************************************/
    #pragma vector = URX0_VECTOR
    __interrupt void UART0_ISR(void)
    {
    URX0IF = 0; //清中断标志
    temp = U0DBUF;
    U0DBUF = temp; //将收到的字符发送回去
    while(UTX0IF == 0); //等待发送
    UTX0IF = 0; //清发送标志
    led1 = ~led1; //指示中断活动
    led2 = ~led2;
    }

    3.按键控制
    3-1.使用USB 仿真器连接PC 机和任意一个传感器节点模块,模块电源开关处于“ON”档,使用电池给模块供电(如电池电量低插上USB电缆,可一边充电一边使用)。
    3-2.启动IAR 开发环境,打开“…\基础传感器实验\1-5基础例程\3-按键控制”目录下的实验工程。
    3-3.在IAR 开发环境中编译程序、调试程序。按“F7”使程序运行。
    3-4.观察现象,可以看到2个发光二极管都没有亮起。
    3-5.按下模块中间的“KEY”按键,观察2个发光二极管的状态。
    3-6.重复按键操作,尝试长按或短按,观察发光二极管状态。修改程序中的延时数值(下图中红点行)后再重复上面操作,体会不同延时下的效果。
    #include <ioCC2530.h>
    #define D_COUNT 50 //标准延时周期计数
    #define KEY_INPUT P2_0 //定义按键引脚
    /*****************************************************************************
    功能描述: 延时
    Count: 延时单位数量
    /
    void Delay(unsigned int n)
    {
    unsigned int t,tt;
    for(tt=0;tt<n;tt++)
    for(t=0;t<1000;t++)
    ;
    }
    /

    功能描述: 主函数
    *****************************************************************************/
    void main( void )
    {
    unsigned int i;
    P0DIR = 0x00; //P0口全部为输入
    P1DIR = 0x03; //P1口低2位输出,其他输入
    P1 = 0;
    Delay(D_COUNT);Delay(D_COUNT);Delay(D_COUNT);
    while(1)
    {
    if(!KEY_INPUT) //判断按键是否按下
    {
    i++;
    P1 = i&0x03; //P1低2位赋值为i的低2位
    Delay(100); //延时,加长2次判断间隔
    }
    Delay(10);
    }
    }

    六、 实验结果

    1. LED灯按顺序亮灭;LED灯按奇偶数码顺序亮灭
    2. 显示出welcome to test this problem;显示出hello 你好!hello 我好!hello 大家好!
    3. 0代表灯灭,1代表灯亮,按一下key键后灯按照00、01、10、11顺序显示
      七、 实验反思
      对函数理解不清导致进度缓慢。
    展开全文
  • 嵌入式LED实验报告

    2013-07-03 16:45:55
    嵌入式应用开发的指导,Embest S3CEV40开发板是实验系统的主要硬件平台,它是英蓓特公司开发的一款全功能ARM开发板,基Samsung公司的S3C44B0X处理器(ARM7TDMI),资源丰富。硬件系统包含了嵌入式系统开发应用所需的...
  • 嵌入式软件设计第10次实验报告 学号:140201110姓名:王涵 组别:第4组实验地点:D19 一、实验目的: 1、了解GSM模块SIM900A的使用方法。 2、掌握使用串口发送AT命令驱动SIM900A的 方法。 二、实验内容:...

    嵌入式软件设计第10次实验报告

     

    学号:140201110             姓名:王涵

    组别:第4组                实验地点:D19

     

    一、实验目的:

    1、了解GSM模块SIM900A的使用方法。

    2、掌握使用串口发送AT命令驱动SIM900A的

       方法。

    二、实验内容:

    1.使用AT命令进行模块测试,拨打固定电话。

    2.编写程序利用触摸屏完成任意电话的呼叫。

    三、实验过程描述及结果展示:

    实验器材:STM32F407开发板、LCD显示屏

    1、实验原理

    SIM900A跳线帽连接方式:

     

    长按PWR_KEY键后网络状态指示灯对应的状态:

     

    2、常用AT指令_准备工作:

     

    3、常用AT命令_拨打电话

     

    4、程序代码

    #include "sys.h"

    #include "delay.h" 

    #include "usart.h"  

    #include "led.h"

    #include "lcd.h"

    #include "key.h" 

    #include "touch.h"

    #include "text.h"

    #include "w25qxx.h"

    #include "malloc.h"

    #include "ff.h"

    #include "exfuns.h" 

     

    const u16 POINT_COLOR_TBL[OTT_MAX_TOUCH]={RED,GREEN,BLUE,BROWN,GRED}; 

     

    unsigned char Dialling[12];

    char number[20] = "";

    u8 iscalling=0;

    int i,j;

     

    //

    void sendtext(char *p){

           while(*p!='\0'){

                  USART_SendData(USART3,*p);

                  delay_ms(50);

                  p++;

           }

           USART_SendData(USART3,0x0D);

           delay_ms(50);

           USART_SendData(USART3,0x0A);

    }

     

    //²¦ºÅ

    void call(){

           char text[40]="ATD";//¶¨ÒåÎı¾

           strcat(text,number);

           strcat(text,";");

    //     printf("%s",text);

           sendtext(text);//·¢ËÍÎı¾

          

           POINT_COLOR=YELLOW;

           for(i=180;i<=300;i++)//bohao

                  for(j=690;j<=750;j++)

                         LCD_DrawPoint(i,j);

           POINT_COLOR=BLUE;

           Show_Str(215,710,300,150,"¹Ò¶Ï",24,1);

           iscalling=1;

    }

     

    void hangup(){

           char text[40]="ATH";

           sendtext(text);

           number[0]='\0';

          

           POINT_COLOR=YELLOW;

           for(i=180;i<=300;i++)//bohao

                  for(j=690;j<=750;j++)

                         LCD_DrawPoint(i,j);

           POINT_COLOR=BLUE;

           Show_Str(215,710,300,150,"²¦ºÅ",24,1);

           iscalling=0;

           POINT_COLOR=YELLOW;       

           for(i=200;i<=400;i++)

                  for(j=90;j<=140;j++)

                         LCD_DrawPoint(i,j);

    }

     

     

     

    int main(void)

    {

           int i,j;

           delay_init(168);  //³õʼ»¯ÑÓʱº¯Êý

           uart_init(115200);         //³õʼ»¯´®¿Ú²¨ÌØÂÊΪ115200

           uart3_init(115200);

          

          LCD_Init();                                //LCD³õʼ»¯

           tp_dev.init();                 //´¥ÃþÆÁ³õʼ»¯

          

           LCD_Clear(BLACK);

          POINT_COLOR=YELLOW;//ÉèÖÃ×ÖÌåΪ»ÆÉ«

           BACK_COLOR = BLACK;

          

           POINT_COLOR=WHITE;

           Show_Str(100,100,300,150,"ºÅÂëÇø£º",24,1);

           //

           POINT_COLOR=YELLOW;       

           for(i=200;i<=400;i++)

                  for(j=90;j<=140;j++)

                         LCD_DrawPoint(i,j);

           //

           for(i=210;i<=270;i++)//5

                  for(j=370;j<=430;j++)

                         LCD_DrawPoint(i,j);

           for(i=210;i<=270;i++)//2

                  for(j=270;j<=330;j++)

                         LCD_DrawPoint(i,j);

           for(i=210;i<=270;i++)//8

                  for(j=470;j<=530;j++)

                         LCD_DrawPoint(i,j);

           for(i=110;i<=170;i++)//1

                  for(j=270;j<=330;j++)

                         LCD_DrawPoint(i,j);

           for(i=310;i<=370;i++)//3

                  for(j=270;j<=330;j++)

                         LCD_DrawPoint(i,j);

           for(i=110;i<=170;i++)//4

                  for(j=370;j<=430;j++)

                         LCD_DrawPoint(i,j);

           for(i=310;i<=370;i++)//6

                  for(j=370;j<=430;j++)

                         LCD_DrawPoint(i,j);

           for(i=110;i<=170;i++)//7

                  for(j=470;j<=530;j++)

                         LCD_DrawPoint(i,j);

           for(i=310;i<=370;i++)//9

                  for(j=470;j<=530;j++)

                         LCD_DrawPoint(i,j);

           for(i=110;i<=170;i++)//*

                  for(j=570;j<=630;j++)

                         LCD_DrawPoint(i,j);

           for(i=210;i<=270;i++)//0

                  for(j=570;j<=630;j++)

                         LCD_DrawPoint(i,j);

           for(i=310;i<=370;i++)//#

                  for(j=570;j<=630;j++)

                         LCD_DrawPoint(i,j);

           for(i=180;i<=300;i++)//bohao

                  for(j=690;j<=750;j++)

                         LCD_DrawPoint(i,j);

           POINT_COLOR=BLUE;

           Show_Str(215,710,300,150,"²¦ºÅ",24,1);

           BACK_COLOR = BLACK;

           LCD_ShowString(135,290,200,100,24,"1");//1

           LCD_ShowString(235,290,200,100,24,"2");//2

           LCD_ShowString(335,290,200,100,24,"3");//3

           LCD_ShowString(135,390,200,100,24,"4");//4

           LCD_ShowString(235,390,200,100,24,"5");//5

           LCD_ShowString(335,390,200,100,24,"6");//6

           LCD_ShowString(135,490,200,100,24,"7");//7

           LCD_ShowString(235,490,200,100,24,"8");//8

           LCD_ShowString(335,490,200,100,24,"9");//9

           LCD_ShowString(135,590,200,100,24,"*");//*

           LCD_ShowString(235,590,200,100,24,"0");//0

           LCD_ShowString(335,590,200,100,24,"#");//#

          

     

           //ÊäºÅÂë

           while(1){

                  POINT_COLOR=BLUE;      

                  tp_dev.scan(0);//

                  if(tp_dev.x[0]>110&&tp_dev.y[0]>270&&tp_dev.x[0]<170&&tp_dev.y[0]<330){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"1");//Ìí¼ÓºÅÂë

                         LCD_ShowString(200,100,336,24,24,number);//ÏÔʾºÅÂë

                        

                  }

                  if(tp_dev.x[0]>210&&tp_dev.y[0]>270&&tp_dev.x[0]<270&&tp_dev.y[0]<330){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"2");

                         LCD_ShowString(200,100,336,24,24,number);

                  }

                  if(tp_dev.x[0]>310&&tp_dev.y[0]>270&&tp_dev.x[0]<370&&tp_dev.y[0]<330){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"3");

                         LCD_ShowString(200,100,336,24,24,number);

                 

                  }

                  if(tp_dev.x[0]>110&&tp_dev.y[0]>370&&tp_dev.x[0]<170&&tp_dev.y[0]<430){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"4");

                         LCD_ShowString(200,100,336,24,24,number);

                        

                  }

                  if(tp_dev.x[0]>210&&tp_dev.y[0]>370&&tp_dev.x[0]<270&&tp_dev.y[0]<430){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"5");

                         LCD_ShowString(200,100,336,24,24,number);

                        

                  }

                  if(tp_dev.x[0]>310&&tp_dev.y[0]>370&&tp_dev.x[0]<370&&tp_dev.y[0]<430){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"6");

                         LCD_ShowString(200,100,336,24,24,number);

                        

                  }

                  if(tp_dev.x[0]>110&&tp_dev.y[0]>470&&tp_dev.x[0]<170&&tp_dev.y[0]<530){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"7");

                         LCD_ShowString(200,100,336,24,24,number);

                        

                  }

                  if(tp_dev.x[0]>210&&tp_dev.y[0]>470&&tp_dev.x[0]<270&&tp_dev.y[0]<530){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"8");

                         LCD_ShowString(200,100,336,24,24,number);

                        

                  }

                  if(tp_dev.x[0]>310&&tp_dev.y[0]>470&&tp_dev.x[0]<370&&tp_dev.y[0]<530){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"9");

                         LCD_ShowString(200,100,336,24,24,number);

                 

                  }

                  if(tp_dev.x[0]>110&&tp_dev.y[0]>570&&tp_dev.x[0]<170&&tp_dev.y[0]<630){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"*");

                         LCD_ShowString(200,100,336,24,24,number);

                 

                  }

                  if(tp_dev.x[0]>210&&tp_dev.y[0]>570&&tp_dev.x[0]<270&&tp_dev.y[0]<630){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"0");

                  LCD_ShowString(200,100,336,24,24,number);

                 

                  }

                  if(tp_dev.x[0]>310&&tp_dev.y[0]>570&&tp_dev.x[0]<370&&tp_dev.y[0]<630){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"#");

                         LCD_ShowString(200,100,336,24,24,number);

                 

                  }

                 

                 

                  if(tp_dev.x[0]>180&&tp_dev.y[0]>690&&tp_dev.x[0]<300&&tp_dev.y[0]<750){

                         if(iscalling){

                                hangup();

                         }else{

                                call();

                         }

                         while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

                  }

                 

                  delay_ms(5);

                  tp_dev.x[0] = 0xFFFF;

                  tp_dev.y[0] = 0xFFFF;        

                 

           }

     

     

    }

    四、总结及实验心得:

    这次课学习的是嵌入式移动通信平台设计,了解了GSM模块STM900A的使用方法,还掌握了实用串口发送AT命令驱动STM900A的方法。还有一些常用AT指令的用法。还实现了使用AT命令进行模块测试,拨打电话。编写程序利用触摸板完成任意电话的呼叫完成的不是很好,只做出了触摸屏设计,没有实现拨打电话,感觉还需要再努力。

    转载于:https://www.cnblogs.com/wanghan321321/p/6627076.html

    展开全文
  • 嵌入式软件设计第十次实验报告 学号:140201112 姓名:孙佳文 组别:第3组 实验地点:D19 一、实验目的: 1、了解GSM模块SIM900A的使用方法。 2、掌握使用串口发送AT命令驱动SIM900A的 方法。 二、实验内容...

    嵌入式软件设计第十次实验报告

    学号:140201112          姓名:孙佳文

    组别:第3组                  实验地点:D19

     

    一、实验目的:

    1、了解GSM模块SIM900A的使用方法。

    2、掌握使用串口发送AT命令驱动SIM900A的

       方法。

    二、实验内容:

    1.使用AT命令进行模块测试,拨打固定电话。

    2.编写程序利用触摸屏完成任意电话的呼叫。

    三、实验过程描述及结果展示:

    实验器材:STM32F407开发板、LCD显示屏

    1、实验原理

    SIM900A跳线帽连接方式:

    长按PWR_KEY键后网络状态指示灯对应的状态:

    2、常用AT指令_准备工作:

    3、常用AT命令_拨打电话

    4、程序代码

    #include "sys.h"
    #include "delay.h" 
    #include "usart.h" 
    #include "led.h"
    #include "lcd.h"
    #include "key.h" 
    #include "touch.h" 
    #include "text.h"
    #include "w25qxx.h" 
    #include "malloc.h" 
    #include "ff.h" 
    #include "exfuns.h"

    const u16 POINT_COLOR_TBL[OTT_MAX_TOUCH]={RED,GREEN,BLUE,BROWN,GRED};

    unsigned char Dialling[12];
    char number[20] = "";
    u8 iscalling=0;
    void addnumbutton(u16 x,u16 y,u8 *p){
    LCD_Fill(x,y,x+60,y+60,BROWN);
    POINT_COLOR=BLACK;
    BACK_COLOR = BROWN;
    LCD_ShowString(x+24,y+18,24,24,24,p);
    }

    void sendtext(char *p){
    while(*p!='\0'){
    USART_SendData(USART3,*p);
    delay_ms(50);
    p++;
    }
    USART_SendData(USART3,0x0D);
    delay_ms(50);
    USART_SendData(USART3,0x0A);
    }


    void call(){
    char text[40]="ATD";
    strcat(text,number);
    strcat(text,";");
    printf("%s",text);
    sendtext(text);
    LCD_Fill(120,40,460,66,BROWN);
    LCD_Fill(122,42,458,64,BLACK);
    //number="CALLING";
    LCD_ShowString(122,42,336,24,24,"CALLING");
    LCD_Fill(60,600,420,680,BROWN);
    POINT_COLOR=BLACK;
    BACK_COLOR = BROWN;
    LCD_ShowString(204,626,96,144,24,"HANGUP");
    iscalling=1;
    }

    void hangup(){
    char text[40]="ATH";
    sendtext(text);
    LCD_Fill(120,40,460,66,BROWN);
    LCD_Fill(122,42,458,64,BLACK);
    number[0]='\0';
    LCD_Fill(60,600,420,680,BROWN);
    POINT_COLOR=BLACK;
    BACK_COLOR = BROWN;
    LCD_ShowString(216,626,96,24,24,"CALL");
    iscalling=0;
    }

    int main(void)

    delay_init(168); //初始化延时函数
    uart_init(115200); //初始化串口波特率为115200
    uart3_init(115200);
    sendtext("AT+CPIN?");
    LCD_Init(); //LCD初始化 
    tp_dev.init(); //触摸屏初始化

    LCD_Clear(BLACK);
    POINT_COLOR=YELLOW;
    BACK_COLOR = BLACK;

    LCD_ShowString(30,40,210,24,24,"NUMBER:");
    LCD_Fill(120,40,460,66,BROWN);
    LCD_Fill(122,42,458,64,BLACK);

    addnumbutton(60,120,"1");
    addnumbutton(210,120,"2");
    addnumbutton(360,120,"3");

    addnumbutton(60,240,"4");
    addnumbutton(210,240,"5");
    addnumbutton(360,240,"6");

    addnumbutton(60,360,"7");
    addnumbutton(210,360,"8");
    addnumbutton(360,360,"9");

    addnumbutton(60,480,"*");
    addnumbutton(210,480,"0");
    addnumbutton(360,480,"#");

    LCD_Fill(60,600,420,680,BROWN);
    POINT_COLOR=BLACK;
    BACK_COLOR = BROWN;
    LCD_ShowString(216,626,96,24,24,"CALL");

    while(1){
    tp_dev.scan(0);
    if(tp_dev.x[0]>60&&tp_dev.y[0]>120&&tp_dev.x[0]<120&&tp_dev.y[0]<180){
    strcat(number,"1");
    LCD_ShowString(122,42,336,24,24,number);
    while(tp_dev.x[0]!=65535){tp_dev.scan(0);}
    }
    if(tp_dev.x[0]>210&&tp_dev.y[0]>120&&tp_dev.x[0]<270&&tp_dev.y[0]<180){
    strcat(number,"2");
    LCD_ShowString(122,42,336,24,24,number);
    while(tp_dev.x[0]!=65535){tp_dev.scan(0);}
    }
    if(tp_dev.x[0]>360&&tp_dev.y[0]>120&&tp_dev.x[0]<420&&tp_dev.y[0]<180){
    strcat(number,"3");
    LCD_ShowString(122,42,336,24,24,number);
    while(tp_dev.x[0]!=65535){tp_dev.scan(0);}
    }
    if(tp_dev.x[0]>60&&tp_dev.y[0]>240&&tp_dev.x[0]<120&&tp_dev.y[0]<300){
    strcat(number,"4");
    LCD_ShowString(122,42,336,24,24,number);
    while(tp_dev.x[0]!=65535){tp_dev.scan(0);}
    }
    if(tp_dev.x[0]>210&&tp_dev.y[0]>240&&tp_dev.x[0]<270&&tp_dev.y[0]<300){
    strcat(number,"5");
    LCD_ShowString(122,42,336,24,24,number);
    while(tp_dev.x[0]!=65535){tp_dev.scan(0);}
    }
    if(tp_dev.x[0]>360&&tp_dev.y[0]>240&&tp_dev.x[0]<420&&tp_dev.y[0]<300){
    strcat(number,"6");
    LCD_ShowString(122,42,336,24,24,number);
    while(tp_dev.x[0]!=65535){tp_dev.scan(0);}
    }
    if(tp_dev.x[0]>60&&tp_dev.y[0]>360&&tp_dev.x[0]<120&&tp_dev.y[0]<420){
    strcat(number,"7");
    LCD_ShowString(122,42,336,24,24,number);
    while(tp_dev.x[0]!=65535){tp_dev.scan(0);}
    }
    if(tp_dev.x[0]>210&&tp_dev.y[0]>360&&tp_dev.x[0]<270&&tp_dev.y[0]<420){
    strcat(number,"8");
    LCD_ShowString(122,42,336,24,24,number);
    while(tp_dev.x[0]!=65535){tp_dev.scan(0);}
    }
    if(tp_dev.x[0]>360&&tp_dev.y[0]>360&&tp_dev.x[0]<420&&tp_dev.y[0]<420){
    strcat(number,"9");
    LCD_ShowString(122,42,336,24,24,number);
    while(tp_dev.x[0]!=65535){tp_dev.scan(0);}
    }
    if(tp_dev.x[0]>60&&tp_dev.y[0]>480&&tp_dev.x[0]<120&&tp_dev.y[0]<540){
    strcat(number,"*");
    LCD_ShowString(122,42,336,24,24,number);
    while(tp_dev.x[0]!=65535){tp_dev.scan(0);}
    }
    if(tp_dev.x[0]>210&&tp_dev.y[0]>480&&tp_dev.x[0]<270&&tp_dev.y[0]<540){
    strcat(number,"0");
    LCD_ShowString(122,42,336,24,24,number);
    while(tp_dev.x[0]!=65535){tp_dev.scan(0);}
    }
    if(tp_dev.x[0]>360&&tp_dev.y[0]>480&&tp_dev.x[0]<420&&tp_dev.y[0]<540){
    strcat(number,"#");
    LCD_ShowString(122,42,336,24,24,number);
    while(tp_dev.x[0]!=65535){tp_dev.scan(0);}
    }


    if(tp_dev.x[0]>60&&tp_dev.y[0]>600&&tp_dev.x[0]<420&&tp_dev.y[0]<680){
    if(iscalling){
    hangup();
    }else{
    call();
    }
    while(tp_dev.x[0]!=65535){tp_dev.scan(0);}
    }

    delay_ms(5);
    }
    }

     

    实验结果展示:

     

    四、总结及实验心得:

      这节课做的东西比之前做的都有意思,也都有用得多。是在插入手机卡后,通过代码实现在电脑上输入手机号后,可以把号码拨出去。在老师带着我们实现了这个功能后,便又布置了新的任务,让拨打页面在屏幕上显示出来,并且通过点击屏幕来实现打电话功能。怎么说呢,虽然一起讨论了很久、研究了很久,但最后也没有实现拨打功能,虽然如此,我们倒是把拨号布局做得挺不错的。继续努力吧

    转载于:https://www.cnblogs.com/sunjiawen/p/6624713.html

    展开全文
  • 嵌入式软件设计第10次实验报告 学号:142021234姓名:王凯 组别:第4组实验地点:D19 一、实验目的: 1、了解GSM模块SIM900A的使用方法。 2、掌握使用串口发送AT命令驱动SIM900A的 方法。 二、实验内容...

    嵌入式软件设计第10次实验报告

     

    学号:142021234               姓名:王凯

    组别:第4组                实验地点:D19

     

    一、实验目的:

    1、了解GSM模块SIM900A的使用方法。

    2、掌握使用串口发送AT命令驱动SIM900A的

       方法。

    二、实验内容:

    1.使用AT命令进行模块测试,拨打固定电话。

    2.编写程序利用触摸屏完成任意电话的呼叫。

    三、实验过程描述及结果展示:

    实验器材:STM32F407开发板、LCD显示屏

    1、实验原理

    SIM900A跳线帽连接方式:

     

    长按PWR_KEY键后网络状态指示灯对应的状态:

     

    2、常用AT指令_准备工作:

     

    3、常用AT命令_拨打电话

     

    4、程序代码

    #include "sys.h"

    #include "delay.h" 

    #include "usart.h"  

    #include "led.h"

    #include "lcd.h"

    #include "key.h" 

    #include "touch.h"

    #include "text.h"

    #include "w25qxx.h"

    #include "malloc.h"

    #include "ff.h"

    #include "exfuns.h" 

     

    const u16 POINT_COLOR_TBL[OTT_MAX_TOUCH]={RED,GREEN,BLUE,BROWN,GRED}; 

     

    unsigned char Dialling[12];

    char number[20] = "";

    u8 iscalling=0;

    int i,j;

     

    //

    void sendtext(char *p){

           while(*p!='\0'){

                  USART_SendData(USART3,*p);

                  delay_ms(50);

                  p++;

           }

           USART_SendData(USART3,0x0D);

           delay_ms(50);

           USART_SendData(USART3,0x0A);

    }

     

    //²¦ºÅ

    void call(){

           char text[40]="ATD";//¶¨ÒåÎı¾

           strcat(text,number);

           strcat(text,";");

    //     printf("%s",text);

           sendtext(text);//·¢ËÍÎı¾

          

           POINT_COLOR=YELLOW;

           for(i=180;i<=300;i++)//bohao

                  for(j=690;j<=750;j++)

                         LCD_DrawPoint(i,j);

           POINT_COLOR=BLUE;

           Show_Str(215,710,300,150,"¹Ò¶Ï",24,1);

           iscalling=1;

    }

     

    void hangup(){

           char text[40]="ATH";

           sendtext(text);

           number[0]='\0';

          

           POINT_COLOR=YELLOW;

           for(i=180;i<=300;i++)//bohao

                  for(j=690;j<=750;j++)

                         LCD_DrawPoint(i,j);

           POINT_COLOR=BLUE;

           Show_Str(215,710,300,150,"²¦ºÅ",24,1);

           iscalling=0;

           POINT_COLOR=YELLOW;       

           for(i=200;i<=400;i++)

                  for(j=90;j<=140;j++)

                         LCD_DrawPoint(i,j);

    }

     

     

     

    int main(void)

    {

           int i,j;

           delay_init(168);  //³õʼ»¯ÑÓʱº¯Êý

           uart_init(115200);         //³õʼ»¯´®¿Ú²¨ÌØÂÊΪ115200

           uart3_init(115200);

          

          LCD_Init();                                //LCD³õʼ»¯

           tp_dev.init();                 //´¥ÃþÆÁ³õʼ»¯

          

           LCD_Clear(BLACK);

          POINT_COLOR=YELLOW;//ÉèÖÃ×ÖÌåΪ»ÆÉ«

           BACK_COLOR = BLACK;

          

           POINT_COLOR=WHITE;

           Show_Str(100,100,300,150,"ºÅÂëÇø£º",24,1);

           //

           POINT_COLOR=YELLOW;       

           for(i=200;i<=400;i++)

                  for(j=90;j<=140;j++)

                         LCD_DrawPoint(i,j);

           //

           for(i=210;i<=270;i++)//5

                  for(j=370;j<=430;j++)

                         LCD_DrawPoint(i,j);

           for(i=210;i<=270;i++)//2

                  for(j=270;j<=330;j++)

                         LCD_DrawPoint(i,j);

           for(i=210;i<=270;i++)//8

                  for(j=470;j<=530;j++)

                         LCD_DrawPoint(i,j);

           for(i=110;i<=170;i++)//1

                  for(j=270;j<=330;j++)

                         LCD_DrawPoint(i,j);

           for(i=310;i<=370;i++)//3

                  for(j=270;j<=330;j++)

                         LCD_DrawPoint(i,j);

           for(i=110;i<=170;i++)//4

                  for(j=370;j<=430;j++)

                         LCD_DrawPoint(i,j);

           for(i=310;i<=370;i++)//6

                  for(j=370;j<=430;j++)

                         LCD_DrawPoint(i,j);

           for(i=110;i<=170;i++)//7

                  for(j=470;j<=530;j++)

                         LCD_DrawPoint(i,j);

           for(i=310;i<=370;i++)//9

                  for(j=470;j<=530;j++)

                         LCD_DrawPoint(i,j);

           for(i=110;i<=170;i++)//*

                  for(j=570;j<=630;j++)

                         LCD_DrawPoint(i,j);

           for(i=210;i<=270;i++)//0

                  for(j=570;j<=630;j++)

                         LCD_DrawPoint(i,j);

           for(i=310;i<=370;i++)//#

                  for(j=570;j<=630;j++)

                         LCD_DrawPoint(i,j);

           for(i=180;i<=300;i++)//bohao

                  for(j=690;j<=750;j++)

                         LCD_DrawPoint(i,j);

           POINT_COLOR=BLUE;

           Show_Str(215,710,300,150,"²¦ºÅ",24,1);

           BACK_COLOR = BLACK;

           LCD_ShowString(135,290,200,100,24,"1");//1

           LCD_ShowString(235,290,200,100,24,"2");//2

           LCD_ShowString(335,290,200,100,24,"3");//3

           LCD_ShowString(135,390,200,100,24,"4");//4

           LCD_ShowString(235,390,200,100,24,"5");//5

           LCD_ShowString(335,390,200,100,24,"6");//6

           LCD_ShowString(135,490,200,100,24,"7");//7

           LCD_ShowString(235,490,200,100,24,"8");//8

           LCD_ShowString(335,490,200,100,24,"9");//9

           LCD_ShowString(135,590,200,100,24,"*");//*

           LCD_ShowString(235,590,200,100,24,"0");//0

           LCD_ShowString(335,590,200,100,24,"#");//#

          

     

           //ÊäºÅÂë

           while(1){

                  POINT_COLOR=BLUE;      

                  tp_dev.scan(0);//

                  if(tp_dev.x[0]>110&&tp_dev.y[0]>270&&tp_dev.x[0]<170&&tp_dev.y[0]<330){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"1");//Ìí¼ÓºÅÂë

                         LCD_ShowString(200,100,336,24,24,number);//ÏÔʾºÅÂë

                        

                  }

                  if(tp_dev.x[0]>210&&tp_dev.y[0]>270&&tp_dev.x[0]<270&&tp_dev.y[0]<330){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"2");

                         LCD_ShowString(200,100,336,24,24,number);

                  }

                  if(tp_dev.x[0]>310&&tp_dev.y[0]>270&&tp_dev.x[0]<370&&tp_dev.y[0]<330){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"3");

                         LCD_ShowString(200,100,336,24,24,number);

                 

                  }

                  if(tp_dev.x[0]>110&&tp_dev.y[0]>370&&tp_dev.x[0]<170&&tp_dev.y[0]<430){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"4");

                         LCD_ShowString(200,100,336,24,24,number);

                        

                  }

                  if(tp_dev.x[0]>210&&tp_dev.y[0]>370&&tp_dev.x[0]<270&&tp_dev.y[0]<430){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"5");

                         LCD_ShowString(200,100,336,24,24,number);

                        

                  }

                  if(tp_dev.x[0]>310&&tp_dev.y[0]>370&&tp_dev.x[0]<370&&tp_dev.y[0]<430){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"6");

                         LCD_ShowString(200,100,336,24,24,number);

                        

                  }

                  if(tp_dev.x[0]>110&&tp_dev.y[0]>470&&tp_dev.x[0]<170&&tp_dev.y[0]<530){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"7");

                         LCD_ShowString(200,100,336,24,24,number);

                        

                  }

                  if(tp_dev.x[0]>210&&tp_dev.y[0]>470&&tp_dev.x[0]<270&&tp_dev.y[0]<530){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"8");

                         LCD_ShowString(200,100,336,24,24,number);

                        

                  }

                  if(tp_dev.x[0]>310&&tp_dev.y[0]>470&&tp_dev.x[0]<370&&tp_dev.y[0]<530){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"9");

                         LCD_ShowString(200,100,336,24,24,number);

                 

                  }

                  if(tp_dev.x[0]>110&&tp_dev.y[0]>570&&tp_dev.x[0]<170&&tp_dev.y[0]<630){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"*");

                         LCD_ShowString(200,100,336,24,24,number);

                 

                  }

                  if(tp_dev.x[0]>210&&tp_dev.y[0]>570&&tp_dev.x[0]<270&&tp_dev.y[0]<630){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"0");

                  LCD_ShowString(200,100,336,24,24,number);

                 

                  }

                  if(tp_dev.x[0]>310&&tp_dev.y[0]>570&&tp_dev.x[0]<370&&tp_dev.y[0]<630){

                         while((tp_dev.sta & 0x80) == 0x80)

                                {tp_dev.scan(0);}

                         strcat(number,"#");

                         LCD_ShowString(200,100,336,24,24,number);

                 

                  }

                 

                 

                  if(tp_dev.x[0]>180&&tp_dev.y[0]>690&&tp_dev.x[0]<300&&tp_dev.y[0]<750){

                         if(iscalling){

                                hangup();

                         }else{

                                call();

                         }

                         while(tp_dev.x[0]!=65535){tp_dev.scan(0);}

                  }

                 

                  delay_ms(5);

                  tp_dev.x[0] = 0xFFFF;

                  tp_dev.y[0] = 0xFFFF;        

                 

           }

     

     

    }

    四、总结及实验心得:

    本次课程是对GSM模块SIM900A的使用方法,作为一个完全不知道什么的我来说,又是一个全新的知识,实验前老师对实验的讲解非常的重要,我也是想往常一样认真地听着,生怕无法完成本次的实验,而使用串口发送AT命令驱动SIM900A的方法我也在这节课掌握了些许。在以后的课程中应该更加努力,争取学到更多的知识。

     

    转载于:https://www.cnblogs.com/kaikaiwang/p/6623844.html

    展开全文
  • 学号:140201236 姓名:沈樟伟 ...2、掌握使用串口发送AT命令驱动SIM900A的方法。 二、实验内容: 1.使用AT命令进行模块测试,拨打固定电话。 2.编写程序利用触摸屏完成任意电话的呼叫。 三、实验过程描述及结果...
  • 学号:140201133 姓名:...2、掌握使用串口发送AT命令驱动SIM900A的方法。 二、实验内容: 1.使用AT命令进行模块测试,拨打固定电话。 2.编写程序利用触摸屏完成任意电话的呼叫。 三、实验过程描述及结果展...
  • 嵌入式软件设计第十次实验报告 学号:140201235 姓名:陈宇 组别:第3组 实验地点:D19 一、实验目的: 1、了解GSM模块SIM900A的使用方法。 2、掌握使用串口发送AT命令驱动SIM900A的 方法。 二、实验内容:...
  • MDK及Proteus用法、NVIC与外部中断、STM32的12C和SPI实验、STM32定时器应用实验、STM32的ADC实验、STM32的串口实验、STM32综合实验;包括实验指导书、实验报告和程序原理图、实验软件安装一件套,实验报告也是完整的
  • (2)给Blink程序加入printf,在每次定时器事件触发点亮LED的同时通过串口显示信息 (3)修改BLink程序,只使用一个Timer,三个LED灯作为3位的二进制数表示(亮灯为1,不亮为0),按照0-7的顺序循环显示,同时将...
  • 此文档为学习嵌入式是学习STM32方面的知识时,使用了GPIO,外部中断EXTI,串口通信UART这三个外设应用,来实现流水灯(GPIO),蜂鸣器(GPIO),串口通信(UART),按键...在校大学生可参考此模板写课设实验报告
  • 嵌入式第10次实验

    2017-03-27 00:35:00
    嵌入式软件设计第10次实验报告 学号:140201229 姓名:何丹 组别:第4组 实验地点:D19 一、实验目的: 1、了解GSM模块SIM900A的使用方法。 2、掌握使用串口发送AT命令驱动SIM900A的 方法。 二、实验...
  • 基于STM32的串口通信与温度测量实验

    千次阅读 2019-02-17 20:15:18
    上学期的嵌入式系统课程实验报告,参考老师给的实验指导书自己写的实验报告,比较详细,分享一下~ 实验目标 通过 ADC 采集内部温度传感器通道电压,然后得出 MCU 内部温度。 使用串口调试助手实现 Nucleo board 与...
  • 嵌入式第十次

    2017-03-26 22:46:00
    嵌入式软件设计第10次实验报告 学号:140201213 姓名:崔浩 组别:第6组 实验地点:D19 一、实验目的: 1、了解GSM模块SIM900A的使用方法。 2、掌握使用串口发送AT命令驱动SIM900A的方法。 二、实验内容: ...
  • 学员在中科院学习期间独立完成制作ARM开发板、开发触摸屏驱动等36个嵌入式专题实验项目,1-3个大型项目。其他实验项目如:智能机器人等可在结业后完成。 教学周期:10个月,其中第一学期3个月,第二学期5个月,课程...
  • 实验

    2017-03-22 10:00:00
    嵌入式软件设计第10次实验报告 学号:120201109 姓名:陈瑶 组别:第4组 实验地点:D19 一、实验目的: 1、了解GSM模块SIM900A的使用方法。 2、掌握使用串口发送AT命令驱动SIM900A的 方法。 二、实验...
  • 2.6 实验报告要求...................................................................................................51 2.7 思考题..........................................................................
  • 这是嵌入式老师布置的一个作业,这个是实验报告,本来属于硬件,但因为用到了回归算法和梯度下降算法,也小小算是机器学习的一份子了,所以也发出来,纪念一下,毕竟辛苦了至少两天。 一、实验目的 通过实验进一步...
  • 0519、第三届“飞思卡尔”杯全国大学生北京科技大学光电一队技术报告.rar 0520、电感线圈的简易制作.rar 0521、电工基础-重要.rar 0522、电机控制专用集成电路+(PDF格式).rar 0523、电压电阻转换模块.rar 0524、...
  • 电子设计.doc

    2019-05-28 11:58:28
    0132、单片机-485-PC串口通信proteus仿真+程序资料 0133、单片机 交通灯设计论文资料 0134、单片机串行口与PC机通讯资料 0135、单片机串行通信发射机论文资料 0136、单片机定时闹钟论文资料 0137、单片机红外遥控...

空空如也

空空如也

1 2
收藏数 32
精华内容 12
关键字:

串口实验报告嵌入式