VC++实验五 MFC 鼠标和键盘编程实验

VC++实验五   MFC 鼠标和键盘编程实验
VC++实验五   MFC 鼠标和键盘编程实验

实验五 MFC 鼠标和键盘编程实验

一、预备知识

1、键盘在应用程序中的应用

(1)键盘消息

按键消息:按下或松开一个键时就产生了一按键消息。

字符消息:一个按键的组合产生了一个可以显示的字符时,就产生了一个字符消息。

(2)按键消息的两个参数

wParam:包含了识别按下的键的虚键码。

lParam(32 位的变量):重复计数位(0~15 位)、OEM 扫描码(16~23 位)、扩展键标志(24 位)、保留位(25~28 位)、关联码(29 位)、键的先前状态(位30)、转换状态(31 位)。

(3)字符消息

系统字符消息:WM_SYSKEYDOWN 和 WM_SYSKEYUP 按键消息只能产生系统消息。非系统字符消息:WM_KEYDOWN 和 WM_KEYUP 的按键消息只能产生非系统消息。

2、鼠标在应用程序中的应用

鼠标作为定位输入设备,通过鼠标单击、双击和拖动功能,用户可以很容易地操作基于Windows 图形界面的应用程序。

Windows 中通过光标来指示当前鼠标的位置,在 Windows 操作系统中预定义了15几种

(1)鼠标消息

鼠标消息的长字参数 lParam包含了鼠标位置(相当于窗口的左上角为原点的坐标值)。低位包含鼠标位置的 x 坐标值,高位包含鼠标位置的 y 坐标。字参数wParam包含了指示各种虚键状态的值

(2)对于鼠标消息的处理

监测 Shift 和 Ctrl 键

case WM_LBUTTONDOWN: // 按下鼠标左键

if((wParam&MK_CONTROL)&&(wParam&MK_SHIFT))

… // Shift 和Ctrl 键都被按下

break;

case WM_LBUTTONUP: // 释放鼠标左键

break; …

二、实验目的

(1) 掌握在 Visual Studio 的程序调试方法。

(2) 掌握 MFC 消息映射的操作步骤;

(3) 掌握在 MFC 程序中处理键盘和鼠标消息的方法;

三、实验内容

请编写程序,要求如下:

(1) 在屏幕上绘制一个矩形,并将举行内部划分成 4 个矩形区域;

(2) 在矩形内移动鼠标时,在上面划分的 4 个区域中显示不同的光标,并在屏幕左上角显示光标坐标;

(3) 当用户按下 SHIFT 和 CTRL 键时,显示一个消息框,提示用户按下的是哪个键。

四、实验结果

(1) 列出消息处理程序代码清单

头文件Demo.h:

#include "afxwin.h"

class CDemoWnd :public CFrameWnd

{

public:

CDemoWnd();

~CDemoWnd();

public:

LRESULT OnPaint(WPARAM wParam, LPARAM lParam);

LRESULT OnMouseMove(WPARAM wParam, LPARAM lParam);

LRESULT OnKeyDown(WPARAM wParam, LPARAM lParam);

DECLARE_MESSAGE_MAP()

public:

//定义两个整形变量,用来记录鼠标的位置

int m_nX0;

int m_nY0;

};

class CDemoApp :public CWinApp

{

public:

BOOL InitInstance();

};

CDemoApp theApp;

源文件Demo.cpp:

#include "Demo.h"

// 构造函数

CDemoWnd::CDemoWnd()

{

int m_nX0 = 0;

int m_nY0 = 0;

}

// 析构函数

CDemoWnd::~CDemoWnd()

{

}

//消息映射宏声明要处理的消息

BEGIN_MESSAGE_MAP(CDemoWnd, CFrameWnd)

ON_MESSAGE(WM_PAINT, OnPaint)

ON_MESSAGE(WM_MOUSEMOVE, OnMouseMove)

ON_MESSAGE(WM_KEYDOWN, OnKeyDown)

END_MESSAGE_MAP()

//OnPaint消息函数用来处理刷新消息WM_PAINT

//绘制一个矩形,并将其分为四块

LRESULT CDemoWnd::OnPaint(WPARAM wParam, LPARAM lParam)

{

CPaintDC dc(this);

dc.Rectangle(100, 100, 400, 400);

dc.MoveTo(100, 250);

dc.LineTo(400, 250);

dc.MoveTo(250, 100);

dc.LineTo(250, 400);

return 0;

}

//OnMouseMove消息函数用来处理WM_MOUSEMOVE消息

//实现鼠标在矩形的不同区域,显示不同的光标

//并在左上角显示鼠标的位置坐标

LRESULT CDemoWnd::OnMouseMove(WPARAM wParam, LPARAM lParam) {

CClientDC dc(this);

HCURSOR hCursor;

CString str;

m_nX0 = LOWORD(lParam);

m_nY0 = HIWORD(lParam);

//显示鼠标的位置坐标

str.Format(_T("(%d,%d)"), m_nX0, m_nY0);

dc.TextOutW(10, 10, str);

//在矩形的不同区域内鼠标以不同的光标显示

if (m_nX0>100 && m_nX0<250 && m_nY0>100 && m_nY0<250)

{

hCursor = theApp.LoadStandardCursor(IDC_WAIT);

SetCursor(hCursor);

}

else if (m_nX0>250 && m_nX0<400 && m_nY0>100 && m_nY0<250) {

hCursor = theApp.LoadStandardCursor(IDC_CROSS);

SetCursor(hCursor);

}

else if (m_nX0>100 && m_nX0<250 && m_nY0>250 && m_nY0<400) {

hCursor = theApp.LoadStandardCursor(IDC_SIZEALL);

SetCursor(hCursor);

}

else if (m_nX0>250 && m_nX0<400 && m_nY0>250 && m_nY0<400) {

hCursor = theApp.LoadStandardCursor(IDC_IBEAM);

SetCursor(hCursor);

}

return 0;

}

//OnKeyDown函数用来处理键盘消息

//实现按下SHIFT和CTRL键时,显示一个消息框,提示用户按下的是哪个键LRESULT CDemoWnd::OnKeyDown(WPARAM wParam, LPARAM lParam) {

if (wParam == VK_CONTROL)

{

MessageBox(_T("按下CTRL键"), _T("消息框"), MB_OK);

}

if (wParam == VK_SHIFT)

{

MessageBox(_T("按下SHIFT键"), _T("消息框"), MB_OK);

}

return TRUE;

}

BOOL CDemoApp::InitInstance()

{

CDemoWnd *pMainWnd = new CDemoWnd();

pMainWnd->Create(NULL, _T("MFC鼠标键盘编程"));

pMainWnd->ShowWindow(m_nCmdShow);

pMainWnd->UpdateWindow();

m_pMainWnd = pMainWnd;

return TRUE;

}

实验结果:

(1).在屏幕上绘制一个矩形,并将其内部划分成4 个矩形区域,在矩形内移动鼠标时,在上面划分的 4 个区域中显示不同的光标,并在屏幕左上角显示光标坐标。

(2).当按下SHIFT 和CTRL 键时,显示一个消息框,提示用户按下的是哪

个键。

(2) 总结鼠标消息、按键消息和字符消息的字参数和长字参数包含信息的意义以及处理方法。

鼠标消息:

wParam:包含了指示各种虚键状态的值。

lParam:包含了鼠标的位置信息,低位包含鼠标位置的x坐标值,高位包含鼠标位置的y位置

按键消息:

wParam:包含了识别按下的键的虚键码

lParam:包含重复计数位(0-15位)、OEM扫描码(16-32位)、扩展键的标志(24位),保留位(25-28位)、关联码(29位)、键的先前状态(30位)、转换状态(31位)。

字符消息:

wParam:包含了识别按下的键的字符的ASCII码。

lParam:包含重复计数位(0-15位)、OEM扫描码(16-32位)、扩展键的标志(24位),保留位(25-28位)、关联码(29位)、键的先前状态(30位)、转换状态(31位)。

(3) 总结实验的心得体会,实验中遇到的困难以及解决的方法等。

通过本次编程实验,我学习和掌握了键盘消息和鼠标消息的编程规则和方法,以及应用时的注意事项。通过此次实验,我学习到了键盘消息可分为按键消息和字符消息,学习了按键消息和字符消息中字参数(wParam)和长字参数(wParam)分别包含的含义,及其用法规则,学习到了,按键消息和字符消息中系统消息和非系统消息的区别。此外,还学习和掌握了鼠标消息的编程实现,对鼠标消息的字参数(wParam)和长字参数(wParam)的含义有了清楚的认识,学会了编程实现按下鼠标或键盘是显示消息框等等。总之,通过此次实验我受益匪浅。

键盘与LED显示实验

实验三键盘及LED显示实验 一、实验内容 利用8255可编程并行接口控制键盘及显示器,当有按键按下时向单片机发送外部中断请求(INT0,INT1),单片机扫描键盘,并把按键输入的键码一位LED显示器显示出来。 二、实验目的及要求 (一)实验目的 通过该综合性实验,使学生掌握8255扩展键盘和显示器的接口方法及C51语言的编程方法,进一步掌握键盘扫描和LED显示器的工作原理;培养学生一定的动手能力。 (二)实验要求 1.学生在实验课前必须认真预习教科书与指导书中的相关内容,绘制流程图,编写C51语言源程序,为实验做好充分准备。 2.该实验要求学生综合利用前期课程及本门课程中所学的相关知识点,充分发挥自己的个性及创造力,独立操作完成实验内容,并写出实验报告。 三、实验条件及要求 计算机,C51语言编辑、调试仿真软件及实验箱50台套。 四、实验相关知识点 1.C51编程、调试。 2.扩展8255芯片的原理及应用。 3.键盘扫描原理及应用。 4.LED显示器原理及应用。

5.外部中断的应用。 五、实验说明 本实验仪提供了8位8段LED 显示器,学生可选用任一位LED 显示器,只要按地址输出相应的数据,就可以显示所需数码。 显示字形 1 2 3 4 5 6 7 8 9 A b C d E F 段 码 0xfc 0x60 0xda 0xf2 0x66 0xb6 0xbe 0xe0 0xfe 0xf6 0xee 0x3e 0x9c 0x7a 0x9e 0x8e 六、实验原理图 01e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1GND2DS29 LG4041AH 234 567 89A B C D E F e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1 GND2DS30 LG4041AH 1 2 3 4 5 6 7 8 JP4112345678 JP4712345678JP42 SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH A C B 12345678 JP92D 5.1K R162 5.1K R163VCC VCC D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC7 10 RD 5WR 36A09A18RESET 35CS 6 U36 8255 D0D1D2D3D4D5D6D7WR RD RST A0A1PC5PC6PC7 PC2PC3PC4PC0PC1CS 12345678JP56 12345678JP53 12345678 JP52 PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7 (8255 PB7)(8255 PB6)(8255 PB5)(8255 PB4)(8255 PB3)(8255 PB2)(8255 PB1)(8255 PB0) (8255 PC7)(8255 PC6)(8255 PC5)(8255 PC4)(8255 PC3)(8255 PC2)(8255 PC1)(8255 PC0) (8255 PA0) (8255 PA1) (8255 PA2) (8255 PA3) (8255 PA4) (8255 PA5) (8255 PA6) (PA7) I N T 0(P 3.2) I N T 0(P 3.3) 七、连线说明

VC++实验报告书

一、设计方案及功能描述 图像平滑往往使图像中的边界、轮廓变的模糊,为了减少这类不利效果的影响,这就需要利用图像鋭化技术,使图像的边缘变的清晰。图像銳化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变的清晰,经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变的清晰。 对图像f(x,y),在点(x,y)处的梯是一个矢量 G=[f(x,y)]=[?f ?x ,?f ?y ] 梯度的方向在函数f(x,y)最大变化率的方向上,梯度的幅度G M[ f(x,y)]可由下式给出: G M[ f(x,y)]=(?f ?x )2+(?f ?y )2 由上式可知,梯度的数值是f(x,y)在其最大变化率的方向上的单位距离所增加的量。 对数字图像,微分?f ?x 和?f ?y 可用差分近似。差分运算近似后的梯度表达式为 G M[ f(x,y)]=f x,y?f(x+1,y)2+f x,y?f(x,y+1)2 对于图像f(x,y),上式的计算量很大,因此在实际计算中常用绝对值代替平方和平方根运算,梯度模值近似为 运用双方向一次微分运算,算出梯度后用梯度值替代该点的灰度值。在图像的最后一行或最后一列无法计算像素梯度时,一般用前一行或前一列的梯度值近似代替。 为了在不破坏图像背景的前提下更好地增强边缘,也可以对上述直接用梯度值代替灰度值的方法进行改进,即利用门限判断梯度锐化方法。具体公式如下: G M[ f(x,y)]= G M f x,y+100, G M[ f(x,y)]≥T f x,y,其他 对于图像而言,物体与物体之间,背景和背景之间的梯度变化一般很小,灰度变化较大的地方一般集中在图像的边缘上,也就是物体和背景交界的地方,当设定一个合适的阈值T,G M[ f(x,y)]大于等于T就认为该像素点处于图像的边缘,对梯度值加上100,以使边缘变亮,而对于G M[ f(x,y)]小于T就认为像素点是同类像素点。这样就增加了物体的边界,又同时保留了图像的背景的原来的状态。

键盘扫描显示实验原理及分析报告

键盘扫描显示实验原理及分析报告 一、实验目的-------------------------------------------------------------1 二、实验要求-------------------------------------------------------------1 三、实验器材-------------------------------------------------------------1 四、实验电路-------------------------------------------------------------2 五、实验说明-------------------------------------------------------------2 六、实验框图-------------------------------------------------------------2 七、实验程序-------------------------------------------------------------3 八、键盘及LED显示电路---------------------------------------------14 九、心得体会------------------------------------------------------------- 15 十、参考文献--------------------------------------------------------------15

VC++实验报告1

实验一、HelloWorld在VC上的实现 姓名:郭殷蓉学号:E10700102 班级:10数媒1班 1.1实验目的 ●掌握Windows程序基本的运行原理。 ●学会编写简单的Windows程序。 1.2实验平台 ●Windows XP professional操作系统。 ●VC6.0集成开发环境。 1.3实验内容 ●用Windows API(SDK)实现图形化HellowWorld程序。 ●用MFC类库实现图形化HellowWorld程序。 1.4实验原理 ●Windows操作介绍 Windows是一种基于图形界面的多任务操作系统。对于普通用户来说,Windows图形化界面友好、操作简单,用户不需要花费长时间学习如何使用计算机和新程序,因为所有的Windows应用程序都具相近的外观和感觉;对于程序员来说,标准化的图形用户界面来自于Windows构造菜单和对话框的内置程序,这些工作由Windows处理,与应用程序无关,使程序员可以编写出易于用户操作的程序。 ●Windows编程模型 Windows程序采用如下图所示的事件驱动编程模型,应用程序通过处理操作系统发送出来的消息来响应事件。消息处理是所有Windows应用程序的的核心。Windows程序的进入点是WinMain函数,但大多时候操作是在成为窗口过程的函数中进行的。窗口过程函数处理发送给窗口的消息。WinMain创建该窗口并进入消息循环,即获取消息或将其调度给窗口过程。消息被检索之前处于消息队列中等待。 Windows定义了成百上千个不同的消息类型。大多数消息的开始字符为“WM”并带有下划线; 操作系统是通过消息机制(Message)来实现将事件传递给应用程序的。操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序(详见MSDN)。 操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是Windows操作系统提供给应 用程序编程的接口(Application Programming Interface),简称Windows API(C函数)。

实验五 键盘显示控制实验

实验五键盘显示控制实验 一、实验目的 1、掌握8255控制键盘及显示电路的基本功能及编程方法 2、2、掌握一般键盘和显示电路的工作原理 二、实验内容 8255单元与键盘及数码管显示单元连接,扫描键盘输入,并将结果送数码管显示。键盘采用4*4键盘,每个数码管显示值可为0~F共16个数。具体实验内容为:将键盘警醒编号,记作0~F,当按下一个键时,将该键对应的编号在下一个数码管上显示出来。再按下一个键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近4次按下的按键编号。键盘与显示的字符的对应关系如下: 接线: PC7~PC0/8255 接行3~列0/4x4键盘 PA7~PA0/8255 接dp~a/led数码管 CS/8255 接Y1/IO地址 +5v 接S0/LED数码管 GND 接S3~S1/LED数码管 三、实验过程 1、设置8255C口键盘输入、A口为数码管段码输出 2、实验流程图如下图所示

N Y Y N 未找到 找到 程序代码如下图所示: ;*********************; ;* 键盘显示 8255LED *; ;*********************; ;********************; ;* 8255薄膜按键实验 *; ;********************; a8255 equ 288H ;8255 A 口 c8255 equ 28aH ;8255 C 口 k8255 equ 28bH ;8255控制口 data segment table1 dw 0770h,0B70h,0D70h,0E70h,07B0h,0BB0h,0DB0h,0EB0h dw 07D0h,0BD0h,0DD0h,0ED0h,07E0h,0BE0h,0DE0h,0EE0h ;键盘扫描码表 LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH DB 39h,5EH,79h,71h,0ffh ;LED 段码表, 开始 行线输出 是否有按键按下 列线输出 是否有按键按下 查找键码 查询键盘号 显示键盘号

如何写vc实验报告

如何写vc实验报告 篇一:VC++实验报告(2) VC++实验报告 班号:0904101 学号:090410123 姓名:仲维祎 实验一VC++开发环境的熟悉和C++基础知识实验 一、实验目的 1. 掌握C++语言的特点。 2. 掌握C++的各种数据类型及基本运算。 3. 掌握C++各种控制结构及使用技巧。 4. 掌握C++的函数、数组、指针的相关概念和使用方法。 5. 灵活运用C++相关基础知识进行综合程序设计。 6. 回顾面向过程程序设计方法。

7. 熟悉Visual C++的开发环境 8.掌握用应用程序向导创建一个控制台应用项目的方法。 9.掌握源代码文件的新建、打开、保存和关闭等基本操作。 10.掌握Visual C++项目的编译、连接和执行。 11.掌握代码简单语法错误修正和调试的一般过程。 二、实验知识点概念 注意C++中同C的不同之处,包括数据类型,输入输出等相关的差异。 三、实验题目 1. 采用插入排序法,输入10个整数按升序排序后输出。要求编写一个通用的插入排序函数,它带有三个参数,第一个参数是含有n个元素的数组,这n个元素已按升序排序;第二个参数给出当前数组中元素个数;第三个参数是要插入的整数。该函数的功能是将一个整数插入到数组中,然后进行排序。另外还需要一个用于输出数组元素的函数,要求每一行输出5个元素。 2. 有5个学生,每个学生的数据结构包括学号、姓名、年龄、C++成绩,数学成绩和英语成绩、总平均分,从键盘输入5个学生的学号、姓名、3门课的成绩,计算3门课的总平均分,最后将5个学生的数据输出。要求各个功能用函数实现。

3. 对程序加入断点简单调试。 四、程序思路 五、程序源代码 1:代码如下 #include using namespace std; void (char iArray,int nCount,int nNumber) { int i=nCount-1,j=0; char *iArray2; iArray2=iArray; *(iArray2+nCount)=nNumber;//多分配一个空间给传入数据for(i;i=0;i--) { if(nCount==1) *iArray=nNumber; if (*(iArray2+i)*(iArray+i+1))

汇编实验-显示与键盘实验

汇编语言与接口技术实验报告 开课实验室:实验中心微机原理与接口技术实验室2014年12月1 日 学院计算机科 学教育软 件学院 年级、专 业、班姓名成绩 课程名称汇编语言 与接口技 术 实验项目 名称显示与键盘实验 指导老师 签名古鹏 一、实验要求 1.硬件实验十六八段数码管显示 利用实验仪提供的显示电路,动态显示一行数据. 2.硬件实验十七键盘扫描显示实验 在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。 实验程序可分成三个模块。 ①键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。 ②显示模块:将显示单元的内容在显示器上动态显示。 ③主程序:调用键输入模块和显示模块。 二、实验目的 1. 硬件实验十六八段数码管显示 1.了解数码管动态显示的原理。 2.了解用总线方式控制数码管显示 2. 硬件实验十七键盘扫描显示实验 1、掌握键盘和显示器的接口方法和编程 方法。 2、掌握键盘扫描和LED八段码显示器的 工作原理。 三、实验电路及连线 1. 硬件实验十六八段数码管显示连线连接孔1 连接孔2 1 KEY/LED_CS CS0 位选通 信号 段码输 出 (0x004 数据总线

2. 硬件实验十七键盘扫描显示实验 连线连接孔1 连接孔2 1 KEY/LED_CS CS0 四、使用仪器、材料 计算机一台 Wave6000试验仪 五、实验程序、过程 1.硬件实验十六八段数码管显示 代码: OUTBIT equ 08002h ; 位控制口 OUTSEG equ 08004h ; 段控制口 data segment LEDBuf db 6 dup(?) ; 显示缓冲 Num db 1 dup(?) ; 显示的数据 DelayT db 1 dup(?) LEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h data ends code segment assume cs:code, ds:data Delay proc near push ax ; 延时子程序 push cx

VC实现贪吃蛇的实验报告

题目:利用VC++实现贪吃蛇小游戏

一、题目:利用VC++实现贪吃蛇小游戏 利用VC++实现的贪吃蛇小游戏更加注重可视化。一条蛇在封闭的围墙内,在围墙内会随机出现一个食物,通过键盘上的W S A D四个键控制它向上,下,左,右四个方向移动。当蛇头撞到食物时表示将食物吃掉,这时蛇身增长一节,得分加一。接着随机生成食物,等待被蛇吃掉。如果在移动过程中撞到墙壁或者自己的身体,则游戏结束。游戏过程中,可以在菜单中选择暂停或者结束游戏,对游戏进行暂停或者退出。

二、编程要点(或基本思路、算法分析与说明): 本次游戏设计包含两大模块,一个模块是贪吃蛇游戏本身算法的设计,完成了贪吃蛇的食物产生,获取食物,蛇的移动等功能。另一个模块是利用MFC完成贪吃蛇的可视化显示,产生了一个对话框,在对话框可以控制游戏及游戏的显示。 1.贪吃蛇游戏算法设计包括: <1>果实出现的设计思路: (1)采用随机数生成果实出现坐标 (2)判断当前生成的果实是否在贪吃蛇身体范围内。 (3)如果在,重新生成直到不在为止。如果不在,则把坐标位置返回给调用对象。 <2>贪吃蛇更新的算法设计 (1)接收玩家按下的方向键消息,并保存到方向变量中。 (2)定义一个时间定时器,用来控制蛇运动的速度。 (3)当每次时间间隔到达时,则根据方向变量来更新贪吃蛇curr(即贪吃蛇身体)向量。 (4)判断curr向量的第一个元素中的坐标数据是否碰到边界或者蛇身,如果有,则游戏结束。否则,进行下一步。 (5)判断curr向量的第一个元素中的坐标数据是否与当前果实重合,如果有,表示贪吃蛇已经吃到果实。这时就向贪吃蛇curr向量添加一个元素,并重新生成一个果实。 (6)吃到食物后,得分会同步增加。 2.利用MFC完成贪吃蛇的可视化显示: 首先初始对话框,完成游戏的整体框架的显示。然后游戏玩家在菜单栏里选择开始,暂停,结束等,控制游戏状态。游戏开始后,玩家通过键盘上的消息控制蛇的运动。在函数DrawSnake(CDC *pDC,Snake snake),和DrawFood(CDC *pDC,SnakeFood f)完成对蛇和食物的重绘,从而显示出蛇的运动和对食物的获取。在OnPaint()函数中完成得分和游戏操作提示的显示。 本次游戏设计的主要功能函数如下: OnGameStart()(游戏开始函数), OnGamePauseStart()(游戏暂停函

按键及显示实验

一、实验原理及电路 1、LCD显示器是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。因此,LCD的驱动控制归于对每个液晶单元通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使用光线通过(也有刚好相反的,即不通电时光线通过,通电时光线不通过)。, 2、由于LCD已经带有驱动硬件电路,因此模块给出的是总线接口,便于与单片机的总线进行接口。驱动模块具有八位数据总线,外加一些电源接口和控制信号。而且还自带显示缓存,只需要将要显示的内容送到显示缓存中就可以实现内容的显示。由于只有八条数据线,因此常常通过引脚信号来实现地址与数据线复用,以达到把相应数据送到相应显示缓存的目的。 实验电路图 二、功能说明 设计并实现一4×4键盘的接口,键盘与1602显示单元连接,编写实验程序扫描键盘输入,并将扫描结果送1602显示,键盘采用4×4键盘。将键盘进行编号记作0—F当按下其中一个按键时将该按键对应的编号在一个1602显示出来,当按下下一个按键时便将这个按键的编号1602上显示出来 实验框图

四、实验代码 #include #define uchar unsigned char #define uint unsigned int #define lcd_data P3 sbit lcd_EN=P2^2; sbit lcd_RW=P2^1; sbit lcd_RS=P2^0; uchar key,a; uchar sys_time1[]="good"; uchar sys_time2[]="morning!"; uchar sys_time3[]="play"; uchar sys_time4[]="basketball!"; uchar sys_time5[]="study"; uchar sys_time6[]="hard!"; unsigned char code key_code[]={ 0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d, 0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xB7,0x77 }; void delayms(uint ms) { uchar t; while(ms--) { for(t=0;t<120;t++); } } void delay_20ms(void) { uchar i,temp; for(i = 20;i > 0;i--) { temp = 248; while(--temp); temp = 248; while(--temp); } } void delay_38us(void) { uchar temp;

VC++实验报告(1,2,3)

VC++实验报告 班号:________ 学号:________ 姓名:________

实验1 VC++开发环境的熟悉和Windows编程基础 一、实验目的 1.熟悉Visual C++的开发环境 2. 掌握用应用程序向导创建一个控制台应用项目的方法。 3. 掌握源代码文件的新建、打开、保存和关闭等基本操作。 4.掌握用应用程序向导创建一个Windows应用项目的方法 5. 掌握Visual C++项目的编译、连接和执行 6. 掌握代码简单语法错误修正和调试的一般过程 7.掌握Windows程序运行基本原理。 8. 掌握使用SDK(Windows API)方式编写Windows应用程序方法。 9. 掌握用应用程序向导创建一个Windows应用项目的方法。 二、实验知识点概念 Visual C++是Microsoft公司推出的目前使用极为广泛的基于Windows平台的可视化编程环境。由于其功能强大、灵活性好、完全可扩展以及具有强有力的Internet支持,在各种C++语言开发工具中脱颖而出,成为目前较为流行的C++语言集成开发环境。 Windows程序设计不同于DOS下的程序设计,它是一种事件驱动的程序设计模式,主要是基于消息的。Windows SDK编程主要采用C++/C语言和Windows API进行Windows 应用程序设计。 三、实验题目 1. 控制台应用程序编写 术语:“控制台应用程序”是一个在仿DOS窗口(控制台窗口)中运行的基于字符的程序,控制台窗口将成为其标准输入和输出装置。由于这种模式的应用程序比Windows程序简单,我们先选择利用Visual C++来建立这样一个应用,这样使得我们可以将精力先投入到学习使用C++编程语言,而不需要把过多的精力投入到学习复杂的Windows编程中去。 创建一个控制台应用,输入以下代码: #include class Vehicle { public: Vehicle(float speed,int total) { speed = speed; total = total; cout<<”constructor is called!” <

硬件实验三按键与显示实验

本科实验报告课程名称:微机原理与接口技术 姓 名:张开桓 学 院:信息学院 系 : 控制系 专 业:自动化 学 号 : 3080104703 指导教师:齐杭丽 2010 年12 月15 H

专业:自动化(控制系) 姓名: 张开桓 学号: 3080104703 日期:2010/12/15 地点: 东4-606 课程名称: 微机原理与接口技术 指导老师: 齐杭丽 成 绩:____ 实脸名称:按键与显示实验实验类型:设汁型同组学生姓名: ____________________________ 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 1. 实验目的 ① 熟练运用keil 环境对硬件接口进行调试。 ② 掌握IO 扩展键盘的软硬件设计方法; ③ 掌握数字转换成显示段码的软件译码方法: ④ 掌握静态显示的原理和相关程序的编写。 ⑤ 掌握动态显示的原理和相关程序的编写; 2. 预习要求 ① 理解51单片机IO 实现独立式键盘扩展的工作原理。 ② 理解8段数码管静态显示的电路工作原理,采用静态显示有何优缺点: ③ 理解8段数码管动态显示的电路工作原理,采用动态显示有何优缺点: ④ 理解8段数码管静态显示的10控制方式及同步串行口控制方式如何实现软件设 计; 3. 实验设备 计算机 1台: ZDGDTH-1型8OC51实验开发系统 1套: 2号导线、8P 数据线 若干条。 4. 基础型实验内容 ①査询式键盘和静态显示实验 8个独立式键盘的电路如图2-1所示,串口扩展的6个静态数码管电路如图2-2所示。 设将P0 口连接到键盘接口,则如果有键按下,相应的口线输岀为低,否则输出为髙。单片 机通过读取接口的状态,判断按下什么键。有键按下后,要有一泄的延时,防止由于键盘抖 动而引起误操作。 溯沪乂唆实验报告 件实验三 按键与显示实验

《单片机原理及应用》“实验五 按键及显示实验”任务书

单片机原理及应用 随堂实验报告 实验五按键与显示实验 学院计算机与电子信息学院 专业电子信息工程班级电信12 -1 班 姓名许锐佳学号 指导教师左敬龙 实验报告评分:_______

一、实验原理及电路 实验原理:单片机80c51的P2口接一矩阵键盘,P0和P3口接两个数码管,P1口通过接两个3-8译码器控制16个灯。刚开始时,电路处于扫描按键是否按下的状态,当有某个键按下时,在扫描函数作用下,会有一小段消抖时间,确定没抖动的情况下再次判断是否真的有按键按下,如果真的有按下,通过先检查行,再检查列的方法判断是哪个键按下,判断完后执行对应case后面的语句,即实现相应的功能。下图为实验原理电路图 (此时按下的是第10个按键): 二、功能说明 16个开关形成矩阵键盘,当按下第一个键时,数码管显示1,第一个led灯亮;当按下第二个键时,数码管显示2,第二个led灯亮;当按下第三个键时,数码管显

示3,第三个led灯亮···依次类推,按下第几号键,数码管显示对应号数,对应led灯亮。 三、实验框图: 四、实验代码 #include #define uchar unsigned char

#define uint unsigned int uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07 ,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d}; uchar num; void delay(uchar time) { uchar i,j; for(i=0;i

硬件实验三按键与显示实验

\ 本科实验报告 课程名称:微机原理与接口技术 张开桓 姓名: 信息学院 学院: 控制系 系: 专业:自动化 3080104703 学号: 指导教师:齐杭丽 2010年12 月15 日

实验报告 课程名称: 微机原理与接口技术 指导老师: 齐杭丽 成绩:____ ___ 实验名称: 按键与显示实验 实验类型: 设计型 同组学生姓名:__________ 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 硬件实验三 按键与显示实验 1. 实验目的 ① 熟练运用keil 环境对硬件接口进行调试。 ② 掌握IO 扩展键盘的软硬件设计方法; ③ 掌握数字转换成显示段码的软件译码方法; ④ 掌握静态显示的原理和相关程序的编写。 ⑤ 掌握动态显示的原理和相关程序的编写; 2. 预习要求 ① 理解51单片机IO 实现独立式键盘扩展的工作原理。 ② 理解8段数码管静态显示的电路工作原理,采用静态显示有何优缺点; ③ 理解8段数码管动态显示的电路工作原理,采用动态显示有何优缺点; ④ 理解8段数码管静态显示的IO 控制方式及同步串行口控制方式如何实现软件设 计; 3. 实验设备 计算机 1台; ZDGDTH-1型80C51实验开发系统 1套; 2号导线 、8P 数据线 若干条。 4. 基础型实验内容 ① 查询式键盘和静态显示实验 8个独立式键盘的电路如图2-1所示,串口扩展的6个静态数码管电路如图2-2所示。设将P0口连接到键盘接口,则如果有键按下,相应的口线输出为低,否则输出为高。单片机通过读取接口的状态,判断按下什么键。有键按下后,要有一定的延时,防止由于键盘抖动而引起误操作。 专业:自动化(控制系) 姓名: 张开桓 学号: 3080104703 日期: 2010/12/15 地点: 东4-606

VC实验报告

黑龙江大学 实验报告 黑龙江大学教务处

实验名称:菜单、工具栏和状态栏的使用 实验目的 1 熟悉VC++编程环境 2 熟悉VC++框架程序 3 掌握基本程序调试技术 实验类型 // 设计型 实验环境 // 编程环境:Visual C++ .net // 运行环境:Windows XP等 实验要求 1.掌握菜单栏的使用,包括命令函数和命令更新函数的使用。 2.掌握快捷菜单的使用 3.掌握工具栏和状态栏的使用 4.在框架菜单栏上添加菜单项,并在其下拉菜单中定义下级子菜单。子菜单包括性别(男、女)、课目(数学、语文、英语)和成绩(优、良、中、及格和不及格)。 5.单击显示菜单项,可将上述菜单选项内容显示出来。 实验步骤 int Grade1; //成绩等级的变量 bool Math; //数学项的变量 bool English; //英语项的变量 bool Chinese; //语文项的变量 TCHAR sex[5]; //性别项的变量 CString str; 1、设计

先定义属性,性别,姓名,成绩单选,学科多选,显示进行图标设置和关联,右键事件菜单注释,进行新的菜单,关联并编辑。 2、编码 void CMy20156660yzn3View::OnContextMenu(CWnd* /* pWnd */, CPoint point) { //#ifndef SHARED_HANDLERS //theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE); //#endif CMenu menu; menu.LoadMenu(IDR_MENU1); menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this); } void CMy20156660yzn3View::OnContextMenu(CWnd* /* pWnd */, CPoint point) { //#ifndef SHARED_HANDLERS //theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE); //#endif CMenu menu; menu.LoadMenu(IDR_MENU1); menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this); } 右键事件菜单 void CMy20156660yzn3View::OnShow() { // TODO: 在此添加命令处理程序代码 str = _T(""); str = str + name; str = str + _T(",性别为"); str = str + sex; str = str + _T(","); if (Math == true) str = str + _T("数学"); if (Chinese == true) str = str + _T("语文"); if (English == true) str = str + _T("英语");

HP-VC-FlexFabric实验报告

HP VC FlexFabric应用于VMware vSphere 4.1环境的基本配置实验 说明:本实验仅是VC FlexFabric用于VMware的功能测试,包括FCoE和Boot From SAN,不包含复杂网络配置。关于VC FlexFabric配置请参考其cookbook,链接如下: Hardware:BLc7000 一个(2OA +4PS +10FAN) BL460c G7一个(1P+6G+300G HDD) HP VC FlexFabric 10Gb/24-port Module一个 Brocade 8/12 SAN SW for HP BLc 一个 Cisco 3020 for HP BLc 一个 HP EVA4400 一个 OS:VMware vSphere 4.1 Firmware:OA—3.21 VCM—3.15 ILO 3—1.15 Topology:

1.关于HP VC FlexFabric模块: 要使用CAN网卡和配置VC FlexFabric需要先了解下面3个图的意思:

2.实验过程: 注意-----在进行实验之前需要将先后将OA、VC FlexFabric的firmware升级: OA要升级为3.0以上;VC FlexFabric必须为3.15,否则不具备配置FcoE的功能。 首先检查VC FlexFabric的firmware版本: VCM对浏览器的版本有一定要求,如果版本不符合要求有可能无法进行配置:

接下来看一下在OA里面BL460 G7的有关情况: 下图是未对VC FlexFabric配置前,刀片的上面有一个叹号 注意未配置VC FlexFabric前,网卡的信息:

实验九 8255控制键盘与显示实验

贵州大学实验报告纸 实验九8255控制键盘与显示实验 一、实验目的 1.掌握8255输入、输出的编程方法。 2.掌握阵列键盘和数码管动态扫描显示的控制方法。 二、实验内容 1、用8255可编程并行口会、做一个键盘、显示扫描实验,把按键输入的键值,显示 在8255控制的七段数码管上。8255PB口做键盘输入线,PC口做显示扫描线,PA 口做显示数据线。 2、键入值后在数码管显示按键的ASCII. 3、并且要求字母键可以实现大小写转换(用F键做切换) 三、实验要求 根据实验内容编写一个程序,并在实验仪上调试和验证。 四、实验说明和电路原理图 本实验需要用到CPU模块(F3区)、8255模块(C6区)、8279键盘与显示模块(E7区)。8255键盘与显示电路原理图参见图9-1A、图9-1B,及实验四的图4-1。 CS_8255接200H,则8255 状态/命令口地址为203H,PA口地址为8000H,PB口地址为201H、PC口地址为202H。

图9-1A 键盘显示电路1 图9-1B 键盘显示电路2

五、实验程序 ;//********************************************************* ;文件名: 55KeyD for 8088 ;功能: 8255控制键盘显示实验 ;接线: 连接8279键盘显示模块的JD3E到8255模块的JD3C(PA口); ; JD2E到8255模块的JD4C(PB口); ; JD4E到8255模块的JD5C(PC口); ; 用导线连接CPU模块的200H到8255模块的CS_8255。 ;//********************************************************* D8255A EQU 200H ;8255 PA 口地址 D8255B EQU 201H ;8255 PB 口地址 D8255C EQU 202H ;8255 PC 口地址 D8255 EQU 203H ;8255 状态/命令口地址 DATA SEGMENT COUNT DB ? DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA start: push cs pop ds MOV AL,90H ;方式0,PB,PC口输出,PA口输入 MOV DX,D8255 OUT DX,AL ;点亮对应的LED MOV AH,0FFH MOV BH,7DH KB_DIS: CALL KEY ;读键盘 CALL DISPLAY JMP KB_DIS MAIN ENDP KEY proc near MOV AL,02H ;扫描第一行 MOV DX,D8255C OUT DX,AL MOV DX,D8255A IN AL,DX MOV AH,0 CMP AL,0FFH JNZ KEYCALL ;判键是否按下

VC++程序设计课内实验报告

实验报告 课程名称 VC++程序设计 专业班级电子0942 姓名 学号 电气与信息学院 和谐勤奋求是创新 实验教学考核和成绩评定办法 1.课内实验考核成绩,严格按照该课程教学大纲中明确规定的比重执行。实验成绩不合格者,不能参加课程考试,待补做合格后方能参加考试。 2.单独设立的实验课考核按百分制评分,考核内容应包括基本理论、实验原理和实验。3.实验考核内容包括:1)实验预习;2)实验过程(包括实验操作、实验记录和实验态度、表现);3)实验报告;权重分别为、、;原则上根据上述三个方面进行综合评定。学生未取得1)和2)项成绩时,第3)项成绩无效。 4.实验指导教师应严格按照考核内容分项给出评定成绩,并及时批改实验报告,给出综合成绩,反馈实验中出现的问题。实验成绩在教师手册中有记载。 实验报告主要内容 一.实验目的 二.实验仪器及设备 三.实验原理 四.实验步骤 五.实验记录及原始记录 六.数据处理及结论 七.实验体会(可选项) 注:1. 为了节省纸张,保护环境,便于保管实验报告,统一采用A4纸,实验报告建议双面打印(正文采用宋体五号字)或手写,右侧装订。 2. 实验类别指验证、演示、综合、设计、创新(研究)、操作六种类型实验。 3. 验证性实验:是指为了使学生巩固课程基本理论知识而开设的强调演示和证明,注重实验结果(事 实、概念或理论)的实验。 4. 综合性实验:是指实验内容涉及本课程的综合知识或本课程相关的课程知识的实验。 5. 设计性实验:是指给定实验目的、要求和实验条件,由学生自行设计实验方案并加以实现的实验。

一、实验目的 1.进一步加深对类和对象的理解。 2.掌握类的构造函数和析构函数的概念、意义和使用方法。 3.掌握重载构造函数的含义和使用。 4.编写一个较为复杂的类和对象的应用程序。 二、实验内容 1.设计一个程序,定义一个矩形类,包括数据成员和函数成员。要求有构造函数、析构函数,还有一个成员函数area( )用来计算并显示矩形的面积,并编写main函数进行测试。程序:# include<> # include<> class Rect { public: Rect(int l, int w); ~Rect(); int Area(); private: int nLength; int nWidth; }; Rect::Rect(int l, int w) {cout<<"executing constructor..."<

相关主题
相关文档
最新文档