PC鼠标代码
LOGO语言命令

LOGO语言命令YCOR 输出第一个活动海龟的Y坐标XCOR 输出第一个活动海龟的X坐标WAIT 等待n/100秒WHILE 当条件为真时,重复执行命令表WHO 输出由TELL命令定义的当前活动海龟的代码表WIDTH 输出第一个活动海龟笔的宽度WINDOW 设置图形窗口为窗口模式WINDOWPOINT 将海龟坐标[x y]转换为图形窗口坐标.WINDOWS 下面两个命令为Windows API调用.WINDOWSLWINSIZE 输出图形窗口的大小WINVER 输出Windows的版本.WNDPROC 调用属于LOGO设计环境主窗体的Windows消息回收程序WORD 将各输入项合成一个字输出WORD? 检查对象是否是一个字WRAP 将图形窗口设置为WRAP方式.WRITE 写二进制或文本数据到文件VERSION 输出PC-LOGO的版本信息UNBURY 取消对指定对象的隐藏UNBURYALL 取消对所有对象的隐藏UNBURYNAME 取消对指定变量的隐藏UNBURYPROC 取消对指定过程的隐藏UNBURYPROP 取消对指定属性的隐藏UNGETBYTE 将数值n对应的ASCII码字符插入输入流首位TAB 系统变量,设置编辑时制表符的停留位置。
TELL 激活一个或一组海龟TELLALL 激活从n1到n2范围内的海龟TEST 测试其输入的真值TEXT 以表的形式输出指定的过程TEXTARRAY 把字节数组转换成字TEXTBG 将听众窗口的背景颜色变为n号色TEXTFG 将听众窗口的文本颜色变为n号色TEXTSCREEN 将听众窗口最大化THEN IF命令的一部分THING 输出变量w的值THROW 与CATCH配合使用,若其参数W与CATCH的参数W相同,则返回到CATCH的位置去继续执行TIME 以表的形式输出当前时间TIMER 计时开始,间隔为n/100秒TO 开始定义过程TONE 播放一个频率为freq赫兹,长度为dura/18.2秒的声音TOPLEVEL 停止一个过程的执行,返回命令状态TOWARDS 输出海龟所在位置到点[X,Y]的方向TRACE 系统变量,决定是否跟踪程序的执行;使用格式TRACE.LEVEL 系统变量,决定跟踪程序执行的信息详细程度;使用格式;TRACED 以表的形式输出所有被跟踪过程TROFF 停止跟踪指定对象TRON 开始跟踪指定对象TURTLEFACTS 以表的形式输出第一个活动海龟的各项属性.TURTLEPOINT 将图形窗口坐标转换成海龟坐标TURTLES 输出已定义的海龟的总数TURTLETEXT 在当前海龟的位置,用当前的笔色显示字W或表LTYPE 在屏幕上打印对象,但不回车SAVE 存储文件SAVEPIC 存储图形文件(默认扩展名为.PCX)SAVESNAP 将用SNAP命令捕捉的位图存盘SCREENFACTS 输出关于听众窗口和图形窗口的信息表.SEEK 移动文件读/写指针的位置SENTENCE (SE) 将输出项合成一个新表SETATTR 设置听众窗口的颜色属性SETBG 设置图形窗口的背景颜色SETBGPATTERN 设置图形窗口的背景样式SETCOLOR n l 根据表达l更改n颜色设置。
计算机分类大全

计算机分类大全一、按照用途分类1. 个人计算机(Personal Computer,PC)个人计算机是指为个人使用而设计的计算机,包括台式机、笔记本电脑和平板电脑等。
个人计算机常用于办公、学习、娱乐等个人需求。
2. 服务器(Server)服务器是指提供计算和存储等服务的计算机设备。
服务器具有稳定性高、性能强大、数据存储容量大等特点,常用于企业、科研机构等需要提供服务的场合。
3. 超级计算机(Supercomputer)超级计算机是针对科学计算和工程计算等需要处理大规模数据和复杂计算的任务而设计的计算机。
超级计算机拥有超高的计算能力和存储能力,常用于气候模拟、基因解码等领域。
4. 嵌入式计算机(Embedded Computer)嵌入式计算机是指嵌入到其他设备中,用于控制和管理设备运行的计算机。
嵌入式计算机广泛应用于汽车、智能家居、工业自动化等领域。
二、按照体积分类1. 台式机(Desktop)台式机是指体积相对较大的计算机,通常包括主机、显示器、键盘和鼠标等外围设备。
台式机性能稳定、扩展性强,适合办公、游戏等需要高性能的场景。
2. 笔记本电脑(Laptop)笔记本电脑是指便携式的计算机设备,具有自带显示器、键盘和触控板等。
笔记本电脑轻巧便携,适合移动办公、学习等场景。
3. 平板电脑(Tablet)平板电脑是指类似于平板状的计算机设备,没有实体键盘,通过触摸屏进行操作。
平板电脑具有轻薄便携、触控操作的特点,适合娱乐、阅读等用途。
4. 一体机(All-in-One)一体机是指将计算机主机与显示器融合在一起的设备,没有繁琐的线缆连接。
一体机外观简洁、占用空间小,适合办公、家庭娱乐等场景。
三、按照结构分类1. 笔记本(Notebook)笔记本是一种便携式计算机,具有自带键盘、触控板的特点。
笔记本分为传统硬盘笔记本和固态硬盘笔记本,前者价格低廉,后者读写速度更快。
2. 超极本(Ultrabook)超极本是一种轻薄便携、性能卓越的笔记本电脑。
你玩过PC浏览器的鼠标手势吗?

你玩过PC浏览器的鼠标手势吗?iPhone手机故障返修的原因中排名最高的是“HOME键故障”,因此iPhone提供了“手势”功能来保护和释放HOME键,在安卓手机上也提供了类似的“手势”功能来方便操作,比如:在触摸屏上同时两点或三点滑动将代表不同的操作;一些手机软件支持通过预设一些触摸的动作来和某个手机功能关联起来,当你在触摸屏上做出相同操作时便可达到该功能的效果。
同样,浏览器开发者把目光投向了那些没有触摸功能的PC设备(笔记本、台式机),当我们浏览多个网站的网页时,不停的移动鼠标点击、切换,其实也挺麻烦的(不要提Alt+Tab,当打开的页面多了,这个并不好使)。
不过也有不少人觉得该功能多此一举,所以鼠标手势从一出现就存在争议,但这不妨碍我们的好奇心……根据我查询的资料来看,鼠标手势(Mouse Gestures)这个概念是从2007年Opera浏览器开始启用的,简单地说,就是用鼠标做出一些动作以控制软件完成某些操作,就好比人们见面时打的手势一样。
目前主要在浏览器和桌面窗口管理中得到比较广泛的应用,一般是按住鼠标右键,并在空白处划出某种特定的轨迹,然后即可实现预先定制功能。
浏览器的鼠标手势功能大多具有自定义,可以按照自己的喜好来定义特定手势所对应的操作。
而且许多时候鼠标手势更是用简单的鼠标划线实现了需要通过比较复杂的操作才能完成的命令,比如跳过缓存刷新等。
现在已经有不少的浏览器都支持鼠标手势,比如:搜狗浏览器、傲游浏览器、腾讯TT、360安全浏览器等。
世界之窗浏览器也支持,但要手动进入选项开启。
目前火狐浏览器(FireFox)和IE9本身并没有直接提供此功能,不过可以通过安装Mouse Gestures或者Firegestures等扩展程序,使得FireFox和IE同样也能拥有鼠标手势。
谷歌浏览器Google Chrome也可以通过安装Gestures for Chrome等插件使之支持鼠标手势。
pc机原理

pc机原理
PC机(个人计算机)是一种电子设备,其工作原理涉及到计算机硬件和软件的相互配合。
以下是PC机的工作原理概述:
1.指令获取:PC机通过输入设备(如键盘、鼠标、触摸屏等)接收用户的指令,并将其转换为计算机能够理解的二进制代码。
2.指令执行:指令通过中央处理器(CPU)进行执行。
CPU根据指令中的操作码确定要执行的操作,并从内存中读取相应的数据。
3.数据处理:CPU对内存中的数据进行处理,执行诸如算术运算、逻辑运算、位运算等操作。
4.结果存储:处理后的结果被存储回内存中,或者输出到输出设备(如显示器、打印机等)上。
5.程序控制:PC机通过存储器(如硬盘、闪存等)存储程序,程序按照顺序一条一条地被取出并执行。
存储器与CPU之间快速传输数据,从而加快程序的执行速度。
6.外部设备:PC机通过输入输出接口与外部设备进行通信,例如打印机、鼠标、键盘、扫描仪等。
这些设备将数据传输到PC机中进行处理,或者将处理结果输出到这些设备上。
PC机的工作原理是建立在冯·诺依曼体系结构的基础上的,该体系结构包括存储程序、程序控制、采用二进制表示数据等核心概念。
通过将这些概念应用于实际硬件和软件技术,PC机得以实现高效的数据处理和信息存储能力,满足人们日常工作和生活的需求。
电脑中常用英文缩写的含义

电脑中常用英语缩写的含义PC:Personal Computer,个人计算机、个人电脑,又称微型计算机或微机。
NC: Network Computer,网络计算机。
MPC: Multimedia Personal Computer,多媒体个人电脑。
MMX: 是MultiMedia eXtensions(多媒体扩展)的缩写,是第六代CPU芯片的重要特点。
MMX技术是在CPU中加入了特地为视频信号(Video Signal),音频信号(Audio Signal)以及图像处理(Graphical Manipulation)而设计的57条指令,因此,MMX CPU极大地提高了电脑的多媒体(如立体声、视频、三维动画等)处理功能。
Intel Pentium 166MHz MMXTM: Intel Pentium是英特尔(Intel)公司生产的“奔腾”CPU。
意为“Registered”(注册商标)。
166MHz指CPU 时钟频率,MHz即Mega Hertz的缩写。
MMXTM中的TM是“Trade Mark”的简写,意为“注册商标”。
OOP: Object Oriented Programming,面向对象的程序设计。
所谓“对象”就是一个或一组数据以及处理这些数据的方法和过程的集合。
面向对象的程序设计完全不同于传统的面向过程程序设计,它大大地降低了软件开发的难度,使编程就像搭积木一样简单,是当今电脑编程的一股势不可挡的潮流。
28VGA: 28是指彩色显示器上的黄光网点间距(点距),点距越小的显示器,图像就越细腻、越好,这是因为彩色屏幕上的每个像点都是由一组红、绿、蓝光汇聚而成的,由于在技术上三束光还不能100%地汇聚在一点上,因此会产生一种黄光网点的间隔,这种间隔越小,屏幕上显示的图像越清晰。
VGA是Video Graphics Array(视频图形阵列)的缩写。
FAT:Allocation Table,文件分配表,它的作用是记录硬盘中有关文件如何被分散存储在不同扇区的信息。
怪物猎人世界pc操作方法

怪物猎人世界pc操作方法怪物猎人世界是一款非常受欢迎的角色扮演游戏,最新版本已经适配了PC平台。
PC版的操作方法与主机版本略有不同,下面是PC版怪物猎人世界的详细操作方法。
首先,打开游戏后,在主菜单选择“新的游戏”开始你的猎人生涯。
选择你的游戏存档槽位,然后进入角色创建界面。
在这里,你可以自定义你的猎人外貌、性别以及名字。
完成后,进入游戏世界。
在游戏中,你将操控你的猎人斩击、射击、捕捉各种巨大的怪物。
下面是一些基本的PC操作方法:1. 键盘和鼠标控制:- WASD键控制角色的移动。
W键向前移动,S键向后移动,A键向左移动,D 键向右移动。
- 鼠标控制视角。
移动鼠标可以旋转视角。
- 鼠标左键用于普通攻击。
点击左键发起一次普通攻击。
- 鼠标右键用于防御。
按住右键可以进行防御姿态。
- 鼠标滚轮用于切换物品栏中的物品。
- 数字键1-9用于切换物品栏中的快捷物品。
- 空格键用于躲避怪物的攻击。
- 按住Shift键,然后按住WASD键可以进行奔跑。
- E键用于拾取物品,查看怪物信息等。
- R键用于重新装填远程武器。
- 左Ctrl键用于运行。
- TAB键用于打开大地图。
- Esc键用于打开暂停菜单。
2. 游戏手柄控制:- 使用手柄的左摇杆控制角色移动。
- 使用手柄的右摇杆控制视角。
- 使用手柄的A键进行普通攻击,B键进行防御。
- 使用手柄的Y键进行重击。
- 使用手柄的X键进行特殊攻击。
- 使用手柄的LB和RB键进行物品栏快捷物品的切换。
- 使用手柄的LT键进行怪物骑乘。
- 使用手柄的RT键进行远程武器的攻击。
- 使用手柄的Back键打开大地图。
- 使用手柄的Start键打开暂停菜单。
在游戏中,你需要学会利用武器和项链的不同技能来攻击怪物。
同时,你还需要学会合理利用陷阱和药品进行战斗中的治疗和策略性的操作。
此外,你还可以和其他猎人组队进行多人联机游戏。
最后,希望以上的操作方法能够帮助到你入门怪物猎人世界PC版的操作。
键盘代替鼠标操作指令

CAD(ctrl+ALT+DEL):终止进程、关闭和重启计算机ctrl+A:对当前编辑窗口中的内容进行全选;ctrl+C:对已经被选定的对象进行复制;ctrl+V:在光标位置粘贴已经被复制的对象/内容,同时被复制的对象不被删除;ctrl+X:对被选定的内容/对象进行复制,并且在该内容/对象已经被粘贴之后,再删除原有的内容/对象,否则不予删除;(有点类似于^+C)ctrl+Z:对最近的一次操作进行反悔(undo)、撤消;ALT+BackSpace:undoctrl+S:保存当前窗口的内容,以及快速保存,和Alt+F+s效果相同ctrl+N:在现有IE窗口的基础上再打开一个新窗口,新窗口的内容与当前窗口一样;ctrl+P:弹出打印有关的内容的菜单,知道确认后才正式的打印。
ctrl+B:在office编辑中,起到对字体加黑/去黑的作用;ctrl+I:在office编辑中,起到对字体倾斜/去斜的作用;ctrl+W:效果和组合键Alt+F4相同,关闭当前的窗口(而不是直接关闭当前窗口涉及的程序),在IE,Office程序,我的电脑以及windows资源管理器中起到亦起相同作用ctrl+R:类似于ctrl+F5,对当前内容进行强制性的更新,而不检验、对比内容的日期ALT+ENTER:快速查看所选项目的属性,功能和SHIFT+F10+R/P一样ALT+PrintScreen:将整个屏幕上的内容存成图片并copy在剪贴板中,以供复制SHIFT+F10:弹出“打开方式”·在win系列的启动中按住SHIFT,可以直接进入“安全模式”,出现win画面后再按SHIFT 键,则跳过“开始/程序/启动”程序组中的程序·在放入光盘时按住SHIFT,则是作为自动播放的开关/转化、·在^+ALT+SHIFT之后需要重新启动机器时,按住SHIFT,则是重新启动GUI即windows,而不需要再从BIOS开始,某些时候节约了时间,加快了速度。
PC的含义及各种类型电脑的介绍

PC (personal computer),个人计算机一词源自于1978年IBM的第一部桌上型计算机型号PC,在此之前有Apple II的个人用计算机。
能独立运行、完成特定功能的个人计算机。
个人计算机不需要共享其他计算机的处理、磁盘和打印机等资源也可以独立工作。
今天,个人计算机一词则泛指所有的个人计算机、如桌上型计算机、笔记型计算机、或是兼容于IBM系统的个人计算机等。
目录主要类型发展史硬件软件展开编辑本段主要类型1、台式机(Desktop)也叫桌面机,是一种独立相分离的计算机,完完全全跟其它部件无联系,相对于笔记本和上网本体积较大,主机、显示器等设备一般都是相对独立的,一般需要放置在电脑桌或者专门的工作台上。
因此命名为台式机。
为现在非常流行的微型计算机,多数人家里和公司用的机器都是台式机。
台式机的性能相对较笔记本电脑要强。
台式机具有如下特点:散热性。
台式机具有笔记本计算机所无法比拟的优点。
台式机的机箱具有空间大、通风条件好的因素而一直被人们广泛使用。
扩展性。
台式机的机箱方便用户硬件升级,如光驱、硬盘。
如现在台式机箱的光驱驱动器插槽是4-5个,硬盘驱动器插槽是4-5个。
非常方便用户日后的硬件升级。
保护性。
台式机全方面保护硬件不受灰尘的侵害。
而且防水性就不错;在笔记本中这项发展不是很好。
明确性。
台式机机箱的开、关键重启键、USB、音频接口都在机箱前置面板中,方便用户的使用。
2、电脑一体机电脑一体机,是由一台显示器、一个电脑键盘和一个鼠标组成的电脑。
它的芯片、主板与显示器集成在一起,显示器就是一台电脑,因此只要将键盘和鼠标连接到显示器上,机器就能使用。
随着无线技术的发展,电脑一体机的键盘、鼠标与显示器可实现无线链接,机器只有一根电源线。
这就解决了一直为人诟病的台式机线缆多而杂的问题。
有的电脑一体机还具有电视接收、AV功能。
3、笔记本电脑(Notebook或Laptop)也称手提电脑或膝上型电脑,是一种小型、可携带的个人电脑,通常重1-3公斤。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PC鼠标示例源代码:1.主文件:/*****************************Copyright (c)*************** ************ ;** 西南科技大学计算机学院;** ;**;** 日期:2005.5.10;** 描述:PC鼠标,本程序也通过调试,仅供参考。
;** 实验内容: 利用点阵显示鼠标当前按下的按键和移动的方向与距离;** 适用机型:AT89S52********************************************************************/ #include "Com.h"#include "Display.h"/*******************************************************名称: 初始化运行环境功能:初始化各寄存器与端口状态参数:无返回值:无********************************************************/void Init_device(void){EA=1;EX1=1; //允许外部中断1TL0=0xf0; //置定时器初值0x3CB0 中断时间为25msTH0=0xd8;TMOD=0x01; //设定定时器/计数器0工作方式为1ET0=0x01; //允许全局中断,允许定时器/计数器0溢出中断PX1=1; //设置中断优先级PT0=0;TR0=0x01; //启动定时器/计数器0}/*******************************************************名称: 主函数功能:应用程序入口参数:无返回值:无*******************************************************/void main(){Init_device(); //调用初始化模块Send_data(0xF4); //使能鼠标,允许鼠标发送数据do{}while(Temp_Buffer!=0xFA);ChoiceData(char_P); //显示鼠标点while(1){ProcessData(); //调用数据处理模块}}2.头文件Com.h:/****************************Copyright (c)**************** ************* ;** 文件名:com.h;** 功能:数据处理头文件,接收和处理鼠标发送到主机的数据;** 发送对鼠标的控制命令;** 包含头文件: at89x52.h 芯片功能模块定义********************************************************************/ #include <at89x52.h>/************************************************************/sbit Data_Line=P3^5; //数据线P3_5sbit Clock_Line=P3^3; //时钟线P3_3/***********************定义位变量***************************/ unsigned char bdata Temp_Buffer; //接收字节sbit D_Buf0=Temp_Buffer^0; //Temp_Buffer第0位sbit D_Buf1=Temp_Buffer^1;sbit D_Buf2=Temp_Buffer^2;sbit D_Buf3=Temp_Buffer^3;sbit D_Buf4=Temp_Buffer^4;sbit D_Buf5=Temp_Buffer^5;sbit D_Buf6=Temp_Buffer^6;sbit D_Buf7=Temp_Buffer^7; //Temp_Buffer第7位0/************************************************************/ unsigned char Buffer[11]; //接收位数据缓冲区unsigned char Rec_ptr=0x00; //接收数据指针unsigned char Rec_data=0xFF; //接收数据unsigned char Data_Buf[3]; //接收鼠标数据缓冲区unsigned char Buffer_ptr=0x00; //缓冲区指针unsigned char Data_ptr=0; //数据处理指针/*******************************************************名称: 延时模块功能:软件延时参数:unsigned int count 延时长度返回值:无*******************************************************/void Delay(unsigned int count){unsigned char j,k;unsigned int i;for(i=0;i<count;i++)for(j=0;j<10;j++)for(k=0;k<120;k++);}/*******************************************************名称: 发送模块功能:发送一个字节的控制命令参数:unsigned char dat 控制命令返回值:无*******************************************************///发送一个字符void Send_data(unsigned char dat){unsigned char ptr;TR0=0; //关闭定时器EX1=0; //关闭外部中断1ACC=dat; //将要发送的数据放入A寄存器Clock_Line=0; //拉低时钟线Delay(30); //延时100ms以上Data_Line=0; //拉低数据线Delay(2);Clock_Line=1; //释放时钟线for(ptr=0;ptr<=7;ptr++) //低位在前,一次发送8个数据位{do{}while(Clock_Line==1); //等待设备释放时钟线Data_Line=(dat>>ptr)&0x01; //发送数据位do{}while(Clock_Line==0); //等待设备拉低时钟线}do{}while(Clock_Line==1);Data_Line=~P; //发送校验位,奇校验do{}while(Clock_Line==0);do{}while(Clock_Line==1);Data_Line=1; //发送停止位do{}while(Clock_Line==0);do{}while(Clock_Line==1);do{}while(Clock_Line==0);EX1=1; //打开外部中断1TR0=1; //打开定时器中断}/*******************************************************名称: 奇偶校验模块功能:对接收到的数据进行奇偶校验参数:无返回值:校验正确 1校验错误0*******************************************************/unsigned char Checkout(void){ACC=Temp_Buffer;if(~P==Buffer[9])return 1;elsereturn 0;}/*******************************************************名称: 组合数据模块功能:将接收到的数据为组合成数据参数:无返回值:无*******************************************************/void CombinData(void){/*********将接收到的各位赋值给Temp_Buffer对应的位***********/ D_Buf0=Buffer[1];D_Buf1=Buffer[2];D_Buf2=Buffer[3];D_Buf3=Buffer[4];D_Buf4=Buffer[5];D_Buf5=Buffer[6];D_Buf6=Buffer[7];D_Buf7=Buffer[8];/************************************************************/ if(Checkout()) //如果校验正确{if(Data_ptr<=2) //将鼠标发送的3字节信号分别存入缓冲区Data_Buf[Data_ptr++]=Temp_Buffer;else{Data_Buf[0]=Temp_Buffer;Data_ptr=1;}}}/*******************************************************名称: 外部中断1服务程序功能:接收鼠标发送到主机的各个数据位参数:无返回值:无*******************************************************/void ReceiveData(void) interrupt 0{if(Rec_ptr<=10){do{}while(Clock_Line==0); //等待设备拉高时钟线Buffer[Rec_ptr++]=Data_Line; //接收数据}else{CombinData(); //组合接收到的数据do{}while(Clock_Line==0); //等待设备拉高时钟线Buffer[0]=Data_Line; //接收数据Rec_ptr=0x01;}}3.头文件pointdisplay.h:/***************************Copyright (c)***************** ************ ;** 文件名:pointdisplay.h;** 功能:点阵显示头文件,在点阵模块上显示图形;** 含头文件: intrins.h Keil内部函数头文件********************************************************************/ #include <intrins.h>/*******************点阵显示数据字符编码*****************************/ //鼠标移动点const unsigned char code char_P[8]={0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00}; //鼠标左键被按下const unsigned char code char_L[8]={0x00,0x24,0x14,0x8C,0x97,0xF4,0x94,0x84}; //鼠标中键被按下const unsigned char code char_M[8]={0x00,0x3C,0x24,0xFF,0xFF,0x24,0x3C,0x00};//鼠标右键被按下Const unsigned char code char_R[8]={0x00,0x24,0x14,0xEC,0xA7,0xA4,0xA4,0xE4};//多个按键被按下const unsigned char code char_S[8]={0xFF,0xFF,0xFF,0xE7,0xF7,0xFF,0xFF,0xFF}; //---------------------------------扫描位数组----------------------------------const unsigned char Row_Control[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};unsigned char send_data[8]; //发送数据缓冲区//鼠标移动数据缓冲区unsigned char move_data[8]={0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00}; unsigned char ptr_send=0x00; //发送数据指针unsigned char ptr_con1=0x00; //扫描指针unsigned char button_L; //左键标志unsigned char button_R; //右键标志unsigned char button_M; //中键标志unsigned char length_X; //横向位移unsigned char length_Y; //纵向位移unsigned char flag_Y; //横向移动标志左移为1,右移为0 unsigned char flag_X; //纵向移动标志下移位1,上移为0 unsigned char X_Lmove; //横向左移距离unsigned char Y_Umove; //横向右移距离unsigned char X_Rmove; //纵向上移距离unsigned char Y_Dmove; //纵向下移距离/***********************定义位变量***************************/ unsigned char bdata BitData; //控制信息字节sbit B_dat0=BitData^0; //BitData第0位sbit B_dat1=BitData^1;sbit B_dat2=BitData^2;sbit B_dat3=BitData^3;sbit B_dat4=BitData^4;sbit B_dat5=BitData^5;sbit B_dat6=BitData^6;sbit B_dat7=BitData^7; //BitData第7位/************************************************************//*******************************************************名称: 显示数据模块功能:将要显示的数据送到点阵模块显示P1_5 控制线P1_6 数据线P1_7 时钟线参数:unsigned char s_bit 扫描列控制unsigned char s_data 显示数据返回值:无*******************************************************/void DisplayData(unsigned char s_bit,unsigned char s_data){unsigned char m,n;P1_5=0x00; //拉低时钟线和控制线抑制发送P1_7=0x00;for(m=0;m<=7;m++) //从低位到高位按位发送数据{P1_6=(s_bit<<m)&0x80;P1_7=0x01; //拉高时钟线允许发送P1_7=0x00; //拉低时钟线抑制发送}for(n=0;n<=7;n++){P1_6=(s_data<<n)&0x80;P1_7=0x01;P1_7=0x00;}P1_5=0x01; //拉高控制线将移位寄存器送点阵显示P1_5=0x00; //拉底控制线锁存数据}/*******************************************************名称: 选取显示图形数据模块功能:选取显示图形对应的数据参数:unsigned char *ptr 图形对应数组的数组名返回值:无*******************************************************/void ChoiceData(unsigned char *ptr) reentrant{unsigned char temp;for(temp=0x00;temp<=0x07;temp++){send_data[temp]=*(ptr+temp);}}/*******************************************************名称: 取数模块功能:依次从数组中取出要显示的数据参数:无返回值:unsigned char setdata 要显示的数据*******************************************************/ unsigned char LeftSet(void){unsigned char setdata;if(ptr_send<=7){setdata=send_data[ptr_send];ptr_send++;}else{setdata=send_data[0];ptr_send=0x01;}return setdata; //返回取得的数据}/******************************************************* 名称: 扫描控制模块功能:控制扫描的列参数:无返回值:unsigned char setbit 当前扫描的列*******************************************************/ unsigned char RowScan(void){unsigned char setbit;if(ptr_con1<=7){setbit=Row_Control[ptr_con1];ptr_con1++;}else{setbit=Row_Control[0];ptr_con1=0x01;}return setbit; //返回扫描的列}/******************************************************* 名称: 移动控制模块功能:在点阵显示模块上移动显示数据参数:无返回值:unsigned char mode 模块模式0---左移1---右移2---上移3---下移unsigned char step 移动距离*******************************************************/ void Move(unsigned char mode,unsigned char step){unsigned char i,j;unsigned char temp[8];for(i=0;i<=7;i++) //将要移动的数据放入移动缓冲区send_data[i]=move_data[i];switch(mode){case 0: //左移j=0;for(i=0;i<=7;i++) //保存显示数据temp[i]=send_data[i];for(i=0;i<=7-step;i++) //左移step位send_data[i]=send_data[i+step];for(i=8-step;i<=7;i++) //将移出的数据存回send_data[i]=temp[j++];break;case 1: //右移j=8-step;for(i=0;i<=7;i++)temp[i]=send_data[i];for(i=7;i>=step;i--)send_data[i]=send_data[i-step];for(i=0;i<step;i++)send_data[i]=temp[j++];break;case 2: //上移for(i=0;i<7;i++) //将每列数据循环移动step位send_data[i]=_cror_(send_data[i],step);break;case 3:for(i=0;i<7;i++) //下移send_data[i]=_crol_(send_data[i],step);break;default:break;}for(i=0;i<=7;i++) //将移动后的数据放入移动数据缓冲区move_data[i]=send_data[i];}/*******************************************************名称: 数据处理模块功能:处理接收到的数据参数:无返回值:无*******************************************************/void ProcessData(){unsigned char temp;BitData=Data_Buf[1];button_L=B_dat0;button_R=B_dat1;button_M=B_dat2;flag_X=B_dat4;flag_Y=B_dat5;length_X=Data_Buf[2];length_Y=Data_Buf[0];if(button_L+button_R+button_M==0) //没有键被按下{ChoiceData(move_data);if(Data_Buf[0]+Data_Buf[2]!=0) //如果位移不为0{if(flag_X) //左移{temp=256-length_X; //取位移绝对值X_Rmove+=temp/4; //每4个单位为1毫米,取位移毫米if(flag_Y) //上移{temp=256-length_Y; //取位移绝对值Y_Dmove+=temp/4; //每4个单位为1毫米,取位移毫米}else //下移{Y_Umove+=length_Y/4;}}else //右移{X_Lmove+=length_X/4; //每4个单位为1毫米,取位移毫米if(flag_Y){temp=256-length_Y;Y_Dmove+=temp/4;}else{Y_Umove+=length_Y/4;}}Data_Buf[0]=0; //清空位移Data_Buf[2]=0;}}else //有键被按下{if(button_L+button_M+button_R==1){if(button_L==1)ChoiceData(char_L); //左键被按下else if(button_R==1)ChoiceData(char_R); //右键被按下elseChoiceData(char_M); //中键被按下}elseChoiceData(char_S); //多个键被按下}}/*******************************************************名称: 定时器中断服务模块功能:显示图形参数:无返回值:无*******************************************************/ void TimerOver(void) interrupt 1{DisplayData(RowScan(),LeftSet()); //显示点阵图形if(X_Lmove>=1) //如果鼠标左移大于等于1毫米{Move(1,1); //左移一个单位X_Lmove=0; //清除左移长度}if(X_Rmove>=1) //如果鼠标右移大于等于1毫米{Move(0,1);X_Rmove=0;}if(Y_Umove>=1) //如果鼠标上移大于等于1毫米{Move(2,1);Y_Umove=0;}if(Y_Dmove>=3) //如果鼠标下移大于等于1毫米{Move(3,1);Y_Dmove=0;}TL0=0x78; //重置定时器初值0xFCB0 TH0=0xEC;}。