电子电路设计实验报告10055117江龙灿.docx
- 文档编号:5406805
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:15
- 大小:372.63KB
电子电路设计实验报告10055117江龙灿.docx
《电子电路设计实验报告10055117江龙灿.docx》由会员分享,可在线阅读,更多相关《电子电路设计实验报告10055117江龙灿.docx(15页珍藏版)》请在冰豆网上搜索。
电子电路设计实验报告10055117江龙灿
《电子系统设计专题实验》
课程设计报告
班级:
计算机05
姓名:
江龙灿
学号:
10055117
学院:
电信学院计算机系
完成日期:
2013年4月22日
报告完成日期:
2013年5月1日
一、课程设计任务书
1.课程设计题目
一、硬件设计过程
根据芯片选型和参考设计,使用软件ProtelDXP2004SP2画出系统的原理图;再根据原理图,画出系统的硬件PCB电路连接图,特别要把题目用到的硬件电路部分,明确其片选地址、输入信号、输出信号等。
二、软件设计过程
1)采用模块化程序结构设计软件,首先将整个软件分成若干功能模块。
2)对各模块编写一个较详细的程序流程图。
3)根据流程图,编写源程序。
4)上机调试各模块程序。
5)各程序模块联调。
6)与硬件一起联调,最后完成全部调试工作。
2.原始资料
原始资料主要是老师提供的案例资料以及相应软件的使用技巧资料,例如ProtelDXP2004SP2在做硬件PCB电路图的实验中,主要根据给出的图例,自己完成电路图的绘画及最后的布线。
对于软件设计这块而言,基本上是基于上学期实验的基础上来完成的,在实验的过程中参考了上学期的试验资料,压缩包里有包含这些资料。
3.主要解决的问题
《电子系统设计》课程设计的目的就是要锻炼学生的实际动手能力。
在理论学习的基础上,通过完成一个基于AVRATmega128单片机的、具有综合功能的小系统,使学生将课堂上学到的理论知识与实际应用结合起来,对计算机、电子电路、电子元器件等方面的知识进一步加深认识,同时在软件编程、调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立设计单片机应用系统的开发设计工作打下一定的基础。
2.课程设计内容与要求
要求每个学生都要自己动手独立设计完成一个典型的单片机应用小系统。
设计题目由指导教师提供,也可以自己选择设计题目,但难度不应低于参考题目,需经指导教师审查后,方可确定是否采纳。
课程设计的时间为24学时。
设计的最终作品包括硬件和软件两个部分,要求能够演示并达到设计指标的要求。
每个学生(或小组)在作品完成后,要经指导教师检查通过后才算完成。
课程设计报告每个学生一份,独立完成。
在课程设计中,做到:
1、认真查阅资料;
2、遵守课程设计时间安排;
3、按时上机,认真调试程序;
4、认真书写设计报告。
3.课程设计步骤
1、选择题目
首先要明确题目要实现的功能,其技术参数和技术指标是什么,这是系统设计的起点和依据,它将贯穿于系统设计的全过程。
2、总体设计
本阶段的任务是通过调查研究,查阅资料来初步确定系统结构的总体方案,其中主要涉及到硬件和软件的功能划分。
应用系统中硬件功能和软件功能具有一定的互补性,即某些功能既可以用硬件实现也可以用软件实现。
一般说来,用硬件实现的优点是可以提高系统的工作速度,但会增加电路的复杂性和硬件成本;而用软件代替某些硬件的功能可以使电路简化,便于修改设计,降低硬件成本,但编写软件的工作量会增大。
总体设计时,必须在硬件和软件之间权衡,分工明确,然后分头开始设计。
4.命题发出日期
指导老师于2013年2月正式告知该学期的实验任务,实验内容如上所示,我于2013年4月22日晚完成最后一次的实验验收。
至此本学期的实验就以完成。
本实验报告写于2013年5月1日。
二、课程设计题目
一、硬件设计过程
根据芯片选型和参考设计,使用软件ProtelDXP2004SP2画出系统的原理图;再根据原理图,画出系统的硬件PCB电路连接图,特别要把题目用到的硬件电路部分,明确其片选地址、输入信号、输出信号等。
二、软件设计过程
1)采用模块化程序结构设计软件,首先将整个软件分成若干功能模块。
2)对各模块编写一个较详细的程序流程图。
3)根据流程图,编写源程序。
4)上机调试各模块程序。
5)各程序模块联调。
6)与硬件一起联调,最后完成全部调试工作。
三、课程设计任务与要求
任务一、画出系统的硬件PCB电路连接图并完成布线
任务二、从指导老师给定的几个题目中选择一个进行完成相应的功能模块,我选择了多功能电子公告板系统的电路与程序设计。
设计一个多功能电子公告牌系统。
实现汉字的显示、简单的滚屏和动画效果。
显示当前时间等。
汉字实现要求使用自己的小字库,可以在任意地方显示汉字。
四、硬件系统原理图与说明
本实验主要基于ProtelDXP2004SP2的软件进行
用该软件画出系统的硬件PCB电路连接图,如下图就是一个实现LED指示灯功能的电路图,这只是多个电路图中的一个为PCB设计项目文件夹下的LED文件。
该图就是一张包含功能内容比较全的一张电路图,后面的PCB硬件布线就是根据改图来实现的。
该图为PCB设计项目文件夹下的ATmega128L打开后得到的
我的学号位数为7,我需要完成的设计项目加上上面的LED也都包含在上图中,原始图也在PCB设计项目文件夹下包含。
由于是第一次使用该软件来做实验,步骤都不熟悉,是按着指导书的介绍及软件使用技巧还有指导老师给出的例子来完成的下图是第一次实验时按照指导书上的例子来做的一个比较简单电路的布线后的图
有了第一次实验的经验以后,下面就进入正题了,慢慢的完成了上面的电路图的绘制,不得不说的是在绘图的过程中,由于对元件名称的不熟悉,在上面花了不少时间,但最后还是完成了,下面就是完整电路图的布线后的效果。
这是没有布局前的,给人感觉就是乱!
这是调整后的,美观多了。
该图也在PCB设计项目文件下,由打开名为PCB1的PortelPCB文件后得到的
以上就是硬件PCB部分的实验报告了。
其相应的实验源文件均在压缩包中包含。
接下来是软件部分的实验报告。
五、多功能电子公告板系统的电路与程序设计
1.设计目标
设计一个多功能电子公告牌系统。
实现汉字的显示、简单的滚屏和动画效果。
显示当前时间等。
2.设计要求
汉字实现要求使用自己的小字库,可以在任意地方显示汉字。
在AVRATmega128上进行编程,完成汉字的显示与滚动功能。
要完成该实验首先要从字库中读取出所需的汉字。
从老师给出的下列字库中
这里我采用HZK16字库。
从字库中读取汉字我们选择使用Codeblock软件,进行简单的C++语言编写来读取,读取截图如下所示。
为图中的名为hzk的Csourcefile文件。
在hz文件夹下,压缩包中有包含。
下面是读取汉字的源代码在Codeblocks中编译的截图
这样就构建了自己的汉字库了,接下来就是怎么把汉字在显示屏上显示出来了。
在参考了上学期LCD.C的实现程序后,一开始我初步完成了汉字的显示以及滚动功能,但是我完成的滚动是上下滚动,并且滚动过程中汉字走过的地方有残留。
而且我想试试让它左右横屏滚动。
经过一番思考,和请教同学后终于在好几个小时的努力下完成了这次的实验任务,并且第一个验收了实验结果。
最终实现的程序源代码如下所示:
该程序的核心在于加粗斜体字的部分,该部分来实现汉字的左右移动。
#include
#include
#include"init.h"
#include
#include
#defineD_PORTPORTB
#defineSET_RS()PORTD|=_BV(PD5)
#defineCLR_RS()PORTD&=~_BV(PD5)
#defineSET_RW()PORTD|=_BV(PD6)
#defineCLR_RW()PORTD&=~_BV(PD6)
#defineSET_E()PORTD|=_BV(PD7)
#defineCLR_E()PORTD&=~_BV(PD7)
#defineNOP()asm("nop")
#defineDATA1
#defineCMD0
#defineNUM8
uint8_thztab[32*NUM]={
//江
0x40,0x00,0x30,0x08,0x17,0xfc,0x00,0x40,0x80,0x40,0x60,0x40,0x20,0x40,0x08,0x40,
0x10,0x40,0x20,0x40,0xe0,0x40,0x20,0x40,0x20,0x44,0x2f,0xfe,0x20,0x00,0x20,0x00,
//龙
0x02,0x00,0x02,0x40,0x02,0x20,0x02,0x04,0xff,0xfe,0x02,0x80,0x02,0x88,0x04,0x88,
0x04,0x90,0x04,0xa0,0x08,0xc0,0x08,0x82,0x11,0x82,0x16,0x82,0x20,0x7e,0x40,0x00,
//灿
0x10,0x20,0x10,0x20,0x10,0x20,0x14,0x20,0x54,0x20,0x59,0x24,0x51,0x24,0x91,0x24,
0x11,0x24,0x11,0x24,0x11,0x24,0x29,0x24,0x25,0x24,0x45,0x24,0x81,0xfc,0x01,0x04,
//数
0x08,0x40,0x49,0x40,0x2a,0x40,0x08,0x84,0xff,0xfe,0x19,0x08,0x2c,0x88,0x4a,0x88,
0x10,0x88,0xfe,0x90,0x22,0x50,0x22,0x20,0x14,0x50,0x18,0x88,0x25,0x0e,0x42,0x04,
//据
0x10,0x04,0x13,0xfe,0x12,0x04,0x12,0x04,0xff,0xfc,0x12,0x20,0x16,0x24,0x1b,0xfe,
0x32,0x20,0xd2,0x24,0x13,0xfe,0x15,0x04,0x15,0x04,0x15,0x04,0x59,0xfc,0x21,0x04,
//库
0x01,0x00,0x00,0x88,0x3f,0xfc,0x21,0x00,0x21,0x08,0x3f,0xfc,0x22,0x00,0x24,0x80,
0x28,0x90,0x2f,0xf8,0x20,0x80,0x20,0x84,0x3f,0xfe,0x40,0x80,0x40,0x80,0x80,0x80,
//满
0x41,0x20,0x31,0x24,0x1f,0xfe,0x01,0x20,0x80,0x08,0x6f,0xfc,0x21,0x20,0x01,0x24,
0x1f,0xfe,0x29,0x24,0xe9,0x24,0x2a,0xd4,0x2c,0x0c,0x28,0x04,0x28,0x14,0x28,0x08,
//分
0x00,0x80,0x04,0x80,0x04,0x40,0x08,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0x4f,0xee,
0x84,0x24,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x08,0x20,0x11,0x40,0x20,0x80,
};
voidwait_free()
{
uint8_tretb;
D_PORT=0xFF;
DDRB=0x00;
do{
NOP();
CLR_RS();
NOP();
SET_RW();
NOP();
SET_E();
NOP();
CLR_E();
retb=PINB;
}while((retb&0x80)!
=0);
}
voidwrite_comm(uint8_tcmd_dat,uint8_tcd)
{
wait_free();
DDRB=0xFF;
NOP();
if(cd==DATA)
SET_RS();
else
CLR_RS();
NOP();
CLR_RW();
D_PORT=cmd_dat;
NOP();
SET_E();
NOP();
CLR_E();
}
voidLCD_Init()
{
CHIP_Init();
PORTB=0x00;
DDRB=0xFF;
PORTD&=0x1F;
DDRD|=0xE0;
write_comm(0x01,0);
_delay_ms(15);
write_comm(0x36,0);
_delay_ms(5);
write_comm(0x0f,0);
write_comm(0x0c,0);
_delay_ms(5);
write_comm(0x06,0);
_delay_ms(5);
}
voidlcd_clear()//lcd缓存清零
{
inti,j;
for(j=0;j<32;j++)
{
write_comm(0x80+j,0);
write_comm(0x80,0);
for(i=0;i<32;i++)write_comm(0,1);
}
}
voidshr(intx,uint8_t*a)//行右移
{
uint8_tb[16];
intu=x/8,v=x%8;
inti,j;
uint8_tt=a[0];
for(i=0;i<16;i++)
b[i]=a[(i+u)%16];
for(i=0;i<16;i++)
a[i]=((b[i]&((1<<(8-v))-1))<
}
voidprint(intx,inty)//在屏幕(x,y)处显示字符
{
inti,j;
uint8_ta[16];
for(i=0;i<16;i++)
{
write_comm(0x80+(i+y)%32,0);
write_comm(0x80,0);
for(j=0;j { a[j*2]=hztab[i*2+j*32]; a[j*2+1]=hztab[i*2+1+j*32]; } for(j=NUM*2;j<16;j++)a[j]=0; shr(x,a); for(j=0;j<16;j++)write_comm(a[j],1); } } intmain() { unsignedinti,j,k,m; LCD_Init(); for(i=0;i<128;i++) { write_comm(0x36,0); lcd_clear(); print(i,i); write_comm(0x38,0); write_comm(0x98,0); write_comm(0x31,1); write_comm(0x99,0); write_comm(0x30,1); write_comm(0x9a,0); write_comm(0x30,1); _delay_ms(100); } while (1); } 至此实验就已完成。 遗憾的是最后没有拍下实验成功时屏幕显示汉字滚动的图片。 在完成这部分实验的过程中还是遇到了蛮多的困难的,一开始的时候为了消除其滚动起来的残影,在做清屏的时候换了好几种方法,但都不能达到预期的效果,后来才想明白,显示频其实是由8块小的显示屏组合起来的,上下各4块,这样一来问题就好解决的多,这也为后面实现汉字的左右移动有很大的帮助。 这部分知识是上学期课内实验的内容,当时没有好好掌握好才造成了这次做实验时遇到了几个棘手的问题。 老师和同学也给与了不少的帮助。 六、课程设计总结 这学期的实验可以说是上学期升级版,实验难度要比上学期高一些,实在上学期的基础上做一些自己的东西。 这学期一开始,从硬件的构成开始,显示让我们通过软件来自己设计自己需要相应功能的实验模板。 这样让我们对下面的实验环境就更加的熟悉,做接下来的实验也更加容易上手。 我觉得这样循序渐进的教学方法对我们掌握知识很有帮助。 之后就是这学期的算是正题实验吧,我选择了多功能电子公告板系统的电路与程序设计这一个任务,实验总体还算顺利,期间也遇到了不少困难,在参考资料,询问老师,求助同学帮助过程后,终于完成了实验的任务。 该实验与上学期的实验内容关系较大,参考了大部分的上学期的实验内容。 总而言之,这学期实验收获很大,给自己的启发也很多。 实验指导老师也很尽心负责。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 电路设计 实验 报告 10055117 江龙灿