当前位置:文档之家› 基于S3C2440的串口传输及界面设计

基于S3C2440的串口传输及界面设计

基于S3C2440的串口传输及界面设计
基于S3C2440的串口传输及界面设计

一、设计课题:

基于S3C2410的设备驱动及其界面设计

二、设计目的:

1、进一步巩固嵌入式系统的基本知识;

2、掌握嵌入式应用系统的基本结构;

3、掌握嵌入式系统开发环境建立和使用;

4、掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法;

5、学会查阅有关专业资料及设计手册;

6、MiniGUI界面编程。

三、设计任务及要求:

1、掌握嵌入式系统开发环境建立和使用;

2、掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法;

3、MiniGUI在PC上的安装、移植

4、Linux基本输入输出驱动程序设计编译与移植

5、基于MiniGUI的基本输入输出应用编程编译与移植

6、编写设计说明书(方案的确定、设计环节的考虑及必要说明等)及设备的使用说明;

7、绘制有关图纸.

四、设计内容:

1、MiniGUI在X86上安装和运行

1.1、准备工作

①建立工作目录:mkdir /minigui-free

cd /minigui-free

mkdir /src

②复制源文件到工作目录:cp /media/disk/src/* ./

cp /mnt/hgfs/linux/src/* /minigui-free

③解压文件:tar zxvf libminigui-1.6.10.tar.gz

tar zxvf minigui-res-1.6.10.tar.gz

tar zxvf mg-samples-1.6.10.tar.gz

1.2、MiniGUI库安装

①进入目录:cd libminigui-1.6.10/

②配置:./configure

在x86上运行只需默认配置即可,配置完成后即可生成Makefile

③编译:make

成功后即可生成必要的库文件等。

④安装:make install

在x86上安装库文件。

5.把libminigui加入库搜索路径:

进入/etc/ld.so.conf.d建一个minigui.conf,写上/usr/local/lib

可以使用命令完成:

[root@fedora7]#echo /usr/local/lib > /etc/ld.so.conf.d/minigui.conf

(如果你使用的不是fedora7可能没有/etc/ld.so.conf.d这个目录,只有一个

/etc/ld.so.conf,不过作用是一样的,在这个文件末尾加上/usr/local/lib)

(4)最后要把系统共享库缓存刷新,将libminigui加载上,可以使用命令[root@fedora7]#ldconfig

这个命令执行时要花十多秒,耐心等待。当然不使用刷新命令重启系统也可以。

1.3、MiniGUI资源安装

①进入目录:cd minigui-res-1.6.10/

②安装:make install

必要资源文件的复制安装等操作。

1.4、MiniGUI例子编译

①进入目录:cd mg-samples-1.6.10/

②./configure

③编译:make

编译src目录下的例子程序,用于验证MiniGUI是否安装成功。

即可在src目录下生成可执行文件

1.5、安装qvfb

使用qt的qvfb

cd qvfb 1.1

./configure

make

make install

apt-get install qt3-dev-tools-embedded

1.6、配置MiniGUI.cfg

vi /usr/local/etc/MiniGUI.cfg 修改如下部分为

[system]

# GAL engine and default options

gal_engine=qvfb

defaultmode=800x480-16bpp

# IAL engine

ial_engine=qvfb

mdev=/dev/input/mice

mtype=IMPS2

[fbcon]

defaultmode=800x480-16bpp

[qvfb]

defaultmode=800x480-16bpp

display=0

1.6、运行MiniGUI例子程序

①打开qvfb:qvfb -width 800 -height 480 &

②运行helloword:

src/helloworld

出现此窗口说明运行成功。

1.7、问题

①错误1:

InitGUI: Can not initialize colors of window element!

InitGUI failure when using /usr/local/etc/MiniGUI.cfg as cfg file.

解决方法:正确配置MiniGUI.cfg文件

②错误2:

Permission denied

解决方法:权限不够,使用root用户登录。

③错误3:

编译出错未找到jpeg,png等

解决方法:安装zlib,png,jpeg库。

④错误4:

⑤错误5:

出现符号未找到等编译错误

解决方法:make clean 后在make

2、控制面板界面编程

1.建立新的zc.c文件,在makefile.am文档里添加zc.source=zc.c

2.重新命名helloworld.c文件,将程序写进去,并在/minigui-free/mg-samples-1.6.10目录下执行./configure;再执行make命令。

①选用对话框方式编程,结构DLGTEMPLATE用来定义对话框本身,结构CTRLDATA用来定义控件。

static DLGTEMPLATE DlgYourTaste =

{

WS_BORDER | WS_CAPTION,

WS_EX_NONE,

0, 0, 720, 480,

"Contrl",

0, 0,

8, NULL,

};

分别对对话框属性进行定义。

static CTRLDATA CtrlYourTaste[] =

{

{

"button",

WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, B1_X, B_Y, B_W, B_H,

IDC_LED1,

"LED1",

},

…………………………等等

};

在此结构中定义控件,其中包括4个按钮用来控制LED,3个静态文本框用来显示提示消息,不允许用户更改,1个编辑框用来输入频率。部分代码省略。

②主函数操作:打开设备获得文件描述符,函数连接等。

led_fd=open("/dev/led",O_RDONLY);

if(led_fd<0)

{

perror("open led error!");

exit(1);

}

DlgYourTaste.controls = CtrlYourTaste;

DialogBoxIndirectParam (&DlgYourTaste, HWND_DESKTOP, DialogBoxProc, 0L);

③回调函数:包括对话框回调函数、文本框回调函数。

static void my_notif_proc (HWND hwnd, int id, int nc, DWORD add_data) {

if (id == IDC_EDIT && nc == EN_CHANGE)

{

}

}

static int DialogBoxProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam) {

switch (message)

{

case MSG_INITDIALOG:

{

}

return 1;

case MSG_PAINT:

{

}

return 1;

case MSG_TIMER:

{

}

case MSG_COMMAND:

switch (wParam)

{

}

break;

case MSG_CLOSE:

break;

}

return DefaultDialogProc (hDlg, message, wParam, lParam); }

使用的几个消息:

MSG_INITDIALOG: 建立对话框和控件之后,发送到回调函数的

MSG_PAINT: 窗口重绘时发送到窗口过程。

MSG_TIMER:timer专用。

MSG_COMMAND:传递wParam参数。

MSG_CLOSE:关闭时发送。

文本框回调函数用于频率的获取。

④自定义函数:实现绘图功能。

static void draw_circle_s(HWND hDlg,int x,int which)

{

HDC hdc;

int color;

color = ( (which==0) ? PIXEL_blue : PIXEL_red );

hdc=BeginPaint(hDlg);

SetBrushColor(hdc,color);

FillCircle(hdc,x,100,25);

EndPaint(hDlg,hdc);

}根据传递的参数绘制不同颜色的圆。

⑤必须深刻理解消息回调机制,每一个消息产生各自的动作。

3、驱动程序设计

3.1 LED驱动

通过不同的参数实现不同LED的亮灭情况即可。

static int eduk4_led_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)

{

unsigned char status = 0xff;

switch(cmd) {

case 0:

case 1:

if (arg > 4) {

return -EINVAL;

}

status = inb(LED_BASE);

if(0 == cmd){

status &= ~(0x1 << arg);

}else if(1 == cmd){

status |= (0x1 << arg);

}

outb(status, LED_BASE);

return 0;

default:

return -EINVAL;

}

}

3.2键盘驱动

首先必须实现键值的读取,使用基本的行列扫描法。为提高驱动效率使用到了系统定时器,FIFO,队列,阻塞读取等。

为了和IAL结合,必须在驱动中实现状态信息的传递,使用1bit表示如1表示弹

起,0表示按下。

实现方法:当上一次键值和当前键值相等时表示一直按着回一直放开。当上一次键值比当前键值小时表示按下,直接返回键值,当上一次键值比当前键值大时表示松开按键,键值最高为置1后返回。

具体见代码。

3.3驱动编译

必须先编译开发板所使用的linux内核,生成模块后才能,编译驱动,具体步骤如下:

make zImage

make modules

驱动最好写个Makefile文件,来编译。

然后make

4、IAL移植

主要完成INPUT结构体的填充。

input->update_mouse = NULL;

input->get_mouse_xy = NULL;

input->set_mouse_xy = NULL;

input->get_mouse_button = NULL;

input->set_mouse_range = NULL;

input->update_keyboard = keyboard_update;

input->get_keyboard_state = keyboard_get_state;

input->suspend_keyboard = NULL;

input->resume_keyboard = NULL;

input->set_leds = NULL;

input->wait_event = wait_event;

只需实现keyboard的相关函数即可,mouse设备不需实现。

keyboard_update函数实现state [NR_KEYS]数组的更新,使之映射为MiniGUI所提供的键盘定义。

static int keyboard_update(void)

{

char *statinfo;

int status;

int key;

statinfo=(btn_state & KEY_RELEASED) ? "UP":"DOWN";

status = (btn_state & KEY_RELEASED) ? 0 : 1 ;

key=btn_state & KEY_NUM;

switch(key)

{

case 0:state[SCANCODE_0]=status;break;

case 1:state[SCANCODE_1]=status;break;

case 2:state[SCANCODE_2]=status;break;

case 3:state[SCANCODE_3]=status;break;

case 4:state[SCANCODE_4]=status;break;

}

return NR_KEYS;

} key即为去掉按键状态信息的键值。SCANCODE_x为系统提供的键值,status为状态信息。通过switch实现数组的更新。

static const char * keyboard_get_state(void)

{

return (char *)state;

}直接返回数组地址。

wait_event函数是输入引擎的核心,使用select系统调用检查是否有可读取的数据,当可用是读取(e>0)。

Init2410Input是IAL的入口函数实现设备文件的打开和input结构的初始化,还有一些必要的初始化。

Term2410Input函数实现设备文件关闭和资源释放等。

5、MiniGUI在ARM开发板上运行

5.1、MiniGUI库安装

①进入目录:cd libminigui-1.6.10/

②配置:首先make clean,去除x86上的目标文件

修改configure.in 启用SMDK IAL的编译选项build_smdk2410_ial_engine="yes"

./configure --host=arm-linux \

--enable-pngsupport=no \

--enable-gifsupport=no \

--prefix=/minigui-free/nfsroot

③编译:make

成功后即可生成必要的库文件等。

④安装:make install

在/minigui-free/nfsroot上安装库文件。

5.2、MiniGUI资源安装

①进入目录:cd minigui-res-1.6.10/

②配置:修改config.linux

TOPDIR=/minigui-free/nfsroot

③安装:make install

在/minigui-free/nfsroot上安装资源文件。

5.3、MiniGUI界面程序编译

①进入目录:cd mg-samples-1.6.10/ 复制界面程序到src目录下可替换其中的

一个例子程序或在src目录下修改Makefile.am添加源文件。

②配置:首先make clean

然后

./configure --build=i686-pc-linux-gnu --host=arm-linux --prefix=/minigui-free/nfsroot/ LDFLAGS=-L/minigui-free/nfsroot/lib CPPFLAGS=-I/minigui-free/nfsroot/include

CFLAGS=-I/minigui-free/nfsroot/include

③编译:make

src目录下生成可执行文件,使用file edit 出现ARM字样,即说明可运行于arm处理器上

5.4、界面程序运行

拷贝交叉编译后的库文件,资源文件,配置文件,和可执行程序到arm开发板上,

并修改配置文件。然后运行程序。根据出现的文件反复修改和调试。

五、设计总结:

虽然只有短短的2周时间,但是经过我们的努力,还是顺利完成了老师布置的实习任务。过程中进行中还是遇到了许多的问题,通过老师,同学,网络的帮助,最终解决了一个个的问题,因此收获也是蛮多的。回想起从对MiniGUI的懵懂,到学会设计简单的应用程序是何等的开心。俗话说:技不压身。多学一些知识总是对自己的发展有帮助的。

对于这个嵌入式的开发流程,软件开发方法,我们都有了切实的感受,不再是理论

课上那干瘪瘪的论述了。在软件编译过程中最为棘手的问题,我觉得就是链接库的问题,每一个都有相当复杂的依赖关系,由于我们对嵌入式开发的经验不足,有时候很难能知道库依赖于那个软件中,比较常用的办法是下载安装与名称相关的软件,如lib*库等等。即可解决大部分在软件编译中,出现的错误。对于配置,也是一个非常容易出错的地方,不同的软件配置是不一样的,常提高查看帮助文件来解决,虽然是英文,但一般大家都能看的懂,只有肯往下看一般都会有收获的。网络上提供的信息,由于与我们开发环境的不同,软件版本的不同等总总原因,应该尽力先理解别人的,在调试自己。或许柳岸花明了。

在嵌入式开发中,脚本文件是形形色色的,错综复杂的,但万变不离其宗,总有可遵循规律的地方,也是有其一定的语法的,对于脚步文件的理解和编写对于开发将是有非常大的帮助的,我们不能小看它的作用。除了脚步之外,核心就是源文件了,有C的有C++的,我们着重理解C然后再去了解别的开发语言。这将是非常的开发习惯。

六、设计参考书

1、《嵌入式系统接口设计与Linux驱动程序开发》

2、《ARM9嵌入式LINUX系统构建与应用》

3、华恒 ARM9 嵌入式教学实验指导书

4、MiniGUI编程手册

5、Linux应用程序编程

virtex6GTX高速串行传输原理与仿真_李坤

- 63 - virtex-6 GTX 高速串行传输原理与仿真 李 坤 朱 红 (电子科技大学,四川 成都 611731) 【摘 要】virtex-6 GTX 是xilinx 公司新近推出的一款具有通用性,易用性,低功耗,低成本特性的高速串行收发器。在ISE 环境中对该模块进行了仿真,仿真结果证明了GTX 能够实现数据的高速串行传输。 【关键词】GTX;virtex-6;FPGA;串行传输 【中图分类号】TP391.9 【文献标识码】A 【文章编号】1008-1151(2010)10-0063-02 在系统级互连设备中,高速串行I/O 技术迅速取代传统的并行I/O 技术正成为业界趋势,高速串行I/O 技术拥有比 并行I/O 技术更高的性能,更少的引脚,更低的成本和更简 化的设计。 随着大规模集成电路的发展,高速串行I/O 技术在军事, 医疗,网络,视频,通信等领域有着广泛的应用,对电子行 业的发展前景而言,对于电子行业发展前景而言,高速串行 I/O 至关重要,下面是采用千兆位级高速串行I/O 技术的行业 标准示例。 光纤通道 PCI Express RapidIO 串行 串行ATA 1Gb 以太网 10-Gb 以太网(xaui) CPRI (一)Virtex-6 GTX 收发器简介 Virtex-6 FPGA GTX 收发器采用与业经验证的 Virtex-5 FPGA GTX 收发器相同的架构,同时在某些关键方面进行增强和增补。GTX 收发器的数据传输速率为150Mbps-6.5Gbps,侧重于性能和易用性的提高,旨在满足严格的 CEI-6 抖动规范要求。该收发器针对出色的信号完整性进行了优化,集成了判定反馈均衡器(DFE),此外还支持线性 EQ 和发送器预加重。GTX 收发器在时钟方面提供了极大的灵活性,能够支持发送器和接收器之间的独立数据速度。GTX 集成了 64b/66b 和 64b/67b 变速箱,可简化高线速设计,从而在设计实施过程中减少成千上万个逻辑单元。 Virtex-6 FPGA GTX 收发器具有功耗低,效率高,且集成度高,通过软件可重配性强,如下所示的优点使其具有广泛的应用: 1.CML(电流模式逻辑)串行驱动/具有可配置终端的缓冲器。 2.可编程的发送端预加/去重技术,接收端的均衡技术和线性反馈均衡(DFE)技术,能保持信号的完整性。 3.支持从750Mb/s 到 6.6Gb/s 的线速率。且线速率在150Mb/s 到150Mb/s 时可以根据需要选择5倍过采样。 4.内部支持PCS 的多种特性:8b/10b 编解码,comma 对 齐,信道绑定和时钟纠正。 (二)Virtex-6 GTX 收发器工作原理 图1为 Virtex-6 GTX 收发器发送和接收结构框图,由图可知,在发送端,来自FPGA 的并行数据在时钟的作用下,经过线路编码(可选)被写入发送串行器,再转换为差分传行串行数据发送出去。 在接收端,来自差分输入端的高速串行数据经过时钟数据恢复模块,可产生恢复时钟,转换后的并行数据经过不一致性检测,comma 码检测和排列后到达线路译码器(可选,与发送端一致),最后经过RX 弹性缓存器FPGA 逻辑。 图1 GTX 收发器结构框图 由图1可知:GTX 收发器主要由以下几个模块组成 1.模拟前端 在模拟前端GTX 主要采用了两种关键技术保证了GTX 高速串行通信的可靠运行,他们是预加重/去重技术和均衡技术预加重技术主要应用于发送器部分是在电平转变开始前有意过量驱动,预加重技术能够很好的解决码间干扰的问题。GTX 收发器的预加重比例可以通过软件加以调节。均衡技术主要在接收器部分使用,使用均衡技术能够补偿由频率不同引起的阻抗衰减差异。 2.串行器和解串器 串行器:将速率为y 的n 位宽的并行数据转换为速率为n x y 的串行数据 解串器:将速率为n x y 的串行数据转换为速率为y 的n 位宽的并行数据 3.Rx 接收对齐 将接收到得数据对齐到合适的边界,可以使用不同的方法,从自动检测和对齐特殊的预留比特序列(通常称为comma 字符),到用户控制的比特调整线路编码器。 【收稿日期】2010-06-28 【作者简介】李坤(1986-),男,四川南充人,电子科技大学在读生,研究方向为信号处理、智能天线技术、FPGA;朱红,女,电子科技大学副教授,研究方向为嵌入式、FPGA。

串行口的模拟仿真

10.4.6 串行口的模拟仿真 利用模拟仿真,可以模拟单片机同机发送和接收程序。 例10-7串口采用查询方式,把从片内RAM的30H单元开始的8个数据串行发送到片内RAM的40H开始的单元。 程序清单: ORG 0000H MOV SCON,#90H ;串口工作方式2,允许接收 MOV PCON,#00H ;SMOD=0 M0V R0,#30H ;源字符串首地址 MOV R1,#40H ;接收字符串首地址 MOV R2,#08H ;字符串长度 LOOP:MOV A,@R0 ;取数据 MOV SBUF,A ;发送 JNB TI,$ ;等待发送完一帧字符 CLR TI ;清发送标志位 INC R0 ;修改地址 JNB RI,$ ;等待接收完一帧字符 CLR RI ;清接收标志位 MOV A.SBUF ;接收字符 M0V @R1,A ;存数据 INC R1 DJNZ R2,LOOP ;传送8个数据 END 模拟仿真步骤如下: ①启动Medwin仿真软件,在编辑窗口中输入例10-7中的程序,单击“产生代码并装入”快捷键,编译/连接程序,打开菜单“外围部件→串行口”,把串口状态窗口调入屏幕,如图10-23 所示。

图10-23 串口模式 ②打开菜单“查看→数据区Data”,调入数据区窗口,单击列数,选择存储器排列为8列,从30H单元开始,输入8个数据。 ③打开菜单“窗口→纵向平铺窗口”,使寄存器窗口、数据窗口、程序窗口纵向平铺。 ④按F8键单步运行程序,则程序运行在JNB TI,$处,等待一帧字符发送结束。可人工设定发送结束标志,即在图10-23的中断标志复选框TI前画“√”,再按F8键,程序继续运行。 ⑤程序运行在JNB RI,$处,等待接收一帧字符结束。可人工设定接收结束标志,即在图10-23的中断标志复选框RI前画“√”,再按F8键,程序继续运行,则一帧字符装入40H开始单元。 ⑥重复上述步骤,直至全部数据传送完。

实际单片机与虚拟单片机串口通信proteus仿真

中国民航大学 单片机课程设计报告 题目:实际单片机与proteus中虚拟单片机串口通信仿真设计时间:2012年 9 月 13 日至 9 月 20 日 学院:航空自动化学院 专业名称:自动化 学号:101141237 姓名:赵起超 指导老师:黄建宇

目录 1绪论 (3) 2设计内容及要求 (3) 3串口通信原理 (3) 4设计思路 (4) 5设计框图 (4) 6硬件实现 (5) 7电路设计 (7) 7.1硬件设计 (7) 7.2软件配置 (8) 8程序设计 (12) 8.1设计思路 (12) 8.2硬件程序 (12) 8.3虚拟单片机程序............................ 错误!未定义书签。 9 PROTEUS仿真.................................... 错误!未定义书签。10总结........................................... 错误!未定义书签。参考文献. (26)

实际单片机与proteus中虚拟单片机串口通信仿真 1绪论 单片机与单片机或单片机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯,本课程设计则采用串行通信的方式进行proteus仿真。 2设计内容及要求 采用串行通讯的方式,用实际的单片机读取超声波测距模块的数据,然后通过串口与proteus中的虚拟单片机进行通信,将超声波测得的数据通过串口实时发送给proteus中的单片机,虚拟单片机将接收到的数据实时用lcd1602在proteus中仿真显示。设计中用到二个1602液晶屏,一个虚拟终端,实时监测发送与接受的数据,用来验证通信的数据是否正确。设计要求在测距周期尽可能短的情况下,同时保证数据传输误码率在0.2%以下。 3串口通信原理 所谓"串行通信"是指外设和计算机间使用一根数据信号线,数据在一根数据信号线上按位进行传输,每一位数据都占据一个固定的时间长度。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 典型的串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单

北邮电路综合实验报告——串行口数据传输的仿真及硬件实现

北京邮电大学 信息与通信工程学院 电路综合实验报告 串行口数据传输的仿真及硬件实现 姓名: 学号: 班内序号: 班级: 指导老师: 日期:2014年10月10日

摘要: 本实验模拟了现代数字逻辑电路中的数据传输过程。使用连续的代表0、1的高低电平作为数字信号,将该数字信号从输出端发送到接收端,并分别用串行、并行两种方式进行锁存,检测。本实验模拟了序列信号的发生装置、串并转换装置、串行并行两种方式的检测装置、锁存输出和控制电路,实现了一个简单的串行口数据传输模型。在此试验中,通过对常见芯片的组合实现功能,将一串由0、1组成的数字信号进行传输、转换、检测,使之显示在数码管上成为可读信息。并且,还实现了对此电路显示的控制,使数码管在满足条件的情况下才点亮。在实验中,还使用了Qua rtusⅡ对设计的电路进行了仿真模拟。 关键字: 数据传输、串并转换、数据检测、QuartusII Abstract: This experiment simulated data transfer in modern digital logic circuit. Digital signal was transferred from the output terminal to the receiving end, which was consisted of

continuous high or low level represent 0 and 1 as digital signal, and latch, test it through serial or parallel mode. Our experiment simulated the producing equipment of sequence signal, the signal conversion module, testing module of serial and parallel mode, latch output and control circuit. It implements a simple serial port data communication model. In the experiment, we use the combination of simple chips to realize the function that transport, transfer and test a sequence of the digital signal consisting of 0 and 1, and display it on LED Segment Displays. In addition, we realize the control of display. The LED Segment Displays works only in specific conditions. We also conduct simulations on QuartusⅡ. Keywords: Data transmission, String conversion, Data detection, Quartus II 目录 一、实验目的 (4)

串行口数据传输的仿真和硬件实现实验

串行口数据传输的仿真 及硬件实现 第*组 班级:********** 姓名:*** *** 指导老师:***

一、实验目的: 串行口数据传输是数字系统中常用的一种数据传输方式。本次课程设计要求学生综合数字逻辑电路和串行口通信的有关知识,用硬件独立设计完成一个简单的串行口数据传输系统,并用FPGA可编程逻辑器件进行仿真。 二、实验仪器 1 双踪示波器 1台 2 直流稳压电源 1台 3 频率计 1台 4 数字万用表 1台 5 面包板 1台 三、实验内容与设计: 1、实验内容:一个简单的串行口数据传输系统的系统框图如下: 由图可见,系统分为发送端,接收端两部分。发送端主要是同步字符、结束字符、时钟电路和信息码发生器。 接收端包括串/并转换电路、字符检测电路、控制电路、锁存接收和显示电路。 2、各部分功能的端口设置: (1)时钟电路:晶振的时钟输入信号、通过分频后提供系统使用的输出信号。 (2)信号发生电路:时钟电路发出的时钟信号输入端、生成的序列输出端。 (3)串并转换电路:时钟信号输入、串行序列输入端、并行序列输出端。 (4)字符检测电路:若采用并行检测,有并行数据输入端、检测信号输出端; 若采用串行检测,有串行数据接入端、时钟信号输入端、 检测信号输出端。 (5)控制电路:时钟信号输如端、检测信号输入端、控制信号输出端。

(6)锁存电路:控制信号输入端、并行数据输入端、并行数据输出端。 (7)显示电路:并行数据输入端。 3、各部分的逻辑设计: (1)时钟电路设计: 由于晶振产生的时钟频率为1MHz,而为了显示稳定,需要的时钟频率为2Hz以下,所以需要分频。本次设计采用的是同步计数器来进行分频,输出端为Qa~Qd,分频系数为2N (N为端口数)。每个74LS163最多为24=16分频,而需要的分频系数:106÷2=5×105≈219。所以需要5块74LS163芯片用作分频。具体电路图如下: 所得的输出频率约为2Hz. (2)序列信号发生器设计: 本次实验需要产生的序列为15位循环码“111100010011010”,通过检验可知,此序列产生的15个4位序列不互相重复,因此可以用4个D触发器来构造序列发生器。此序列信号发生器的反馈电路可以通过“与”、“或”、“非”逻辑门或数据选择器实现。本次实验中,我们使用了数据选择器。 状态表及卡诺图如下所示: Q4 Q3 Q2 Q1 D 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 1 Q4Q3 Q2Q100 01 11 10 00 φ 1 0 1 01 0 1 0 1 11 0 1 0 1 10 0 1 0 1

串行口传输各种数值数据

利用串口传输各种数值数据 二、MCS-51单片机端设计 1、通信协议 为做演示说明我们仅发送3个数据顺序依次为:字符型数据、整型数据、浮点型数据,字符型数据、整型数据、浮点型数据在MCS-51单片机的C语言中分别占用1、2、4个字节。由于是采用周期性的数值数据发送方法,为使PC机端能准确接收所发送数据设计数据包如下: 所有数据按发送顺序及占用字节数顺序排列,等待发送。 数据包以两个字节的数据0XFF表示数据包结尾。 当等待发送数据为0XFF时,插入转义字符0X27,避免发送数据中出现连续的两个0XFF,造成虚假的数据包结尾。 插入的转义字符在接收时自动删除,为避免发送数据为0X27时被自动删除,在其后也插入转义字符0X27。 2、单片机程序设计 由于发送、接收双方距离较近,故波特率设置为9600bps、数据位数为8 位、没有奇偶校验位、1位停止位。系统的定时器/记数器T0、T1已另作它用,故选择T2做为波特率发生器。使用T2做为波特率发生器时不会产生通讯中断。 单片机发送程序由两个子程序组成:串口初始化、数据发送。代码如下: void init232(void) //串口初始化子程序 { SCON=0x50; PCON=0x80; T2CON=0x34; RCAP2L = 0xb2; RCAP2H = 0xff; TL2 = 0xb2; TH2 = 0xff; TR2=1; } void senddata()//数据发送子程序 { uchar data * data pd; uchar i; pd=&char_data; //send char data SBUF=*pd; while(TI==0); TI=0; if(((*pd)==0xff) || ((*pd)==0x27)) {

通信工程仿真实验报告(模板)

广西大学 通信系统综合设计报告 学院计算机与电子信息学院 专业通信工程 班级通信081班 小组成员曾楷(0807200245) 邢杰(0807200228)

通信系统综合设计报告 一、实验目的 1、单片机串口通信,通过PC机可以获取单片所有IO口状态,PC上位机程序使用串口调试助手或自行编程。 2、设计最简单的无线收发电路,参照2009年全国大学生电子设计竞赛试题(D题:无线环境监测模拟装置),要求通信距离不小于30cm,节点有编号预置功能,编码预置范围为00000001B~11111111B。通过无线收发电路传送单片机IO口状态。具体电路班上讨论确定后,元件统一采购。 3、设计最简单的红外收发电路,红外调制、解调方式可使用现有红外标准或自行设计,通过无线收发电路传送单片机IO口状态。 二、实验原理 1.串口通信原理 (1)、数据通信的传输方式 常用于数据通信的传输方式有单工、半双工、全双工和多工方式。 单工方式:数据仅按一个固定方向传送。因而这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集。 半双工方式:数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收/发开关转换。 全双工方式:允许双方同时进行数据双向传送,但一般全双工传输方式的线路和设备较复杂。 多工方式:以上三种传输方式都是用同一线路传输一种频率信号,为了充分地利用线路资源,可通过使用多路复用器或多路集线器,采用频分、时分或码分复用技术,即可实现在同一线路上资源共享功能,我们盛之为多工传输方式。 (2)、串行数据通信两种形式 异步通信 在这种通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用

串行口数据传输的仿真及硬件实现

信息与通信工程学院 电路综合实验报告 题目:串行口数据传输的仿真及硬件实现 姓名: 学号: 班内序号: 班级:

指导教师: 2013年10月8日串行口数据传输的仿真及硬件实现 摘要 随着技术的进步,数字逻辑电路和数字系统的分析、设计方法也在快速地演变和发展。现在,在一般数字系统设计中,普遍采用了规模越来越大的可编程逻辑器件,设计方法从传统的硬件设计,变为计算机软硬件辅助设计的方法。电子设计自动化行业软件Altera Quartus成为数字逻辑电路软件设计的首选。 串行口数据传输是数字逻辑系统中常用的一种传输方式。大街小巷上的灯箱、广场LED 电视、LED广告牌大都采用了串行口数据传输技术手段。本实验在北京邮电大学本科生通信实验室的支持下,从软件模拟仿真和硬件实现两个方面对串行口数据传输系统进行了深入研究。主要研究工作及创新成果主要包括以下几个方面: (1)对串行口数据传输系统进行了系统全面的模拟和剖析:从信号的产生、串并转换、检测、显示等方面重点阐述了串行口数据传输系统的工作机理。 (2)通过软件仿真,实现了脱离硬件的串行口数据传输系统的设计和验证,证明了现在利用软件完成书籍逻辑系统设计的全能性。 关键词:数字系统数据传输可编程逻辑器件串行口数据传输数字逻辑电路

SIMULATION AND HARDWARE IMPLEMENTATION OF SERIAL DATA TRANSFER ABSTRACT With the development of technology, the analysis and method of design of Digital Logic Circuit and digital system have being developed and evolved rapidly. Nowadays, in general design work of digital system, Programmable Logic Devices of larger and larger scale are more and more used, and methods have evolved from traditional hardware design to method which combines hardware design and software emulation. Professional software of EDA Altera Quartus has become a preferred software of digital system design. As a usual way of transmission in digital system, serial data transfer has been used in our life such as LED televisions in squares and advertising boxes . Under the support of information and communications school of Beijing University of Posts and Telecommunications, our research has explored deeply in serial data transfer system on software simulation and hardware design. We have achievements as follows: (1) We did comprehensive research in serial data transfer system: from the produce of digital signal to digital signal transfer, signal match, and signal show out as so on , we have emphasized the theory of serial data transfer system. (2) We realized the design and verification of serial data transfer system without hardware, we proved that software has become an important way in digital system design. KEYWORDS:Digital System, Data Transfer, Programmable Digital Logic Devices, Serial Data Transfer, Digital Logic Circuit

串行口数据传输的仿真及硬件实现

串行口数据传输的仿真及硬件实现 学院:信息与通信工程学院 专业:通信工程 班级:2008211110 姓名:潘东阳、王澎涛 序号:12

一、总体方案框图 电路总体分为7个模块:时钟电路模块、字符发生器模块、串/并转换模块、字符检测电路模块、控制电路模块、 锁存显示模块和显示电路模块。各模块间的输入输出数据流 如图所示。 二、各部分电路的数字逻辑设计过程和结果 1.时钟电路模块: 实验室所提供的晶振的时钟频率为1MHz,若直接使用人眼将无法正常观测出实验结果。所以需要设计分频模块, 将1MHz的时钟频率通过分频器降低到约2Hz,这样才可以 正确显示结果。 本次实验使用74LS163四位同步计数器级联实现分频功能。每个74LS163最多为2^4=16分频。为了实现本实验 分频的要求,分频系数应该达到:10^6÷2=5×10^5≈2^19。 所以需要5块74LS163芯片级联实现分频,所得频率为

1MHz/2^19=1.9Hz.具体电路图如下: 2.字符发生器模块: 本次试验要求发送端产生信息码为111100010011010这个15位循环码。字符发生模块使用由D触发器构成移位 寄存器的序列信号发生器。由于循环码为15位,2^3<15<2^4,故至少应该使用4位D触发器。经检查,此序列所构成的 15个4位的序列不重复,刚好可以用4为D触发器来做次 序列发生器,D触发器选用74LS175四D触发器。 状态转移表:

卡诺图: 由卡诺图得:D= Q4⊕Q3,但经过检查,通过此反馈是无法自启动的。通过增加自由项,得D= 。 经过检查,此此反馈可以自启动。 电路图如下: 3.串/并转换模块: 串并转化的实现可以通过移位寄存器来实现,因为需要7位并行输出,所以需要两块移位寄存器74LS194级联构成。 电路图如下:

浙大-串行口通讯实验报告

实验报告 课程名称:微机原理与接口技术指导老师:彭勇刚成绩:__________________实验名称:串行口通讯实验实验类型:_ _____同组学生姓名 一、实验目的和要求(必填)二、实验内容和原理(必填) 三、主要仪器设备(必填)四、操作方法和实验步骤 五、实验数据记录和处理六、实验结果与分析(必填) 七、讨论、心得 实验三串行口通讯实验 一、实验目的 1.掌握80C51串行口工作方式选择、初始化的设置方法和串行通信编程。 2.掌握数据传送的校验方法(奇校验)。 3.编写简单的通信协议(如串行口工作方式、波特率、校验方式、出错处理等)。 二、实验内容 1.编写程序,将内部RAM中20H开始的连续16个单元的数据,通过串行口自发自收而转移到以内部RAM中30H开始的单元内。 2.编写程序,实现双机通信。 3.所传送的数据采用奇校验。传送出错则重发,重发超过三次则退出,并置出错标志。三、实验器材 1.Micetek仿真器一台 2.实验板一块

四、硬件连接 1.将实验板上的T针与R针短接,实现串行口的自发自收。 T针为串行口的TXD,R针为串行口的RXD引脚. 2.将双机TXD引脚与RXD引脚互连。 五、程序代码: ORG 0000H MOV 21H, #01H MOV 22H, #02H MOV 23H, #03H MOV 24H, #04H MOV 25H, #05H MOV 26H, #06H MOV 27H, #07H MOV 28H, #08H MOV 29H, #09H MOV 2AH, #0AH MOV 2BH, #0BH MOV 2CH, #0CH MOV 2DH, #0DH MOV 2EH, #0EH MOV 2FH, #0FH

串口通信数据传输方式描述

串口通信数据传输方式描述 通信方式 说明单工,半双工,全双工通信的意义 根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。信息只能单向传送为单工(打印机工作方式) ; 信息能双向传送但不能同时双向传送称为半双工(对讲机工作方式); 通信方式单工(Simplex Communication)模式的数据传输是单向的。通信双方中,一方固定为发送端,一方则固定为接收端。信息只能沿一个方向传输,使用一根传输线。单工通信是指通信线路上的数据按单一方向传送. 单工模式一般用在只向一个方向传输数据的场合。例如计算机与打印机之间的通信是单工模式,因为只有计算机向打印机传输数据,而没有相反方向的数据传输。还有在某些通信信道中,如单工无线发送等。 半双工通信使用同一根传输线,既可以发送数据又可以接收数据,但不能同时进行发送和接收。数据传输允许数据在两个方向上传输,但是,在任何时刻只能由其中的一方发送数据,另一方接收数据。因此半双工模式既可以使用一条数据线,也可以使用两条数据线。它实际上是一种切换方向的单工通信,就和对讲机(步话机) 一样。半双工通信中每端需有一个收发切换电子开关,通过切换来决定数据向哪个方向传输。因为有切换,所以会产生时间延迟。信息传输效率低些 半双工(Half Duplex),所谓半双工就是指一个时间段内只有一个动作发生,举个简单例子,一条窄窄的马路,同时只能有一辆车通过,当目前有两量车对开,这种情况下就只能一辆先过,等到头儿后另一辆再开,这个例子就形象的说明了半双工的原理。早期的对讲机、以及早期集线器 等设备都是基于半双工的产品。随着技术的不断进步,半双工会逐渐退出历史舞台. 全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力,就和电话一样。在全双工模式中,每一端都有发送器和接收器,有两条传输线,可在交互式应用和远程监控系统中使用,信息传输效率高。 全双工(Full Duplex)是指在发送数据的同时也能够接收数据,两者同步进行,这好像我们平时打电话一样,说话的同时也能够听到对方的声音。目前的网卡一般都支持全双工。

单片机IO口模拟串行实现数据通信

目录 1设计任务与要求 (1) 2总体方案设计 (1) 2.1串行通信的方式设计 (1) 2.1.1并行I/O口 (1) 2.1.2通信的基本原理 (2) 2.1.3 89C51的串行口 (5) 2.1.4 用IO口模拟串口通信 (7) 2.2 数码管显示设计 (7) 2.3 LED灯显示设计 (8) 3单元电路设计 (8) 3.1硬件设计 (8) 3.1.1复位电路设计 (10) 3.1.2时钟电路 (10) 3.1.3 显示电路设计 (11) 3.1.4电平转换电路 (12) 3.2软件设计 (14) 3.2.1 程序设计流程图 (14) 3.2.2 单片机IO口模拟串口实现数据通信的源程序 (15) 4系统仿真 (18) 5收获与体会 (20) 6参考文献 (21)

单片机IO口模拟串口实现数据通信 1设计任务与要求 本设计为单片机IO口模拟串口实现数据通信,它可以用单片机的IO口实现单片机RX和TX的功能。具体要求如下: ●用单片机的P3.4和P3.5分别模拟RX和TX的串行通信功能,能够接收和发送 数据。 ●通过PC机的键盘输入字符,并传送给单片机,由单片机接收后,发达给PC机, 由PC机加以显示。 ●单片机接收由键盘输入的数据后,如果是数字,则由数码管显示,并由LED灯 表示其ASCII码,如果是其他字符,则由仅由LED灯显示其ASCII码。 2总体方案设计 2.1串行通信的方式设计 本设计要求用单片机的IO口来模拟串口的串行通信,因此有必要先简要介绍一下单片机的IO和通信的基本原理与串行口P3.0和P3.1。 2.1.1并行I/O口 MCS-51单片机共有4个双向的8位并行I/O端口(Port),分别记作P0-P3,共有32根口线,各口的每一位均由锁存器、输出驱动器和输入缓冲器所组成。实际上P0-P3已被归入特殊功能寄存器之列。这四个口除了按字节寻址以外,还可以按位寻址。由于它们在结构上有一些差异,故各口的性质和功能有一些差异。 P0口是双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用口,可驱动8个LS型TTL负载。P1口是8位准双向I/O口,可驱动4个LS 型负载。P2口是8位准双向I/O口,与地址总线(高8位)复用,可驱动4个LS型TTL负载。P3口是8位准双向I/O口,是双功能复用口,可驱动4个LS型TTL负载。P1口、P2口、P3口各I/O口线片内均有固定的上拉电阻,当这3个准双向I/O口做输入口使用时,要向该口先写“1”,另外准双向I/O口无高阻的“浮空”状态,故称为双向三态I/O 口。

串行通信电路的设计

串行通信电路的设计 1串行通信电路 1.1设计目的 (1)掌握串行通信电路的构成、原理与设计方法; (2)熟悉QuartusII的仿真方法。 1.2基本要求 (1)发方实现8bit码字的并串转换,使用单一电缆发送信号,收方实现串并转换后输出; (2)并行输出端的8bit寄存器; (3)收方数据是否已准备好指示输出端。 1.3发挥部分 (1)加密通信; (2)串行发/收端口FIFO缓存; (3)发/收方奇偶校验位生成/检测; (4)其他。 2设计过程及论文的基本要求 2.1设计过程的基本要求: (1)基本部分必须完成,发挥部分可以在已给的范围或自己寻找资料的范围内任选;(2)符合要求的设计报告一份,其中包括逻辑电路图、实际接线图各一份; (3)设计题目必须仿真通过,设计过程的资料草稿上交; (4)成绩的组成:考勤、每天任务的完成工作量、答辩情况、报告; 2.2课程设计论文的基本要求: (1)蓝黑色或黑色钢笔或碳素笔书写,不允许用圆珠笔。项目齐全、字迹工整,有条件的可以打印。 (2)装订顺序:封面、任务书、成绩评定表、中文摘要、关键词、目录、正文(正文的具体要求按老师讲课要求)、总结及致谢、参考文献、附录(逻辑电路图与实际接线图)。 中文摘要 串行通信电路是为了实现数据传输的方便而设计的一种电路,将八位数据通过八位加法器使要传送的数据同时加上一个数,而这个数是通过两片计数器组成的时钟电路实现的,并且此时钟电路不断的对输入数据进行加法运算,实现数据的加密计算。并行变串行是通过数据选择器使八位的加密数据通过74151实现数据的串行传送,从而实现电路的功能。串行数据变并行数据,将串行数据送到移位寄存器中,控制移位寄存器的时钟脉冲,使数据能够从移位寄存器的八个输出端口输出,但一定要控制好

浙大-串行口通讯实验报告

浙大-串行口通讯实验报告

实验报告 课程名称: 微机原理与接口技术 指导老师: 彭勇刚 成绩:__________________ 实验名称: 串行口通讯实验 实验类型:_ _____同组学生姓名 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 实验三 串行口通讯实验 一、实验目的 1.掌握80C51串行口工作方式选择、初始化的设置方法和串行通信编程。 2.掌握数据传送的校验方法(奇校验)。 3.编写简单的通信协议(如串行口工作方式、波特率、校验方式、出错处理等)。 二、实验内容 1.编写程序,将内部RAM 中20H 开始的连续16个单元的数据,通过串行口自发自收而转移到以内部RAM 中30H 开始的单元内。 2.编写程序,实现双机通信。 3.所传送的数据采用奇校验。传送出错则重发,重发超过三次则退出,并置出错标志。 三、实验器材 1.Micetek 仿真器一台 2.实验板一块 专业: 自动化 (1001) 姓名:

四、硬件连接 1.将实验板上的T针与R针短接,实现串行口的自发自收。 T针为串行口的TXD,R针为串行口的RXD引脚. 2.将双机TXD引脚与RXD引脚互连。 五、程序代码: ORG 0000H MOV 21H, #01H MOV 22H, #02H MOV 23H, #03H MOV 24H, #04H MOV 25H, #05H MOV 26H, #06H MOV 27H, #07H MOV 28H, #08H MOV 29H, #09H MOV 2AH, #0AH MOV 2BH, #0BH MOV 2CH, #0CH MOV 2DH, #0DH MOV 2EH, #0EH MOV 2FH, #0FH MOV 20H, #00H MOV R0, #20H MOV R6, #10H MOV R1, #30H MOV TMOD, #20H ;设置定时器T1为定时方式2 MOV TH1, #030H ;设置T1定时常数(串行口波特率为2400)MOV TL1, #030H SETB TR1 MOV PCON, #00H ;设置波特率不倍增 MOV SCON, #40H ;设置串行口方式1 SETB EA ;开总的中断 CLR ES ;关串行中断 SETB REN ;允许串行接受 CLR TI ;清发送结束标志位 CLR RI ;清接受结束标志位 AJMP TRANS TRANS: MOV A,@R0 MOV SBUF, A JNB TI,$ CLR TI

从PC串行口实现简单红外数据传输

从PC串行口实现简单红外数据传输 常有这种情况,需要在没有直接电缆连接的情况下,将一些位或字节的数据送给一个微控制器。实现这一目标的一种简单方式是使用到处可见的红外接收器,如Vishay公司的TSOP17xx或类似接收器,它们一般用于红外遥控设备,如电视和录像机。这些装置很容易实现,因为它们不需要外接元件。这些接收器通常使用一个38kHz的脉冲载波,并带有一个放大器、自动增益控制和解调器。 简单应用的主要问题是建立发射机,它需要一个38kHz的起始-停止振荡器、附加电源,以及毫秒与亚毫秒范围内的调制脉冲。用PC操作系统难以控制这些要素。另一方面,PC 串行端口的标准传输速率为38400bps,用一个简单的倍频器和两只红外LED就可以生成精确的38.4kHz的脉冲数据(图1)。当用另一种O/I模式(HEX55)传输字节时,每个HEX55字节都生成一串18个脉冲,再加上起始位与停止位以及连续字节,就可以生成较长的脉冲。 接收器需要的脉冲串范围从10个~70个脉冲,之间有大致相当的间歇;用这种设置可以很容易满足这些要求。可以发送HEX0字节生成短间歇,不过每个字节会传送两个脉冲,因为起始位与停止位的关系。但是,接收器会忽略掉这些脉冲。停止一次传输可以生成较长的间歇。必须根据使用的接收器情况,偶尔插入较长的间歇。用长、短脉冲串和适当的协议就可以实现数据传输。 图1中的电路与串行端口输出阻抗和电容一起构成了一个高通滤波器。正脉冲驱动一只红外LED;负脉冲驱动另一只。两只都应指向接收器。PC端口一般提供5mA~20mA的最大电流,以及15V电压,因此输出电阻在数千欧姆范围内。一般不需要限流电阻。多数情况下,电容容量为1nF~10nF就可以了。接收器有宽容度。如果是非PC端口,则需要调整电容值,例如微控制器,因为它的阻抗较低。在实际应用中,如果LED对准接收器,用低至5mA的LED峰值电流就可以实现2米~4米的传输距离。可提供对PC的实例程序。

相关主题
文本预览
相关文档 最新文档