第一范文网 - 专业文章范例文档资料分享平台

北邮嵌入式系统实验报告完整版 - 图文 

来源:用户分享 时间:2025/11/17 18:02:25 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

} */ }

return 0; }

? 实验结果:

if(R>=10000&&R<22500)buf[r]=0x07ef; if(R>=22500&&R<40000)buf[r]=0x001f; if(R>=40000&&R<62500)buf[r]=0xffe0; if(R>=62500&&R<90000)buf[r]=0x07ff; if(R>=90000&&R<122500)buf[r]=0xf81f; if(R>=122500&&R<=160000)buf[r]=0xffff;

ret=write(fd,buf,sizeof(buf)); getchar();

实验效果图

实验二十一

触摸屏数据采集与控制

? 实验目的:通过实验掌握触摸屏的设计与控制方法

? 实验内容:编程实现触摸屏到LCD坐标的校准以及坐标采集和计算

随着使用电脑作为信息来源的与日俱增,触摸屏以其易于使用、坚固耐用、反应速度快、节省空间等优点,使得系统设计师们越来越多的感到使用触摸屏的确具有相当大的优越性。通过此试验,我们学习了触摸屏原理,并通过编写测试程序验证了触摸屏的工作过程。学习它,掌握它是非常必要的。

2.应用程序实验

实验二十二

VGA显示实验

? 实验目的:了解VGA接口的标准和特点

? 实验内容:编程实现图像通过VGA接口在显示器上输出

通过本实验的操作,VGA设备成功启动,在液晶屏和显示器上可以看到完全同步的画面。由于两者格式和刷新频率的差别,实验中做了折中处理,可能显示效果没有达到最优。 实验二十三

Web服务器实验

? 实验目的:学习在PXA270开发板上的SOCKET网络编程 ? 实验内容:SOCKET进行通讯编程

学习使用socket 进行通讯编程的过程,了解一个实际的网络通讯应用程序整体设计,阅读HTTP协议的相关内容,学习几个重要的网络函数的使用方法。读懂HTTPD.C源代码。在此基础上增加一些其他功能。在宿主PC机上使用浏览器测试嵌入式WEB服务器的功能。

通过此实验,我们实现了嵌入式Web服务器的基本功能。 实验二十五

多线程应用实验

? 实验目的:学习PTHREAD 库函数的使用

? 实验内容:熟悉PTREAD库函数的使用,掌握共享锁和信号量的使用方法。 ? 作业要求:利用多线程技术实现键盘控制在LCD液晶屏上显示的可移动的图形。 ? 实验作业源码及注释:

#include #include #include #include \

#include // open() close() #include // read() write() #include

#define DEVICE_NAME \#define BUFFER_SIZE 16 struct prodcons {

int buffer[BUFFER_SIZE]; /* the actual data */

pthread_mutex_t lock; /* mutex ensuring exclusive access to buffer */

int readpos, writepos; /* positions for reading and writing */ pthread_cond_t notempty; /* signaled when buffer is not empty */ pthread_cond_t notfull; /* signaled when buffer is not full */ };

void init(struct prodcons * b) {

pthread_mutex_init(&b->lock, NULL); pthread_cond_init(&b->notempty, NULL); pthread_cond_init(&b->notfull, NULL); b->readpos = 0; b->writepos = 0; }

void put(struct prodcons * b, int data) { pthread_mutex_lock(&b->lock); while ((b->writepos + 1) % BUFFER_SIZE == b->readpos) {

printf(\

pthread_cond_wait(&b->notfull, &b->lock); }

b->buffer[b->writepos] = data; b->writepos++;

if (b->writepos >= BUFFER_SIZE) b->writepos = 0; pthread_cond_signal(&b->notempty); pthread_mutex_unlock(&b->lock); }

int get(struct prodcons * b) {

int data; pthread_mutex_lock(&b->lock);

while (b->writepos == b->readpos) { printf(\ pthread_cond_wait(&b->notempty, &b->lock); }

data = b->buffer[b->readpos]; b->readpos++;

if (b->readpos >= BUFFER_SIZE) b->readpos = 0; pthread_cond_signal(&b->notfull); pthread_mutex_unlock(&b->lock); return data; }

struct prodcons buffer; //键盘输入线程

void * producer(void * data) {

int fd; int ret; unsigned char buf[2] ; // int i; // double x; char pre_scancode = 0x44;

fd = open(\ // printf(\ if (fd == -1) { printf(\ }

else { buf[0]=0x22; while (1) { read (fd,buf,1); if(buf[0]!= pre_scancode)

{ if(buf[0]!=0x44) { printf(\ put(&buffer, buf[0]); } } pre_scancode = buf[0]; // sleep(1); usleep(50000); } // close ret = close(fd); // printf (\ // printf (\ } }

//LCD显示线程

void * consumer(void * data) {

int d; int ret; int fd; int i; int j; unsigned short buf[640*480];

fd = open(\ if (fd == -1) {

printf(\ } else { while(1) { d = get(&buffer); printf(\ for(i=0;i

} }

int main(void) {

pthread_t th_a, th_b; void * retval; init(&buffer);

pthread_create(&th_a, NULL, producer, 0); pthread_create(&th_b, NULL, consumer, 0); /* Wait until producer and consumer finish. */ pthread_join(th_a, &retval); pthread_join(th_b, &retval); return 0; }

? 实验结果:

实验效果图

北邮嵌入式系统实验报告完整版 - 图文 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9jy380wyta0cqsj0v4vg_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top