导语:还在为温度显示系统设计发愁?这篇范文值得一读。全文约1450字,10分钟即可掌握。内容核心:讲清楚自己怎么用protel画原理图和pcb,完成一个能测温并显示的电路系统,重点是流程和实现过程。
适用对象:电子信息、自动化、通信工程专业的学生,尤其是要做课设或实习答辩的人。
使用场合:适合电子类专业学生写实习报告,做课程设计、实训项目的时候用,像温度检测系统这种题目就很常见。
核心内容:讲清楚自己怎么用protel画原理图和pcb,完成一个能测温并显示的电路系统,重点是流程和实现过程。
内容体量:1450字
阅读时长:10分钟
2电子系统设计实习报告范文
实训任务一:温度显示系统电路原理图pcb版图绘制
一、 设计目标
1.完成温度显示系统的设计,完成接收处理温度信号和控制八段数码管显示两部分功能电路的设计;
2.使用protel绘制电路原理图和pcb版图
二、 设计任务
1.完成电路原理图绘制,此部分包括
单片机部分:单片机最小系统(即时钟(晶振)和复位电路)、串口电路
温度采集输入:传感器电路、运算放大电路、ad转换电路
显示输出:译码电路、数码管电路
2.pcb版图绘制
所有原理图的器件必须有封装,才能完成版图绘制。
三、 设计要求
绘制电路原理图及pcb版图的过程中选用51系列单片机为核心为处理器。整体系统分三部分进行设计,分别为信号采集部分、单片机系统部分和显示部分。系统框图如图1所示。
四、 使用软件
1. protel d_p——电路原理图及pcb版图绘制软件;
五.绘制结果
1.电路原理图
六.故障分析
原理图pcb板绘制过程中的故障分析:
1. 部分芯片在protel软件芯片库中找不到,需要单独绘制原理图库及pcb库。
2. 由原理图生成pcb版图过程中需要编辑自己绘制的芯片将其对应的封装加入图库,否则pcb版图芯片显示不完全。
3. 在转换成pcb版图时命名重复的元件不会被显示需要将元件重新命名。
4. 根据自己的需要设计pcb版图的大小,经济上可以节约。
实训任务二: 凌阳61开发版功能开发
在知识竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判断出抢答者的功能。
八个按键表示八位参赛者所处位置以及其顺序编号,通过抢答者所处位置的数字显示筛选出第一抢答成功者。
1. 抢答器同时供8名选手或8个代表队比赛,分别用8个按钮s1 ~ s8表示。
2. 设置一个系统清除和抢答控制开关s。
3. 抢答器具有定时抢答功能。
4. 参赛选手在设定的时间内进行抢答,抢答有效,显示器上显示第一抢答成功选手的编号。
二、设计方案
1. 系统框图
2. 系统工作原理本文由实习报告收集整理
输入8个开关,序号为1、2、3、4、5、6、7、8
按下1时,编码器输出1 按下2时,编码器输出2……按下8时,编码器输出8
从编码器输出即可知道按下的是哪个开关,
抢答器是时间优先编码器,两人或多人在一定时间内同时按下开关,只能第一抢答成功者有效。对八个开关设置优先级,所用时间最短的选手优先级最大,多个开关同时按下时,输出优先级高的那个开关的序号。
3. 器件选型
凌阳61开发板,led键盘模组,排线,串口接线,电源
三、控制程序
1. 单片机控制数码管显示部分
(1) 流程图
略
(2) 源代码
#define p_ioa_data (volatile unsigned int _)0_7000
#define p_ioa_buffer (volatile unsigned int _)0_7001
#define p_ioa_dir (volatile unsigned int _)0_7002
#define p_ioa_attrib (volatile unsigned int _)0_7003
#define p_iob_data (volatile unsigned int _)0_7005
#define p_iob_buffer (volatile unsigned int _)0_7006
#define p_iob_dir (volatile unsigned int _)0_7007
#define p_iob_attrib (volatile unsigned int _)0_7008
#define p_watchdog_clear (volatile unsigned int _)0_7012
#define led_seg 0_00ff //iob0~iob7控制数码管或灯的状态
#define led_dig 0_3f00 //iob8~iob13分别控制6个数码管
#define led_lights 0_ //iob14控制led灯
#define key_all 0_ff00 //使用ioa8~ioa15作为键盘输入口
const unsigned char digcode[10]={0_3f,0_06,0_5b,0_4f,0_66,0_6d,0_7d,0_07,0_7f,0_6f};
//0~9十个数字的led编码
unsigned getkey(void)
{
unsigned keyvalue; //初始化ioa的相应端口为上拉输入
_p_ioa_dir=~key_all;
_p_ioa_attrib=~key_all;
_p_ioa_buffer|=key_all; //等待有键按下,即有端口变为0
while(!((_p_ioa_datakey_all)^key_all))
_p_watchdog_clear=1;
}
keyvalue=(_p_ioa_datakey_all)^key_all; //等待按键抬起
while((_p_ioa_datakey_all)^key_all)
return keyvalue;
} //获取按键地址的复函数
void ledlights(int bitvalue)
_p_watchdog_clear=1; //初始化iob为同相输出
_p_iob_dir|=led_lights led_seg;
_p_iob_attrib|=led_lights led_seg;
_p_iob_data=led_lights; //选中led灯
_p_iob_data|=bitvalue; //显示bitvalue指定的值
一般分设计目标、任务、要求、软件、结果、故障分析几块,每部分用标题分开,条目清晰,“一、设计目标”这样列出来。