数码管之简单加减法计算器--项目总结

数码管之简单加减法计算器--项目总结
数码管之简单加减法计算器--项目总结

数码管之简单加减法计算器--项目总结

总结人:徐冉1.项目使用到的硬件板载资源

1)单片机STC89C52RC作为系统的处理器

2)6位共阳极数码管作为计算器的数字显示器件

3)LCD1602液晶显示一些提示信息如计算时的符号(正/负)

4)4*4矩阵按键作为计算器的数字输入设备

5)8个贴片LED小灯,用于走马灯效果作为修饰

6)用到了单片机的内部资源定时器T0

2.项目的基本功能

通过程序的烧录,将工程中的hex文件烧录到Kingst-51开发板上。现象如下:

初始时

1)最右边的数码管上显示0,其余数码管不显示。

2)五个LED小灯像小火车一样循环跑着。

3)LCD1602液晶的左上角显示Symbol:字样,用于显示符号。

正数不显示,负数时将显示‘-’。

进行简单的加减法运算

当用户使用按键输入相应的数字时,会在数码管上显示。数字值将进行进位累加方式实现。数字键(k13 k1 ~ k3 k5 ~ k7 k9 ~ k11 0 ~ 9),k4加法功能键,k12减法功能键,k14 ESC清零键,k4和

k12是双功能键,即k4既是加法键也是计算键,k12既是减法键也是计算键。达到一键两用的效果。注意:用户在进行加法计算时可以随意计算,但在计算减法时第一步需要进行一次加法,然后才能进行减法运算。当计算结果是负数时会在数码管上显示相应的数值的绝对值,而在LCD1602液晶上显示‘-’。在计算期间LED 小灯会一直循环流动。这个计算器可以实现连加连减,计算十分方便,但没有处理小数。当计算完成时,或输入错误时可按k14进行清零操作。

3.项目的创新点

首先该项目使用了LED 的跑马灯效果进行了装饰,为了程序的简单且直观性程序使用了LCD1602进行运算时符号的显示。程序在计算上使用了一键两用的功能设计,这样设计方便快捷。

4.项目的设计流程

N

Y

上电

LCD1602液晶

初始化

74HC138译码器初始化

配置定时器T0定时1ms 中断

Lcd1602初始化显示Symbol

主函数while 循环进行按键动作检测

1ms 到

按键扫描

LED 小灯&数码管扫描

结束

5.项目的不足之处

本项目只考虑了简单的加法和减法运算,且只是整数运算,而未能考虑到小数运算。乘除法亦没有考虑到。在进行减法运算时都必须进行一次加法运算才可以运算正常。

6.项目需要改进的地方

可对本项目进行全面的扩展,使其既能进行加减乘除运算,又能处理小数和负数的功能。符号显示直接使用数码管显示即可。将计算功能键单独进行处理,做成真正的计算器。

7.项目的硬件电路连接图

8.项目的源代码

/**

********************************************************************************

* @file mytype.h

* @author qlp

* @date 2014年6月18日

* @version V1.2.3

* @brief 自定义类型头文件

******************************************************************************** */

#ifndef _MYTYPE_H_H

#define _MYTYPE_H_H

typedef unsigned char uint8;

typedef unsigned int uint16;

typedef unsigned long uint32;

#endif //_MYTYPE_H_H

/**

***********************************************************************

* @file Lcd1602.c

* @author qlp

* @date 2014年6月18日

* @version V1.2.3

* @brief LCD1602液晶底层驱动

***********************************************************************

*/

#include

//LCD1602_IO

sbit LCD1602_RS = P1^0;

sbit LCD1602_RW = P1^1;

sbit LCD1602_EN = P1^5;

//74HC138

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

bit tmpADDR0 = 0;

bit tmpADDR1 = 0;//地址选择缓冲区

#define LCD1602_DB P0

/*暂停LED扫描*/

void LEDRefreshPause()

{

ENLED = 1;//关闭LED使能

tmpADDR0 = ADDR0;//因为LED和LCD同时使用了P1^0和P1^1引脚,所以要暂时保存ADDR0和ADDR1的数据即LED扫描地址值

tmpADDR1 = ADDR1;

P0 = 0xFF; //数码管+LED小灯去抖动

}

/*继续扫描LED*/

void ContinueRefreshLED()

{

ADDR0 = tmpADDR0;

ADDR1 = tmpADDR1;//恢复原来LED扫描的地址选择值

ENLED = 0;//选择LED

P0 = 0xFF; //数码管和LED去抖

}

/* 液晶忙碌等待 */

void LCD1602Wait()

{

unsigned char sta;

LCD1602_DB = 0xFF;//总线拉高,检测液晶状态字

LCD1602_RS = 0;

LCD1602_RW = 1;

do

{

LCD1602_EN = 1;

sta = LCD1602_DB;

LCD1602_EN = 0;//避免液晶输出数据

} while (sta & 0x80);//状态字最高位STA7 == 0空闲,1忙碌}

/* 液晶写命令 */

void LCD1602WriteCmd(unsigned char cmd)

{

LEDRefreshPause(); //暂停LED数码管刷新

LCD1602Wait();

LCD1602_RS = 0;

LCD1602_RW = 0;

LCD1602_EN = 0;

LCD1602_DB = cmd;

LCD1602_EN = 1;

LCD1602_EN = 0;

ContinueRefreshLED();//继续LED数码管刷新

}

/* 液晶写数据 */

void LCD1602WriteData(unsigned char dat)

{

LEDRefreshPause(); //暂停LED数码管刷新

LCD1602Wait();

LCD1602_RS = 1;

LCD1602_RW = 0;

LCD1602_EN = 0;

LCD1602_DB = dat;

LCD1602_EN = 1;

LCD1602_EN = 0;

ContinueRefreshLED();//继续LED数码管刷新

}

/* 液晶初始化 */

void InitalLCD1602()

{

LCD1602WriteCmd(0x38);

LCD1602WriteCmd(0x0C);

LCD1602WriteCmd(0x06);

LCD1602WriteCmd(0x01);//清屏

}

/* 写数据到液晶上,字符串str,坐标(x, y),地址addr */

void LcdShowStr(unsigned char x, unsigned char y, unsigned char * str)

{

unsigned char addr;

if (y == 0)

{

addr = 0x00 + x;

}

else

{

addr = 0x40 + x;

}

LCD1602WriteCmd(addr | 0x80);

while (*str != '\0')

{

LCD1602WriteData(*str++);

}

}

/**

******************************************************************************** * @file main.c

* @author qlp

* @date 2014年6月18日

* @version V1.2.3

* @brief 简易加减法可实现连加连减

* @note 单片机STC89C52RC MCU 晶振 11.0592MHZ

******************************************************************************** */

#include

#include

#include "mytype.h"

//74HC138

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

//时钟晶振和系统时钟

#define XTAL 11059200UL //11.0592MHZ

#define SYS_XTAL XTAL/12 //系统时钟,为晶振的12分频

//按键输入输出

sbit KEY_IN_1 = P2^4;

sbit KEY_IN_2 = P2^5;

sbit KEY_IN_3 = P2^6;

sbit KEY_IN_4 = P2^7;

sbit KEY_OUT_1 = P2^3;

sbit KEY_OUT_2 = P2^2;

sbit KEY_OUT_3 = P2^1;

sbit KEY_OUT_4 = P2^0;

bit flag = 0;//0 : add 1 : sub

//按键状态枚举

typedef enum {

KEY_DOWN = 0, KEY_UP = 1

} ekey;

//数据输入口

#define DISP_DB P0

static volatile uint8 keySta[4][4] = {

{1, 1, 1, 1},

{1, 1, 1, 1},

{1, 1, 1, 1},

{1, 1, 1, 1}

}; //按键当前值

/*矩阵按键到PC标准键盘键码映射表*/

uint8 code keyCodeMap[4][4] = {

{0x01, 0x02, 0x03, 0x0A}, //数字键1-3 向上键UP

{0x04, 0x05, 0x06, 0x0D}, //数字键4-6 向左键Left

{0x07, 0x08, 0x09, 0x0C}, //数字键7-9 向下键DOWN

{0x00, 0x0E, 0x0F, 0x0B} //数字键0 ESC键回车键向右键Right };

uint8 code LedTable[] = {

0xC0, //"0"

0xF9, //"1"

0xA4, //"2"

0xB0, //"3"

0x99, //"4"

0x92, //"5"

0x82, //"6"

0xF8, //"7"

0x80, //"8"

0x90, //"9"

0xBF //"-"

};

/* 定义跑马灯数组 */

unsigned char code LedTable2[] = {

0xE0, // 11100000

0xC1, // 11000001

0x83, // 10000011

0x07, // 00000111

0x0E, // 00001110

0x1C, // 00011100

0x38, // 00111000

0x70 // 11100000

};

uint8 LedBuff[7] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};//数码管显示缓冲区uint8 thr0, tlr0;

//定义用于加法计算的变量

signed long result = 0;//结果

signed long addNum = 0;//加数

void KeyHandle();

void KeyAction(uint8 keycode);

void KeyScan();

void showNum(uint32 num);

void ConfigHC138();

void ConfigTimer0(uint16 xms);

extern void InitalLCD1602();

extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char * str);

void main()

{

InitalLCD1602();

ConfigHC138();

ConfigTimer0(1);

LcdShowStr(0, 0, "Symbol: ");//符号

while (1){

KeyHandle();

}

}

/**

* @brief : Led小灯扫描

* @param : 无

* @retval : 无

*/

void LED_Scan( void )

{

static unsigned char j = 0;

P0 = 0xFF; /* 消隐 */

LedBuff[6] = LedTable2[j++]; /* 送入要求的数据到LED显示数据口 */ j &= 0x07; /* 到8归零 */

}

/**

* @brief 定时器T0配置

* @param xms

* @retval 无

*/

void ConfigHC138()

{

ADDR3 = 1;

ENLED = 0;

LedBuff[0] = LedTable[0];

}

/**

* @brief 定时器T0配置

* @param xms

* @retval 无

*/

void ConfigTimer0(uint16 xms)

{

uint16 tmp;

tmp = 65536-xms*SYS_XTAL/1000;

thr0 = (uint8)(tmp >> 8);

tlr0 = (uint8)(tmp & 0x00FF);

TMOD &= 0xF0;

TMOD |= 0x01;

TH0 = thr0;

TL0 = tlr0;

TR0 = 1;

EA = 1;

ET0 = 1;

}

/**

* @brief 按键驱动函数 (根据按下的按键的键码执行相应的动作)

* @param 无

* @retval 无

*/

void KeyHandle()

{

static uint8 backup[4][4] = {

{1, 1, 1, 1},

{1, 1, 1, 1},

{1, 1, 1, 1},

{1, 1, 1, 1}

}; //按键备份值

uint8 i = 0, j = 0;

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

for (j = 0; j < 4; j++)

{

if (keySta[i][j] != backup[i][j])

{

if (backup[i][j] == KEY_DOWN)

{ //按键弹起

KeyAction(keyCodeMap[i][j]);//调用按键动作函数,根据按下的按键的键码执行相应的操作

}

backup[i][j] = keySta[i][j];//备份按键值

}

}

}

/**

* @brief 按键动作函数 (根据按下的按键的键码执行相应的动作)

* @param 按下按键的键码 uint8 keycode

* @retval 无

*/

void KeyAction(uint8 keycode)

{

if (result >= 0)

{

LcdShowStr(9, 0, " ");//清除

}

else

{

}

if ((keycode >= 0x01) && (keycode <= 0x09)) //keycode 键码是0-9的按键

{

addNum = (addNum * 10) + (keycode - 0x00);//将原来的加数扩大十倍后,在加上用户按下的数字,即为用户输入的加数

showNum(addNum);//数据分解

}

else if (keycode == 0x0A) //向上键 +

{

//将上一个加数+到result中

result += addNum;//可以实现连加

addNum = 0;

showNum(result);//分解并显示结果

}

else if (keycode == 0x0C) //向下键 - {

result -= addNum;//连减

addNum = 0;

if (result >= 0)

{

showNum(result);

}

else

{

result = -result;

LcdShowStr(9, 0, "-");

showNum(result);

result = 0;

}

}

else if (keycode == 0x0E) //ESC键

{

result = 0;

addNum = 0;//清零

showNum(addNum);

LcdShowStr(9, 0, " ");//清除}

else if (keycode == 0x0F) //回车键

{

addNum = 0;

showNum(result);

}

}

/**

* @brief 数据分解,只显示有效位

* @param 待分解的数据 uint32 num

* @retval 无

*/

void showNum(uint32 num)

{

uint8 buff[6];//中间缓冲区

signed char i = 0;

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

{

buff[i] = num % 10;//取最低位数字

num /= 10;//num缩小10倍

}

//去掉无效位,不显示0

for (i = 5; i >= 1; i--) //从最高位开始检测无效位,遇0就赋值0xFF

{

if (buff[i] == 0)

{

LedBuff[i] = 0xFF;//不显示

}

else

{

break;//遇到第一个有效位就退出

}

}

//将有效位数字存入缓冲区

for (; i >= 0; i--)

{

LedBuff[i] = LedTable[buff[i]];

}

}

/**

* @brief 按键检测

* @param 无

* @retval 无

*/

void KeyScan()

{

static uint8 keybuff[4][4] = {

{0xFF, 0xFF, 0xFF, 0xFF},

{0xFF, 0xFF, 0xFF, 0xFF},

{0xFF, 0xFF, 0xFF, 0xFF},

{0xFF, 0xFF, 0xFF, 0xFF}

}; //按键检测值缓冲区

static uint8 keyout = 0;//行索引

uint8 i = 0;

keybuff[keyout][0] = (keybuff[keyout][0] << 1) | KEY_IN_1;//检测第keyout行的第0个按键的值

keybuff[keyout][1] = (keybuff[keyout][1] << 1) | KEY_IN_2;

keybuff[keyout][2] = (keybuff[keyout][2] << 1) | KEY_IN_3;

keybuff[keyout][3] = (keybuff[keyout][3] << 1) | KEY_IN_4;

//更新消抖后的按键值

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

{

if ((keybuff[keyout][i] & 0x1F) == 0x1F) //五次连续检测都是1

{

keySta[keyout][i] = KEY_UP;

}

else if ((keybuff[keyout][i] & 0x1F) == 0x00) //五次连续检测都是0

{

keySta[keyout][i] = KEY_DOWN;

}

}

keyout++;//行++

if (keyout >= 4)

keyout = 0;

switch (keyout)

{

case 0: KEY_OUT_4 = 1; KEY_OUT_1 = 0; break;

case 1: KEY_OUT_1 = 1; KEY_OUT_2 = 0; break;

case 2: KEY_OUT_2 = 1; KEY_OUT_3 = 0; break;

case 3: KEY_OUT_3 = 1; KEY_OUT_4 = 0; break;

default : break; //只有一行被选中

}

}

/**

* @brief LED数码管刷新

* @param 无

* @retval 无

*/

void refresh()

{

static uint8 j = 0;

DISP_DB = 0xFF;//消隐

switch (j)

{

case 0: ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; break;

case 1: ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; break;

case 2: ADDR2 = 0; ADDR1 = 1; ADDR0 = 0; break;

case 3: ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; break;

case 4: ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; break;

case 5: ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; break; case 6: ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; break;

default: break;

}

DISP_DB = LedBuff[j++];

if (j >= 7)

{

j = 0;

}

}

/**

* @brief 定时器T0中断服务

* @param 无

* @retval 无

*/

void timer0_ISP() interrupt 1

{

static unsigned char counter = 0;

TH0 = thr0;

TL0 = tlr0;

counter++;

if (counter >= 200)

{

counter = 0;

LED_Scan();

}

KeyScan();//按键检测

refresh();//数码管刷新

}

于2014年6月25日23:40:29

计算机专业实习心得总结

计算机专业实习心得总结 计算机专业的同学在参加实习的时候,可以总结一下自己的实习心得哦!下面带来,欢迎参考! 1 在internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。因此网站建设在internet 应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。 计算机将具备更多的智能成分,它将具有多种感知能力、一定的思考与判断能力及一定的自然语言能力。除了提供自然的输入手段外,让人能产生身临其境感觉的各种交互设备已经出现,虚拟现实技术是这一领域发展的集中体现。今天人们谈到计算机必然地和网络联系起来,一方面孤立的未加入网络的计算机越来越难以见到,另一方面计算机的概念也被网络所扩展。二十世纪九十年代兴起的internet在过去如火如荼地发展,其影响之广、普及之快是前所未有的。从没有一种技术能像internet一样,剧烈地改变着我们的学习、生活和习惯方式。全世界几乎所有国家都有计算机网络直接或间接地与internet相连,使之成为一个全球范围的计算机互联网络。

人们可以通过internet与世界各地的其它用户自由地进行通信,可从internet中获得各种信息。人们已充分领略到网络的魅力,internet大大缩小了时空界限,通过网络人们可以共享计算机硬件资源、软件资源和信息资源。网络就是计算机的概念被事实一再证明,被世人逐步接受。 通过这两年的学习实践中和老师的指导下以大量明晰的操作步骤和典型的应用实例,教会我们。使更丰富全面的软件技术和应用技巧,使我们真正对所学的软件融会贯通,熟练在手。所以本人结合所学专业的内容制作了个人网站,作为实习的成果。其内容是多样化的。制作网页用的软件是dreamweaver,fireworks,flash软件。dreamweaver大大加速了网络时代电子交易应用中的项目交付。它提供了网页和表单的动态生成到企业级的解决方案,如电子商店,库存管理系统和企业内部局域网的数据库应用等功能。fireworks 是目前最流行的网页图象制作软件。 只要将dreamweaver的默认图象编辑器设为fireworks,那么在fireworks中制作完成网页图象后将其输出就会立即在dreamweaver中更新。fireworks还可以安装使用所有的photoshop滤镜,并且可以直接导入psd格式图象。更方便的是它不仅结合了photoshop位图功能以及coreidraw矢量图的功能,而且提供了大量的网页图象模板供用户使用,例如,网页上很流行的阴影和立体按纽等效果,只需单击一下

基于msc51单片机实现的四位4乘4矩阵键盘计算器的C语言程序及其PROTUES电路和仿真

单片机原理及接口技术 课程设计报告 设计题目:计算器设计 学号:100230205 姓名:费博文 指导教师:张扬 信息与电气工程学院 二零一三年七月

计算器设计 单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机。是一种特殊器件,需经过专门学习方能掌握应用,应用中要设计专用的硬件和软件。近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。其中系统的抗干扰性能是系统可靠性的重要指标。 数学是科技进步的重要工具,数据的运算也随着科技的进步越发变得繁琐复杂,计算器的出现可以大大解放人在设计计算过程中的工作量,使计算的精度、速度得到改善,通过msc51单片机,矩阵键盘和LED数码管可以实现简单的四位数的四则运算和显示,并当运算结果超出范围时予以报错。 注:这一部分主要描述题目的背景和意义,对设计所采取的主要方法做一下简要描述。字数不要太多,300-500字。 另注:本文要当做模板使用,不要随意更改字体、字号、行间距等,学会使用格式刷。文中给出的各项内容都要在大家的报告中体现,可采用填空的方式使用本模板。 1. 设计任务 结合实际情况,基于AT89C51单片机设计一个计算器。该系统应满足的功能要求为: (1) 实现简单的四位十进制数字的四则运算; (2) 按键输入数字,运算法则; (3) LED数码管移位显示每次输入的数据和运算结果; (4) 当运算结果超出范围时实现报错。 主要硬件设备:AT89C51单片机、LED数码管、矩阵键盘。 注:这一部分需要写明系统功能需求,用到的主要硬件(参考实验箱的说明书)。

计算机维护与维修试题及答案

计算机维护与维修试卷A 一、填空题:(每空1分,共20分) 1.计算机的硬件主要由__________、__________、__________、__________以及电源等硬件组成。 2.计算机主机是__________、__________、__________的总称,主要包括 __________、__________、__________等部件。 3.主板可以按三种方法进行分类,即按__________、__________或__________来分类。 4.显卡一般由显示器接口、__________、__________、AGP(或PCI)接口和Video BIOS组成。以选择。 5.计算机病毒可以分为__________、__________和__________。 6.目前杀毒软件一般都具备两种功能,一方面可以__________,另一方面可以进行__________。 二、判断题:(每题2分,共20分) 1.鼠标和键盘的插口可以混用。() 2.在连接电源线和数据线时都要注意方向。() 3.一个操作系统必须有一个基本分区,但是也只能有一个基本分区。()

4.打印机一般接在串行口上。() 5.所谓驱动程序,就是允许特定的设备与操作系统进行通讯的程序。() 6.微机故障是指微机系统由于某部分硬件或软件不能正常工作引起的。() 7.计算机配件的选择没有先后顺序,可以随机地一件件选择。() 8.简单说,硬件更换法就是利用好的设备来逐一替换现有设备从而确定故障所在。() 9.一般来说,宏病毒不会感染数据文件。() 10.杀毒软件只能清除病毒,而不能预防病毒。() 三、选择题:(每题4分,共40分) 1.对一台计算机来说,()的档次就基本上决定了整个计算机的档次。 A、内存 B、主机 C、硬盘 D、CPU 2.计算机的()设备是计算机和外部进行信息交换的设备。 A、输入输出 B、外设 C、中央处理器 D、存储器 3.评定主板的性能首先要看()。 A、CPU B、主芯片组 C、主板结构 D、内存

计算机专业实训总结报告模板

计算机专业实训总结报告模板 尊敬的各位领导,各位老师.亲爱的同学们: 大家好!首先自我介绍一下,我是计算机学院计算机科学与技术专业的一名学生我叫李班化,今天有机会作为代表在此发言,我感到非常荣幸和无比激动. 曾经心潮澎湃,曾经满怀激情,曾经翘首等待那为期两周的实训学习,现在已经结束了.这是我们升入大学以来的第一次外出那么远的地方实训,因此可以说我们每个人都很认真的参加了这一次实训活动. 但是,同学们当我们从实训中满怀喜悦,满载而归时,不要忘了,我们之所以能有这次充实难忘的实训机会,是因为有了校以及学院的大力支持,实训带队老师的全心指导和无私的关怀;若没有校以及学院各位领导以及相关部门的大力支持,我们是绝对不会能有这次密切结合所学专业,密切接近实际工作环境的实训机会;若没有各位实训老师和蔼可亲的指导,全心全意的无私关怀,我们绝不可能能顺利完成实训任务,也绝不可能满载而归.在这里,请允许我代表07级全体实训生向校以及学院各位领导为我们精心打造的密切结合所学专业的实训平台致以最衷心的感谢;向为了我们能真正学到知识而不辞辛苦做了大量工作,而且每天都会激励我们的实训带队老师致以最衷心的感谢! 实习中我们学到了很多书本上学不到的知识,同时也更加深刻地感觉到了动手能力的重要性.可以说实习中我们每一个人都有了自己的收获,收获了心中的那份经历,那份感受,那份回忆! 实训过程是繁琐的,但同学们都表现得很积极,不怕课程难,相互帮助一起分析.这对于我们来说是一种难得的历练,我们此次针对的是web开发的课程实训,主要针对项目的开发流程进行系统性地实际操作.很多同学甚至吃了饭就一头扎在实训中.实训的指导老师也非常认真负责,耐心讲解,细心指导,一点一点解答同学们的疑惑,直到同学们理解了为止.在实训中,分析,讨论,演算,机房里充满了浓浓的学习气氛. 如果说的大学是社会,那实践便是的老师了.通过本次的实训,我们对自己的专业有了更深的了解与体会.我们明白理论与实践相结合的必要性和重要性.它激发了我们下一阶段更加努力刻苦学习的积极性.有一句关于实践的谚语是这样说的:"我听到的会忘掉,我看到的能记住,我做过的才真正明白.实践经验对于软件开发者来说更是必不可少的."微软公司希望应聘程序员的大学毕业生有十万行的编程经验.理由很简单:实践性的技术要在实践中提高.计算机归根结底是一门实践的学问,不动手是永远也学不会的.因此,最重要的不是在笔试中考高分,而是实践能力.吃苦是为了做金字塔尖上的人. "纸上得来终觉浅,绝知此事要躬行!"在短暂的实训过程中,让我深深的感觉到自己在实际运用中的专业知识的匮乏,刚开始的一段时间里,对一些工作感到无从下手,茫然不知所措,这让我感到非常的难过.在学校总以为自己学的不错,一旦接触到实际,才发现自己知道的是多么少,这时才真正领悟到"书到用时方恨少"的含义. 在经过了复杂而忙乱的设计编程后,我们按时完成了实训单位交给的任务.虽然结果并没有达到我们最初设想的效果,但在排除了时间短,所涉及的知识范围较广等客观原因后,我们看到的的是自身上的不足,我们所掌握的远不能满足

计算机图形学总结

第一章绪论 计算机图形学的基本概念 计算机图形学:是研究怎样用数字计算机生成、处理和显示图形的一门学科。 图形:计算机图形学的研究对象。 构成图形的要素:几何要素——几何属性(点、线、面、体) 非几何要素——视觉属性(明暗、灰度、色彩、纹理、透明性、线型、线宽) 表示图形的方法:点阵表示;参数表示 研究内容 计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法,构成了计算机图形学的主要研究内容。 图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。 计算机图形学的应用 图形用户界面;计算机辅助设计与制造(CAD/CAM);4 科学计算的可视化:CT; 真实感图形实时绘制与自然景物仿真;地理信息系统(GIS);Virtual Reality(虚拟现实、灵境);事务和商务数据的图形显示;地形地貌和自然资源的图形显示 过程控制及系统环境模拟;电子出版及办公自动化;计算机动画及广

告 计算机艺术;科学计算的可视化;工业模拟;计算机辅助教学 当前研究热点: 1.真实感图形实时绘制 2.野外自然景物的模拟3 与计算机网络技术的紧密结合 4 计算机动画 5 用户接口 6 计算机艺术 7 并行图形处理 所熟悉的图形软件包 图形软件的标准 GKS (Graphics Kernel System) (第一个官方标准,1977) PHIGS(Programmer’s Herarchical Iuteractive Graphics system) 一些非官方图形软件,广泛应用于工业界,成为事实上的标准 DirectX (MS) Xlib(X-Window系统) OpenGL(SGI) Adobe公司Postscript CAGD(Computer Aided Geometric Design) 图形系统的功能1.计算功能2.存储功能3.对话功能4.输入功能5.输出功能 图形输入设备 1 键盘和鼠标 2 跟踪球和空间球 3 光笔 4 数字化仪 5 触摸板 6 扫描仪

计算机维护与维修(高起专)

平顶山学院 补考 课程:计算机维护与维修(高起专)总时长:120分钟 1. (单选题) 计算机开机后,发出1长2短的报警声,很可能的原因是( )(本题4.0分) A. 存储器没有安装或检测不到硬件 B. 计算机检测不到显示器或显卡损坏 C. 有些机型固有的设置,属于正常情况 D. 计算机声卡损坏 答案: B 解析: 无 2. (单选题) 计算机在使用过程中,音箱突然没有声音,引发故障的原因不可能是( )(本题4.0分) A. Windows中的音量控制设为静音 B. 音箱线圈损坏 C. 声卡安装松动或接触不良 D. 光驱激光头被污物堵塞 答案: D 解析: 无 3. (单选题) 计算机的显示器黑屏,首先应该检查( )(本题 4.0分)

A. 电源是否接通 B. 检查系统是否中毒 C. 主板是否烧毁 D. 驱动程序是否安装 答案: A 解析: 无 4. (单选题) 计算机组装完毕,所有连接无误,加电开机后检测不到硬盘或光驱,可能的原因是( )(本题4.0分) A. 厂商提供硬盘或光驱有故障 B. 计算机CPU损坏 C. 计算机内部的出厂设置有误 D. 硬盘或光驱的跳线设置不正确 答案: D 解析: 无 5. (单选题) 用户在按光驱开/关仓门按钮时,光驱仓门无法打开,但光驱指示灯有闪烁。此故障可能属于( )(本题4.0分) A. 机械故障 B. 电路故障 C. 接触不良 D. 介质故障

答案: A 解析: 无 6. (单选题) 光盘上有污物导致光盘无法读取,此类故障属于( )(本题4.0分) A. 机械故障 B. 电路故障 C. 接触不良 D. 介质故障 答案: D 解析: 无 7. (单选题) 一台微机,启动时屏幕显示下列信息:CMOS Battery State Low, 试判断故障原因。( )(本题4.0分) A. 电源电压过低 B. CMOS设置参数有误 C. 时间设置有误 D. 主板上的电池电压不足 答案: D 解析: 无 8. (单选题) 下面( )故障会引起显示器屏幕局部发生形状的扭曲和变色(本题4.0分) A. 病毒 B. 显示驱动程序出错

计算机专业实训总结报告

计算机专业实训总结报告 尊敬的各位领导,各位老师.亲爱的同学们: 大家好!首先自我介绍一下,我是计算机学院计算机科学与技术专业的一名学生我叫李班化,今天有机会作为代表在此发言,我感到非常荣幸和无比激动. 曾经心潮澎湃,曾经满怀激情,曾经翘首等待那为期两周的实训学习,现在已经结束了.这是我们升入大学以来的第一次外出那么远的地方实训,因此可以说我们每个人都很认真的参加了这一次实训活动. 但是,同学们当我们从实训中满怀喜悦,满载而归时,不要忘了,我们之所以能有这次充实难忘的实训机会,是因为有了校以及学院的大力支持,实训带队老师的全心指导和无私的关怀;若没有校以及学院各位领导以及相关部门的大力支持,我们是绝对不会能有这次密切结合所学专业,密切接近实际工作环境的实训机会;若没有各位实训老师和蔼可亲的指导,全心全意的无私关怀,我们绝不可能能顺利完成实训任务,也绝不可能满载而归.在这里,请允许我代表07级全体实训生向校以及学院各位领导为我们精心打造的密切结合所学专业的实训平台致以最衷心的感谢;向为了我们能真正学到知识而不辞辛苦做了大量工作,而且每天都会激励我们的实训带队老师致以最衷心的感谢! 实习中我们学到了很多书本上学不到的知识,同时也更加深刻地感觉到了动手能力的重要性.可以说实习中我们每一个人都有了自己的收获,收获了心中的那份经历,那份感受,那份回忆! 如果说最好的大学是社会,那实践便是最好的老师了.通过本次的实训,我们对自己的专业有了更深的了解与体会.我们明白理论与实践相结合的必要性和重要

性.它激发了我们下一阶段更加努力刻苦学习的积极性.有一句关于实践的谚语是这样说的:"我听到的会忘掉,我看到的能记住,我做过的才真正明白.实践经验对于软件开发者来说更是必不可少的."微软公司希望应聘程序员的大学毕业生最好有十万行的编程经验.理由很简单:实践性的技术要在实践中提高.计算机归根结底是一门实践的学问,不动手是永远也学不会的.因此,最重要的不是在笔试中考高分,而是实践能力.吃苦是为了做金字塔尖上的人. "纸上得来终觉浅,绝知此事要躬行!"在短暂的实训过程中,让我深深的感觉到自己在实际运用中的专业知识的匮乏,刚开始的一段时间里,对一些工作感到无从下手,茫然不知所措,这让我感到非常的难过.在学校总以为自己学的不错,一旦接触到实际,才发现自己知道的是多么少,这时才真正领悟到"书到用时方恨少"的含义. 在经过了复杂而忙乱的设计编程后,我们按时完成了实训单位交给的任务.虽然结果并没有达到我们最初设想的效果,但在排除了时间短,所涉及的知识范围较广等客观原因后,我们看到的更多的是自身上的不足,我们所掌握的远不能满足这次任务的要求,我们还有很多东西需要在今后学习中生活中去理解去掌握.这次的任务使我们深刻体会到,学习与实践这之间的距离,只有不断的吸取理论知识,在实践中进行磨炼,才能适应现今科技超速发展的计算机时代.

西安电子科技大学计算机图形学重点总结,缩印必备!

反走样:在光栅显示器上显示图形时,直线段或图形边界或多或少会呈锯齿状。原因是图形信号是连续的,而在光栅显示系统中,用来表示图形的却是一个个离散的象素。这种用离散量表示连续量引起的失真现象称之为走样;用于减少或消除这种效果的技术称为反走样 反走样方法主要有:提高分辨率、区域采样和加权区域采样 提高分辨率:把显示器分辨率提高一倍,锯齿宽度也减小了一倍,所以显示出的直线段看起来就平直光滑了一些。这种反走样方法是以4倍的存储器代价和扫描转换时间获得的。因此,增加分辨率虽然简单,但是不经济的方法,而且它也只能减轻而不能消除锯齿问题。 区域采样方法:假定每个象素是一个具有一定面积的小区域,将直线段看作具有一定宽度的狭长矩形。当直线段与象素有交时,求出两者相交区域的面积,然后根据相交区域面积的大小确定该象素的亮度值。 加权区域采样:相交区域对象素亮度的贡献依赖于该区域与象素中心的距离。当直线经过该象素时,该象素的亮度F是在两者相交区域A′上对滤波器进行积分的积分值 刚体:平移和旋转的组合,保持线段的长度,保持角的大小,图形不变形,为刚体变化 仿射:旋转、平移、缩放的组合为仿射变换,平行边仍然平行,错切变换也为仿射变换 较高次数逼近的三种方法:1将y和z直接表示成x的显函数即y=f(x) z=g(x)2用一个形如f(x,y,z)=0的隐式方程的解来表示曲线3曲线的参数表示 前两方法缺点:1由一个x值不能得到多个y值;这一定义不是旋转不变的;描述具有与坐标轴垂直的切线的曲线是困难的2给定方程的解可能更多;曲线段做链接时,很难确定他们的切线方向在连接点上是否相等 参数表示为什么要选择三做参数:1低于三次的函数控制曲线形状时不够灵活,高于三次的曲线会增加不必要的摆动其增加计算量2三次参数曲线是三维空间中次数最低的非平面曲线3定义高次曲线需要更多条件,这样在交互生成时会造成曲线的摆动而难以控制 G0连续:两条曲线段拼接成一条曲线 G1连续:两条曲线段拼接点处切向量方向相同。若相等(方向、大小)-C1 Gn连续:两条曲线段拼接点处切向量的阶导数方向相同。n阶导数相等-Cn B样条曲线优势:1四点加权求和,调和函数非负且和为1,具有凸壳特性2可证明Qi和Qi+1在连接点处连续3曲线段三次函数,所以整个曲线具有连续4凸壳的对曲线裁剪有用 中点生成算法: TBRL中点生成算法:

模拟计算器数字输入及显示课程设计

摘要 本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个4*4的键盘,一个排阻(10K)做P0口的上拉电阻(接线图在附录2),它可以实现结果低于65535的加、减、乘、除运算。 显示部分:采用动态显示,由八位共阳极数码管通过P0口,P2口与单片机相连,数码管的A,B,C,D,E,F,G,DP分别依次与单片机的P0.0—P0.7相连,P0口做为单片机的字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7相连,P2口作为数码管的位控制端。 按键部分:采用4*4键盘。采用软件识别键值并执行相应的操作,键盘的第0行到第3行依次与单片机的P3.4—P3.7管脚相连,键盘的第0列到第3列依次与单片机的P1.0—P1.3管脚相连,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。 执行过程:开机即显示0,等待键入数值,当键入数字,将通过数码管显示出来,在键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当在键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。注:结果不能超出65535。(具体操作见后面仿真图)

目录 1 概述 1.1MCS-51单片机在自动化仪表中的作用 (3) 1.2掌握单片机仿真软件Proteus的使用方法 (3) 1.3设计方法 (3) 1.4基本功能 (4) 2 系统总体方案及硬件设计 2.1计算器总体思想 (5) 2.2硬件的选择与连接 (6) 3 软件设计 3.1显示程序设计 (7) 3.2键盘识别程序设计 (8) 3.3运算程序设计 (10) 3.4风鸣器程序设计 (10) 4 Proteus软件仿真 (12) 5课程设计体会 (16) 参考文献 (18) 附1:源程序代码 (19) 附2:计算器模拟系统电路图 (31)

计算机专业的实训总结

计算机专业的实训总结 随着高校计算机课程的普及,计算机实训室已经成为高校办学能力的重要评估条件之一,承担着全校计算机基础课程及计算机专业课程的教学工作,成为提高学生计算机水平的主要载体,成为开展计算机科学研究的重要场所。以下是小编为大家整理的计算机实训总结范文四篇,仅供参考。 计算机实训总结范文篇(一) 时间过得真快,转眼间为期一周的实训已经结束。经过这一周的实训练习让我们学到了许多知识,回头想想实训这几天我们确实是有很大收获的。 一周,看似很简短的时间,实际上按小时计算120小时却是个不小的数字,也许有些牵强。但是简短的时间仍是有效的,因为在这一周中我们学到了很多东西,并且接触了从没有制作过的文件和一些演示文稿。这一周我们在学习的同时,也进一步懂得了操作的重要性,实训过程中自己有很多的不懂,很多的问题,都是通过老师或同学的帮助完成的,这次实训让我明白了实训的主要目的是让我们同过不断的实习来积累经验,进而才能把书本的知识转换为技能。实践出真理,在这一周的实训确实有些累,不知从哪开始入手,但是累的有价值。学海无涯,有很多很多的东西在向我们招手,等待我们去努力的学习。在以后的工作、生活和学习中,发展自己的优势,弥补自己的不足和缺陷。

我们兴高采烈的进入到我们实训的计算机机房,打开各自的实训电脑,老师发来我们当天的实训内容。在操作中才知道自己会的只有书本上的知识,到实际操作时什么都不会。自己慢慢的从书上找,结果不是操纵不对就是做不出来结果不对,这些问题我和同学还有老师说过,在老师和同学的帮助下我知道自己的不足之处,并且我改正自己的不足并牢记它。 就这样,我们实训了一周,但是收获不小,在实训中改正自己操作中的不足之处,让我知道实际操作并不是那么简单,实际操作是需要牢固的基础知识,两者是不可分开的。 老师布置了一些的作业给我们操练,在老师精心的指导下我已把Excel,word,网络,powerpoint等操作的很好了!现在我们已步入大学,经过半年的在校学习,对电脑还只是初步的认识和理解,但在这学期期间,一直忙于理论知识的学习,没能有机会放开课本,真正切身感受计算机魅力,所以在实训之前,电脑对我们来说是比较抽象的,但通过这次实训,我们揭开了她神秘的面纱,离我们不再遥远!据我了解,大多数同学都以前接触过电脑,也有玩过一些游戏,却不懂操作一些对我们以后工作有用的系统。对于我们所学的计算机知识渗透较少,之前都是老师操作为主。此次实训就不同了,同学们都作了充分准备,在活动中同学们都提前来到教室上课,每位同学都认真的操作、练习;听着“嗒嗒”的打

计算机图形学心得体会

计算机图形学心得体会 姓名: 学号: 201203284 班级: 计科11202 序号: 31 院系: 计算机科学学院

通过一个学期的学习,经过老师细心的讲解,我对图形学这门课有了基础的认识,从您的课上我学到了不少知识,基本上对图形学有了一个大体的认识。上课的时候,您的PPT做的栩栩如生,创意新颖的FLASH就吸引了我的眼球,再加上您那详细生动的讲解,就让我对这门课产生了浓厚的兴趣,随着一节一节课的教学,您的讲课更加深深地吸引了我,并且随着对这门课越来越深入的了解更促使我产生了学好这门的欲望。您教会了我们怎们做基本知识,还教了我们不少的算法。听您的课可以说是听得津津有味。以下就是我对计算机图形学这门课的认识。 一、图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。从处理技术上来看图形主要分为两类一类是基于线条信息表示的如工程图、等高线地图、曲面的线框图等另一类是明暗图也就是通常所说的真实感图形。计算机图形学一个主要的目的就是要利用计算机产生令人赏心悦目的真实感图形。为此必须建立图形所描述的场景的几何表示再用某种光照模型计算在假想的光源、纹理、材质属性下的光照明效果。所以计算机图形学与另一门学科计算机辅助几何设计有着密切的关系。事实上图形学也把可以表示几何场景的曲线曲面造型技术和实体造型技术作为其主要的研究内容。同时真实感图形计算的结果是以数字图像的方式提供的计算机图形学也就和图像处理有着密切的关系。 二、计算机图形学的研究内容非常广泛如图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法、非真实感绘制以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。1990年的第11届亚洲运动会上首次采用了计算机三维动画技术来制作有关的电视节目片头。继而以3D Studio 为代表的三维动画微机软什和以Photostyler、Photoshop等为代表的微机二维平面设计软件的普及对我国计算机动画技术的应用起到了推波助谰的作用。计算机动画的应用领域十分宽广除了用来制作影视作品外在科学研究、视觉模拟、电子游戏、工业设计、教学训练、写真仿真、过程控制、平面绘画、机械设计等许多方面都有重要应用如军事战术模拟。 三、科学计算可视化它将科学计算过程中及计算结果的数据转换为几何

基于51单片机的红外数码管计算器

基于51单片机的数码管应用 一、设计要求 1、基本要求 (1)焊接一个单片机最小系统,接通电源后,至少能在四位数码管上同时显示四个非0的相同的数字。 (2)至少四位数码管能动态显示出[0,1,2,3],达到一定的效果。 (3)能用按键改变显示的数字。 2、发挥部分 (1)增加数码管至8位。 (2)增加4*4矩阵按键,实现简易的8位计算器功能。 (3)增加红外接收模块,实现遥控功能。 (4)增加蜂鸣器,当有按键按下时发声。 (5)利用遥控器实现倒计时功能。

二、系统硬件配置 本系统采用STC89C52RC单片机作为微控制器,分为6个模块(如下图所示):按键电路,红外感应电路,蜂鸣器响应电路,数码管显示电路,晶振以及复位电路。 下面是电路图部分 :

三、系统软件设计 1、主程序模块 主程序需要调用5 个子程序,各模块程序功能如下: ●数码管显示程序:向数码的显示送数,控制系统的显示部分。 ●按键消抖程序:采用检验连续四次按键状态的方式软件消抖。 ●矩阵按键扫描程序:每4*4 ms扫描一次按键。 ●中断设定程序:实现定时功能。 ●数值计算程序:实现8位计算四则运算功能。 主程序流程见图如下:

四、系统源代码 Main.c部分代码如下: #include sbit BUZZ = P3^3; sbit KEY_IN_1 = P2^3; sbit KEY_IN_2 = P2^2; sbit KEY_IN_3 = P2^1; sbit KEY_IN_4 = P2^0; sbit KEY_OUT_1 = P2^4; sbit KEY_OUT_2 = P2^5; sbit KEY_OUT_3 = P2^6; sbit KEY_OUT_4 = P2^7; unsigned char code LedChar[]={ 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E }; unsigned char code KeyCodeMap[4][4]={ {0x31,0x32,0x33,0x25}, {0x34,0x35,0x36,0x26}, {0x37,0x38,0x39,0x27}, {0x1B,0x30,0x0D,0x28} }; unsigned char KeySta[4][4]={ {1,1,1,1}, {1,1,1,1}, {1,1,1,1}, {1,1,1,1} };

《计算机维护与维修》练习题及答案

《计算机维护与维修》练习题及答案 一、单项选择题。 1.开机后,一般情况下按___c______即可进入BIOS设置。 A.Shift键B.Ctrl键 C.Del键 D.Alt键 2.计算机硬件系统是由___D______、主板、存储器、输入和输出设备等部件构成。 A.硬盘 B.软盘 C.键盘 D.中央处理器 3.有一CPU型号为 P4 2.4GHz,其中2.4GHz指的是CPU的___A______。 A.主频B.倍频 C.外频 D.前端频率 4.目前所使用的计算机是__B_______。 A.模拟计算机 B.数字计算机 C.混合计算机 D.特殊计算机 5.只读存储器的英文缩写为____B_____。 A.PROM B.ROM C.EPROM D.RAM 6.内存的大部分是由RAM组成的,其中存储的数据在断电后___C______丢失。 A.不会 B.部分C.完全 D.不一定 7.硬盘中的每个扇区的容量是__B_______。 A.1024KB B.512B C.1024MB D.512KB 8.计算机工作环境温度应保持适中,一般温度是在 A 之间。 A.18℃~30℃B.15℃~25℃ C.10℃~20℃ D.25℃~40℃ 9.CPU的工作时钟频率等于 ( D ) A.主板的频率 B.总线的频率 C.外频 D.外频乘以倍频系数 10.微机中运算器所在的位置( B ) A.内存 B.CPU C.硬盘 D.光盘 11.硬盘的数据传输率是衡量硬盘速度的一个重要参数。它是指计算机从硬盘中准确找到相应数据并传送到内存的速率,它分为内部和外部传输率,其内部传输率是指( D ) A.硬盘的高缓到内存 B.CPU到Cache C.内存到CPU D.硬盘的磁头到硬盘的高缓 二、填空题。 1.从电脑组装维修的角度,主板分为三大部分各种插槽、芯片和接口。 2.在主板故障中主板报警音代码为不断地响(长声)则代表内存条未插紧或损坏。3.日常用的硬盘分区软件是Ghost和 FDISK 。 4.硬盘在分区后必须进行高级格式化操作才能正常使用。 5.软件系统故障可分为系统故障、程序故障和病毒故障等。6.计算机维修可分为两个级别,即一级维修和二级维修。一级维修又叫板维修,二级维修也称片维修。 7.电脑故障的诊断原则是先软后硬,先外后内。 8.在计算机的故障故障诊断的基本方法有一种叫直观检查法。它包括以下几点:分别是看、听、闻和摸。 9.计算机病毒的特点有传染性、潜伏性、破坏性和针对性。 10.目前流行的病毒有宏病毒、网络病毒、CIH病毒和黑客程序。11.CPU的接口分为 Socket 和 Slot 两大类。 12.衡量CPU的性能指标有CPU的主频、缓存、工作电压和接口。 13.维修的基本方法就是首先要熟悉系统软硬件基本知识、安装设置、操

计算机专业实训总结报告

三一文库(https://www.360docs.net/doc/2014590946.html,)/总结报告/实习报告 计算机专业实训总结报告 尊敬的各位领导,各位老师.亲爱的同学们: 大家好!首先自我介绍一下,我是计算机学院计算机科学与技术专业的一名学生我叫李班化,今天有机会作为代表在此发言,我感到非常荣幸和无比激动. 曾经心潮澎湃,曾经满怀激情,曾经翘首等待那为期两周的实训学习,现在已经结束了.这是我们升入大学以来的第一次外出那么远的地方实训,因此可以说我们每个人都很认真的参加了这一次实训活动. 但是,同学们当我们从实训中满怀喜悦,满载而归时,不要 忘了,我们之所以能有这次充实难忘的实训机会,是因为有了校以及学院的大力支持,实训带队老师的全心指导和无私的关怀;若没有校以及学院各位领导以及相关部门的大力支持,我们是绝对不会能有这次密切结合所学专业,密切接近实际工作环境的实训机会;若没有各位实训老师和蔼可亲的指导,全心全意的无私关怀,我们绝不可能能顺利完成实训任务,也绝不可能满载而归.在这里,请允许我代表07级全体实训生向校以及学院各位领导

为我们精心打造的密切结合所学专业的实训平台致以最衷心的 感谢;向为了我们能真正学到知识而不辞辛苦做了大量工作,而且每天都会激励我们的实训带队老师致以最衷心的感谢! 实习中我们学到了很多书本上学不到的知识,同时也更加深刻地感觉到了动手能力的重要性.可以说实习中我们每一个人都有了自己的收获,收获了心中的那份经历,那份感受,那份回忆! 实训过程是繁琐的,但同学们都表现得很积极,不怕课程难,相互帮助一起分析.这对于我们来说是一种难得的历练,我们此次针对的是web开发的课程实训,主要针对项目的开发流程进行系统性地实际操作.很多同学甚至吃了饭就一头扎在实训中.实训的指导老师也非常认真负责,耐心讲解,细心指导,一点一点 解答同学们的疑惑,直到同学们理解了为止.在实训中,分析,讨论,演算,机房里充满了浓浓的学习气氛. 如果说最好的大学是社会,那实践便是最好的老师了.通过本次的实训,我们对自己的专业有了更深的了解与体会.我们明白理论与实践相结合的必要性和重要性.它激发了我们下一阶段更加努力刻苦学习的积极性.有一句关于实践的谚语是这样说的:"我听到的会忘掉,我看到的能记住,我做过的才真正明白. 实践经验对于软件开发者来说更是必不可少的."微软公司希望应聘程序员的大学毕业生最好有十万行的编程经验.理由很简单:实践性的技术要在实践中提高.计算机归根结底是一门实践的学

计算机图形学必考知识点

Phong Lighting 该模型计算效率高、与物理事实足够接近。Phong模型利用4个向量计算表面任一点的颜色值,考虑了光线和材质之间的三种相互作用:环境光反射、漫反射和镜面反射。Phong模型使用公式:I s=K s L s cosαΦα:高光系数。计算方面的优势:把r和v归一化为单位向量,利用点积计算镜面反射分量:I s=K s L s max((r,v)α,0),还可增加距离衰减因子。 在Gouraud着色这种明暗绘制方法中,对公用一个顶点的多边形的法向量取平均值,把归一化的平均值定义为该顶点的法向量,Gouraud着色对顶点的明暗值进行插值。Phong着色是在多边形内对法向量进行插值。Phong着色要求把光照模型应用到每个片元上,也被称为片元的着色。 颜色模型RGB XYZ HSV RGB:RGB颜色模式已经成为现代图形系统的标准,使用RGB加色模型的RGB三原色系统中,红绿蓝图像在概念上有各自的缓存,每个像素都分别有三个分量。任意色光F都可表示为F=r [ R ] + g [ G ] + b [ B ]。RGB颜色立方体中沿着一个坐标轴方向的距离代表了颜色中相应原色的分量,原点(黑)到体对角线顶点(白)为不同亮度的灰色 XYZ:在RGB 系统基础上,改用三个假想的原色X、Y、Z建立了一个新的色度系统, 将它匹配等能光谱的三刺激值,该系统称为视场XYZ色度系统,在XYZ空间中不能直观地评价颜色。 HSV是一种将RGB中的点在圆柱坐标系中的表示法,H色相S饱和度V明度,中心轴为灰色底黑顶白,绕轴角度为H,到该轴距离为S,沿轴高度为S。 RGB优点:笛卡尔坐标系,线性,基于硬件(易转换),基于三刺激值,缺点:难以指定命名颜色,不能覆盖所有颜色范围,不一致。 HSV优点:易于转换成RGB,直观指定颜色,’缺点:非线性,不能覆盖所有颜色范围,不一致 XYZ:覆盖所有颜色范围,基于人眼的三刺激值,线性,包含所有空间,缺点:不一致 交互式计算机程序员模型 (应用模型<->应用程序<->图形库)->(图形系统<->显示屏).应用程序和图形系统之间的接口可以通过图形库的一组函数来指定,这和接口的规范称为应用程序编程人员接口(API),软件驱动程序负责解释API的输出并把这些数据转换为能被特定硬件识别的形式。API提供的功能应该同程序员用来确定图像的概念模型相匹配。建立复杂的交互式模型,首先要从基本对象开始。良好的交互式程序需包含下述特性:平滑的显示效果。使用交互设备控制屏幕上图像的显示。能使用各种方法输入信息和显示信息。界面友好易于使用和学习。对用户的操作具有反馈功能。对用户的误操作具有容忍性。Opengl并不直接支持交互,窗口和输入函数并没有包含在API中。 简单光线跟踪、迭代光线跟踪 光线跟踪是一种真实感地显示物体的方法,该方法由Appel在1968年提出。光线跟踪方法沿着到达视点的光线的相反方向跟踪,经过屏幕上每一象素,找出与视线所交的物体表面点P0,并继续跟踪,找出影响P0点光强的所有的光源,从而算出P0点上精确的光照强度。光线跟踪器最适合于绘制具有高反射属性表面的场景。优缺点:原理简单,便于实现,能生成各种逼真的视觉效果,但计算量开销大,终止条件:光线与光源相交光线超出视线范围,达到最大递归层次。一般有三种:1)相交表面为理想漫射面,跟踪结束。2)相交表面为理想镜面,光线沿镜面反射方向继续跟踪。3)相交表面为规则透射面,光线沿规则透射方向继续跟踪。 描述光线跟踪简单方法是递归,即通过一个递归函数跟踪一条光线,其反射光想和折射光线再调用此函数本身,递归函数用来跟踪一条光线,该光线由一个点和一个方向确定,函数返回与光线相交的第一个对象表面的明暗值。递归函数会调用函数计算指定的光线与最近对象表面的交点位置。 图形学算法加速技术BVH, GRID, BSP, OCTree 加速技术:判定光线与场景中景物表面的相对位置关系,避免光线与实际不相交的景物表面的求交运算。加速器技术分为以下两种:Bounding Volume Hierarchy 简写BVH,即包围盒层次技术,是一种基于“物体”的场景管理技术,广泛应用于碰撞检测、射线相交测试之类的场合。BVH的数据结构其实就是一棵二叉树(Binary Tree)。它有两种节点(Node)类型:Interior Node 和Leaf Node。前者也是非叶子节点,即如果一个Node不是Leaf Node,它必定是Interior Node。Leaf Node 是最终存放物体/们的地方,而Interior Node存放着代表该划分(Partition)的包围盒信息,下面还有两个子树有待遍历。使用BVH需要考虑两个阶段的工作:构建(Build)和遍历(Traversal)。另一种是景物空间分割技术,包括BSP tree,KD tree Octree Grid BSP:二叉空间区分树 OCTree:划分二维平面空间无限四等分 Z-buffer算法 算法描述:1、帧缓冲器中的颜色设置为背景颜色2、z缓冲器中的z值设置成最小值(离视点最远)3、以任意顺序扫描各多边形a) 对于多边形中的每一个采样点,计算其深度值z(x,y) b) 比较z(x, y)与z缓冲器中已有的值zbuffer(x,y)如果z(x, y) >zbuffer(x, y),那么计算该像素(x, y)的光亮值属性并写入帧缓冲器更新z缓冲器zbuffer(x, y)=z(x, y) Z-buffer算法是使用广泛的隐藏面消除算法思想为保留每条投影线从COP到已绘制最近点距离,在投影后绘制多边形时更新这个信息。存储必要的深度信息放在Z缓存中,深度大于Z缓存中已有的深度值,对应投影线上已绘制的多边形距离观察者更近,故忽略该当前多边形颜色,深度小于Z缓存中的已有深度值,用这个多边形的颜色替换缓存中的颜色,并更新Z缓存的深度值。 void zBuffer() {int x, y; for (y = 0; y < YMAX; y++) for (x = 0; x < XMAX; x++) { WritePixel (x, y, BACKGROUND_VALUE); WriteZ (x, y, 1);} for each polygon { for each pixel in polygon’s projection { //plane equation doubl pz = Z-value at pixel (x, y); if (pz < ReadZ (x, y)) { // New point is closer to front of view WritePixel (x, y, color at pixel (x, y)) WriteZ (x, y, pz);}}}} 优点:算法复杂度只会随着场景的复杂度线性增加、无须排序、适合于并行实现 缺点:z缓冲器需要占用大量存储单元、深度采样与量化带来走样现象、难以处理透明物体 着色器编程方法vert. frag 着色器初始化:1、将着色器读入内存2、创建一个程序对象3、创建着色器对象4、把着色器对象绑定到程序对象5、编译着色器6、将所有的程序连接起来7、选择当前的程序对象8、把应用程序和着色器之间的uniform变量及attribute变量关联起来。 Vertex Shader:实现了一种通用的可编程方法操作顶点,输入主要有:1、属性、2、使用的常量数据3、被Uniforms使用的特殊类型4、顶点着色器编程源码。输入叫做varying变量。被使用在传统的基于顶点的操作,例如位移矩阵、计算光照方程、产生贴图坐标等。Fragment shader:计算每个像素的颜色和其他属性,实现了一种作用于片段的通用可编程方法,对光栅化阶段产生的每个片段进行操作。输入:Varying 变量、Uniforms-用于片元着色器的常量,Samples-用于呈现纹理、编程代码。输出:内建变量。 观察变换 建模变换是把对象从对象标架变换到世界标架 观察变换把世界坐标变换成照相机坐标。VC是与物理设备无关的,用于设置观察窗口观察和描述用户感兴趣的区域内部分对象,观察坐标系采用左手直角坐标系,可在用户坐标系中的任何位置、任何方向定义。其中有一坐标轴与观察方向重合同向并与观察平面垂直。观察变换是指将对象描述从世界坐标系变换到观察坐标系的过程。(1):平移观察坐标系的坐标原点,与世界坐标系的原点重合,(2):将x e,y e轴分别旋转(-θ)角与x w、y w轴重合。 规范化设备坐标系 规范化设备坐标系是与具体的物理设备无关的一种坐标系,用于定义视区,描述来自世界坐标系窗口内对象的图形。 光线与隐式表面求交 将一个对象表面定义为f(x,y,z)=f(p)=0,来自P0,方向为d的光线用参数的形式表示为P(t)=P0+td. 交点位置处参数t的值满足:f(P0+td)=0,若f是一个代数曲面,则f是形式为X i Y j Z k的多项式之和,求交就转化为寻求多项式所有根的问题,满足的情况一:二次曲面,情况二:品面求交,将光线方程带入平面方程:p*n+c=0可得到一个只需做一次除法的标量方程p=p0+td。可通过计算得到交点的参数t的值:t=(p0*n+c)/(n*d). 几何变换T R S矩阵表示 三维平移T 三维缩放S旋转绕z轴Rz( ) 100dx 010dy 001dz 0001 Sx000 0Sy00 00Sz0 0001 cos-sin00 sin cos00 0010 0001 θθ θθ 旋转绕x轴Rx(θ) 旋转绕y轴Ry(θ) 1000 0cos-sin0 0sin cos0 0001 θθ θθ cos0sin0 0100 -sin0cos0 0001 θθ θθ 曲线曲面 Bezier曲线性质:Bezier曲线的起点和终点分别是特征多边形的第一个顶点和最后一个顶点。曲线在起点和终点处的切线分别是特征多边形的第一条边和最后一条边,且切矢的模长分别为相应边长的n倍;(2)凸包性;(3)几何不变性(4)变差缩减性。端点插值。 均匀B样条曲线的性质包括:凸包性、局部性、B样条混合函数的权性、连续性、B样条多项式的次数不取决于控制函数。 G连续C连续 C0连续满足:C1连续满足: (1)(0) p(1)=(1)(0)(0) (1)(0) px qx py q qy pz qz == ???? ???? ???? ???? (1)(0) p'(1)=(1)'(0)(0) (1)(0) p x q x p y q q y p z q z == ???? ???? ???? ???? C0(G0)连续:曲线的三个分量在连接点必须对应相等 C1连续:参数方程和一阶导数都对应相等 G1连续:两曲线的切线向量成比例 三维空间中,曲线上某点的导数即是该点的切线,只要求两个曲线段连接点的导数成比例,不需要导 数相等,即p’(1)=aq’(0) 称为G1几何连续性。将该思想推广到高阶导数,就可得到C n和G n连续性。

相关文档
最新文档