日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

嵌入式软件设计第8次实验报告-140201235-陈宇

發(fā)布時(shí)間:2025/6/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式软件设计第8次实验报告-140201235-陈宇 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

嵌入式軟件設(shè)計(jì)第8次實(shí)驗(yàn)報(bào)告

?

學(xué)號(hào):140201235 ? ? ? ? ? ? ? ? ? 姓名:陳宇

組別:3????????????????實(shí)驗(yàn)地點(diǎn):D19

?

一、實(shí)驗(yàn)?zāi)康?#xff1a;

1.熟悉WWW技術(shù)中的CGI(公共網(wǎng)關(guān)接口)技術(shù)。

2.學(xué)會(huì)使用CGI技術(shù)編寫C語言代碼驅(qū)動(dòng)嵌入式開發(fā)板的LED燈和蜂鳴器。

二、實(shí)驗(yàn)內(nèi)容:

1.編寫代碼完成Web服務(wù)器端蜂鳴器的驅(qū)動(dòng)。

2.編寫代碼完成Web服務(wù)器端LED燈的驅(qū)動(dòng)。

?

三、實(shí)驗(yàn)過程描述:

1、實(shí)驗(yàn)原理

CGI技術(shù)簡(jiǎn)介:公共網(wǎng)關(guān)接口CGI(Common Gateway Interface)是WWW技術(shù)中最重要的技術(shù)之一。CGI是外部應(yīng)用程序與Web服務(wù)器之間的接口標(biāo)準(zhǔn),是在CGI程序和Web服務(wù)器之間傳遞信息的規(guī)程。CGI規(guī)范允許Web服務(wù)器執(zhí)行外部程序,并將它們的輸出發(fā)送給Web瀏覽器,CGI在物理上是一段程序,運(yùn)行在服務(wù)器上,提供同客戶端HTML頁面的接口。絕大多數(shù)的CGI程序被用來解釋處理來自表單的輸入信息,并在服務(wù)器產(chǎn)生相應(yīng)的處理,或?qū)⑾鄳?yīng)的信息反饋給瀏覽器,CGI程序使網(wǎng)頁具有交互功能。

?

LED及蜂鳴器管腳連接圖

從圖中可以看出:

PF9,PF10為低電平時(shí),LED0與LED1亮;

PF9,PF10為高電平時(shí),LED0與LED1滅。

PF8為高電平時(shí),蜂鳴器響;為低電平時(shí),蜂鳴器不響。

????2、設(shè)計(jì)流程圖:

?

?

3、程序代碼

(運(yùn)行代碼)

#include "sys.h"

#include <string.h>

#include "lwip_comm.h"

//LED燈端口和BEEP端口定義

#define LED1 PFout(10)

#define BEEP PFout(8)

void system_init(void);//系統(tǒng)初始化函數(shù)

//控制LED和BEEP的CGI handle;

const char* LEDS_CGI_Handler(int iIndex,\

int iNumParams,\

char *pcParam[],\

char * pcValue[]);

?

const char* BEEP_CGI_Handler(int iIndex,\

int iNumParams,\

char *pcParam[],\

char * pcValue[]);

?

//當(dāng)WEB客戶端請(qǐng)求瀏覽器的時(shí)候,此函數(shù)被CGI handle調(diào)用

extern int FindCGIParameter(const char *pcToFind,\

char *pcParam[],\

int iNumParams);

?

int main(void)

{

system_init();//系統(tǒng)初始化(總)

?

//以下代碼對(duì)蜂鳴器進(jìn)行初始化

{

GPIO_InitTypeDef GPIO_InitStructure;

?

//使能GPIOF管腳時(shí)鐘

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);

?

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//蜂鳴器管腳

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;//輸出模式

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//最大速度

GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽輸出

GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//電阻

GPIO_Init(GPIOF,&GPIO_InitStructure);//調(diào)用函數(shù)對(duì)管腳初始化

?

GPIO_ResetBits(GPIOF,GPIO_Pin_8);//PF8拉低

? ? ? ? ? ? ? ? ? ? ? ? ?

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;//輸出模式

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//最大速度

GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽輸出

GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉電阻

GPIO_Init(GPIOF,&GPIO_InitStructure);//調(diào)用函數(shù)對(duì)管腳初始化

?

GPIO_ResetBits(GPIOF,GPIO_Pin_10);//PF10拉低

?

}

?

while(1)

{

lwip_periodic_handle();//LWIP輪詢?nèi)蝿?wù)

?

}?

}

?

//BEEP的CGI控制句柄

const char* BEEP_CGI_Handler(int iIndex,\

int iNumParams,\

char *pcParam[],\

char * pcValue[])

{

unsigned char i=0;

//u8 i=0;

?

//找到BEEP的索引號(hào)

iIndex= FindCGIParameter("BEEP_TEST",pcParam,iNumParams);

if(iIndex !=-1)

{

BEEP = 0;

for(i=0;i<iNumParams;i++)

{

if(strcmp(pcParam[i],"BEEP_TEST")==0)//查找CGI

{

if(strcmp(pcValue[i],"BEEP_START")==0)

BEEP =1;//打開蜂鳴器

else if(strcmp(pcValue[i],"BEEP_STOP")==0)

BEEP =0;//關(guān)閉蜂鳴器÷

?

}

}

}

?

if(BEEP==1 && LED1==1) return "/BEEP_ON_LED_OFF.html";

else if(BEEP==1 && LED1==0) return "/BEEP_ON_LED_ON.html";

else if(BEEP==0 && LED1==1) return "/BEEP_OFF_LED_OFF.html";

else if(BEEP==0 && LED1==0) return "/BEEP_OFF_LED_ON.html";

else return "/index.html";

//return 0;

}

?

//LED的CGI控制句柄

const char* LEDS_CGI_Handler(int iIndex,\

int iNumParams,\

char *pcParam[],\

char * pcValue[])

{

unsigned char i=0;

//u8 i=0;

?

//找到LED的索引號(hào)

iIndex= FindCGIParameter("LED_TEST",pcParam,iNumParams);

if(iIndex !=-1)

{

LED1 = 0;

for(i=0;i<iNumParams;i++)

{

if(strcmp(pcParam[i],"LED_TEST")==0)//查找CGI

{

if(strcmp(pcValue[i],"LED_START")==0)

LED1 =0;//打開LED

else if(strcmp(pcValue[i],"LED_STOP")==0)

LED1 =1;//關(guān)閉LED

?

}

}

}

if(LED1==0 && BEEP==0) return "/BEEP_OFF_LED_ON.html";

else if(LED1==0 && BEEP==1) return "/BEEP_ON_LED_ON.html";

else if(LED1==1 && BEEP==0) return "/BEEP_OFF_LED_OFF.html";

else if(LED1==1 && BEEP==1) return "/BEEP_ON_LED_OFF.html";

else return "/index.html";

//return 0;

?

}

?

蜂鳴器不響?LED滅

<HTML>

<HEAD>

<TITLE>嵌入式Web服務(wù)器測(cè)試網(wǎng)頁</TITLE>

</HEAD>

<BODY>

<P>

<IMG src="./image/photo.jpg" alt="耿丹櫻花" align="right">

</P>

<H1 align="center">嵌入式Web服務(wù)器LED及BEEP測(cè)試</H1>

?

<DIV style="margin-top:1cm; text-align:center;">

<FORM method="get" action="./leds.cgi">

??LED:

?<input type="radio" name="LED_TEST" value="LED_START">ON

?<input type="radio" name="LED_TEST" value="LED_STOP" checked>OFF

<BR> <BR>

?<input type="submit" name="button1" value="SEND">

</FORM>

</DIV>

<DIV style="margin-top:3cm; text-align:center;">

<FORM method="get" action="./beep.cgi">

??BEEP:

<select name="BEEP_TEST" >

<option value="BEEP_START">ON

<option value="BEEP_STOP" selected = "selected">OFF

</select>

<BR> <BR>

?<input type="submit" name="button2" value="SEND">

</FORM>

</DIV>

</BODY>

</HTML>

?

蜂鳴器不響?LED亮

<HTML>

?

<HEAD>

<TITLE>嵌入式Web服務(wù)器測(cè)試網(wǎng)頁</TITLE>

</HEAD>

?

<BODY>

?

<P>

<IMG src="./image/photo.jpg" alt="耿丹櫻花" align="right">

</P>

?

?

<H1 align="center">嵌入式Web服務(wù)器LED及BEEP測(cè)試</H1>

?

<DIV style="margin-top:1cm; text-align:center;">

<FORM method="get" action="./leds.cgi">

??LED:

?<input type="radio" name="LED_TEST" value="LED_START" checked>ON

?<input type="radio" name="LED_TEST" value="LED_STOP">OFF

<BR> <BR>

?<input type="submit" name="button1" value="SEND">

</FORM>

</DIV>

?

?

<DIV style="margin-top:3cm; text-align:center;">

<FORM method="get" action="./beep.cgi">

??BEEP:

<select name="BEEP_TEST" >

<option value="BEEP_START">ON

<option value="BEEP_STOP" selected = "selected">OFF

</select>

<BR> <BR>

?<input type="submit" name="button2" value="SEND">

</FORM>

</DIV>

</BODY>

?

</HTML>

蜂鳴器響?LED滅

<HTML>

?

<HEAD>

<TITLE>嵌入式Web服務(wù)器測(cè)試網(wǎng)頁</TITLE>

</HEAD>

?

<BODY>

<P>

<IMG src="./image/photo.jpg" alt="耿丹櫻花" align="right">

</P>

?

?

<H1 align="center">嵌入式Web服務(wù)器LED及BEEP測(cè)試</H1>

?

<DIV style="margin-top:1cm; text-align:center;">

<FORM method="get" action="./leds.cgi">

??LED:

?<input type="radio" name="LED_TEST" value="LED_START" >ON

?<input type="radio" name="LED_TEST" value="LED_STOP" checked>OFF

<BR> <BR>

?<input type="submit" name="button1" value="SEND">

</FORM>

</DIV>

?

?

<DIV style="margin-top:3cm; text-align:center;">

<FORM method="get" action="./beep.cgi">

??BEEP:

<select name="BEEP_TEST" >

<option value="BEEP_START" selected = "selected">ON

<option value="BEEP_STOP">OFF

</select>

<BR> <BR>

?<input type="submit" name="button2" value="SEND">

</FORM>

</DIV>

</BODY>

?

</HTML>

?

蜂鳴器響?LED亮

<HTML>

<HEAD>

<TITLE>嵌入式Web服務(wù)器測(cè)試網(wǎng)頁</TITLE>

</HEAD>

<BODY>

<P>

<IMG src="./image/photo.jpg" alt="耿丹櫻花" align="right">

</P>

?

<H1 align="center">嵌入式Web服務(wù)器LED及BEEP測(cè)試</H1>

?

<DIV style="margin-top:1cm; text-align:center;">

<FORM method="get" action="./leds.cgi">

??LED:

?<input type="radio" name="LED_TEST" value="LED_START" checked>ON

?<input type="radio" name="LED_TEST" value="LED_STOP">OFF

<BR> <BR>

?<input type="submit" name="button1" value="SEND">

</FORM>

</DIV>

?

?

<DIV style="margin-top:3cm; text-align:center;">

<FORM method="get" action="./beep.cgi">

??BEEP:

<select name="BEEP_TEST" >

<option value="BEEP_START" selected = "selected">ON

<option value="BEEP_STOP" >OFF

</select>

<BR> <BR>

?<input type="submit" name="button2" value="SEND">

</FORM>

</DIV>

</BODY>

?

</HTML>

?

四、總結(jié)及實(shí)驗(yàn)心得:

? ? ?這節(jié)課的任務(wù)是在第7次的實(shí)驗(yàn)基礎(chǔ)上,增加一個(gè)蜂鳴器和LED燈。采用CGI(公共網(wǎng)關(guān)接口)技術(shù),使用CGI技術(shù)編寫C語言代碼驅(qū)動(dòng)嵌入式開發(fā)板的LED燈和蜂鳴器。首先是跟著老師編寫代碼完成蜂鳴器的實(shí)驗(yàn),之后配置電腦的IP,編譯代碼嵌入開發(fā)板中,從而顯示效果。LED燈的實(shí)驗(yàn)在蜂鳴器的基礎(chǔ)上編寫代碼,也很快的完成。

轉(zhuǎn)載于:https://www.cnblogs.com/gdcy/p/6581569.html

總結(jié)

以上是生活随笔為你收集整理的嵌入式软件设计第8次实验报告-140201235-陈宇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。