电子告示板doc.docx
- 文档编号:15872358
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:25
- 大小:979.56KB
电子告示板doc.docx
《电子告示板doc.docx》由会员分享,可在线阅读,更多相关《电子告示板doc.docx(25页珍藏版)》请在冰点文库上搜索。
电子告示板doc
嵌入式方向系统项目实践设计任务书
学院
计算机与信息工程学院
专业
网络工程
课程名称
嵌入式系统项目实践
题目
电子告示板的设计
完成期限
自2013年7月3日至2013年8月29日共8周
内
容
及
任
务
一、项目的目的
××××
二、项目任务的主要内容和要求
××××(设计类需写明原始数据、主要技术参数和设计要求等)
三、项目设计(研究)思路
××××(包括设计(研究)步骤、设计(研究)要点、工作进度安排及主要技术关键的分析、解决思路、方案比较等方面内容介绍)
四、具体成果形式和要求
××××
进
度
安
排
起止日期
工作内容
主
要
参
考
资
料
××××
指导教师
意见
(签字):
×年×月×日
系(教研室)主任意见
(签字):
×年×月×日
附件2:
设计说明书(或论文)模版
××××设计说明书(或论文)
(封面)
学院名称:
××××
班级名称:
××××
学生姓名:
××××
学号:
××××
题目:
××××
指导教师
姓名:
××××
起止日期:
××××
第一部分:
正文部分
1绪论
1.1研究背景
电子告示板是一种发布并交换信息的在线服务系统,可以使更多的用户通过电话线以简单的终端形式实现互联,从而得到廉价的丰富信息,并为其会员提供进行网上交谈、发布消息、讨论问题、传送文件、学习交流和游戏等的机会和空间。
电子告示板是嵌入式系统的一个非常重要的应用领域,具有广阔的应用前景和经济价值。
电子告示板具有方便、灵活、信息更新快捷等特点,大量用于车站、商场、医院等公共场所,此外,还常用于广告宣传。
本课题设计一个电子告示板,目的在于掌握嵌入式系统简易项目的设计方法,掌握UART接口通信软件的设计,掌握LCD硬件组成及其驱动程序的设计,掌握GPIO的输入输出使用方法,了解实时时钟的实现方法。
1.2主要工作
1.在Proteus中仿真软件中,根据给出的要求画出所需的原理图。
2.画好电路图以后在KeiluVision2仿真软件中按任务要求编写代码,并调试生成HEX文件。
3.将生成的HEX文件导入模拟芯片中进行运行,以实现单片机与LCD之间的通信。
1.3本文结构
本文第1部分绪论主要说明了本文的研究背景、主要工作和实现方法。
第2部分相关知识介绍了单片机的概念、基础结构和相关应用,RS232接口的的基本简介、主要特点和其通信原理,Proteus仿真软件的简介及其模块功能知识,还有Keil软件的简要介绍。
第3部分总体设计主要介绍了我们的设计思路。
第4部分硬件设计,主要介绍了整体电路设计,还分别介绍单片机串行通信功能、MAX232芯片、LED数码管、数字键盘的具体应用。
第5部分软件设计介绍了串行通信软件的实现和程序流程的主要过程。
第6部分联合测试主要介绍了键盘的数据传输问题、LED灯闪烁问题以及测试结果的完成。
2相关知识
2.1单片机介绍
2.1.1单片机概念
单片机,全称单片微型计算机(英语:
Single-ChipMicrocomputer),又称微控制器(Microcontroller),是把中央处理器、存储器、定时/计数器(Timer/Counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。
与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。
它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。
由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;由于单芯片微电脑常用于当控制器故又名singlechipmicrocontroller,但是目前在中国大陆仍多沿用“单片机”的称呼。
以下为大家常用的AT89C51单片机结构图:
图2-1AT89C51单片机
2.1.2单片机的基础结构
1.运算器
运算器由运算部件——算术逻辑单元(Arithmetic&LogicalUnit,简称ALU)、累加器和寄存器等几部分组成。
ALU的作用是把传来的数据进行算术或逻辑运算,输入来源为两个8位数据,分别来自累加器和数据寄存器。
ALU能完成对这两个数据进行加、减、与、或、比较大小等操作,最后将结果存入累加器。
例如,两个数6和7相加,在相加之前,操作数6放在累加器中,7放在数据寄存器中,当执行加法指令时,ALU即把两个数相加并把结果13存入累加器,取代累加器原来的内容6。
运算器有两个功能:
(1)执行各种算术运算。
(2)执行各种逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。
运算器所执行全部操作都是由控制器发出的控制信号来指挥的,并且,一个算术操作产生一个运算结果,一个逻辑操作产生一个判决。
2.控制器
控制器由程序计数器、指令寄存器、指令译码器、时序发生器和操作控制器等组成,是发布命令的“决策机构”,即协调和指挥整个微机系统的操作。
其主要功能有:
(1)从内存中取出一条指令,并指出下一条指令在内存中的位置。
(2)对指令进行译码和测试,并产生相应的操作控制信号,以便于执行规定的动作。
(3)指挥并控制CPU、内存和输入输出设备之间数据流动的方向。
微处理器内通过内部总线把ALU、计数器、寄存器和控制部分互联,并通过外部总线与外部的存储器、输入输出接口电路联接。
外部总线又称为系统总线,分为数据总线DB、地址总线AB和控制总线CB。
通过输入输出接口电路,实现与各种外围设备连接。
3.主要寄存器
(1)累加器A
累加器A是微处理器中使用最频繁的寄存器。
在算术和逻辑运算时它有双功能:
运算前,用于保存一个操作数;运算后,用于保存所得的和、差或逻辑运算结果。
(2)数据寄存器DR
数据寄存器通过数据总线向存储器和输入/输出设备送(写)或取(读)数据的暂存单元。
它可以保存一条正在译码的指令,也可以保存正在送往存储器中存储的一个数据字节等等。
(3)指令寄存器IR和指令译码器ID
指令包括操作码和操作数。
指令寄存器是用来保存当前正在执行的一条指令。
当执行一条指令时,先把它从内存中取到数据寄存器中,然后再传送到指令寄存器。
当系统执行给定的指令时,必须对操作码进行译码,以确定所要求的操作,指令译码器就是负责这项工作的。
其中,指令寄存器中操作码字段的输出就是指令译码器的输入。
(4)程序计数器PC
PC用于确定下一条指令的地址,以保证程序能够连续地执行下去,因此通常又被称为指令地址计数器。
在程序开始执行前必须将程序的第一条指令的内存单元地址(即程序的首地址)送入PC,使它总是指向下一条要执行指令的地址。
(5)地址寄存器AR
地址寄存器用于保存当前CPU所要访问的内存单元或I/O设备的地址。
由于内存与CPU之间存在着速度上的差异,所以必须使用地址寄存器来保持地址信息,直到内存读/写操作完成为止。
显然,当CPU向存储器存数据、CPU从内存取数据和CPU从内存读出指令时,都要用到地址寄存器和数据寄存器。
同样,如果把外围设备的地址作为内存地址单元来看的话,那么当CPU和外围设备交换信息时,也需要用到地址寄存器和数据寄存器。
2.1.3单片机的相关应用
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
1.在智能仪器仪表上的应用
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(功率计,示波器,各种分析仪)。
2.在工业控制中的应用
用单片机可以构成形式多样的控制系统、数据采集系统。
例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
3.在家用电器中的应用
可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。
4.在计算机网络和通信领域中的应用
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
5.单片机在医用设备领域中的应用
单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。
此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
2.2Proteus仿真软件介绍
2.2.1Proteus软件简介
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
2.2.2Proteus软件功能模块
1.智能原理图设计
丰富的器件库:
超过27000种元器件,可方便地创建新元件。
智能的器件搜索:
通过模糊搜索可以快速定位所需要的器件。
智能化的连线功能:
自动连线功能使连接导线简单快捷,大大缩短绘图时间。
支持总线结构:
使用总线器件和总线布线使电路设计简明清晰。
可输出高质量图纸:
通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。
2.完善的电路仿真功能
ProSPICE混合仿真:
基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真。
超过27000个仿真器件:
可以通过内部原型或使用厂家的SPICE文件自行设计仿真器件,Labcenter也在不断地发布新的仿真器件,还可导入第三方发布的仿真器件。
多样的激励源:
包括直流、正弦、脉冲、分段线性脉冲、音频(使用wav文件)、指数信号、单频FM、数字时钟和码流,还支持文件形式的信号输入。
丰富的虚拟仪器:
13种虚拟仪器,面板操作逼真,如示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、SPI调试器、I2C调试器等。
生动的仿真显示:
用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件(如电机、显示器件、按钮)的使用可以使仿真更加直观、生动。
高级图形仿真功能(ASF):
基于图标的分析可以精确分析电路的多项指标,包括工作点、瞬态特性、频率特性、传输特性、噪声、失真、傅立叶频谱分析等,还可以进行一致性分析。
3.单片机协同仿真功能
支持主流的CPU类型:
如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU类型随着版本升级还在继续增加,如即将支持CORTEX、DSP处理器。
支持通用外设模型:
如字符LCD模块、图形LCD模块、LED点阵、LED七段显示模块、键盘/按键、直流/步进/伺服电机、RS232虚拟终端、电子温度计等等,其COMPIM(COM口物理接口模型)还可以使仿真电路通过PC机串口和外部电路实现双向异步串行通信。
实时仿真:
支持UART/USART/EUSARTs仿真、中断仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真。
编译及调试:
支持单片机汇编语言的编辑/编译/源码级仿真,内带8051、AVR、PIC的汇编编译器,也可以与第三方集成编译环境(如IAR、Keil和Hitech)结合,进行高级语言的源码级仿真和调试。
4.实用的PCB设计平台
原理图到PCB的快速通道:
原理图设计完成后,一键便可进入ARES的PCB设计环境,实现从概念到产品的完整设计。
先进的自动布局/布线功能:
支持器件的自动/人工布局;支持无网格自动布线或人工布线;支持引脚交换/门交换功能使PCB设计更为合理。
完整的PCB设计功能:
最多可设计16个铜箔层,2个丝印层,4个机械层(含板边),灵活的布线策略供用户设置,自动设计规则检查,3D可视化预览。
多种输出格式的支持:
可以输出多种格式文件,包括Gerber文件的导入或导出,便利与其它PCB设计工具的互转(如protel)和PCB板的设计和加工。
2.3KeiluVision2软件简介
KeiluVision2是德国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。
KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。
C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。
C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:
编译器,汇编器,实时操作系统,项目管理器,调试器。
uVision2IDE可为它们提供单一而灵活的开发环境。
3需求分析与概要设计
3.1需求分析
3.1.1功能需求
1.通过宿主机的终端向电子告示板系统输入所需要显示的信息;
2.信息在电子告示板系统的LCD上显示出来;
3.能向用户提供实时时钟;
4.电子告示板具有在数码管显示游字的功能。
3.1.2性能需求
1.时间特性要求
响应事件:
在输入控制信号时,能很好的显示所要求的时间和文字,达到只能控制。
2.灵活性
操作方式:
使用LCD模块显示当前信息情况,利用RTC模块控制实时时钟的转换来达到所给的效果,根据各个模块之间的连接,可以随意的显示出滚动显示功能。
3.2概要设计
图3.2系统整体架构图
4硬件电路设计
4.1UART
UART--通用异步串行通信接口的总称,UART允许在串行链路上进行全双工的通信,输出/输入的电平为TTL电平。
一般来说,全双工UART定义了一个串行发送引脚(TXD)和一个串行接收引脚(RXD),可以在同一时刻发送和接收数据;
RS232标准采用负逻辑方式,标准逻辑“1”对应-5V~-15V电平,标准逻辑“0”对应+5V~+15V电平。
因此UART的TTL电平需要进行RS232电平转换后,才能与RS232接口连接并通讯,可以使用SP3232E或SP3243ECA芯片进行电平转换;如下图所示:
图4.1.1
UART数据通讯字符格式(8位数据位,无奇偶校验位,1位停止位)。
如下图所示:
图4.1.2
4.2RTC
S3C2410A具有实时时钟(RTC)功能,能够提供时、分、秒,年、月、日的计时功能,还具备定时报警功能。
RTC单元采用独立的后备电池供电,独立是时钟源(采用32.768KHz晶振),即使系统电源关闭,RTC还可以正常工作;
图4.2RTC功能框图
4.3GPIO
5软件模块设计
5.1串行通信软件实现
(1)串行口工作于方式1;用定时器1产生9600bit/s的波特率,工作于方式2。
(2)功能:
将本机ROM中数码表TAB[16]中的16个数发送到从机,并保存在从机内部ROM中,从机收到这16个数据后送到一个数码管循环显示。
(3)通信协议:
主机首先发送连络信号(AAH),从机接收到之后返回一个连络信号(BBH)表示从机已准备好接收。
(4)通信过程使用第九位发送奇偶校验位。
(5)从机接收到一个数据后,立即进行奇偶校验,若数据没有错误,则返回00H,否则返回FFH。
(6)主机发送一个数据后,等待从机返回数据;若为00H,则继续发送下一个数据,若为FFH,则重新发送数据。
5.2程序流程
5.2.1甲机程序
1.甲机程序流程图
甲机主要使用键盘通过P2口,使用基于RS-232串口通信向乙机的P0口数码管发送数据,使得乙机的数码管显示甲机所按键盘的数字。
5-1甲机程序流程图
2.具体流程代码
(1)数码管代码的定义
ucharcodeKEY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00};
ucharPre_KeyNo=16,KeyNo=16;
(2)LED灯延时
voidDelayMS(uintms)
{
uchari;
while(ms--)for(i=0;i<120;i++);
}
(3)矩阵键盘扫描
voidKeys_Scan()
{
ucharTmp;
P2=0x0f;//高4位置0,放入4行
DelayMS
(1);
Tmp=P2^0x0f;//按键后0f变成0000XXXX,X中一个为0,3个仍为1,通过异或把3个1变为0
switch(Tmp)//判断按键发生于0~3列的哪一列
{
case1:
KeyNo=0;break;
case2:
KeyNo=1;break;
case4:
KeyNo=2;break;
case8:
KeyNo=3;break;
default:
KeyNo=16;//无键按下
}
P2=0xf0;//低4位置0,放入4列
DelayMS
(1);
Tmp=P2>>4^0x0f;//按键后f0变成XXXX0000,X中有1个为0,三个仍为1;高4位转移到低4位
switch(Tmp)//对0~3行分别附加起始值0,4,8,12
{
case1:
KeyNo+=0;break;
case2:
KeyNo+=4;break;
case4:
KeyNo+=8;break;
case8:
KeyNo+=12;
}
}
(4)向串口发送字符
voidPutc_to_SerialPort(ucharc)
{
SBUF=c;
while(TI==0);
TI=0;
}
(5)主程序
voidmain()
{
uchara;
LED1=1;
P0=0xff;
SCON=0x50;//串口模式1,允许接收
TMOD=0x20;//T1工作模式2
PCON=0x00;//波特率不倍增
TH1=0xfd;
TL1=0xfd;
TI=RI=0;
TR1=1;
IE=0x90;//允许串口中断
//扫描按键并发送数据
while
(1)
{
P2=0xf0;
if(P2!
=0xf0){
Keys_Scan();//获取键序号
LED1=0;
DelayMS(200);
}
LED1=1;
Putc_to_SerialPort(KeyNo);
}
}
(6)串口接收中断函数
voidSerial_INT()interrupt4
{
uchara;
if(RI)
{
RI=0;
P0=~KEY_CODE[SBUF];
}
}
5.2.2乙机程序
1.乙机程序流程图
甲机主要使用键盘通过P2口,使用基于RS-232串口通信向乙机的P0口数码管发送数据,使得乙机的数码管显示甲机所按键盘的数字。
图5-2乙机程序流程图
2.具体流程代码(由于乙机的运行过程与甲机一样,所以直接参见甲机程序即可)
6系统软硬件调试
在各种硬件设计好,软件编辑好后,终于开始了最终的联合测试。
联合测试是整个开发过程中最为重要的部分,如果测试的结果与预期结果不同,则代表此次的设计以失败告终,因此,测试的重要性可想而知。
在这次测试中,也遇到了诸多问题,最终通过组员的努力,最后一一解决。
6.1键盘的数据传输问题
本次设计的主要目的是两个单片机之间,通过键盘像另一个单片机发送数据,另一个单片机通过从串口接受的数据显示在自己P0口的数码管上。
在此次的初始测试时,键盘输入的数据,只能显示在自己的数码管上,不能显示在另一个单片机的数码管上。
经过仔细检查,结果发现是接收中断函数出现问题,后来将主程序中添加函数:
while
(1)
{
P2=0xf0;
if(P2!
=0xf0){
Keys_Scan();//获取键序号
}
Putc_to_SerialPort(KeyNo);//调用向串口发送数据函数
}
再在中断函数里添加函数:
uchara;
if(RI)
{
RI=0;
P0=~KEY_CODE[SBUF];//将串口接受的数据显示在数码管上
}
添加了以上的代码以后便解决了问题。
6.2LED灯闪烁问题
在键盘数据传输问题解决后,又遇到了一个新的问题,LED灯的闪烁问题。
理论上设定的是甲机发送数据,乙机接收并显示在数码管上,并且乙机的LED灯闪烁表示接受到数据。
实际测试时,并不是理想状态的对方LED灯亮,而是本机的LED灯亮。
图6-1测试LED图
后来通过寻求老师帮助,结果发现是中断接收函数出现问题,在老师的帮助下,最终顺利解决了问题。
6.3测试完成
在protues上进行仿真实验。
首先使用KeilC将编写完成的程序编译生成HEX文件,将HEX文件烧录到两片单片机中,进行仿真实验,结果如下图所示,可以看到,接收端已将接受到的数据完整的显示了出来。
图6-1测试结果显示图
结束语
为期八周的学年设计结束了,关于本次学年设计,大家的感受都很多。
总的来说是成功的,富有成效的,尽管其中充满了艰辛与困难。
但看到大家共同努力的成果时,所有的艰辛与疲倦都抛到了九霄云外。
另外一方面,在实践中,大家都发现了自身存在的一些不足,有待进一步提高与改善。
此次学年设计任务是实现单片机之间的串行通信,在实际调试中遇到的种种问题使我们在设计与调试中获得到了更多的知识。
整个学年设计过程是对我们这一年所学知识归纳总结和应用,也就是把理论知识用到实践中去,让理论和实践相结合,以此产生实际的成果。
而这正是我们学习理论知识的目的之所在。
理论和实践相结合的过程,使我们发现了自身一些方面的不足,比如理论知识掌握得不够精深。
更为重要的一点是理论和实践之间的差距很大,光有理论知识是不够的,还要有把理论知识灵活应用到实践中去的能力,这一点大家都有待进一步提高。
在实践中逐渐培养这种能力,不仅可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 告示 doc