51单片机的C语言程序结构

关键词: 组态 单片机 程序结构 软件

51单片机的C语言程序结构(精选12篇)

篇1:51单片机的C语言程序结构

预处理命令 #include 子函数 void delay(void){ 函数体...} 主函数 void main(void){ 函数体...whlie(1){ 函数体...} }

2、c语言是由函数构成的,一个c语言程序可以包含多个函数,但是有且只能有一个主函数(函数名为main),主函数没有返回值和参数(void main(void))。c语言程序的执行总是从主函数main开始执行的,在主函数中,对各种子函数进行调用。

3、C语言中的函数必须遵循先声明后调用的方式。具体实现有两种方法:

  在主函数之前先声明一个函数,然后在主函数之后定义该函数的具体内容 在主函数之前直接定义函数。

4、文件包含处理

#include 这是一个预处理命令,在所有51单片机的C语言程序里都可以看到这个语句。这个预处理命令实现的功能是:把reg51.h这个文件里面的全部内容复制并包含到这个C语言程序中。所以这里的预处理命令虽然只是简单的一行,但C编译器在处理的时候却可能要处理几十乃至上百行的代码。头文件reg51.h文件里定义了各种端口、寄存器的符号,这样包含了该文件后,我们就可以直接使用P0这样的符号了(我们可以试着不包含这个文件,则编译的时候,会提示我们P0这些符号未被定义)。

该文件可以在kei c51的安装目录下的KeilC51INC文件夹里可以找到,用记事本或写字板可以打开该文件)。

5、在上一个实例中,在程序文件中,我们使用的程序结构并不是标准的程序结构。标准的程序结构应该如下:

预处理命令 #include

子函数声明 void delay(void);

主函数 void main(void){ 函数体...whlie(1){ 函数体...} }

子函数 void delay(void); { 函数体...}

篇2:51单片机的C语言程序结构

/*********************//注释,还可用//注释掉一行Filename:P_test.c

Chipname:STC89C51RCClockfrequency:1.20MHz***********************/#include“reg52.h”//预处理命令,文件包含预处理命令,后缀名都是.h,标准的MCS-51单片机头文件为”reg51.h”,STC89系列单片机头文件为”reg52.h”#defineunitunsignedint//宏定义预处理命令sbitBZ=P3`7;sbitkey=P1`0;voiddelay(unitms){

uniti;

while(ms--){

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

voidmain(void){

while(1)

{

if(key==0)

{

BZ=0x0;delayms(10);BZ=0x1;delayms(50);P0=0xFF;}else{

P0=~P0;

delayms(500);}}}

2.C51的数据类型

C51的数据类型

构造类型

位变量型bit字符型无符号字符型unsignedchar

有符号字符型signedchar

整数型无符号整数型unsignedint

有符号整数型signedint

长整数型无符号长整数型unsignedlongint

有符号长整数型signedlongint

实数型(浮点型)单精度浮点型float

双精度浮点型double

数组类型array结构体类型struct共用体union枚举enum

表3-1类型

指针类型空类型(void)

C51基本数据类型的长度和值域

长度/bit18816163232323224

单字节单字节双字节双字节四字节四字节四字节四字节三字节长度/byte

范围0,10-255-128-1270-65536-32768-32767

位变量型bit

无符号字符型unsignedchar有符号字符型signedchar无符号整数型unsignedint有符号整数型signedint

无符号长整数型unsignedlongint有符号长整数型signedlongint单精度浮点型float双精度浮点型double一般指针类型

3.C51的标识符和关键字

标识符是由字母、数字和下划线组成的字符串,第一个字符必须是字母或下划线,不超过32个字符。

表3-2C51中的关键字关键字autobdatabreakbitcasechar

用途

存储种类声明存储器类型说明程序语句位变量语句程序语句数据类型的声明

说明

用来声明局部变量

可位寻址的内部数据存储器退出最内层循环体

位变量的值是1(true)或0(flase)switch语句中的选择项单字节整数型或字符型数据

关键字codeconstcontinuedatadefaultdodoubleelseenumexternfloatforgotoidataifintinterruptlongpdataregisterreentrantreturnsbitshortsignedsizeofSfrSfr16staticstructswitchtypedefunionunsignedusingvoidvolatilewhilexdata

用途

存储器类型声明存储类型说明程序语句存储器类型说明程序语句程序语句数据类型说明程序语句数据类型说明存储类型说明数据类型说明程序语句程序语句存储器类型说明程序语句数据类型说明中断声明数据类型说明存储器类型说明存储类型说明再入函数说明程序语句位变量声明数据类型说明数据类型说明运算符

特殊功能寄存器声明特殊功能寄存器声明存储类型说明数据类型说明程序语句数据类型说明数据类型说明数据类型说明寄存器组定义数据类型说明数据类型说明程序语句存储器类型说明

说明程序存储器

在程序执行过程中不可修改的变量值退出本次循环,转向下一次循环直接寻址的内部数据存储器Switch语句中的失败选择项构成do...while循环结构双精度浮点数构成if...else选择结构枚举

在其他程序模块中声明了的全局变量单精度浮点型构成for循环结构构成goto循环结构间接寻址的内部数据存储器构成do...while循环结构基本整数型定义一个中断函数长整数型

分页寻址的内部数据存储器使用CPU内部的`寄存器变量定义一个再入函数函数返回

声明一个可位寻址的变量短整数型

有符号数,二进制的最高位位符号位计算表达式或数据类型的字节数声明一个特殊功能寄存器声明一个16位的特殊功能寄存器静态变量结构类型数据构成switch选择语句重新进行数据类型定义联合数据类型无符号数据

定义芯片的工作寄存器无符号数据

声明该变量在程序执行中可被隐含改变构成while和do...while循环语句外部数据存储器

4.C51的常量和变量1)常量

常量就是在程序运行过程中,其值不能改变的数据,包括整型常量、字符常量、字符串常量、实数常量、位标量等。

(1)整型常量:可以用二进制、八进制、十进制、十六进制表示。

无符号整数常量在一个数字后面加上“u”或“U”表示。长整数型常量在后面加上“l”或“L”,无符号长整数型常量在数字后面加上“ul”或“UL”,实数型常量在后面加“f”或“F”。

(2)字符常量:单引号内的字符,不可以显示的控制字符在前加“”组成专用转义字符。(3)字符串常量:双引号内的字符,当双引号内没有字符时是空字符串。在C语言中,字符串常量是作为字符类型数组来处理的,在存储字符串时,系统在字符串尾部加上转义字符“o”,作为该字符串的结束符。

(4)实数常量:有十进制和指数两种表示形式。指数表示的实数为“[±]数字[.数字]e[±]数字”,[]中的内容为可选项

(5)位标量:位标量的值是一个二进制数。2)变量

变量就是在程序运行过程中,其值可以被改变的数据。必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间。定义变量的格式:[<存储模式>]<类型定义>[存储器类型]<标识符>;类型定义和标识符是必要的。存储模式有四种,自动(auto)、外部(extern)、静态(static)和寄存器(register),默认类型为自动(auto)。

表3-3C51存储类型与MCS-51单片机存储空间的对应关系及其大小存储类型databdataidatapdataxdatacode

与存储空间的对应关系

直接寻址片内数据存储区,访问速度快(128B)

可位寻址片内数据存储区,允许位与字节混合访问(16B)

间接寻址片内数据存储区,可访问片内全部RAM地址空间(256B)

分页寻址片外数据存储区,由MOVX@Ri访问

寻址片外数据存储区(64KB),由MOVX@DPTR访问

寻址代码存储区(64KB),由MOVC@DPTR访问

长度/bit88881616

长度/byte111122

存储范围0-2550-2550-2550-2550-655350-65535

如果在变量定义时省略了存储类型标识符,则编译器会自动选择默认的存储类型。默认的存储类型进一步由SMALL、COMPACT、和LARGE存储模式指令限制

存储模式决定了变量的默认存储类型、参数传递区和无明确存储类型说明变量的存储类型。在SMALL模式下,参数传递是在片内数据存储区中完成的。

★ 单片机实验报告的心得体会

★ 实验报告

★ 实验报告 范文

★ 实验报告格式

★ 51短信

篇3:51单片机的C语言程序结构

(一) 系统硬件构造

以MCS51系列单片机的P89C51RD+为核心, EMP7256SQI208-10可边城逻辑为控制中心, 用DS1511NVRam数据存储器储存数据, 通过高速双口Ram进行大量数据的交换。电路工作时, 通过软件检测电路实时监测本电路和外围电路的电源工作情况, 实现电源检测功能;收到数据通讯指令时, 迅速将NVRam中储存的数据调入双口Ram中, 供外部设备读取;外部设备同时也可以将大量的数据写入到DS1511NVRam数据存储器中长时间保存;设计有与计算机或其他电路通讯的RS-422接口。主要原理框图如图1。

1. 单片机在线编程功能设计

根据单片机具有串口在线编程功能特点, 电路中设计有P89C51RD+单片机在线编程电路, 如图2。在单片机上电前, 将短接器J1取下, 将短接器J2短接。电路上电时, PESN端由于J1断开后经1个510Ω的电阻接电源, 此时PSEN端为高电平, P89C51RD+单片机不执行片内程序而进入在线编程状态;通过J2短接, 12V电源经过510Ω电阻提供编程电压。使用PHILIPS公司提供的WINISP程序完成在线编程。MAX232将串口12V电平转换成5V电平。

2. 可编程逻辑电路设计

可编程逻辑电路软件采用电路图形方式设计, 从功能上划分大致可以分为四部分:单片机总线接口译码电路, 电源检测电路A/D变换的时序电路, 单片机串口与外部串口逻辑电路以及外部电路的其他逻辑电路部分等。组成原理框图见图3。

3. 数据存储与双口读/写电路设计

原理框图的如图4所示。数据存储电路采用了DS1270Y-70NVRam存储器。DS1270Y-70 NVRam存储器具有读/写数据时不需要特殊的工作电压、2M的数据存储容量和在长时间断电情况下数据不会丢失的特点。向DS1270Y-70存储器读/写数据时, 通过CPLD, 正确控制DS1270Y-70存储器的地址选择端和输出允许端即可进行操作。

电路中设计了以IDT7134为数据交换核心的双口RAM, 保证了大量数据通讯时的通讯速度要求。IDT7134是一种高速4K×8bit CMOS双端口静态RAM, 它提供了两个带有读写控制、地址和I/O引脚的独立端口, 可独立地读写存储器中的任何单元。作为单片机扩展数据, 端口的使用和普通静态RAM基本相同。IDT7134没有单独的主从处理器访问控制引脚, 在对其内部同一存储单元访问时, 要考虑写入和读出数据的完整性, 设计时需用软件方式来保证单片机和外围CPU1之间数据交换的正确性。电路本方案中采用了在IDT7134中设置输入输出10semaphore的方案, 即根据系统工作时的需要, 单片机P89C51RD+将NVRam中的存储的数据预先调入双口Ram中, 设置输入semaphore, 通知外围CPU可以读取相关数据。外围CPU根据与单片机之间的通讯数据协议, 在需要时可以随时读取存储器中预先存放的数据。

4. CPLD编程接口电路设计

选用贴片集成电路EPM7256SQI208, 必需设计有相应的编程接口。如图5所示, 电路中设计了ByteBlaster的编程方式, 通过计算机并口与JTAG插头连接的编程接口。TCK为编程时钟, TMS为编程使能端, TDI为CPLD的编程数据输入端, TDO为输出, 作为编程数据校对时使用。电路中设计了3个1KΩ电阻分别接CPLD的TCK、TMS和TDI, 接高电平, 可提高了编程时的驱动能力和数据传输可靠性。JTAG插座为标准件, 序号与实物引脚一致。

5. 电源检测设计

电源检测电路以集成电路TLI546I为核心, 如图6所示, 附加外围的电压采样辅助电路, 即可实现对电源的检测。选用TLI546IA/D转换电路, 其特点是具有19路入端的8位A/D转换器, 4k采样速率, 工作温度为-40~+85℃, 最大功耗12W;数据以00~FF串行输出。工作时钟为2MHz, IOK为1MKz的I/O时钟, 当CS片选端和ADIN控制端控制为高电平时, A/D电路开始采样。参考电压接+5V电源, 当采样电压大于或等于+5V时, 串行输出数据为FFH, 当采样电压为为0V时, 串行输出数据为00H。电路中将A0~A19的采样电压调整为2.5V, 目的是检测到所测量电压的变化情况。以设计+12V和-12V两个电源为例, 当V1为+12时, 经过二极管正向降压为11.3V, 经过分压电阻R7和R8分压成2.5V送给集成电路第1脚;-12V经R9和R10分压为-3.2V, 经过射极跟随电路后为+3.2V, 再经二极管正向道通电压降为2.5V, 送集成电路第2脚。

电压计算公式为:

式中Vi为所需要测量的电压, D为该组电压的通过串行方式采样所得, V0为测量后的计算结果。测量精度与各组测量电压有关, 以12V为例, 其测量精度为0.09V。

6. 电源供电电路

由于电路中需要+5V、+12V和-12V三组电源供电, 为方便使用, 外部提供单组VO电源。因此, 由于输入、输出电压差较大、不能采用LDO低压差线性稳压器, 而必需采用DC/DC开关式稳压器模块进行电压变换, 将外部直流电源转换成电路中所需要的工作电源。图七所示, 电路中选用DC20和DC10模块输出+5V、+12V和-12V以满足本电路的工作电源要求。由于外部电源干扰较大, 选用A1电源滤波器进行滤波。DC/DC模块输出端加0.1μF的胆电容, 滤出10MHz以上的高频干扰, 10μF的电解电容用于滤出约2.5MHz的纹波干扰。

7. RS-422通讯接口电路的设计

考虑到电路与外部单片机的通讯, 设计了RS-422通讯接口。RS-422为异步全双工工作方式, 传输率为15200BPS~9600BPS, 当传输率为57600 BPS时, 传输距离可达1200m, 具有防静电、防浪涌功能它。全双工的RS-422信号。如图8所示, 电路中选用集成电路MAX489, 将TXD、, RXD信号转换成四线平衡差分方式传输。MAX489的3引脚经电阻R18接低电平, 4引脚经电阻R17接高电平。增加电阻R15和R16, 可提高通讯线路的抗干扰能力。

(二) 软件设计

软机设计采用模块化设计, 主要由主模块、时钟0中断模块、和串口模块三个相对独立的模块构成。其余模块均为完成某一特定功能的子模块, 供三个主模块调用或其它子模块调用。

1. 各主模块的主要功能

主模块主要实现程序的初始化, 及相关数据的记录。程序运行从0000H开始, 用LJMP跳转指令跳到主程序的存放位置。

时钟0中断模块25ms中断一次, 主要完成系统时间的计时, 外部电路电源的检测。本设计中选用定时器0中断, 其程序入口地址为000BH。

串口中断模块实现计算机与单片机之间的RS-232串口的中断和RS-422串口的中断, 完成采集和处理功能。选用串口中断0, 入口地址为0003H。软件开发使用有可视化集成开发环境的Keil51进行开发设计。

2. 部分功能软件设计

串口中断模块主要负责完成串口数据的处理, 接收并识别和处理串口命令, 回报相关状态和数据等。模块流程图如图10。

(三) 小结

设计制作板需要注意, 将连线关系密切的元器件尽量放在一起, 其线路尽可能短, 振荡电路元件要尽量靠近单片机。将PCB分区为独立的模拟部分和数字部分, 并实现模拟和数字电源分割。由于DC/DC开关式稳压器模块功耗大, 发热量大, 采用自然散热, 要布置在空气流通比较顺畅的地方, 尽量减少散出来的热量对其它器件造成的影响

设计中选用P89C51RD+, 主要是P89C51RD+比P89C51RD2使用的温度范围要宽, 且发现P89C51RD+的串口传输比P89C51RD2要可靠。P89C51RD系列有2个特殊功能FLASH寄存器:BOOT VECTOR编程矢量字节和STATUS BYTE状态字节, 在复位下降沿, 单片机检查STATUS BYTE中的内容, 如果为0, 则转向0000H地址开始执行程序, 用户应用代码的正常起始地址。如果STATUS BYTE不为0, 则将BOOT VECTOR的值作为程序计数器的高位字节, 而低位字节为00。对其进行串口在线编程时需注意, 在没有确定BOOT VECTOR编程矢量字节和STATUS BYTE状态字节是否正确之前, 不可在WINISP在线编程软件中点击“Write”写入, 否则将改写单片机中的编程矢量字节和状态字节, 使单片机无法正常工作。正确的编程矢量字节和状态字节应该是FC和00。

参考文献

[1]张积东, 孙及第, 夏华龙.单片机51/98开发与应用[M].电子工业出版社.

[2]郭万有.可编程逻辑控制原理、运用与开发[M].西安电子科技大学出版社.

篇4:51单片机的C语言程序结构

关键词:MCS-51;C语言;应用;方法

中图分类号:TP311.52文献标识码:A文章编号:1007-9599 (2011) 03-0000-02

MCS-51 Programming Application Based on C Language

Zeng Zhi

(Xianning Vocational Technical College,Xianning437100,China)

Abstract:The machine is a compilation of software source code by compiling into machine code for the MCS-51 microcontroller assembler software early A51,with the development of SCM technology continues to evolve,from assembly language to the increasingly widespread use of advanced language development,SCM Keil development software is constantly evolving software development is the most popular MCS-51 MCU software,the simulator from recent years manufacturers have announced full support for Keil to be seen.

Keywords:MCS-51;C language;Application;Method

一、对MCS-51的介绍

对无论规模大小、性能高低,计算机的硬件系统都是由运算器、储存器、输入设备、输出设备以及控制器等单元组成。在通用计算机中,这些单元被分成若干块独立的芯片,通过集成电路连接而构成一台完整的计算机。这成为当时这一类芯片的典型特征,因此就以Single Chip Microcomputer来称呼这一类芯片,中文译为单片机。

嵌入式计算机系统的应用越来越广泛,给我们的生活和工作带来了极大的影响。单片机是嵌入式计算机系统的CPU,是系统的控制核心。以Intel公司的8051和8052为内核的8位单片机及其衍生产品——MCS-51系列单片机经过了20多年的发展,现在已经有数百种之多,由于其具有成本低、可靠性高、集成度高、易于扩展、处理能力强等优点,在智能仪器仪表、过程控制、机电一体化系统等领域被广泛应用。在8位单片机领域,MCS-51系列单片机多年来都保持非常大的市场占有率。近些年新推出了许多各具特色的RISC单片机,如Microchip公司的PIC系列单片机和Atmel公司的AVR系列单片机等,这些新单片机具有速度高、功耗低、I/O驱动能力强等特点,并且具有一定的模拟信号处理能力,给MCS-51系列单片机带来了很大的冲击。尽管如此,经过诸如Dallas、ADI、Philips、Infineon等许多全球著名半导体公司的努力,MCS-51系列单片机中近些年也推出了许多高性能的产品。如Dallas公司(被Maxim公司收购)的DS89C420单片机采用8052内核,其速度可达50 MIPS;ADI公司的ADμ8xx系列、Maxim公司的MAX7651/52、TI公司的MSC1210、Cygnal公司的C8051Fxxx系列等都是全兼容8051或8052的混合信号单片机,它们都具有相当强的模拟信号处理能力,被称之为“混合信号单片机”。

二、单片机的外部结构

1.P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平)。

2.电源VCC(PIN40)和地线GND(PIN20)。

3.高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位)。

4.内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍)。

5.程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序)。

6.P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1。

三、查表程序设计

数据补偿、修正、计算、转换等各种功能,具有程序简单、执行速度快等优点。查表就是根据自变量x,在表格中寻找y,使y=f(x)。执行查表指令時,发出读程序存储器选通脉冲/PSEN。在MCS-51的指令系统中,给用户提供了两条极为有用的查表指令:(1)MOVC A,@A+DPTR。(2)MOVC A,@A+PC指令“MOVC A,@A+DPTR”完成把A中的内容作为一个无符号数与DPTR中的内容相加,所得结果为某一程序存储单元的地址,然后把该地址单元中的内容送到累加器A中。指令“MOVC A,@A+PC”以PC作为基址寄存器,PC的内容和A的内容作为无符号数,相加后所得的数作为某一程序存储器单元的地址,根据地址取出程序存储器相应单元中的内容送到累加器A中。指令执行完,PC的内容不发生变化,仍指向查表指令的下一条指令。优点在于预处理较少且不影响其它特殊功能寄存器的值,所以不必保护其它特殊功能寄存器的原先值。缺点在于该表格只能存放在这条指令的地址X3X2X1X0以下的00-FFH之中。表格所在的程序空间受到了限制

四、编程实现

(一)创建一个基于对话框的应用程序

打开VC++6.0集成开发环境,选择菜单项File/New,在出现的对话框中选中Projects标签中的MFC AppWizard(exe),然后在Project Name框中填入MyCOMM(可根据需要命名),之后点OK按钮。在接着出现的对话框中选中Dialog Based项,然后点NEXT按钮。以下的各对话框都按照缺省设置,这样即可生成一个基于对话框的应用程序。在资源编程器中会出现其对话框模板。

(二)子程序的设计

1.子程序设计原则和应注意的问题,一种能完成某一特定任务的程序段。其资源要为所有调用程序共享。因此,子程序在结构上应具有独立性和通用性,在编写子程序时应注意以下问题:(1)子程序的第一条指令的地址称为子程序的入口地址。该指令前必须有标号。(2)主程序调用子程序,两条子程序调用指令:a.绝对调用指令:ACALL addr11。b.长调用指令:LCALL addr16。(3)注意设置堆栈指针和现场保护。(4)最后一条指令必须是RET指令。(5)子程序可以嵌套,即子程序可以调用子程序。(6)在子程序调用时,还要注意参数传递的问题。

2.插入MSCOMM控件,选择菜单项Project/Add to project/Components and Controls&hellip;,在弹出的对话框中选择Registered ActiveX Controls文件夹下的Microsoft Communications Control,version6.0,然后按下Insert按钮,接着会弹出一个对话框,提示生成的类名及文件名,按OK按钮即可实现控件的插入。这时在对话框的控件工具栏上会多出一个电话机模样的控件图标,Workspace的Classview中也多了一个类CMSComm。此时即可将MSCOMM控件加入到对话框模板,加入方法与其他控件一样。然后还要在对话框类中相应加入一个成员变量,此处我们将其命名为m_comm。

3.设置属性,可以在两个地方对控件的属性进行设置:(1)对话框资源编辑器中。在对话框模板上,用右键单击MSCOMM控件,然后选择Properties&hellip;菜单项,最后便可设置各项属性。此处只对以下几处进行改动,其他接受缺省设置:Rthershold:1,InputLen:1,DTREnable:不选,InputMode:1-Binary。(2)对话框类的OnInitDialog()函数中。

五、在VC++中MSCOMM控件的实现

(一)事件驱动方式

当通信事件发生时,MSCOMM控件会触发OnComm事件,调用者可以捕获该事件,通过检查其CommEvent属性便可确认发生的是哪种事件或错误,从而进行相应的处理。这种方法的优点是响应及时、可靠性高。

(二)查询方式

在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。如果应用程序较小,这种方法可能更可取。

六、结语

汇编语言在实时性方面具有较大的优越性,虽然使用Keil C51可以在C语言程序中嵌入汇编代码,但是复杂度明显提高。实验证明,只要合理地运用C语言,在延时编程方面就可以达到与汇编语言相近的精度。为了获得精确的时间延迟,可通过Keil C工具的仿真功能,调整延迟量,从而得到较理想的结果。

参考文献:

[1]邵峰.MCS-51单片机地址指针及其应用.安徽科技,2009,5

[2]葛世超.在MCS-51单片机上移植μC/OS-Ⅱ.信息化研究,2010,1

[3]田野.MCS-51单片机在表决系统中的应用.山西电子技术,2010,6

篇5:51单片机的C语言程序结构

void INT0()interrupt 0 using 1 {.........} interrupt 0 指明是外部中断0; interrupt 1 指明是定时器中断0; interrupt 2 指明是外部中断1; interrupt 3 指明是定时器中断1; interrupt 4 指明是串行口中断;

using 0 是第0组寄存器; using 1 是第1组寄存器; using 2 是第2组寄存器; using 3 是第3组寄存器;

例如:

/*-----------------

外部中断程序-----------------*/ void ISR_Key(void)interrupt 0 using 1 { P1=~P1;

//s3按下触发一次,P1取反一次 }

/*-----------------

串口中断程序-----------------*/ void UART_SER(void)interrupt 4 //串行中断服务程序 {

unsigned char Temp;

//定义临时变量

if(RI)

//判断是接收中断产生

{

RI=0;

//标志位清零

Temp=SBUF;

//读入缓冲区的值

P1=Temp;

//把值输出到P1口,用于观察

SBUF=Temp;

//把接收到的值再发回电脑端

}

if(TI)

//如果是发送标志位,清零

篇6:51单片机舵机程序

#include sbit a=P0^0;#define uchar unsigned char #define uint unsigned int void delay(uint z){ uint x,y;for(x=z;x>0;x--)

for(y=110;y>0;y--);}

void delayus2x(unsigned char t){

while(--t);} void delay750us(){ delayus2x(245);delayus2x(122);} void delay1500us(){

delayus2x(245);

delayus2x(245);

delayus2x(245);} void delay2300us(){

delayus2x(245);

delayus2x(245);

delayus2x(245);

delayus2x(245);

delayus2x(147);

} void main()

//a=~a和delay顺序不能反 { while(1){

uint i=50;while(--i)

//中

{

a=1;

delay1500us();

a=0;

delay(20);

}

i=50;

while(--i)

{

a=1;

delay2300us();

a=0;

delay(20);

}

i=50;

while(--i)

{

a=1;

delay750us();

a=0;

delay(20);

}

}

}

//左

篇7:51单片机脉冲产生程序设计

用51单片机用独立键盘控制输出4种频率:1Hz、2Hz、10Hz、50Hz,占空比为50%的脉冲信号。

#include

#define uint unsigned int #define uchar unsigned char sbit d0=P1^0;sbit d1=P3^2;uintnum=0,counter=0;void delay(uint x){ uinti,j;for(i=x;i>0;i--)for(j=110;j>0;j--);} void main(){

d1=1;

d0=1;

d2=1;num=0;

IT0=1;

EX0=1;

TMOD=0x01;

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

EA=1;

ET0=1;

TR0=1;while(1)

{

} } void Int0()interrupt 0 { delay(10);if(d1==0){

d1=1;num++;if(num==4)num=0;counter=0;}

} void Timer0(void)interrupt 1 {

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;counter++;

if(num==0){ if(counter<=500)

d0=0;if(counter>500)

d0=1;if(counter==1000)counter=0;

} if(num==1){ if(counter<=250)

d0=0;if(counter>250)d0=1;if(counter==500)counter=0;}

if(num==2){ if(counter<=50)d0=0;if(counter>50)d0=1;if(counter==100)counter=0;} if(num==3){ if(counter<=10)

d0=0;if(counter>10)

d0=1;

篇8:51单片机的C语言程序结构

1 基于51单片机的设备与上位组态软件的连接

对于易控组态软件,底层设备属于I/O设备。上位机通过硬件通道与硬件设备建立连接关系,按照对应的通信协议与硬件设备交换数据,并将采集到的运行数据经转换后通过数据库接口传送至数据库,同时响应数据库关联变量来改变事件,将输入数据写入硬件设备。51单片机提供了一个全双工标准接口,通过电平转换芯片MAX232及相关外围电路来实现TTL信号和RS-232电平信号之间的转换,并实现与计算机串口RS-232的硬件通信通道连接。通过设备驱动程序,完成基于51单片机的设备与上位组态软件的数据交互。其接口结构如图1所示。

2 利用开发向导生成驱动程序的框架[1,2]

根据INSPEC组态软件I/O系统的驱动设计规范,I/O系统由服务器类(DeviceIoMgr)、通道类(Channel)、设备类(Device)、I/O变量类(IoTag)构成。INSPEC提供了设备驱动程序开发包(SDK),驱动程序的开发环境为Visual Studio 2008。采用C#为开发语言,易控提供驱动程序开发模板。

2.1 设备驱动程序的建立

设备驱动程序的建立需运行Microsoft Visual Studio2008,新建项目类型为“Visual C#易控(INSPEC)”,在“我的模板”位置会出现“设备通信”模板,输入项目名称为单片机通用驱动,支持通道名称选择串口,根据向导完成新建项目的配置。然后修改项目的三个重要属性:

(1)程序集名称要遵从“Controlease.IoDrive.厂家名.设备名”的规则。在项目属性设置窗口中,点击“应用程序”,将程序集名称修改为ControlEase.IoDrive.Control Ease.单片机通用驱动。

(2)生成事件是生成I/O设备驱动的DLL文件。由于易控启动时从文件夹..ControlEaseINSPECDevices下加载驱动,所以将生成驱动DLL的路径设置在此目录

(3)引用路径是驱动项目中引用类库的路径,一般设置在..ControlEaseINSPEC目录下。

2.2 驱动程序的设计方法

在易控提供的驱动程序开发模板下,为了实现I/O设备的自定义功能,主要修改设备通信模板的读、写以及特殊操作方法。本通用驱动程序的设计修改了单片机通用驱动Protocol.cs类中的ReadPacket (SampleTagPacket packet)和WriteTag(IoTag tag)方法。

(1)设备数据采集

易控采用循环采集的方式来采集现场设备数据。所有具有“只读/读写”属性的1/O量,都会按照I/O变量设置的“查询周期”进行采集。每次采集过程都会进入ReadPacket方法中。

设备数据采集过程,默认采集方式为变量包采集方式。在该设备通信程序开发包里,把所有在INSPEC软件中添加的可读IoTag都添加到了一个数据包中,采集程序从bool ReadPacket(SampleTagPacket packet)方法进入,数据采集流程图如图2所示。

数据采集部分编程如下:

在这段代码中,首先调用FormReadOrde方法,组成了通信协议帧,并返回读命令长度。然后通过WriteAndRead方法,完成了串口的读写操作,即完成了上位机与设备间的一次通信。收到返回数据以后,调用CheckOutReceivedData方法,对从串口接收到的数据进行校验。最后,调用数据解析ParseI/O方法,将接收到的数据转换成I/O变量的值。

(2)写设备变量

易控中所有的赋值操作,只要I/O变量具有“只写/读写”属性,并且I/O变量关联的数据库变量的值发生变化,都会触发写操作,并进入WriteTag方法。将参数写到设备里面,默认调用方式为写IoTag,程序从bool WriteTag(IoTag tag)方法进入,写设备变量流程图如图3所示。

写设备变量部分编程如下:

在这段代码中,首先调用FormWriteOrder方法,组成了通信协议帧,并返回写命令长度,然后通过WriteAndRead方法,完成了串口的读写操作,即上位机与设备完成了一次通信。在收到返回数据以后,调用CheckOutReceivedData方法,对串口接收到的数据进行校验。

2.3 数据打包

易控进行设备数据采集的最小单位是一个数据包(SampleTagPacket)。在默认设备采集过程中,所有的查询周期相同的IoTag都将会打包到同一个数据包中。这个数据包就是易控的基本采集单位变量包packet,即IoTag的集合。设备类中的CanAddToPacket方法是为读打包服务的,该方法将返回一个Bool值,用来判断是否可以打成一个包。在该方法下设计需要打包寄存器的条件,只要返回TRUE,满足条件的寄存器就会自动打成一个包。

CanAddToPacket有两个参数,packet指的就是包,它包括多个满足打包条件的tag (tag指准备要打包的寄存器)。如果满足打包条件,tag就会被添加到packet中。具体实现方法如下:

2.4 驱动程序通道配置

INSPEC在I/O通信的通道中配置复杂的串行端口参数(如波特率大小,数据位长度,停止位位数,有无奇偶校验等)、初始化和读写操作,用户可以针对不同设备的通信协议进行相关的配置,即可将51单片机仪表和设备接入INSPEC,避免了驱动程序的重复开发。

通道配置完成后,点击“下一步”进行设备的选择,编写好的设备驱动“单片机通用设备”已经加载到了易控可选设备中,如图4所示。由于易控中提供两种数据传递类型,一种是比较常用的字节形式(ByteArrayParseInfo),另一种是在智能仪表中常用的ASCII码字符串形式(StringParselnfo)。根据协议能很方便地确认设备采用的是哪一种形式,然后根据需要定义对应的数据转换信息类,这里选择的是字符串方式。点击“完成”即建好通道。

3 基于51单片机的通信程序设计[3]

该驱动程序具有较强的通用性,在INSPEC中用户只需根据底层设备的通信协议进行通道配置即能完成INSPEC与下位机之间的通信;另一方面,用户也可以先配置好INSPEC的通道,并根据通道配置在下位51单片机的通信程序里进行相关协议的编写,实现上位和下位机的通信协议的一致性。

51单片机的串行口内部有两个物理上独立的接收、发送缓冲器SBUF,可同时发送、接收数据。用户将数据存放在SBUF寄存器里来完成与上位机INSPEC的数据交互。为了更好地体现驱动程序的通用性,在驱动程序里定义了收发数据的缓冲区大小,用户只需将底层设备的数据存储到已定义的缓冲区里就能完成数据的交互,编程如下:

这里单片机串口工作于方式1,数据帧格式为8 bit数据位,1 bit停止位,定时/计数器1用作波特率发生器,PCON中的SMOD位为0,发送的波特率为9 600,系统初始化程序如下:

4 通用驱动程序在电压监测仪表上的应用

该应用中下位机采用STC89C52系列单片机为主控芯片的电压监测仪表,上位机监控软件为INSPEC。由于已经编写了单片机的通信协议,所以在易控中进行通道配置时应该与单片机通信协议保持一致,即8 bit数据位,1 bit停止位,波特率为9600。通道配置完成后,在设备中选择单片机通用驱动就完成了I/O通信的配置。

电压监测仪表中的电压传感器将采集的电压信号传给A/D模块进行数据转换,并进入单片机进行数据处理,经RS-232端口与上位机的监控软件INSPEC通信。通过数据交互,可在上位机上直接显示现场的电压值,以达到对现场电压的实时监测。

4.1 上位机监控界面的设计[4]

INSPEC软件能够很方便地实现对自动化过程和装备的监测和控制。在INSPEC中添加实时数据库变量,其中包括了控制系统所需的数据交互信息:电压设定值、监测电压值、电压报警指示和监测电压的实时曲线图等变量,使监控窗口和数据通道的变量关联起来。

4.2 驱动程序的装载

在Microsoft Visual Studio 2008开发环境中,驱动程序编译后在文件夹..ControlEaseINSPECDevices下生成ControlEase.IoDrive.ControlEase.,单片机通用驱动.dll驱动文件。启动易控开发环境时,会自动将驱动文件加载到易控的设备选择中供用户选择。

针对组态软件应用中驱动程序的开发问题,本文设计了基于INSPEC的51系列单片机通用驱动程序。实现了INSPEC和单片机控制的外部设备进行通信,解决了基于51系列单片机设备驱动程序的重复设计问题。为以后开发其他设备驱动程序提供了设计思路和程序框架,对实现底层设备方便接入组态软件进行了有益的探索。

摘要:设计了一种基于易控(INSPEC)组态软件的51单片机外部设备的通用驱动程序,以解决基于51单片机的底层设备驱动问题。该通用驱动程序通过电压监测仪表进行了应用调试,证明了该驱动程序实用易行,并为其他的设备驱动程序设计提供了设计思路和程序框架。

关键词:数据通信,易控,组态软件,单片机,驱动程序

参考文献

[1]北京九思易自动化软件有限公司.易控(INSPEC)高级开发指南[M].2009.

[2]ROBINSON S,CORNES O.C#高级编程[M].康博,译.北京:清华大学出版社,2002.

[3]李全利,迟荣强.单片机原理及接口技术[M].北京:高等教育出版社,2004.

篇9:51单片机的C语言程序结构

关键词:51单片机 LCD12864 程序设计

0 引言

液晶显示器根据显示方式可分为:段位式、字符式和点阵式LCD,其中段位式与字符式只能显示数字与字符。而点阵式LCD不仅能显示数字与字符,还能显示各种图形、曲线及汉字等。本文研究的TG12864B是能显示曲线、图形及汉字的点阵式LCD。

1 TG12864介绍

TG12864是一款无字库的图形点阵显示器,其屏幕由64行×128列点阵组成,可以显示16点阵的4行×8列(32个)汉字、8点阵的8行×8列(64个)字母和128×64全屏幕点阵图形。

1.1 TG12864B内部功能器件介绍

在使用TG12864B前须了解其相关功能器件,如下所示:①指令寄存器(IR):用于寄存指令码。②数据寄存器(DR):用于寄存数据的。DR和显示数据存储器DDRAM(见表1)之间的数据传输是模块内部自动执行的。③显示数据RAM(DDRAM):DDRAM是存储图形显示数据的。数据为1表示显示选择,数据为0表示显示非选择。DDRAM与地址和显示位置的关系见DDRAM地址表。④XY地址计数器。XY地址计数器是一个9位计数器。高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。X地址计数器是没有记数功能的,只能用指令设置。Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。

1.2 TG12864的控制指令

①开关显示:开显示,指令码为0X3F;关显示,指令码为0X3E。②设置Y地址:0x40~0x4f,其中0x40为第0列列地址,0x4f为第63列列地址。③设置X页地址:模块有64行,其中8行为一页,即有8页,A2~A0表示0~7页:如,当A2~A0为000时表示第0页,为111是表示第7页。页地址分别是0XB8~0XBF。④显示开始线:该指令中A5~A0为显示起始行的地址,它规定了显示屏起始行所对应的显示存储器的行地址。通过修改显示其实行寄存器的内容,可以实现显示屏向上或向下滚动。⑤读状态:BF:判断忙信号标志位。BF=1表示液晶屏正在处理MCU发过来的指令或者数据,此时接口电路被挂起,不能接受除读操作以外的任何操作,BF=0表示液晶屏接口控制电路处于空闲状态,可以接受外部数据和指令。

2 电路设计

图1 TG12864显示线路

图1为AT89S51控制12864LCD线路图,图中DB0~DB7为TG12864的数据线,单片机通过该端口给TG12864写命令或读写数据;RS为寄存器与显示内存操作选择管脚,单片机通过P3.7脚与之连接,当RS脚为高电平时,对液晶显示器的数据寄存器进行读或写操作;当RS脚为低电平时,对命令寄存器进行操作;RW为读写控制脚,与单片机P3.6脚连接,当RW脚为高电平时,准备对液晶显示器执行读操作,低电平时执行写操作;E脚为使能端,与P3.5脚连接,下降沿有效;CS1为高电平是选择芯片(右半屏)信号,CS2为高电平时选择芯片(左半屏)信号;RST复位脚,低电平复位。

3 LCD12864的驱动程序设计

LCD12864驱动程序的编程要想让LCD12864显示出需要的内容,就得严格按照LCD12864的工作时序来进行编程。驱动LCD12864显示程序含有以下几个子程序:

sbit di=P3^7;//高电平写数据,低电平写命令

sbit rw=P3^6;//高电平读操作,低电平写操作

sbit e=P3^5;//读写使能端,下降沿有效

sbit cs1=P3^4;//定义P3.4为左半屏片选信号

sbit cs2=P3^3;//定义P3.3为右半屏片选信号

sbit rst=P3^2;//TG12864复位信号

sbit bf=P2^7;//检测LCD忙引脚

sbit res=P2^4;//检测是否处于复位状态,高电平处于复位,低电平正常。

define dataport P0 //定义P0口为LCD数据总线,用于传输指令命令和显示数据。

3.1 忙检测子程序

void check_busy(void)

{

dataport=0xff;

di=0;

rw=1;

delay(1);

e=1;

while(bf||res==1);

e=0;

}

3.2 写命令或数据子程序

void write( char dat_comm,char content)

{

Chk_busy;

di=dat_comm;//dat_comm为高电平写数据,低电平写命令

rw=0;

dataport=content;

e=1;

delay(1);

e=0;

}

3.3 初始化子程序

void init_lcd(void)

{

rst=0;

delay(50);

rst=1;

cs1=1;cs2=1;/左右半屏选中

write(comm,0x3e);//关显示

write(comm,0x3f);//开显示

}

4 总结

本文对TG12864B用通俗易懂的语言进行了简单的介绍,并对TG12864B的驱动程序进行了简单的设计,使读者能初步了解12864LCD的简单应用。要想熟练的掌握TG12864B,还需要不断的实践,不断的摸索,熟悉编程语言,不断提高TG12864B的编程技巧,使程序得到最大程度的优化。

参考文献:

[1]朱华光.浅议LCD1602的编程技巧[J].电脑知识与技术,

2010.6.

[2]林嘉.基于89S52的LCD1602程序设计[J].电脑知识与技术,2012.8.

[3]田开坤.基于LCD12864显示器的数字示波器设计[J].电子制作,2010.5.

篇10:51单片机的C语言程序结构

入门篇

一、基础知识

1)

2)

3)

4)

5)

6)学习51系列单片机基本知识。找一本单片机教材放在手边,边实战边学习了解STC单片机的基本特点 了解Start-51单片机学习板的电路原理(阅读随板光盘说明书)学习STC单片机ISP软件及下载的方法(下载地址:)学习Keil C51软件的基本使用 学习C51的基础知识

二、入门实验

1)

2)

3)

4)

5)

6)

7)

8)

9)

10)

11)

12)

13)

14)

15)

16)

17)Hello Word:把P23口置低,点亮一个LED灯 基本I/O口实验:使用延时方法,控制一个LED灯闪烁(P23)定时器基本:使用定时器,控制一个LED灯以1S钟为周期闪烁 定时器应用:控制4个LED以流水灯形式闪动 外部中断:按下ENT键(P32),点亮一LED,再按下ENT键,对应LED灭 I/O键盘检测:分别按下一键,对应的LED被点亮,再按下键,则灭 蜂鸣器基本驱动:使用延时方法,控制蜂鸣器发声 蜂鸣器驱动应用1:使用高低两种频率值,产生警笛声 蜂鸣器驱动应用2:播放音乐——数码管显示应用1:在第一个数码管上任意显示0~9之间的数值 数码管显示应用2:在4个数码管上“同时”显示不同数值,如1,2,3,4 综合实验1——计数器:在数码管上显示按ENT键(P32)次数,(先十六进制显示,再改十进制)综合实验2——秒表:在数码管上显示秒数 综合实验3——分秒表:前两位显示分钟,后两位显示秒钟,中间小数点0.5S闪烁 综合实验4——方波信号发生器:10~200Hz,步长10Hz,P23输出,数码管显示频率值,UP:频率加,DN:频率减。综合实验5——简易跑表:前两位数码管显示秒数,后两位显示百分秒;按一下M键开始计时,再按一下停止;DN键清零 综合实验6 ——可多段计数的跑表:按一下M键开始计时,每再按一下记下当前计数

篇11:学习单片机c语言还是语言

汇编语言的缺点:

(1)编写的代码非常难懂,不好维护

(2)很容易产生bug,难于调试

(3)只能针对特定的体系结构和处理器进行优化

(4)开发效率很低,时间长且单调

汇编语言的特点

1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的2.保持了机器语言的优点,具有直接和简捷的特点

3.可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等

4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言

5.经常与高级语言配合使用,应用十分广泛

对于不同型号的计算机,有着不同的结构的汇编语言,学习难度大。

C语言是一种结构化的高级语言。其优点是可读性好,移植容易,易学易用,是普遍使用的一种计算机语言。

c语言优点:

1、语言简洁,使用方便灵活,可大幅度提高开发速度,系统越复杂,开发效率越高。

2、无须深入了解单片机内部结构,和复杂的单片机汇编语言指令集

3、可进行模块化开发,软件逻辑结构清晰,有条理,易于分工合作

4、可移植性好,写好的一个c语言算法,可方便地移植到其他单片机上,而汇编语言相对要复杂的多。

5、可直接操作硬件

随着单片机的内部资源越来越多,存储空间越来越大,资源已经不是考虑的首要问题,c语言可以大大提高开发的效率,c 语言是初学者的首选语言。汇编语言在实时性,执行效率上有不可替代的优势。大部分情况下c语言就可以满足要求,在实时性要求高的某些场合中,可用c语言和汇编语言混合编程的方式,兼顾开发效率和实时性。了解汇编语言对于学习单片机的内部结构,执行过程非常有帮助,是成为单片机高手需要掌握的语言。c语言进行单片机程序设计是单片机开放与应用的必然趋势。

小企鹅diy科学探究学习网

篇12:51单片机的C语言程序结构

课程编号

一、说明

(一)课程性质

本课程应用电子技术专业的必修课。本课程面向的学生主要是高年级本科生。先修课程:数字电子技术、单片机的汇编语言、汇编语言、C语言程序设计。

(二)教学目的

本课程教学所要达到的目的是:从应用为目的出发,通过对C语言基本概念、基本语句、单片机应用系统的初步设计的学习,使学生能利用C语言编写51系列单片机应用程序,熟练使用Keil C编程软件,具有用C51语言进行程序设计的基本技能,培养学生分析问题和解决问题的能力。

(三)教学主要内容

本课程的主要内容:

1.语言的数据类型、运算符、表达式。2.语言的控制结构语句

3.函数与存储模式的特点与应用 4.数组和指针的特点与应用 5.位运算和预处理的特点与应用

6.C51语言在单片机的定时器/计数器,中断系统的应用 7.C51语言串行通信的应用 8.单片机的键盘和显示

重点内容:单片机C程序设计的方法,熟练使用KEIL51集成开发环境,对单片机的软硬件设计有一定的了解,能简单开发单片机以及嵌入式应用系统。难点内容:51单片机的内部结构、工作原理及其功能。

(四)教学时数

总学时64,理论学时,32、实验32,学分3。

(五)教学方式

课堂讲授与上机练习相结合。

(六)适用对象

电子信息工程、自动化、测控技术与仪器专业高年级学生

二、教学内容及安排

第一章 单片机的C语言概述

教学要点:

理解嵌入式系统的定义、特点及架构;掌握嵌入式系统与单片机、PC的区别;了解嵌入式系统的应用领域;弄清嵌入式系统的发展趋势。教学时数:

2学时

教学内容:

1.1 C语言与MCS-51单片机

(1学时)

掌握嵌入式系统的定义、特点、组成及分类。1.2 Keil C51开发工具

了解嵌入式系统的应用领域。

1.3 C51的程序结构与编程实例(1学时)考核要求:

了解C51语言与汇编语言的优势对比,C51语言与标准C语言的区别。了解KeilC51开发工具。

第二章 C51程序设计基础

教学要点:

本章主要介绍C51的数据类型和存储类型、基本运算与流程控制语句、构造数据类型、函数以及程序设计中的其他一些问题等内容 教学时数:

12学时

教学内容:

2.1 C51数据类型及存储类型(2学时)

介绍C51语言的数据类型,常量与变量、数据存储类型。2.2 C51对单片机主要资源的控制(4学时)

1)C51对单片机应用系统主要资源的控制主要包括特殊功能寄存器的定义、片内RAM的使用、片外RAM及I/O口的使用、位变量的定义。

2)片内RAM的使用、片外RAM及I/O的使用又称为绝对地址的访问。2.3

C51 的基本运算与流程控制语句(2学时)介绍C51的

1)基本运算

2)选择(分支)控制语句

3)循环结构流程控制语句

4)

break语句、continue语句和goto语句

2.4 C51的构造数据类型(2学时)

介绍C51 的构造数据类型主要有数组、指针和结构等。重点讨论数组和指针。

2.5 C51 函数(2学时)

介绍C51的不同函数定义方式。

考核要求:

掌握:C51的数据类型、运算符及表达式;C51语言程序的基本结构及其流程图;函数及选择语句和循环语句的用法。

第三章 单片机内部资源的C51编程

教学要点:

掌握:计算机并行输入/输出、定时/计数器接口、串行接口和中断系统的概念,单片机中断系统的结构、中断源、中断特殊功能寄存器、中断响应过程;串行口功能与结构、工作方式及编程应用;定时/计数器系统的电路结构、特殊功能寄存器及功能和使用方法。

理解:单片机定时和计数、串行和中断的应用。教学时数:

8学时

教学内容:

3.1 单片机的并行口(2学时)

介绍51单片机的4个并行I/O口的特点,了解每个端口既可以按字节单独使用,也可以按位操作,各个端口可作为一般的I/O口使用,大多数端口又可以作为第二功能使用。

3.2 单片机的中断系统(2学时)

介绍51单片机的中断系统的特点,它提供5个中断源(52子系列是6个),具有两个中断优先级,可以实现两级中断嵌套。3.3 单片机的定时器/计数器(2学时)

介绍MCS-51单片机内部的两个16位的可编程的定时器/计数器,即定时器T0和定时器T1(8052提供3个,第三个称为定时器T2)。它们既可用作定时器方式,又可用作计数器方式

3.4 单片机的串行口(2学时)

介绍MCS-51单片机内部的串行接口的特点。这个口既可以用于网络通信,也可以实现串行异步通信,还可以作为同步移位寄存器使用。

考核要求:

了解单片机内部的并行口、中断系统、定时器/计数器、串行口的构成及特点,熟练掌握对这些资源的C语言编程,能够利用这些资源实现某些功能。

第四章

单片机外部扩展资源的C51编程

教学要点:

在实际应用的51单片机系统中,很少是由以单块单片机独立构成的,经常需要对单片机的相关资源进行扩展,本章将介绍单片机的并行口、键盘、显示、A/D及D/A等扩展资源的C51编程。

教学时数:

6学时

教学内容:

4.1 并行口扩展的C51编程(2学时)

介绍并行口的扩展方法,有简单I/O口的扩展、利用串行口扩展并行口、可编程并行口扩展等几种方法。

4.2 键盘接口的C51编程(2学时)

介绍在单片机应用系统中利用键盘进行人-机对话,包括人对应用系统状态的干预以及向系统输入数据等。键盘从硬件结构上分并行接口的独立式键盘和行列式矩阵键盘。4.3 LED显示器接口的C51编程(2学时)

介绍LED显示器的显示原理及与MCS-51单片机的接口方法和相应的程序设计。考核要求:

掌握:单片机与键盘、LED的接口原理、技术与方法。

三、选用教材及参考书目

1.选用教材

姜志海 赵艳蕾 主编.单片机的C语言程序设计与应用.电子工业出版社,2008.5 2.参考书目

(1)马忠梅等,单片机的C语言程序设计,北京航空航天大学出版社(2)谭浩强,C程序设计(第二版),清华大学出版社

四、使用说明

1.根据专业不同,当课程学时学分调整时,可适当调整相关内容 2.教学方法

本课程主要采用课堂讲授、实验操作、随堂讨论、作业及练习等多种方式授课。本课程的主要教学环节如下:

(1)课堂讲授:讲授是本课的重要教学环节,是主要的教学方式之一,采用多媒体教学,以丰富教学内容和增强学生的感性认识。

(2)实验操作:本课程是软硬件技术相结合的、实践性较强的专业课,在教学过程中必须通过实验课的配合来加深和提高学生对课程内容的理解

(3)随堂讨论:通过具体的问题、小课题进行,要注意培养学生自主学习的能力,帮助他们掌握本课程所要求的主要内容。

(4)作业及练习:根据教学进度和学生的实际情况,以小设计为主,通过简单的系统设计,帮助学生加深对知识的理解和掌握。

3.考核方式

理论部分:本课程考试为课程论文的形式。

实验部分:以每次实验的分析设计(实验预习)、实验过程、实验完成情况、实验效果及实验结果分析总结(实验报告)等五方面进行考评,综合得出最后实验成绩。

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:造价成本影响建筑结构论文提纲 下一篇:会计信息质量影响论文