电子工程设计报告

时间:2024.5.15

洛阳理工学院

电子工程设计报告

题目 家庭环境检测系统 系别 电气工程与自动化系 专业 自 动 化 姓名

指导教师

二零一二年三月

Summary

STC89C52 is a low-power, high-performance CMOS8-bit micro-controllers with 8K in system programmable Flash memory. On a single chip, has a clever 8-bit CPU and the system programmable Flash, STC89C52 provides high flexibility for many embedded control applications, super efficient solutions. Because of the 89C52 flexibility of I/O and precise timing control, you can easily simulate a variety of communication protocols, you can connect a variety of sensors. 12,864 LCD displays are flexible and can be a good human-computer interaction interface. This design by collecting the temperature, humidity, and smoke alarm sensor data and displayed on the LCD monitor of the family environment.

Keywords: STC89C52 loop mirror 12,864 sensor family liquid crystal

摘要

STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。由于89C52灵活的I/O和精确时序控制,可以方便的模拟各种通讯协议,可以连接各种传感器。12864液晶显示器显示灵活多变,可以是很好的人机交互界面。本设计通过采集温度,湿度和烟雾报警传感器的数据并显示在液晶屏上来监测家庭环镜。

关键词: STC89C52 传感器 家庭环镜 12864液晶

目录

一、总体设计概述…………………………………………….1

二、硬件设计………………………………………………….1

三、软件设计………………………………………………….2

四、课程设计制作心得……………………………………… 3

一、 总体设计概述

本设计是通过STC89c52单片机作为主要控制器,采用12864液晶作为显示设备,使用DS18B20温度传感器、DHT11湿度传感器和MQ-2烟雾报警器,通过单片机与传感器的通信采集当前环境下温度、湿度

和有害气体的状况并通过特定的算法,使用12864液晶显示当前环境对人体的舒适程度和有害气体的有无。12864会显示当前温度,湿度以及湿度对于家庭环境是干燥、潮湿还是舒适,有害气体监测模块有开关控制,打开后单片机开始读取数据,检测到有害气体后报警!会在12864上闪烁显示来进行报警。

二、 硬件设计

1.DHT11数字温湿度传感器

DHT11是一款含有已校准熟悉信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在即为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测型号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗。产品为4针单排引脚封装,连接方便。

2.DS18B20数字温度传感器

DS18B20接线方便,封装成后可应用于多种场合,如管道式,螺纹式, 磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。精确度可以达到0.5度。

3.12864液晶显示器

12864液晶分辨率为128*64,控制简便,显示清晰,可以使用并

口控制也可以使用串口节省单片机资源,而却该液晶带有中文字库可以方便的显示汉字,可以不再自己查找字库。

4.烟雾报警

MQ-2可燃气体检测用半导体气敏元件MQ-2气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。该传感器采集数据数据需要使用AD模块,在传感器与AD芯片模拟输入端连接处应并联一个小一点的电容进行滤波。

5.STC89c52单片机

STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,

全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。

三、 软件设计

1.开发环境

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。20xx年2月发布Keil μVision4,Keil μVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。 20xx年3月ARM公司发布最新集成开发环境RealView MDK开发工具中集成了最新版本的Keil uVision4,其编译器、调试工具实现与ARM器件的最完美匹配。

2.编程语言

C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于19xx年推出。1978后,C语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。

3.单总线协议

1-wire,即单线总线,又叫单总线。

近年来,美国的达拉斯半导体公司(DALLASSEMICONDUCTOR)推出了一项特有的单总线(1-Wire Bus)技术。该技术与上述总线不同,它采用单根信号线,既可传输时钟,又能传输数据,而且数据传输是双向的,因而这种单总线技术具有线路简单,硬件开销少,成本低廉,便于总线扩展和维护等优点。

单总线适用于单主机系统,能够控制一个或多个从机设备。主机可以是微控制器,从机可以是单总线器件,它们之间的数据交换只通过一条信号线。当只有一个从机设备时,系统可按单节点系统操作;当有多个从机设备时,系统则按多节点系统操作。

DS18B20温度传感器发送的温度数据为16进制的数据,而且有小数位和整数位,所以需要将小数位和整数位分开显示并做十六进制和十进制的转换,烟雾报警器用AD模块采集数据,所采集的数据需要和官方给定的参数进行对比,从而了解何种有害气体相应的浓度对应多少的AD采样值。

四、 设计心得

模块的设计都要按照各个元件的标准电路来设计,例如DS18B20的数据端就需要加上拉电阻在与单片机引脚连接,湿度传感器也一样。12864液晶显示器的PSB引脚再不用串口模式的时候应该置高。在万用板上焊接单片机最小系统时应该加上串口下载模块,可以不用拆卸单片机直接下载程序,省去很多的麻烦。


第二篇:电子工程设计2:小型温度控制系统结题报告


电子工程设计报告

题目:闭环温度控制系统设计 ——单片机、显示和键盘电路及系统软件

专 业:

小 组:

姓名学号:

指导教师:张辉

完成日期:

北京工业大学 电子工程设计I-2

摘 要

随着现代工业技术的迅猛发展,工业上的各种技术指标精度的要求也越来越高,在众多指标中,温度的测量与控制是一个永恒的话题,只有了精确地温度测量,才能把加热和散热的工作做得更好。本课题是小型温度测量与控制系统设计,以单片机AT89C51芯片为核心,和LED数码管显示,数模、模数转换和辅以稳压电源及变送器的测量控制系统,另配有键盘输入控制。

本设计详细介绍了LED显示与键盘控制电路的工作原理,硬件电路组成的思路和相应的C语言闭环程序。本设计主要包括以下几个模块:LED显示模块、键盘控制模块。能够对环境温度随时随地检测与显示,并可以在模板上设定相应温度值使系统达到设定温度。

【关键词】:LED显示、键盘控制、闭环程序、模板测试。

目 录

一、 功能指标要求---------------------------------------------------1

二、 D/A模块调试---------------------------------------------------1

三、 A/D模块调试---------------------------------------------------2

四、 显示电路模块---------------------------------------------------3

1. 显示电路设计-----------------------------------------------3

2. 显示电路原理分析-------------------------------------------4

五、 键盘控制电路模块-----------------------------------------------4

1. 键盘控制电路设计-------------------------------------------4

2. 键盘控制电路原理分析---------------------------------------4

六、 系统调试及程序设计---------------------------------------------4

七、 出现的问题分析及解决方法--------------------------------------14

八、 创新性--------------------------------------------------------14

九、 体会与建议----------------------------------------------------14

【附录Ⅰ】-----------------------------------------------------------15

- 0 -

一、功能指标要求

1) 显示模块:4 位7 段数码显示,前 3 位含小数点

2) 键盘模块:0~9数字输入键及若干功能设置按键控制 ;第10数字键作为允许控制开关

3) 独立电路板安装结构

二、D/A模块调试

调试方法:数据为从00—FF顺序递增并不断循环的数值。

输出端波形如图二(1):

图二(1)

调试程序:

#include "C8051F020.h"

#include "absacc.h"

#include "data_define.c"

#define C3 XBYTE[0x4000]

#define TIMER 0x8000

#include "Init_Device.c"

void delay(void);

void main(void)

{

unsigned char x;

Init_Device();

电子工程设计2小型温度控制系统结题报告

while(1)

1

{ ++x; C3=x; delay(); }

}

void delay(void)

{

int i;

for(i=0;i<TIMER;++i) ;

}

三、A/D模块调试

调试方法:输入信号范围: 0V~+5V

改变设置温度,运行A/D测试程序,检查模/数转换结果;

在调试台上通过+10按键不断改变温度数值,调试台LED会显示相应温度。

调试程序:

#include "C8051F020.h"

#include "absacc.h"

#include "data_define.c"

#define C2 XBYTE[0x2000]

#define TIMER 0x8000

#include "Init_Device.c"

void delay(void);

void main(void)

{

unsigned char x;

Init_Device();

while(1) { C2=x; delay(); x=C2; delay(); }

}

void delay(void)

{

unsigned char i;

for(i=0;i<TIMER;++i);

}

2

四、显示电路模块

1. 显示电路设计:

这次我们用的均为两位共阳极七段数码管,管脚见图四(1)

电子工程设计2小型温度控制系统结题报告

电子工程设计2小型温度控制系统结题报告

图四(1)

显示模块电路图见图四(2):

电子工程设计2小型温度控制系统结题报告

图四(2)

3

2. 显示电路原理分析:

我们选用静态显示控制电路,八位数据位作为74LS273数据锁存器的输入信号,273的输出信号作为七段数码管的输入信号,控制七个LED的亮灭。地址数据A1和A2作为74LS138三八译码器的输入信号,138输出信号为锁存器时钟信号,VCC接G1

电子工程设计2小型温度控制系统结题报告

端恒高有效,

和C1分别接译码器G2A和G2B端,恒低有效。Y0控制选通锁存器1(即设定值高位),Y1控制选通锁存器2(即设定值低位),Y2控制选通锁存器3(即显示值高位),Y3控制选通锁存器4(即显示值低位)。A1和A2按照程序设定的变化脉冲依次令Y0、Y1、Y2、Y3输出高脉冲,分别选通四个数码管,当8051芯片数据位输入信号时,四位数码管可以依照事先译好的数据表显示出相应的数值。

五、键盘控制电路模块

1. 键盘控制电路设计:见图五(1)

电子工程设计2小型温度控制系统结题报告

图五(1)

2. 键盘控制电路原理分析:

我们采用阵列键盘读取方案,C4和均输入低电平到74LS32或门,32输出到译码器选通。同时32也输出到74LS244数据锁存器选通。编写程序使138译码器依次输出低电平,扫描是否有键按下,当键盘上有键按下时,Yn为低电平,对应的Sn也为低电平(即对应的Dn也为低电平)。

六、系统调试及程序设计

系统调试:

4

第一步:我们首先用调试台调试,测试开环,编写程序烧录进8051,使我们自己设计的显示模块显示位跟随调试台上LED显示模块的变化。

第二步:编写PID闭环程序,编写程序烧录进8051,使系统能够从键盘上输入一个设定温度值并显示在系统显示模块设定位上。随后按下调试台“Manual”按键,使系统能够将现在温度值与设定值做差,以确定需要升温还是降温,系统显示模块显示值会逐渐接近设定值并最终稳定在一个与设定值误差非常小的数值上。

第三步:将完整系统(包括电源模块、系统模块、A/D模块和变送器、D/A模块、显示模块和键盘控制模块)移植到实验室真实模板上,先将模板设定为手动调节,设定一个值看系统显示位是否随动;再将模板还原为自动调节,从键盘输入一个设定值,打开调节按钮,观察系统显示位是否逐渐靠近设定位并最终稳定在一个非常相近的数值上,模板上加热(或制冷)提示灯是否点亮。如果上述答案是肯定的,系统成功,能够满足教学要求,实现小型温度控制系统。

调试程序:(自定义头函数见附录Ⅰ)

#include "C8051F020.h"

#include <absacc.h>

#include "data_define.c"

#include "Init_Device.c"

#include "address.h" //设备地址列表

#include "keytable.h" //键盘的键值表

#include "digtaltable.h" //数码管的编码表

static unsigned int DataT=0; //16进制的A/D数据

static int DataTO=0; //10进制的温度数据

static unsigned int DataTI=0; //10进制的目标温度(临时) static unsigned int TargetT=0; //10进制的目标温度

static char tp=0; //目标温度和当前温度的差值 static unsigned int sign=0; //表示tp的正负号

static unsigned char Switch=0; //开关键是否按下的标志

static unsigned int Input=0; //输入

void delay(void);

void delay1(void);

void Display(const unsigned int,const unsigned int);

unsigned int Convert(const unsigned int);

unsigned int ReadT(void);

unsigned int ReadKey(void);

unsigned int ReadKeyS(void);

unsigned int Decode(unsigned int);

unsigned int ReadInput(void);

5

void Task(void);

void main(void)

{

Init_Device();

while(1)

{

ReadInput(); //读取键盘

Task(); //对温度进行调整(主任务)

}

}

unsigned int Convert(const unsigned int a)

{

return (int) 95*a/0xff; //返回值=输入数据*95/255 (取整数) 返回值范围(0~95)

}

unsigned int ReadT(void)

{

C2=0; //向A/D转换器发出指令

delay(); //等待采样完成

return C2; //返回采样数据数据

}

void Display(const unsigned int x,const unsigned int z)

{

C13=DT3[z/10]; //第三个数码管,显示第二个数字的个位 C14=DT4[z%10]; //第四个数码管,显示第二个数字的十位 C11=DT1[x/10]; //第一个数码管,显示第一个数字的个位 C12=DT2[x%10]; //第二个数码管,显示第一个数字的十位 }

void delay(void) //延时子程序

{

long int i;

for(i=0;i<0x1f0;++i) ;

}

void delay1(void)

{

long int i;

6

for(i=0;i<0x81f0;++i) ; }

unsigned int ReadKeyS(void) {

unsigned char temp=0; unsigned char temp1=0; unsigned char i=0;

temp=C43; temp=0x1f&C43;

if(temp==0x1f) {

return 0xff;

}

temp1=temp; 是抖动

delay();

temp=0x1f&C43;

if(temp!=temp1) {

return 0xff;

}

if(temp==0x1e)

keytable定义)

{

return K11;

}

if(temp==0x1d) 作,则返回K12(在keytable定义) {

Switch=~Switch; return K12;

}

}

unsigned int ReadKey(void) {

unsigned int temp=0; unsigned int i=0; while(1)

{

temp=0x1f&C41; //读取键盘第三行 //屏蔽高3位 //如果没有按下,退出 //如有按下,则延时后再读一次,看看是不//两次读取值不同,说明是抖动,退出 //是第三行第一列的键,则返回K11(在//是第三行第二列的键,对Switch做求反操//扫描第一行,看有无按下 7

if(temp!=0x1f)

{

i=0x0;

break;

}

temp=0x1f&C42;

if(temp!=0x1f) //第一行如有有按下,则跳出while循环 //扫描第二行,看有无按下 //第二行如有有按下,则跳出while循环 {

i=0x40;

break;

}

temp=0x1f&C43;

if(temp!=0x1f)

{

i=0x80;

break;

}

temp=0x1f&C44;

if(temp!=0x1f)

{

i=0xC0;

break;

}

return 0xff;

}

return i|temp;

}

unsigned int Decode(unsigned int a)

{

switch(a)

{

case K1:

return 1;

case K2:

return 2;

case K3:

return 3;

case K4:

return 4;

case K5:

return 5;

case K6:

return 6;

case K7:

//扫描第三行,看有无按下 //第三行如有有按下,则跳出while循环 //扫描第四行,看有无按下 //第四行如有有按下,则跳出while循环 //都没有按下,返回0xff //将高三位和低五位合并 //对键值解码 8

return 7; case K8: return 8; case K9: return 9; case K10: return 0; case K11: return 10; default:

return 0xff; } }

unsigned int ReadInput(void) {

unsigned int key=0; unsigned int i=0; unsigned int temp=0;

key=ReadKeyS(); i=Decode(ReadKeyS());

if(i!=10) 值),则不读数据,退出 {

return 0xff; }

Display(0,DataTO); //delay1(); while(1) {

key=ReadKey(); i=Decode(key); if(i<10) 时的输入数据) {

DataTI=i; Display(DataTI,DataTO); break; }

Task(); 输入数据的时候单片机失去控温能力 }

//读取开关键是否按下 //对读取的键值解码

//如果不等于开关键(10为开关键解码后的

//数码管的输入区清零

//读取第一个键值(十位) //解码

//如果是前二行的键值,则更新DataTI(临

//更新DataTI

//更新数码管,显示输入的数字

//和main()的那个Task()相同,目的是防止

9

while(1) {

key=ReadKey(); if(key==0xff) break;

Task(); }

while(1) {

key=ReadKey(); i=Decode(key); if(i<10) 时的输入数据) {

DataTI=DataTI*10+i; Display(DataTI,DataTO); TargetT=DataTI; break; }

Task(); }

return DataTI; }

void Task(void) {

DataT=ReadT(); DataTO=Convert(DataT); if(DataTI>95) 时温度变送器为5V) {

DataTI=95; }

tp=TargetT-DataTO; if(tp<0) {

tp=~tp+1; sign=1;

//读取键值 //等键盘松开

//读取第二个键值(个位) //解码

//如果是前二行的键值,则更新DataTI(临

//更新DateTI数据

//更新数码管,显示输入的数字 //更新目标温度(正式)

//返回输入的数据

//读取A/D的数据

//把A/D数据转化为10进制的温度数据 //如果温度大于95度,就修正为96度(95度

//目标温度和目标温度的差值 //如果为负

//求差值绝对值

//符号位标记为1(1为负数,0为正数)

10

}

else

{

sign=0;

}

if(DataTO<31); {

while(1)

{

if(tp<1) {

C3=0x80;

break;

}

if(tp<4&&sign==0) (但不是满载)

{

C3=170;

break;

}

if(tp<4&&sign==1) (但不是满载)

{

C3=30;

break;

}

if(sign==1) (满载)

{

C3=0;

break;

}

if(sign==0) (满载)

{

C3=255;

break;

}

//符号位标记为0(1为负数,0为正数) //分三段控制,0~30度,31~70度,71~95度 //第一段 //如果差值为0,则令驱动器空载(0V) //如果差值小于4且为正数,令驱动器加热//如果差值小于4且为负数,令驱动器冷却//如果差值大于4且为负数,令驱动器冷却//如果差值大于4且为正数,令驱动器加热11

break;

}

}

if(DataTO<71&&DataTO>30); {

while(1)

{

if(tp<1) {

C3=0x80;

break;

}

if(tp<4&&sign==0) (但不是满载)

{

C3=220;

break;

}

if(tp<4&&sign==1) (但不是满载)

{

C3=75;

break;

}

if(sign==1) (满载)

{

C3=0;

break;

}

if(sign==0) (满载)

{

C3=255;

break;

}

break;

}

//第二段 //如果差值为0,则令驱动器空载(0V) //如果差值小于4且为正数,令驱动器加热//如果差值小于4且为负数,令驱动器冷却//如果差值大于4且为负数,令驱动器冷却//如果差值大于4且为正数,令驱动器加热12

}

if(DataTO<96&&DataTO>70); {

while(1)

{

if(tp<1) {

C3=0x80;

break;

}

if(tp<4&&sign==0) (但不是满载)

{

C3=255;

break;

}

if(tp<4&&sign==1) (但不是满载)

{

C3=100;

break;

}

if(sign==1) (满载)

{

C3=0;

break;

}

if(sign==0) 载)

{

C3=255;

break;

}

break;

}

}

//第三段 //如果差值为0,则令驱动器空载(0V) //如果差值小于4且为正数,令驱动器加热//如果差值小于4且为负数,令驱动器冷却//如果差值大于4且为负数,令驱动器冷却/如果差值大于4且为正数,令驱动器加热(满13

}

Display(DataTI,DataTO); return; //更新数码管显示

七、出现的问题分析及解决方法

问题一:我们在用老师的调试程序调试LED数码管时,发现无论怎么弄LED都显示乱码。

解决方法:后来问老师,我得知老师的程序是按照Q1~Q7依次对应数码管的a~g, 同时将程序再按照四个数码管不同的对应线路译出四个独立的表。 问题二:一开始调试闭环程序时我们用的是P调节,显示值确实很接近设定值,但是不能

稳定在某一数值,而是不停地变换,比如85、84来回跳。

解决方法:我们改进了程序,将P调节改进成PID调节,虽然在某些温度依然会

来回跳,但是比改进算法前要稳定了很多。

问题三:将系统移植到实验模板上时,我们发现最终显示值偏离设定值较大,最大偏差甚

至达到6~7度。

解决方法:我将0℃对应变送器输出0V,100℃对应5V。然而当我用万用表测了

100℃时变送器输出端的电压值,发现超过5V很多。于是我们重新整

定,调节变送器模块的两个电位器,使系统在模板上0℃时输出0V,

100℃时输出5V。再次进行闭环调试,问题解决。

八、创新性

创新点一:按键除抖,我们将程序设定为在扫描完一次按下的键后,间隔一定时间再次扫

描按下的键,如果两次扫描到的值相等,则确定其按下,否则将其作为误触。

创新点二:我们将键盘K11键作为设定允许键,每次要输入设定值前要先按下K11(即设定

允许键)方可进行输入。这样可以防止键盘被误触。

创新点三:真实条件测试,我们在调试台测试完整个系统后,将我们所有的模块移植到实

验室模板上,调试。使其成为能够调节真实温度的具有实际作用的系统。

创新点四:程序模块化编写,我们将一些有可能需要经常改动的参数写为头文件形式,如

报告后边的附录Ⅰ。这样可以大大减少程序调试时的工作量,比如在调试LED时,如果发现对应的码位不对,只需要在头文件里修改相应的值,代替修改主程序的所有相关参数。同时使程序更精简,运行速度更快。

九、体会与建议

14

经历了这次长达一年的电子工程设计。我们确实学到了很多很多,从一开始的不知从何下手,到最终的能够在真实模板上测试成功。这一年里,我们碰到过各种问题,比如电源保险烧断,芯片烧裂,程序出现问题无法进行,但是我们运用我们的能力最终将其解决,不管是问老师,问同学,上图书馆、网络查资料。这次大实验使我了解了一个真正具有实用意义的专业系统到底由哪些模块组成,他们之间又是怎么联系起来共同为系统服务的。其次就是锻炼了我们的耐心,一个从下午一点半上到晚上九点的实验,而且要在这期间不停地学知识,动手焊电路,编程。现在课设结束了,我要谢谢老师一年来不光传授我们知识,更锻炼了我们很多优良的特性,让我们提前适应了工作时的那种高效的要求。

除此之外,我也有一些建议。大家在查芯片的时候不要排斥英文的数据手册,因为本来很多芯片就是外国产的,他们更了解这个芯片的特性,而且在查PDF的过程中还能巩固很多专业词汇。其次,大家要敢于动手,不要因为爆了一个电容,被烙铁烫了一下手就对课设胆战心惊,其实现在多经历些总强于以后因此出大错。

【附录Ⅰ】

address.h:

#define C11 XBYTE[0xE000]

#define C12 XBYTE[0xE100] #define C13 XBYTE[0xE200] #define C14 XBYTE[0xE300] #define C3 XBYTE[0xBF00] #define C2 XBYTE[0xDF00] #define C40 XBYTE[0x7F00] #define C41 XBYTE[0x7000] #define C42 XBYTE[0x7100] #define C43 XBYTE[0x7200]

//第一个数码管

//第二个数码管 //第三个数码管 //第四个数码管 //D/A转换器 //A/D转换器 //键盘

//键盘第一行 //键盘第二行 //键盘第三行

#define C44 XBYTE[0x7300]

keytable.h:

#define #define #define #define #define #define #define #define #define #define #define #define

//键盘第四行

K1 0x1E K2 0x1D K3 0x1B K4 0x17 K5 0x0F K6 0x5E K7 0x5D K8 0x5B K9 0x57 K10 0x4F K11 0x9E K12 0x9D

15

digtaltable.h:

#define D10

#define D11

#define D12

#define D13

#define D14

#define D15

#define D16

#define D17 0x50 0xF9 0x4A 0x49 0xE1 0x45 0x44 0xD9 #define D18

#define D19

#define D20

#define D21

#define D22

#define D23

#define D24

#define D25

#define D26

#define D27

#define D28

#define D29

#define D30

#define D31

#define D32

#define D33

#define D34

#define D35

#define D36

#define D37

#define D38

#define D39

#define D40

#define D41

#define D42

#define D43

#define D44

#define D45

#define D46

#define D47

#define D48

#define D49

0x40 0x41 0x0C 0xAF 0xC8 0x8A 0x2B 0x1A 0x18 0x8F 0x08 0x0A 0x44 0xF5 0x86 0x85 0x35 0x0D 0x0C 0xE5 0x04 0x05 0x0C 0xEE 0x58 0x4A 0xAA 0x0B 0x09 0x6E 0x08 0x0A 16

#define DT1 digtaltable1 #define DT2 digtaltable2 #define DT3 digtaltable3 #define DT4 digtaltable4

code const unsigned int digtaltable1[]; 数组

code const unsigned int digtaltable2[]; 数组

code const unsigned int digtaltable3[]; 数组

code const unsigned int digtaltable4[]; 数组 //存放第一个数码管编码的//存放第二个数码管编码的//存放第三个数码管编码的//存放第四个数码管编码的

17

更多相关推荐:
电工电子课程设计报告书

武汉理工大学华夏学院课程设计报告书课程名称课程设计总评成绩学生姓名学号学生专业班级指导教师姓名课程设计起止日期课程设计基本要求课程设计是工科学生十分重要的实践教学环节通过课程设计培养学生综合运用先修课程的理论知...

电子电工实验课程设计报告

课程设计报告课程名称电工电子实验设计题目简易光控灯电路光电计数器专业班级学号姓名指导教师设计时间年月日1234567

电工电子课程设计报告最新

电子系统课程设计报告FIR数字滤波器设计专业:07级电子信息工程班级:电信一班学号:XXXXXXX姓名:XXX指导老师:XXXXXXXXX同组成员:XXX时间:20##年7月1日一、设计目的1、熟悉FIR滤波器…

南邮电工电子课程设计报告

通信与信息工程学院20##/20##学年第1学期课程设计II实验报告模块名称八只数码管动态显示单个数字专业通信工程(嵌入式系统开发)学生班级1000学生学号1000学生姓名指导教师报告内容摘要功能简介:1内容:…

电工电子课程设计报告(收音机)

电工电子课程设计报告黄峭河海大学文天学院100340114摘要收音机从它的诞生至今不仅方便了媒体信息的传播也推进了现代电子技术和更先进的电信设备的发展目前调频式或调幅式收音机一般都采用超外差式它具有灵敏度高工作...

电工电子技术课程设计报告

电工电子技术课程设计报告设计题目调幅超外差式收音机装配与调试专业班级学号学生姓名指导教师设计时间教师评分20年月日目录1设计目的2收音机的功能3无线电知识4超外差式收音机的工作原理5收音机的组装6收音机的调试7...

电工电子课程设计模版

中国石油大学胜利学院电工技术课程设计总结报告题目室内照明线路设计与安装学生姓名石瑞鑫系别电气信息工程系专业年级09级材料成型及控制工程二班指导教师王心刚20xx年12月24日目录一设计任务1二设计条件1三设计具...

电工电子设计性实验报告

广东石油化工学院电工电子实验中心题目家庭照明电路设计班级学号姓名指导教师张锋时间20xx3101电工电子技术课程设计任务书姓名班级指导老师张锋2目录一设计目的二家庭照明电路组成部分的功能和安装要求三设计的总体思...

电工电子课程设计

电工电子技术课程设计题目:简易声光控延时照明电路班级:学号:姓名:指导:时间:景德镇陶瓷学院电工电子技术课程设计任务书姓名:班级:指导老师:目录摘要一技术要求及确定方案二电路基本组成及工作原理1电控制电路2光控…

电子工艺与电子产品设计课程报告

电子工艺与电子产品设计课程报告姓名学院班级学号一实习内容1学习识别简单的电子元件与电子线路2学习并掌握充电器的工作原理3按照图纸焊接元件组装一台充电器并检验其使用效果4熟悉PCB板的一般制做流程二实习器材介绍1...

模拟电子技术课程设计报告

模拟电子技术课程设计报告课程名称设计题目学生姓名吕驰专业测控技术与仪器班级学号1020xx237指导教师郭彩萍设计日期20xx年6月27日至月日设计成绩总评摘要在电子工程通信工程自动控制遥测控制测量仪器仪表和计...

电子技术课程设计报告模板8

国家电工电子实验教学中心电子技术课程设计设计报告设计题目红外遥控开关学院电子信息工程学院专业通信0806学生姓名莫凌学号08211149指导教师李赵红20xx年1月13日电子技术课程设计设计报告目录1设计任务要...

电工电子课程设计报告(22篇)