当前位置:文档之家› PS2键盘在单片机系统中的应用

PS2键盘在单片机系统中的应用

PS2键盘在单片机系统中的应用
PS2键盘在单片机系统中的应用

PS/2键盘在单片机系统中的应用

PS/2键盘作为PC机上的标准输入设备,目前应用已及其普遍。如果将其应用于单片机系统中,将使系统增色不少。这里,就对PS/2接口进行详细的介绍,实现单片机对通用PC 键盘的驱动。

1、PS/2接口简介

PS/2设备接口用于许多现代的鼠标和键盘。它是由IBM开发,并且最初出现在IBM 技术参考手册里。但是这方面的资料现在已经比较少了。这里只是结合笔者实际的实验情况来进行讲解。这个文件描述了用于PS/2鼠标、PS/2键盘及AT键盘的接口。包括其物理、电气接口以及协议。

2、PS/2的物理接口

物理上的PS/2端口是有两种:5脚的DIN或6脚的mini-DIN(DIN标准是由德国标准化组织(Deutsches Institut fuer Norm)建立的)。这两种连接器在电气特性上是十分类似的,实际上两者只有一点不同那就是管脚的排列。这就意味着这两类连接器可以很容易用一种简单的硬件连线的适配器来转换。这种适配器大约每个值6美元或者你可以根据任意两种连接器的对应管脚关系做你自己的适配器。

PC键盘可以有6脚的mini-DIN或5脚的DIN连接器。如果你的键盘是6脚的mini-DIN 而你的计算机是5脚的DIN(或者相反),这两类连接器可以用上面提到的适配器来兼容。具有6脚mini-DIN的键盘通常被叫做PS/2键盘,而那些有5脚DIN叫做AT设备(XT 键盘也使用5脚DIN但它们非常古老并且多年前就不生产了)所有现代的PC键盘不是PS/2、AT,就是USB的。这里只对PS/2键盘进行介绍,而不涉及USB键盘的相关内容。

PS/2接口引脚定义

在上表中接口上的四个管脚电源地5V、数据和时钟。单片机提供5V,并且键盘/鼠标的地连接到单片机的电源地上。数据和时钟都是集电极开路的,这就意味着它们通常

保持高电平而且很容易下拉到地(逻辑0)。时钟和数据线上要有一个大的上拉电阻。置“0”就把线拉低,置“1”就让线上浮成高电平。下图为数据和时钟线的一般接口结

构。

3、PS/2的接口协议

PS/2鼠标和键盘履行一种双向同步串行协议。换句话说每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入。最大的时钟频率是33kHz,而且大多数设备工作在10~20kHz。如果你要制作一个PS/2设备,则推荐把频率控制在15kHz左右。这就意味着时钟应该是高40微秒低40微秒。

一帧数据包含了11个位,这些位的含义如下

如果数据位中包含偶数个1,校验位就会置1。如果数据位中包含奇数个1,校验位就会置0。数据位中1的个数加上校验位总为奇数(这就是奇校验)。这是用来错误检测。

通信时序图如下

4、单片机与PS/2键盘的接口原理

PS/2键盘数据DATA接到单片机某一个IO引脚上,时钟CLOCK接到引脚P3.3。在键盘有键按下时,CLOCK信号会引起单片机的连续中断,外部中断服务程序将键盘发出的位置扫描码序列接收至缓冲区中。然后,在主程序中将位置扫描码解码、查表换算,最终得到输入字符的ASCII码。5、键盘的返回值

键盘的返回值并不是和ASCII码相对应。一次按键过程至少会发送两组码,通码和断码,通码是按键被按下时发送,断码是当按键释放时发送,按住不动将发送通码。每个键的通码和断码都是唯一的,因此通过查唯一的扫描码,就可以知道哪个键被按下或释放。

扫描码集有三套标准,分别是第一套,第二套和第三套,所有现代的键盘默认使用第二套扫描码。

就以大定字母“A”,首先得按住Shift键,然后按下A键,再松开A键,再松开Shift 键。查下面的码表,就得到这样一组键码:

121C F01C F012

第二套扫描码表如下

KEY通码断码通码断码通码断码

A1C F01C946F046[54F054

B32F032`0E F00E INSERT E070E0F070 C21F021-4E F04E HOME E06C E0F06C D23F023=55F055PG UP E07D E0F07D E24F024\5D F05D DELETE E071E0F071 F2B F02B BKSP66F066END E069E0F069 G34F034SPACE29F029PG DN E07A E0F07A H33F033TAB0D F00D U ARROW E075E0F075 I43F043CAPS58F058L ARROW E06B E0F06B J3B F03B L SHFT12F012D ARROW E072E0F072 K42F042L CTRL14F014R ARROW E074E0F074 L4B F04B L GUI E01F E0F01F NUM77F077

M3A F03A L ALT11F011KP/E04A E0F04A N31F031R SHFT59F059KP*7C F07C

O44F044R CTRL E014E0F014KP-7B F07B

P4D F04D R GUI E027E0F027KP+79F079

Q15F015R ALT E011E0F011KP EN E05A E0F05A R2D F02D APPS E02F E0F02F KP71F071

S1B F01B ENTER5A F05A KP070F070

T2C F02C ESC76F076KP169F069

U3C F03C F105F005KP272F072

V2A F02A F206F006KP37A F07A

W1D F01D F304F004KP46B F06B

X22F022F40C F00C KP573F073

Y35F035F503F003KP674F074

6、PS/2接口的驱动程序

外部中断服务程序,用于接收数据。

void Keyboard_out(void)interrupt 2{

if ((IntNum >0)&&(IntNum <9)){

KeyV =KeyV >>1;//因键盘数据是低>>高,结合上一句所以右移一位if (Key_Data)KeyV =KeyV |0x80;//当数据线为1时为1到最高位}

IntNum++;

while (!Key_CLK);//等待PS/2CLK拉高if (IntNum >10){

IntNum =0;//当中断11次后一帧数据收完,清变量准备下一次接收BF =1;//标识有字符输入完了

EA =0;/*关中断等显示完后再开中断(注:如这里不用BF和关中断直接调Decode()则所Decode中所调用的所有函数要声明为再入函数)*/}}

Z 1A F01A F60B F00B KP 76C F06C 045F045F783F083KP 875F075116F016F80A F00A KP 97D F07D 21E F01E F901F001]58F058326F026F1009F009;4C F04C 425F025F1178F078'52F0525

2E

F02E

F12

07F007,

41

F041

636F036PRNT SCRN

E012

E07C

E0F0

7C E0F012

.49F049

73D F03D SCROLL 7E F07E /4A F04A

83E F03E PAUSE E11477

E1F014F077

-NONE-

解码程序

void Decode(unsigned char ScanCode)/*注意:如SHIFT+G为12H34H F0H 34H F0H12H,也就是说shift的通码+G的通码+shift的断码+G的断码*/

{

unsigned char TempCyc;

if(!Key_UP)//当键盘松开时

{

switch(ScanCode)

{

case0xF0://当收到0xF0,Key_UP置1表示断码开始

Key_UP=1;

break;

case0x12://左SHIFT

Shift=1;

break;

case0x59://右SHIFT

Shift=1;

break;

default:

if(DisNum>15)

{

DisplayListChar(0,1,Cls);//清LCD第二行

DisNum=0;

}

if(!Shift)//如果SHIFT没按下

{

for(TempCyc=0;

(UnShifted[TempCyc][0]!=ScanCode)&&(TempCyc<59);TempCyc++);//查表显示

if(UnShifted[TempCyc][0]==ScanCode)DisplayOneChar(DisNum,1, UnShifted[TempCyc][1]);

DisNum++;

}

else//按下SHIFT

{

for(TempCyc=0;(Shifted[TempCyc][0]!=ScanCode)&&(TempCyc<59);

TempCyc++);//查表显示

if(Shifted[TempCyc][0]==ScanCode)DisplayOneChar(DisNum,1,

Shifted[TempCyc][1]);

DisNum++;

}

break;

}

}

else

{

Key_UP=0;

switch(ScanCode)//当键松开时不处理判码,如G34H F0H34H那么第二个34H不会被处理

{

case0x12://左SHIFT

Shift=0;

break;

case0x59://右SHIFT

Shift=0;

break;

}

}

BF=0;//标识字符处理完了

}

51单片机实例程100讲全集

目录 目录 (1) 函数的使用和熟悉 (4) 实例3:用单片机控制第一个灯亮 (4) 实例4:用单片机控制一个灯闪烁:认识单片机的工作频率 (4) 实例5:将P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能 (5) 实例6:使用P3口流水点亮8位LED (5) 实例7:通过对P3口地址的操作流水点亮8位LED (6) 实例8:用不同数据类型控制灯闪烁时间 (7) 实例9:用P0口、P1 口分别显示加法和减法运算结果 (8) 实例10:用P0、P1口显示乘法运算结果 (9) 实例11:用P1、P0口显示除法运算结果 (9) 实例12:用自增运算控制P0口8位LED流水花样 (10) 实例13:用P0口显示逻辑"与"运算结果 (10) 实例14:用P0口显示条件运算结果 (11) 实例15:用P0口显示按位"异或"运算结果 (11) 实例16:用P0显示左移运算结果 (11) 实例17:"万能逻辑电路"实验 (11) 实例18:用右移运算流水点亮P1口8位LED (12) 实例19:用if语句控制P0口8位LED的流水方向 (13) 实例20:用swtich语句的控制P0口8位LED的点亮状态 (13) 实例21:用for语句控制蜂鸣器鸣笛次数 (14) 实例22:用while语句控制LED (15) 实例23:用do-while语句控制P0口8位LED流水点亮 (16) 实例24:用字符型数组控制P0口8位LED流水点亮 (17) 实例25:用P0口显示字符串常量 (18) 实例26:用P0 口显示指针运算结果 (19) 实例27:用指针数组控制P0口8位LED流水点亮 (19) 实例28:用数组的指针控制P0 口8 位LED流水点亮 (20) 实例29:用P0 、P1口显示整型函数返回值 (21) 实例30:用有参函数控制P0口8位LED流水速度 (22) 实例31:用数组作函数参数控制流水花样 (22) 实例32:用指针作函数参数控制P0口8位LED流水点亮 (23) 实例33:用函数型指针控制P1口灯花样 (25) 实例34:用指针数组作为函数的参数显示多个字符串 (26) 实例35:字符函数ctype.h应用举例 (27) 实例36:内部函数intrins.h应用举例 (27) 实例37:标准函数stdlib.h应用举例 (28) 实例38:字符串函数string.h应用举例 (29) 实例39:宏定义应用举例2 (29) 实例40:宏定义应用举例2 (29) 实例41:宏定义应用举例3 (30)

基于STM32的经典项目设计实例

13个基于STM32的经典项目设计实例,全套资料STM32单片机现已火遍大江南北,各种教程资料也是遍布各大网站论坛,可谓一抓一大把,但大部分都差不多。今天总结了几篇电路城上关于STM32 的制作,不能说每篇都是经典,但都是在其他地方找不到的,很有学习参考意义的设计实例。尤其对于新手,是一个学习stm32单片机的“活生生”的范例。 1.开源硬件-基于STM32的自动刹车灯设计 自动刹车灯由电池供电并内置加速度传感器,因此无需额外连接其他线缆。使用两节5号电池时,设计待机时间为一年以上(待机功耗66微安),基本可以实现永不关机,即装即忘。 2.基于STM32F407的openmv项目设计资料 本项目是一个openmv,通过摄像头可以把图像实时传输给显示屏显示。MCU选择的是STM32F407(STM32F407数据手册),ARM Cortex-M4内核,最高频率可达180Mhz,包含一个单精度浮点DSP,一个DCMI(数字相机接口)。 3.STM32无线抢答器 无线抢答器采用STM32F302(STM32F302数据手册)芯片主控,同时用蓝牙,语音模块,数码管,七彩灯等部件构成,当主持人按下抢答键时,数码管进入倒记时,选手做好准备,当数码管从9变为0时,多名选手通过手机上虚拟按键进行抢答,同时语音播报抢答结果,显示屏上显示选手的抢答时间。 4.基于ARM-STM32的两轮自平衡小车 小车直立和方向控制任务都是直接通过控制小车两个电机完成的。假设小车电机可以虚拟地拆解成两个不同功能的驱动电机,它们同轴相连,分别控制小车的直立平衡、左右方向。 5.基于STM32F4高速频谱分析仪完整版(原创) 本系统是以STM32F407(STM32F407数据手册)进行加Blackman预处理,再做1024个点FFT进行频谱分析,最后将数据显示在LCD12864上,以便进行人机交互!该系统可实现任意波形信号的频谱显示,以及可以自动寻找各谐波分量的幅值,频率以及相位并进行8位有效数据显示。 6.基于STM32F4的信号分析仪设计(有视频,有代码) 这次基于discovery的板子做一个信号分析仪,就是练手,搞清楚STM32F4(STM32F4系列数据手册)中的USB固件编写,USB驱动的开发,上位机UI开发等一整套流程,过一把DIY的瘾。 7.基于STM32F4的解魔方机器人-stm32大赛二等奖(有视频) 本系统是基于Cortex-M4内核的STM32微控制器的解魔方机器人,在硬件方面主要有OV7670摄像头,LCD,舵机,在软件方面主要有OV7670的驱动,摄像头颜色识别算法,解魔方算法和舵机动作算法。整个设计过程包括电子系统的设计技术及调试技术,包括需求分析,原理图的绘制,制版,器件采购,安装,焊接,硬件调试,软件模块编写,软件模块测试,系统整体测试等整个开发调试过程。

单片机C语言编程实例

单片机C语言编程实例 前言 INTEL公司的MCS-51单片机是目前在我国应用得最广泛的单片机之一.随着 单片机应用技术的不断发展,许多公司纷纷以51单片机为内核,开发出与其兼容的 多种芯片,从而扩充和扩展了其品种和应用领域。 C语言已成为当前举世公认的高效简洁而又贴近硬件的编程语言之—。将C语言向单片机上的移植,始于20世纪80年代的中后期。经过十几年的努力,C语言终于成为专业化单片机上的实用高级语言。用C语言编写的8051单片机的软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完善的系统。因此,不管是对于新进入这一领域的开发者来说,还是对于有多年单片机开发经验的人来说,学习单片机的C语言编程技术都是十分必要的。. C语言是具有结构化.模块化编译的通用计算机语言,是国际上应用最广.最多的计算语言之一。C51是在通用C语言的基础上开发出的专门用于51系列单片机编程的C语言.与汇编语言相比,C51在功能上.结构上以及可读性.可移植性.可维护性等方面都有非常明显的优势。目前 最先进、功能最强大、国内用户最多的C51编译器是Keil Soft ware公司推出的KeilC51。第 一章单片机C语言入门 1.1建立您的第一个C项目 使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码, 这样单片机才能执行编写好的程序。KEIL uVISION2是众多单片机应用开发软 件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑, 编译,仿真等于一体,同时还支持PLM、汇编和C语言的程序设计,它的界面 和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真 方面也有很强大的功能。因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。 以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。KEIL51是一个商业的软件,对于我们这些普通爱好者可以到KEIL中国代理周 立功公司的网站上下载一份能编译2K的DEMO版软件,基本可以满足一般的个

单片机应用系统设计开发主要步骤

单片机应用系统设计开发主要步骤 单片机应用系统的研究开发步骤,大致分为几个部分: 1.策划阶段: 策划阶段决定研发方向,是整个研发流程中的重中之重,所谓“失之毫厘谬以千里”。因此必须“运筹帷幄,谋定而动”。策划有两大内涵:做什么?怎么做? 1)项目需求分析。解决“做什么?”“做到什么程度?”问题。 对项目进行功能描述,要能够满足用户使用要求。对项目设定性能指标,要能够满足可测性要求。所有的需求分析结果应该落实到文字记录上。 2)总体设计,又叫概要设计、模块设计、层次设计,都是一个意思。解决“怎么做?”“如何克服关键难题?”问题。 以对项目需求分析为依据,提出解决方案的设想,摸清关键技术及其难度, 明确技术主攻问题。 针对主攻问题开展调研工作, 查找中外有关资料, 确定初步方案,包括模块功能、信息流向、输入输出的描述说明。在这一步,仿真是进行方案选择时有力的决策支持工具。 3)在总体设计中还要划分硬件和软件的设计内容。单片机应用开发技术是软硬件结合的技术, 方案设计要权衡任务的软硬件分工。硬件设计会影响到软件程序结构。如果系统中增加某个硬件接口芯片, 而给系统程序的模块化带来了可能和方便, 那么这个硬件开销是值得的。在无碍大局的情况下, 以软件代替硬件正是计算机技术的长处。 4)进行总体设计时要注意,尽量采纳可借鉴的成熟技术, 减少重复性劳动,同时还能增加可靠性,对设计进度也更具可预测性。 2. 实施阶段之硬件设计 策划好了之后就该落实阶段,有硬件也有软件。随着单片机嵌入式系统设计技术的飞速发展,元器件集成功能越来越强大,设计工作重心也越来越向软件设计方面转移。硬件设计的特点是设计任务前重后轻。 单片机应用系统的设计可划分为两部分: 一部分是与单片机直接接口的电路芯片相关数字电路的设计,如存储器和并行接口的扩展, 定时系统、中断系统扩展, 一般的外部设备的接口, 甚至于A/D、 D/A芯片的接口。另一部分是与模拟电路相关的电路设计, 包括信号整形、变换、隔离和选用传感器,输出通道中的隔离和驱动以及执行元件的选用。 工作内容: 1)模块分解。策划阶段给出的方案只是个概念方案,在这一步要把它转化为电子产品设计的概念描述的模块,并且要一层层分解下去,直到熟悉的典型电路。尽可能选用符合单片机用法的典型电路。当系统扩展的各类接口芯片较多时, 要充分考虑到总线驱动能力。当负载超过允许范围时, 为了保证系统可靠工作, 必须加总线驱动器。 2)选择元器件。尽可能采用新技术, 选用新的元件及芯片。 3)设计电原理图及说明。 4)设计PCB及说明。 5)设计分级调试、测试方法。 设计中要注意: 1)抗干扰设计是硬件设计的重要内容, 如看门狗电路、去耦滤波、通道隔离、合理的印制板布线等。 2)所有设计工作都要落实到文字记录上。

51单片机实例(含详细代码说明)

1.闪烁灯 1.实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。 2.电路原理图 图4.1.1 3.系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。 4.程序设计内容 (1).延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要 求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在 执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程 序是如何设计呢?下面具体介绍其原理:

如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒 MOV R6,#20 2个 2 D1: MOV R7,#248 2个 2 2+2×248=498 20× DJNZ R7,$ 2个2×248 (498 DJNZ R6,D1 2个2×20=40 10002 因此,上面的延时程序时间为10.002ms。 由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时, 延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms, 10ms×R5=200ms,则R5=20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2).输出控制 如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管 的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平, 即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0 端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。 5.程序框图 如图4.1.2所示

51单片机实用汇编程序库(word)

51 单片机实用程序库 4.1 流水灯 程序介绍:利用P1 口通过一定延时轮流产生低电平 输出,以达到发光二极管轮流亮的效果。实际应用中例如:广告灯箱彩灯、霓虹灯闪烁。 程序实例(LAMP.ASM) ORG 0000H AJMP MAIN ORG 0030H MAIN: 9 MOV A,#00H MOV P1,A ;灭所有的灯 MOV A,#11111110B MAIN1: MOV P1,A ;开最左边的灯 ACALL DELAY ;延时 RL A ;将开的灯向右边移 AJMP MAIN ;循环 DELAY: MOV 30H,#0FFH D1: MOV 31H,#0FFH D2: DJNZ 31H,D2 DJNZ 30H,D1 RET END 4.2 方波输出 程序介绍:P1.0 口输出高电平,延时后再输出低电 平,循环输出产生方波。实际应用中例如:波形发生器。 程序实例(FAN.ASM): ORG 0000H MAIN: ;直接利用P1.0 口产生高低电平地形成方波////////////// ACALL DELAY SETB P1.0 ACALL DELAY 10 CLR P1.0 AJMP MAIN ;////////////////////////////////////////////////// DELAY: MOV R1,#0FFH DJNZ R1,$ RET

五、定时器功能实例 5.1 定时1 秒报警 程序介绍:定时器1 每隔1 秒钟将p1.o 的输出状态改变1 次,以达到定时报警的目的。实际应用例如:定时报警器。程序实例(DIN1.ASM): ORG 0000H AJMP MAIN ORG 000BH AJMP DIN0 ;定时器0 入口 MAIN: TFLA G EQU 34H ;时间秒标志,判是否到50 个 0.2 秒,即50*0.2=1 秒 MOV TMOD,#00000001B;定时器0 工作于方式 1 MOV TL0,#0AFH MOV TH0,#3CH ;设定时时间为0.05 秒,定时 20 次则一秒 11 SETB EA ;开总中断 SETB ET0 ;开定时器0 中断允许 SETB TR0 ;开定时0 运行 SETB P1.0 LOOP: AJMP LOOP DIN0: ;是否到一秒//////////////////////////////////////// INCC: INC TFLAG MOV A,TFLAG CJNE A,#20,RE MOV TFLAG,#00H CPL P1.0 ;////////////////////////////////////////////////// RE: MOV TL0,#0AFH MOV TH0,#3CH ;设定时时间为0.05 秒,定时 20 次则一秒 RETI END 5.2 频率输出公式 介绍:f=1/t s51 使用12M 晶振,一个周期是1 微秒使用定时器1 工作于方式0,最大值为65535,以产生200HZ 的频率为例: 200=1/t:推出t=0.005 秒,即5000 微秒,即一个高电

单片机应用系统设计工程实践报告

2016-2017学年第1学期 单片机应用系统设计/工程实践 (课号:103G06B/D/E) 实验报告 项目名称:基于AT89C51单片机温度报警系统 学号 姓名 班级 学院信息科学与工程学院 完成时间

目录 一、项目功能及要求 (3) 1.1、课程设计的性质和目的 (3) 1.3、项目设计要求 (3) 二、系统方案设计及原理 (3) 2.1、设计主要内容 (3) 2.2 、AT89C51单片机简介 (3) 2.3 、DS18B20简介 (4) 2.4 、数码管显示 (5) 2.5、报警电路 (6) 三、系统结构及硬件实现 (7) 3.1、总电路图 (7) 3.2、单片机控制流程图 (8) 四、软件设计过程 (8) 五、实验结果及分析 (8) 5.1 、Proteus仿真 (8) 5.2 、C程序调试 (9) 六、收获及自我评价 (14) 七、参考文献 (15)

一、项目功能及要求 1.1、课程设计的性质和目的 本温度报警器以AT89C51单片机为控制核心,由一数字温度传感器DS18B20测量被控温度,结合7段LED以及驱动LED的74LS245组合而成。当被测量值超出预设范围则发出警报,且精度高。 利用现代虚拟仿真技术可对设计进行仿真实验,与单片机仿真联系紧密的为proteus仿真,利用keil软件设计单片机控制系统,然后与proteus进行联合调试,可对设计的正确性进行检验。 1.2、课程设计的要求 1、遵循硬件设计模块化。 2、要求程序设计结构化。 3、程序简明易懂,多运用输入输出提示,有出错信息及必要的注释。 4、要求程序结构合理,语句使用得当。 5、适当追求编程技巧和程序运行效率。 1.3、项目设计要求 1、基于AT89C51单片机温度报警系统; 2、设计3个按键分别为:设置按钮、温度加、温度减; 3、DS18B20温度传感器采集温度,并在数码管上显示按键的区别; 二、系统方案设计及原理 2.1、设计主要内容 本设计以AT89C51单片机为核心,从而建立一个控制系统,实现通过3个按键控制温度,以达到设置温度上下限的功能,并在数码管上显示三个数字当前的温度上下限设置值和DS18B20温度采集值的显示(精确到小数点后一位),当温度高于上限或者低于下限蜂鸣器报警。 2.2 、AT89C51单片机简介 AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4kBytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用A TMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案.AT89C51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器,32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,片内时钟振荡器。 此外,AT89C51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。AT89C51单片机的基本结构和外部引脚如下图所示。

单片机应用系统实验

实验一系统认识及基本程序设计实验 一、实验目的 1. 学习Keil 集成开发环境的操作; 2. 熟悉TD-51 系统板的结构及使用,熟悉51指令系统; 3.掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解; 4.学习查表程序的设计方法,进一步熟悉51 的指令系统。 二、实验设备 PC机一台,TD-NMC+教学实验系统。 三、实验步骤 ⑴编写实验程序,经编译、链接无误后,启动调试功能; ⑵观察实验现象,并分析原因; ⑶按复位键退出调试状态。 四、实验内容 1. 将BCD 码整数0~255 存入片内RAM 的20H、21H、22H 中,然后转换为二进制整数00H~FFH,保存到寄存器R4 中。修改20H、21H、22H 单元的内容,如:00H,05H,08H;观察实验结果。 参考程序: ;============================================================== ; 文件名称: ; 功能描述: BCD整数转换为二进制整数(8位, 范围从00H--FFH) ;============================================================== ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R0, #20H ;BCD存放高位地址 MOV R7, #03H ;BCD码0--255, 最多3位 CLR A MOV R4, A LP1: MOV A, R4 MOV B, #0AH MUL AB ;乘10 ADD A, @R0 ;加下一位的值 INC R0 ;指向下一单元 MOV R4, A ;结果存入R4 DJNZ R7, LP1 ;转换未结束则继续 SJMP MAIN ;设置断点, 观察实验结果R4中的内容 END 2. 将16 位二进制整数存入R3R4 寄存器中,转换为十进制整数,以组合BCD 形式存储在RAM 的20H、21H、22H 单元中。 参考程序: ;============================================================= ; 文件名称: ; 功能描述: 二进制整数(16位)转换为十进制整数(组合BCD) ;=============================================================

单片机的发展趋势与应用实例

单片机发展趋势 单片微型计算机,简称单片机,就是将微处理器、存储器ROM和RAM、定时/计数器、中断系统、I/O接口、总线和其他多功能器件集成在一块芯片上的微型计算机。由于单片机的重要领域为智能化电子产品,一般需要嵌入仪器设备内,故又称嵌入式微型控制器。由于其具有可靠性较高,便于扩展,体积小,成本低等等特点,单片机已经广泛的应用于民用电子产品,智能仪表,工业测控、军工等等领域。但是,单片机也存在着比如片内存储容量较小等等缺点。那么已经很发达的单片机技术未来将何去何从呢?下面我将根据目前的市场需求与单片机本身的特点,从内部器件的优化,外围器件电路的扩展优化,整体可靠性与集成度的提高三个方面简要描绘一下单片机的发展蓝图。 一、内部器件的优化 1、CPU的改进。CPU是单片机的核心,他的功能的发展与提高,势必会带动单片机的发展。目前单片机内大多数为单CPU结构,只有8根数据总线。未来单片机会采用双CPU结构,增加数据总线,提高数据处理速度与能力;同时,采用流水线结构,提高处理和运算速度,以适应实时控制和处理的需要。 2、增大存储容量。目前的单片机片内容量较小,片内ROM一般小于8KB,RAM一般小于256B。虽然可以扩展但是这样一来会带来较多麻烦,如接口的扩展等等,而且程序很难保密。所以,片内EPROM的E2PROM化,以及程序的保密化成为单片机的发展潮流。 3、提高并行接口的驱动能力,以减少外围驱动芯片从而增加外围I/O的逻辑功能和控制的灵活性。 二、外围器件电路的优化 1、以串行方式为主的外围扩展任将为主导。串行扩展具有方便、灵活、电路系统简单,占有I/O接口资源少等等优点,可以大大降低远距离传送成本等等功效,所以,未来外围设备的扩展将以串行方式为主。 2、外围电路的内装化。由于集成电路工艺的不断改进和提高,越来越多的复杂外围电路集成到单片机中,如D/A转化器、A/D转化器、看门狗电路、?LCD 控制器等。这样使得单片机系统的体积大大减小,功能大大提高。 3、和互联网的连接。对于高度发达的信息时代,世界变小了。所以,异地

单片机应用实例报告

单片机应用实例报告 零.序 这个学期一开始便接触了《单片微型计算机原理与接口技术》,听说是《微型计算机控制技术实用教程》的基础,对于工科的我来说学以致用无非是一切的一切,虽然还是个该领域的菜鸟,但是单片机之于自动化的意义不言而喻,对于这篇论文,以下开始展开,不足之处谅解。 一.概述 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。 关于80C51:该系列单片机是采用高性能的静态80C51 设计由先进CMOS 工艺制造并带有非易失性Flash 程序存储器全部支持12 时钟和 6 时钟操作P89C51X2 和P89C52X2/54X2/58X2 分别包含128 字节和256 字节RAM 32 条I/O 口线 3 个16 位定时/计数器 6 输入4 优先级嵌套中断结构 1 个串行I/O 口可用于多机通信 I/O 扩展或全双工UART以及片内振荡器和时钟电路。此外,由于器件采用了静态设计,可提供很宽的操作频率范围,频率可降至0 。可实现两个由软件选择的节电模式,空闲模式和掉电模式,空闲模式冻结CPU但RAM 定时器,串口和中断系统仍然工作掉电模式保存RAM的内容但是冻结振荡器导致所有其它的片内功能停止工作。由于设计是静态的时钟可停止而不会丢失用户数据运行可从时钟停止处恢复的。 二.应用领域 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴: 1.在智能仪器仪表上的应用 单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、

51单片机50个实例代码

51单片机50个例程代码程序里有中断,串口等驱动,直接复制即可使用1-IO输出-点亮1个LED灯方法1 /*----------------------------------------------- 名称:IO口高低电平控制 论坛:https://www.doczj.com/doc/a115214583.html, 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义 sbit LED=P1^0;// 用sbit 关键字定义LED到P1.0端口, //LED是自己任意定义且容易记忆的符号 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { //此方法使用bit位对单个端口赋值 LED=1; //将P1.0口赋值1,对外输出高电平 LED=0; //将P1.0口赋值0,对外输出低电平 while (1) //主循环 { //主循环中添加其他需要一直工作的程序 } } 2-IO输出-点亮1个LED灯方法2 /*-----------------------------------------------

名称:IO口高低电平控制 论坛:https://www.doczj.com/doc/a115214583.html, 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的一个LED灯 该程序是单片机学习中最简单最基础的, 通过程序了解如何控制端口的高低电平 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动, //头文件包含特殊功能寄存器的定义 /*------------------------------------------------ 主函数 ------------------------------------------------*/ void main (void) { //此方法使用1个字节对单个端口赋值 P1 = 0xFF; //P1口全部为高电平,对应的LED灯全灭掉, //ff换算成二进制是1111 1111 P1 = 0xfe; //P1口的最低位点亮,可以更改数值是其他的灯点亮 //0xfe是16进制,0x开头表示16进制数, //fe换算成二进制是1111 1110 while (1) //主循环 { //主循环中添加其他需要一直工作的程序 } } 3-IO输出-点亮多个LED灯方法1 /*----------------------------------------------- 名称:IO口高低电平控制 论坛:https://www.doczj.com/doc/a115214583.html, 编写:shifang 日期:2009.5 修改:无 内容:点亮P1口的多个LED灯

单片机应用课程设计

计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。单片机就在这种情况下诞生了。截止到今日,单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,但飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,这些都离不开单片机。 单片机即单片微型计算机,是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最具代表性的一种。在这学期中,我们主要学习的就是89C51单片机,本论文通过对单片机应用系统的设计过程,89C51单片机系统的硬件电路设计,89C51单片机系统的软件设计和调试,89C51的应用系统设计实例,以及89C51单片机应用的新创意,这几方面进行论述,从而达到认识,学习,设计以及应用等方面的能力。 1.单片机应用系统的设计过程 单片机应用系统设计包括总体方案、硬件系统、软件系统设计, 系统仿真调试和运行维护等。在对应用对象论证、分析的基础上,确定总体方案,在合理的安排系统软件、硬件的技术要求。硬件系统设计包括原理图设计、PCB(印制电路板)设计、制版和组装、硬件调试等工作。软件系统设计技术根据总体方案和硬件电路,设计出实现系统功能的控制程序。系统的测试包括功能测评、技术指标的测量、系统的优化等工作。系统固化后,系统运行,投入正常的工作中,开发工作完成。 1.1 单片机的组成和特点 典型的单片机应用系统除主机外,还包括以下几部分: (1)系统的前向通道(即输入部分)。一般包括数字量、开关量、模拟量信号(A/D)的输入。(2)后向通道(即输出部分)。一般包括数字量、开关量、模拟量信号(D/A )的输出。 (3)人机对话通道,即人机交互部分。一般包括键盘、显示器、打印机、看门狗(监视)电路等。

51单片机模块化编程设计与实例要点分析

模块化编程设计题 一、简述模块化编程的必要性(模块化的优点) 参考答案: 大多数的编程学习者一开始接触和学习到的程序很小,代码量很少,甚至只有几十行。对于这样短小的程序进行模块化设计不是完全必要的。很多情况下程序模块化设计需要“浪费”很多时间,例如增加了代码的数量,增加了构思的时间。把所有的程序代码都写在一个main()函数中程序完全可以运行。 但是随着学习的深入,代码量的增加,将所有的代码都放在同一个.C文件中的做法越发使得程序结构混乱,虽然可以运行,但是可读性、可移植性变差。即使是自己写的程序,时间长以后对程序的阅读和修改也要花一些时间。模块化编程使得程序的组织结构更加富有层次感,立体感和降低程序的耦合度。 在大规模程序开发中,一个程序由很多个模块组成,很可能,这些模块的编写任务被分配到不同的人。几乎所有商用程序都必须使用模块化程序设计理念。在程序的设计过程中各个开发者分工合作,分别完成某一模块特定的功能,减少开发时间等。 二、模块化编程设计步骤 (1)、创建头文件 在模块化编程中,往往会有多个C文件,而且每个C文件的作用不尽相同。在我们的C 文件中,由于需要对外提供接口,因此还必须有一些函数或者是变量提供给外部其它文件进行调用。对于每一个模块都有相应的.c文件和.h文件,为了阅读调试方便,原则上.c文件和.h文件同名,如和。 (2)防重复包含 例如文件 #ifndef__DELAY_H__ #define__DELAY_H__ void delay(uint t); #endif 假如有两个不同源文件需要调用delay(uint t)这个函数,他们分别都通过#include “”把这个头文件包含了进去。在第一个源文件进行编译时候,由于没有定义过因此#ifndef__DELAY_H__条件成立,于是定义_DELAY_H_ 并将下面的声明包含进去。在第二个文件编译时候,由于第一个文件包含时候,已经将_DELAY_H_定义过了。因此#ifndef__DELAY_H__不成立,整个头文件内容就没有被包含。假设没有这样的条件编译语句,那么两个文件都包含了delay(uint t);就会引起重复包含的错误。所以在.h文件中,为了防止出现错误都进行防重复包含。 (3)代码封装 将需要模块化的进行代码封装 头文件的作用可以称其为一份接口描述文件。其文件内部不应该包含任何实质性的函数代码。我们可以把这个头文件理解成为一份说明书,说明的内容就是我们的模块对外提供的接口函数或者是接口变量。同时该文件也包含了一些很重要的宏定义以及一些结构体的信息,离开了这些信息,很可能就无法正常使用接口函数或者是接口变量。但是总的原则是:不该让外界知道的信息就不应该出现在头文件里(不需要外部调用的函数不在头文件中申明),而外界调用模块内接口函数或者是接口变量所必须的信息就一定要出现在头文件里(需要被外部调用的函数一定要在头文件中申明),否则,外界就无法正确的调用我们提供的接口功能。

高职《单片机应用技术》说课材料(精选.)

《单片机应用技术》说课材料 一、课程定位 1.1 课程性质 《单片机应用技术》作为一门直接面向生产和生活的工程技术型课程,在当今电子信息、工业控制领域广泛应用的一门技术,也是高职院校电子类、计算机类、机电类等专业开设的一门非常重要的专业技能课程。 1.2 课程目标 我系(信息与计算机系)图文信息技术专业旨在培养学生电子(图文)设备的应用操作能力,且前期修过《电子技术》、《微机原理与接口技术》等课程,因此开设本课程,强化学生的动手实践能力。 注重学生实际操作能力是职业技能教育发展的必然方向,经过该课程的锻炼,学生的逻辑思维能力、程序编写应用能力以及软硬件综合能力将得到显著的提升,将来可在工业控制、消费电子、家电产品等领域从事应用系统的开发、调试、运行、维护等工作。 1.3 课程设计思路 本课程围绕单片机的实践与应用这条主线展开,其主要的设计思路如图1所示。 以职业岗位需求为依据,以职业能力培养 为目标,以通用的教学设备为平台。 以生活化的情景引导教学 (霓虹彩灯、电子屏菜单、简易电子琴等) 以项目化的内容推进教学 (流水灯、液晶屏显示、定时计数等) 以一体化的模式完善教学 (先练后学、自主学习、分工协作等) 图1 《单片机应用技术》课程设计思路 二、课程内容 在图1中,“以项目化的内容推进教学”是实施本课程的核心,而“以生活化的情景引导教学”和“以一体化的模式完善教学”是项目化得以顺利实施的有力保障。围绕“三化”,笔者将实施方法归纳如下: 2.1 发掘生活中常见的单片机控制案例,将其引入教学情景 本课程传统的教学次序为“单片机内部结构、引脚→指令系统→C语言程序设计→中断及定时计数器→存储器扩展→各种外围芯片的使用→应用实例”,是一种先理论后

51单片机应用开发案例精选

1.发光二极管流水灯 2.交通灯控制器 3.单片机演奏音乐 4.液晶显示复杂自制图形 5.电子万年历 6.实时时钟(年月日时分秒,含定时计时) 7.液晶显示字符(PC计算发送) 8.四路抢答器 9.数字化语音存储与回放(低频) 10.数字温度传感器 11.宽带数控放大器 12.超声波测距 13.基于单片机的电压表设计 14.基于单片机的称重显示仪表设计 15.基于单片机的车轮测速系统 16.步进电机控制 17.控制微型打印机 18.简易智能电动车 19.多种模型发生器 20.相位差测试仪 21.简易红外遥控器或红外通信 22.PC与单片机通信 23.单片机间多机通信 24.无线数据传输 25.单片机实现PWM信号 26.低频信号频谱分析仪 27.单片机USB接口 28.单片机实现TCP/IP 29.单片机读写U盘 30.高精度实时时钟芯片的应用 31.SD卡读写 32.LED数码管点阵显示(支持显示10个汉字) 33.低频数字示波器 34.频率计 35.GPS系统设计(实现GPS模块接口,获取当前定位信息) 36.I2C接口(实现串行EEPROM读写) 37.键盘扩展(增加16个按键,实现队按键的控制) 38.条形码应用 51单片机应用开发案例精选 第1章51单片机开发基础 1.1单片机开发流程 1.2开发工具

1.3测试方法和工具 第2章51单片机开发入门实例 2.1点亮发光二极管实例 2.2跑马灯实例 2.3流水灯实例 2.4查0~9平方表实例 2.5受控输出实例 2.6比较输入数大小实例 2.7交通灯控制器实例 2.8蜂鸣器发音实例 2.9单片机演奏音乐实例 2.10软件陷阱实例 第3章输入和显示 3.1独立式键盘输入实例 3.2行列式键盘输入实例 3.3扫描方式键盘输入实例 3.4定时中断方式键盘输入实例 3.5LED静态显示实例 3.6LED动态显示实例 3.7实时时钟实例 3.8简单液晶显示实例 3.9液晶显示复杂自制图形实例 3.10电子万年历实例 第4章数据采集 第5章数据通信 第6章全球定位系统的设计与开发51单片机应用开发范例大全 第1章单片机C语言开发基础 1.1 MCS-51单片机硬件基础 1.1.1 8051引脚 1.1.2 51单片机功能结构 1.1.3 中央处理器(CPU) 1.1.4 存储器结构 1.1.5 定时/计数器 1.1.6 并行端口 1.1.7 串行端口 1.1.8 中断系统 1.1.9 总线 1.2 Keil mVision2 1.2.1 Keil mVision2集成开发环境介绍 1.2.2 使用Keil mVision2进行开发 1.2.3 dScope for Windows的使用

单片机应用系统及其组成及其分类

单片机应用系统及其组成及其分类 1.组成虽然单片机已经是一个微型计算机,但实质上它只是一个芯片,仅 有这样一个芯片还不能完成任何工作。在实际应用中,要让单片机去完成相应 的工作,需将单片机和被控对象进行电气连接,外加各种扩展接口电路、外部 设备、被控对象的硬件和软件,构成单片机应用系统,如图所示。图1 单片机 应用系统的组成同微型计算机系统一样,单片机应用系统也是由硬件和软件组 成的,硬件是应用系统的基础,软件则在硬件的基础上对其资源进行合理调配,从而完成应用系统所要求的任务,是功能的体现者,二者相互依赖,缺一不可。 2.分类单片机应用系统可按处理器的位数、实时性和软件结构等原则进行分类。 ①按处理器的位数来分类。目前,应用于单片机系统的处理器有4 位、8 位和 16 位以及少量32 位。其中4 位逐渐被淘汰,市场上8 位和16 位占据主导地位。 ②按实时性分类。实时可以理解为及时,但并不一定是快,更多的是反映速 度和处理时间的可预测性问题。就是说:每当有某个外部事件发生时,系统必 须能在预定的、可以为具体程序所接受的时间内做出反应,并完成所需的处理。例如,在听MP3 时,负责解压缩MP3 程序的任务,在多任务情况下被设计成 至少每0.1 秒就要执行一次,这个时间可以看作是该任务的执行周期(period),也可以看成是该任务的执行时限(deadline),在这个期限内,该任务就必须执行,并解压缩出足够的数据,不然MP3 听起来就会像跳针一样,不是连贯的。 单片机应用系统可分为单片机实时系统和单片机非实时系统。前者如果响应时 间不能满足,就要引起系统崩溃甚至死机;后者的响应时间如果不能满足也不 会出现致命的错误。如一台喷墨打印机平均处理周期从2ms 延长到6ms,只不 过是打印速降至正常的1/3 而已。 tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

51单片机C语言程序设计经典案例

项目三C51程序设计语言基础 任务1 C51程序的识读 1.C51程序结构 例3-1 P_test /********************* //注释,还可用//注释掉一行 File name:P_test.c Chip name:STC89C51RC Clock frequency:1.20MHz ***********************/ #include “reg52.h”//预处理命令,文件包含预处理命令,后缀名都是.h,标准的MCS-51单片机头文件为”reg51.h”,STC89系列单片机头文件为”reg52.h” #define unit unsigned int //宏定义预处理命令 sbit BZ=P3`7 ; sbit key=P1`0; void delay(unit ms) { unit i; while( ms --) { for(i=0;i<120;i++); } } void main(void) { while(1) { if(key==0) { BZ=0x0; delayms(10); BZ=0x1; delayms(50); P0=0xFF; } else { P0=~P0; delayms(500); } } } 2.C51的数据类型

位变量型bit 字符型无符号字符型unsigned char 有符号字符型signed char C51的数据类型整数型无符号整数型unsigned int 基本类型有符号整数型signed int 长整数型无符号长整数型unsigned long int 有符号长整数型signed long int 实数型(浮点型)单精度浮点型float 双精度浮点型double 数组类型array 结构体类型struct 构造类型共用体union 枚举enum 指针类型 空类型(void) 表3-1 C51基本数据类型的长度和值域 类型长度/bit 长度/byte 范围 位变量型bit 1 0 ,1 无符号字符型unsigned char 8 单字节0-255 有符号字符型signed char 8 单字节-128-127 无符号整数型unsigned int 16 双字节0-65536 有符号整数型signed int 16 双字节-32768-32767 无符号长整数型unsigned long int 32 四字节 有符号长整数型signed long int 32 四字节 单精度浮点型float 32 四字节 双精度浮点型double 32 四字节 一般指针类型24 三字节 3.C51的标识符和关键字 标识符是由字母、数字和下划线组成的字符串,第一个字符必须是字母或下划线,不超过32个字符。 表3-2 C51中的关键字 关键字用途说明 auto 存储种类声明用来声明局部变量 bdata 存储器类型说明可位寻址的内部数据存储器 break 程序语句退出最内层循环体 bit 位变量语句位变量的值是1(true)或0(flase)case 程序语句switch语句中的选择项 char 数据类型的声明单字节整数型或字符型数据

相关主题
文本预览
相关文档 最新文档