百度文库-单片机C51程序设计
单片机原理与应用及c51程序设计(第3版)
【单片机原理与应用及C51程序设计(第3版)】文章内容内容包括:一、引言二、单片机原理1. 什么是单片机2. 单片机的基本组成3. 单片机的工作原理4. 单片机的应用领域三、C51程序设计1. C51程序设计的基本概念2. C51程序设计的语法和规则3. C51程序设计的应用示例四、单片机原理与C51程序设计的结合应用1. 如何将单片机原理与C51程序设计结合起来2. 结合应用的案例分析五、总结与展望【单片机原理与应用及C51程序设计(第3版)】文章主要介绍了单片机的基本原理、应用以及C51程序设计的相关知识。
在引言部分,我们可以简要介绍单片机在现代电子设备中的重要性以及C51程序设计在单片机应用中的作用。
接下来进入主题内容,首先详细讲解单片机的基本组成和工作原理,包括单片机的核心部件、指令集和数据存储等方面的内容,重点强调单片机在各个领域中的广泛应用。
然后深入介绍C51程序设计的基本概念、语法和规则,通过实际案例对C51程序设计进行深入分析,以便读者能够更加深入地理解和掌握相关知识。
在单片机原理与C51程序设计结合应用的部分,我们可以通过具体的案例分析,展示单片机原理与C51程序设计在实际项目中的应用,包括控制系统、嵌入式系统等方面。
通过这些案例,读者可以更加直观地了解单片机原理与C51程序设计的实际应用场景,有助于加深对相关知识的理解和掌握。
我们对整个主题进行总结与展望,通过对文章内容的回顾和归纳,强调单片机原理与C51程序设计的重要性,并展望未来单片机技术的发展方向和趋势。
我们可以共享自己对这个主题的个人观点和理解,以及对读者的建议和思考,为读者提供更多的思路和参考。
通过以上内容的深入探讨和详细解读,《单片机原理与应用及C51程序设计(第3版)》将会为读者带来全面、深刻和灵活的理解,帮助读者更好地掌握相关知识,为实际应用提供有力支持。
一、引言单片机在现代电子设备中扮演着非常重要的角色,它集成了处理器、存储器和各种输入输出接口,可以用来控制各种电子设备。
教学课件PPT 89C51单片机的C51程序设计
程序存储器(64K字节)
对应MOVC @DPTR访问
可位寻址片内数据存储器(16字节,128位) 允许位和字节混合访问
间接寻址片内数据存储器(256字节)
可访问片内全部RAM空间
分页寻址片外数据存储器(256字节)
对应MOVX @R0访问
4.2 C51程序设计基础
C51存储类型定义举例:
unsigned char data x,y,z; /*在内部RAM区定义了3个无符号字节型变量x,y,z*/
40M/80M/100M,而且还有很多是单周期的。
4.2 C51程序设计基础
4.2.1 C51变量/常量存储类型
C51存储类型 对应89C51单片机存储器空间
data
直接寻址片内数据存储器(128字节)
xdata
片外数据存储器(64K字节)
说明 访问速度快 对应MOVX @DPTR访问
code bdata idata pdata
序号 语句
1
=
2
if
3
表达式1 ? 表达式2 : 表达式3
4
switch/case
5
while
6
do-while
7
for
8
函数
含义 赋值语句 条件语句 条件运算符 多分支语句 循环语句 循环语句 循环语句 模块化程序设计
4.2 C51程序设计基础
表4-6 常用语句
序号 语句
1
=
2
if
3
表达式1 ? 表达式2 : 表达式3
4.3 C51程序举例
例4:把外部数据RAM中从地址2000H单元开始的100个有符号 数逐一取出,若为正数则放回原单元,若为负数则求补后放回。
第3章51系列单片机程序设计(C语言部分)
idata
间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)
pdata
分页寻址片外数据存储区(256字节)由MOV @Ri访问(i=0,1)
xdata
片外数据存储区(64 KB)由MOVX @DPTR访问
code
程序存储器64 KB空间,由MOVC @DPTR访问
第3章 51系列单片机程序设计(C部分)
/* Ary37定义为abry[3]的第7位 */
第3章 51系列单片机程序设计(C部分)
3.5 数 组
数组:数组是一组类型相同 有序数据的集合。用数组名 和下标来唯一确定数组中的 元素。
第3章 51系列单片机程序设计(C部分)
3.5.1 一维数组
一、一维数组的定义 形式:类型说明符 数组名 [常量表达式]
使用C51进行编程时,MCS-51片内的I/O口与片外扩展的I/O可以统一在一个头文 件中定义,也可以在程序中(一般在开始的位置)进行定义。
对于MCS-51片内I/O口按特殊功能寄存器方法定义。 例如:
sfr P0=0x80 ; /* 定义P0口,地址为80H */ sfr P1=0x90 ; /* 定义P1口,地址为90H */
第3章 51系列单片机程序设计(C部分)
3.4.3 C51数据的存储类型与MCS-51存储结构
表 3.4.2 C51存储类型与MCS-51存储空间的对应关系
存储类型 与存储空间的对应关系
data
直接寻址片内数据存储区,访问速度快(128字节)
bdata
可位寻址片内数据存储区,允许位与字节混合访问(16字节)
据 浮点型(float) 类
型 指针类型
详细见表3.4.1
单片机C51语言及程序设计
单片机C51语言及程序设计单片机是一种微型计算机芯片,通常用于控制和执行各种电子设备中的任务。
单片机C51语言是一种基于C语言的编程语言,它在单片机开发中被广泛应用。
本文将对单片机C51语言及程序设计进行介绍。
一、单片机C51语言简介单片机C51语言是一种基于C语言的嵌入式编程语言,它是Intel公司为其8051系列单片机提供的编程语言。
C51语言与C语言的语法相似,但是在一些底层操作和特殊功能上有所区别。
使用C51语言编写的程序可以在8051系列单片机上直接运行,实现各种控制和功能。
C51语言的特点包括高效的编译器、丰富的库函数、快速的速度和较小的存储空间占用。
它可以利用C语言的各种高级特性进行程序设计,同时也支持直接对单片机的硬件进行底层操作。
二、单片机C51语言程序编写1.编译与烧录环境2.基本语法和数据类型C51语言的基本语法与C语言相似。
它支持各种数据类型,包括整数、浮点数、字符等。
同时,C51语言还定义了一些特殊的数据类型和关键字,如sfr(特殊功能寄存器)、xdata(扩展数据存储器)等。
3.控制语句和函数C51语言支持各种控制语句和函数,如条件语句(if-else、switch-case)、循环语句(for、while)、函数定义等。
通过这些语句和函数,我们可以实现复杂的控制逻辑和算法。
4.寄存器和端口操作单片机的核心是CPU和各种寄存器。
C51语言提供了一些特殊的语法和关键字,可以直接访问和操作寄存器。
通过这些操作,我们可以实现对单片机硬件的底层控制。
例如,下面的代码演示了如何使用C51语言对LED灯进行控制:sfr P0 = 0x80; // 特殊功能寄存器,用于控制P0口#define LED_PIN P0_0 // 使用宏定义定义LED的引脚void maiLED_PIN=0;//将LED引脚电平设为低电平while(1)LED_PIN=1;//将LED引脚电平设为高电平delay(1000); // 延时1秒LED_PIN=0;//将LED引脚电平设为低电平delay(1000); // 延时1秒}在上面的代码中,我们通过特殊功能寄存器P0和宏定义LED_PIN,定义了与LED相关的引脚和寄存器。
c51程序课程设计
c51程序课程设计一、课程目标知识目标:1. 掌握C51编程语言的基本语法和结构;2. 理解并掌握C51的寄存器、内存管理及位操作等特性;3. 学会使用C51编写简单的嵌入式程序,实现基础功能;4. 了解C51程序与硬件之间的交互及接口技术。
技能目标:1. 能够运用C51编程语言设计简单的嵌入式系统程序;2. 培养学生分析问题、解决问题的能力,能够针对实际问题进行程序设计和调试;3. 学会使用C51的开发工具和调试方法,提高实际操作能力。
情感态度价值观目标:1. 培养学生对嵌入式系统开发的兴趣,激发创新意识;2. 培养学生严谨、细致的编程习惯,增强团队协作意识;3. 引导学生认识到编程对于国家科技发展的重要性,树立社会责任感。
本课程针对高中年级学生,结合学科特点和教学要求,注重理论与实践相结合。
课程目标旨在使学生掌握C51程序设计的基本知识和技能,培养学生解决实际问题的能力,同时提高学生的情感态度价值观,为我国嵌入式领域培养优秀人才。
通过对课程目标的分解,教师可进行针对性的教学设计和评估,确保学生达到预期学习成果。
二、教学内容1. C51编程语言基础:- 数据类型、变量、常量- 运算符、表达式和语句- 控制结构(顺序、选择、循环)- 函数的定义和调用2. C51特殊功能及寄存器:- SFR寄存器及其操作- 位操作及位带操作- 中断处理与定时器3. C51内存管理:- 内部RAM和外部RAM的使用- 程序存储器操作- 数据存储器操作4. C51程序设计与实践:- 简单I/O口编程- 系统时钟与串行通信- ADC和DAC编程- 综合项目设计实例5. 课程实践与调试:- 使用开发工具(如Keil uVision)- 程序编译、下载和调试- 常见错误分析和解决方法教学内容按照教学大纲安排,结合教材相关章节,循序渐进地展开。
确保学生在掌握基础知识的同时,能够逐步深入到实际应用。
通过理论与实践相结合的教学内容,使学生在完成本课程学习后,具备基本的C51程序设计能力。
单片机原理与应用及C51程序设计
单片机原理与应用及C51程序设计一、单片机原理与应用单片机(Microcontroller Unit,简称MCU)是一种集成电路芯片,拥有处理器核心、存储器、输入输出接口和外设等多种功能,可实现数据处理、控制和通信等任务。
单片机广泛应用于电子产品和自动化设备中,如家电、汽车、工控、通信等领域。
1.单片机原理单片机由五大部分组成:中央处理器(CPU)、存储器、输入输出(I/O)接口、定时/计数器和通信接口。
中央处理器是单片机的核心,负责执行指令和数据处理操作;存储器包括程序存储器和数据存储器,用于存储程序和数据;输入输出接口用于与外部设备进行数据交互;定时/计数器可以用于时间控制和频率测量等操作;通信接口可以实现与外部设备的数据通信和控制。
2.单片机应用单片机应用范围广泛,可以用于各种电子设备和自动化系统中。
以下是一些常见的单片机应用:(1)家电控制:单片机可以用于家电产品的控制和运行管理,如空调、洗衣机、电视等。
(2)汽车电子:单片机可用于汽车电子系统的控制,如发动机控制单元(ECU)、车身电子等。
(3)工控系统:单片机在工业自动化领域有广泛应用,如PLC(可编程逻辑控制器)等。
(4)通信设备:单片机可以用于通信设备的控制和数据处理,如手机、路由器、调制解调器等。
(5)医疗设备:单片机被应用于各种医疗设备,如血压计、体温计、电子血糖仪等。
C51是C语言在C51单片机上的移植,用于单片机的编程和开发。
C51程序设计可以通过Keil C51集成开发环境(IDE)进行。
以下是C51程序设计的主要内容和步骤:1.C语言编程:C语言是一种通用的高级编程语言,具有良好的可移植性和易学性。
在C51程序设计中,使用C语言编写程序代码,通过对变量、函数和数据结构的定义来实现单片机的功能和控制。
2. 程序开发环境:Keil C51是一套成熟的单片机开发软件,提供了丰富的编译、调试和仿真工具。
通过安装和配置Keil C51环境,可以方便地进行C51程序的开发和调试。
No.5C51程序设计
– 指定存储区的指针
• 指定存储区的指针在指针的声明中经常包含一个 存储类型标识符指向一个确定的存储区。 • 例如: char data *str; int xdata *ptr; long code *tab;
• 指定存储区指针存放时不再像通用指针那样需 要保存存储类型,指向idata、data 、bdata 和pdata存储区的指针只需要一个字节存放, 而code和xdata指针也才需要两字节。从而减 少了指针长度,节省了存储空间。
– 如:sfr16 TL0=0x8A;
– 特殊功能寄存器中特定位的定义
• 在C51中可以利用关键字sbit定义可独立寻址访问 的位变量
• 对一般位变量的定义
– 当位变量位于内部RAM的可位寻址区(20H~2FH 单元)时,可以利用C51编译器提供的bdata存储器 类型进行访问 – 带有bdata类型的变量可以进行字节或位寻址,用 sbit指定bdata变量的相应位后就可以进行位寻址。
– 考虑存储器结构 – 正确使用片内外RAM、特殊功能寄存器 – 正确处理接口芯片收发数据 – 不需要具体组织和分配存储器资源 – 结构模块化,思路与思维相同 – 但要与单片机结构相关联,否则不能正确映射
• C程序:
• C51:
– – – –
自动完成存储单元分配(内定义) 可编制常见接口芯片通用驱动函数 可采用模块化设计应用程序 加快开发速度
var=XBYTE[0x8000]; 头文件内定义的函数 XBYTE[0x8000]=0x21;
P71
– 例如:unchared xdta xram[0x8000]_at_0x1000; //在外部RAM1000H开始定义了一个一维数组
单片机C51语言及程序设计ppt课件
整理版课件
28
例2 char xdata a = ‘A’; char *ptr = &a; char idata b = ‘B’; *ptr = &b;
【解】 ➢ Ptr先指向位于xdata存储区的char型变量a,后指向位于
idata存储区的char型变量b; ➢ “存储类型1”缺省时,ptr指针具有一定随意性。
unsigned char data system_status = 0;
自动型
初值为零
变量名为system_status 位于片内RAM区 无符号字符型
//定义system_status为无符号字符型自动变量,该变量位于 data区中且初值为0。
整理版课件
24
unsigned char bdata status_byte; //定义status_byte为无符号字符型自动变量,该变量位于bdata区
sfr 或 sfr16 sfr_name = 字节地址常数;
整理版课件
13
例如,sfr P0 = 0x80;
//定义P0口地址80H
sfr PCON = 0x87; //定义PCON地址87H
sfr16 DPTR=0x82; //定义DPTR的低端地址82H
注意:SFR字节地址变量的物理地址是由MCU资源决定的
20
C51的存储类型与存储空间对应关系表
编译模式
SMALL系统
COMPACT系统 LARGE系统
整理版课件
21
【存储类别】 数据类型 【存储器类型】 变量名
三种编译模式分别对应于三种缺省存储类型:
C51编译器可根据当前采取的编译模式自动认定默认的存 储类型
第5章单片机C51程序设计
字节地址
0
1
2
3
浮点数内容 SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM 符号和阶码 尾数高位 尾数低位
14
字节地址
0
1
2
3
浮点数内容 SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM 符号和阶码 尾数高位 符号位S:1表示负数,0表示正数。 尾数低位
data
bdata
idata
pdata xdata code
用Ri间接访问的片内扩展RAM或片外扩展RAM低 256B
用DPTR间接访问的片内扩展RAM或片外扩展RAM (64KB) 程序存储器ROM空间(64KB)
20
5.2.3 常量和变量
数据有常量和变量之分。
1.常量
常量就是在程序运行过程中其值不能被改变的量,可以为 字符,字符串,转义字符,十进制数或十六进制数(用0x打头 表示)、浮点数等直接常量,也可以定义符号型常量,定义方 式如下: 用宏定义语句定义常量,例如: #define PI 3.1415926 //定义PI为常量3.1415926
长整型
浮点型 位类型
特殊位类型 8位特殊功能寄存器型
16位特殊功能寄存器型Fra biblioteksbit sfr
sfr16
1位 8位
16位
0或1 0-255
0-65535
11
1、字符型char
长度为1个字节。默认为signed char。 “1”表示负数,补码表示,所能表示的数值范围是-128~+127。 对于unsigned char,其取值范围为0~255。也可以存放西文 字符,在计算机内部用ASCII码存放。
51单片机C语言程序设计-图文
/* 名称:8 只 LED 左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果
*/ #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) {
case 2: //东西向黄灯闪烁,绿灯关闭 DelayMS(300); YELLOW_A=~YELLOW_A;GREEN_A=1; if(++Flash_Count!=10) return; //闪烁 5 次 Flash_Count=0; Operation_Type=3; break;
case 3: //东西向红灯,南北向绿灯亮 RED_A=0;YELLOW_A=1;GREEN_A=1; RED_B=1;YELLOW_B=1;GREEN_B=0; DelayMS(2000); Operation_Type=4; break;
3 Ykcsh 呈献
0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff }; //延时 void DelayMS(uint x) {
uchar i; while(x--) {
for(i=0;i<120;i++); } } //主程序 void main() { uchar i; while(1) { //从数组中读取数据送至 P0 和 P2 口显示
uchar i; while(x--) {
for(i=0;i<120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) {
C51单片机汇编语言程序设计
C51单片机汇编语言程序设计一、二进制数与十六进制数之间的转换1、数的表达方法为了方便编程时书写,规定在数字后面加一个字母来区别,二进制数后加B十六进制数后加H。
2、二进制数与十六进制数对应表二进制十六进二进制制0000000100100011010001010110011101234567100010011010101111001101 11101111十六进制89ABCDEF3、二进制数转换为十六进制数转换方法为:从右向左每4位二进制数转化为1位十六进制数,不足4位部分用0补齐。
例:将(1010000110110001111)2转化为十六进制数解:把1010000110110001111从右向左每4位分为1组,再写出对应的十六进制数即可。
0101000011011000111150D8F答案:(1010000110110001111)2=(50D8F)16例:将1001101B转化为十六进制数解:把10011110B从右向左每4位分为1组,再写出对应的十六进制数即可。
100111109E答案:10011110B=9EH4、十六进制数转换为二进制数转换方法为:将每1位十六进制数转换为4位二进制数。
例:将(8A)16转化为二进制数解:将每位十六进制数写成4位二进制数即可。
8A10001010答案:(8A)16=(10001010)2例:将6BH转化为二进制数解:将每位十六进制数写成4位二进制数即可。
6B01101011答案:6BH=01101011B二、计算机中常用的基本术语1、位(bit)计算机中最小的数据单位。
由于计算机采用二进制数,所以1位二进制数称作1bit,例如110110B为6bit。
2、字节(Byte,简写为B)8位的二进制数称为一个字节,1B=8bit3、字(Word)和字长两个字节构成一个字,2B=1Word。
字长是指单片机一次能处理的二进制数的位数。
如AT89S51是8位机,就是指它的字长是8位,每次参与运算的二进制数的位数为8位。
51单片机100例程序设计(可编辑)
51单片机100例程序设计100例程序设计范例汇总第一章 4【实例1】使用累加器进行简单加法运算:4【实例2】使用B寄存器进行简单乘法运算: 4【实例3】通过设置RS1,RS0选择工作寄存器区1: 4【实例4】使用数据指针DPTR访问外部数据数据存储器: 4 【实例5】使用程序计数器PC查表: 4【实例6】if语句实例: 4【实例7】switch-case语句实例: 4【实例8】for语句实例: 4【实例9】while语句实例: 5【实例10】do…while语句实例: 5【实例11】语句形式调用实例:5【实例12】表达式形式调用实例: 5【实例13】以函数的参数形式调用实例: 5【实例14】函数的声明实例: 5【实例15】函数递归调用的简单实例:5【实例16】数组的实例:6【实例17】指针的实例:6【实例18】数组与指针实例: 6【实例19】P1口控制直流电动机实例 6第二章8【实例20】用74LS165实现串口扩展并行输入口8【实例21】用74LS164实现串口扩展并行输出口10【实例22】P0 I/O扩展并行输入口 12【实例23】P0 I/O扩展并行输出口 12【实例24】用8243扩展I/O端口12【实例25】用8255A扩展I/O口14【实例26】用8155扩展I/O口19第三章26【实例29】与AT24系列EEPROM接口及驱动程序26【实例30】EEPROM X5045 接口及驱动程序30【实例31】与铁电存储器接口及驱动程序33【实例32】与双口RAM存储器接口及应用实例35【实例33】与NANDFLASH(K9F5608)接口及驱动程序35 第四章43【实例34】独立键盘控制43【实例35】矩阵式键盘控制44【实例36】改进型I/O端口键盘46【实例37】PS/2键盘的控制 49【实例38】LED显示53【实例39】段数码管(HD7929)显示实例54 【实例40】16×2字符型液晶显示实例 55【实例41】点阵型液晶显示实例61【实例42】LCD显示图片实例63第五章70【实例43】简易电子琴的设计70【实例44】基于MCS-51单片机的四路抢答器71 【实例45】电子调光灯的制作76【实例46】数码管时钟的制作81【实例47】LCD时钟的制作96【实例48】数字化语音存储与回放103【实例49】电子标签设计112第六章120【实例50】指纹识别模块121【实例51】数字温度传感器121第七章124【实例53】超声波测距124【实例54】数字气压计125【实例55】基于单片机的电压表设计132【实例56】基于单片机的称重显示仪表设计133 【实例57】基于单片机的车轮测速系统136第八章138【实例58】电源切换控制138【实例59】步进电机控制140【实例60】单片机控制自动门系统141【实例61】控制微型打印机144【实例62】单片机控制的EPSON微型打印头144 【实例63】简易智能电动车145【实例64】洗衣机控制器149第九章152【实例65】串行A/D转换152【实例66】并行A/D转换153【实例67】模拟比较器实现A/D转换154【实例68】串行D/A转换155【实例69】并行电压型D/A转换156【实例70】并行电流型D/A转换156【实例71】接口的A/D转换157【实例72】接口的D/A转换161第十章164【实例73】单片机间双机通信164【实例74】单片机间多机通信方法之一166【实例75】单片机间多机通信方法之二171【实例76】 PC与单片机通信176【实例77】红外通信接口178【实例79】单片机实现PWM信号输出180【实例80】实现基于单片机的低频信号发生器182 【实例81】软件滤波方法183【实例82】FSK信号解码接收186【实例83】单片机浮点数运算实现187【实例84】神经网络在单片机中的实现192【实例85】信号数据的FFT变换194第十二章198【实例86】总线接口的软件实现198【实例87】SPI总线接口的软件实现200【实例88】1-WIRE总线接口的软件实现205 【实例89】单片机外挂CAN总线接口207【实例90】单片机外挂USB总线接口210【实例91】单片机实现以太网接口214【实例92】单片机控制GPRS传输221【实例93】单片机实现TCP/IP协议223第十三章229【实例94】读写U盘229【实例95】非接触IC卡读写234【实例96】SD卡读写 238【实例97】高精度实时时钟芯片的应用242【实例98】智能手机充电器设计247【实例99】单片机控制门禁系统248第一章【实例1】使用累加器进行简单加法运算:MOV A,#02H ;A←2ADD A,#06H ;A←A+06H【实例2】使用B寄存器进行简单乘法运算:MOV A,#02H ; A←2MOV B,#06H ; B←6MUL AB ; BA←A*B 6*2【实例3】通过设置RS1,RS0选择工作寄存器区1:CLR PSW.4 ; PSW.4←0SETB PSW.5 ; PSW.5←1【实例4】使用数据指针DPTR访问外部数据数据存储器:MOV DPTR, #data16 ; DPTR←data16MOVX A, @ DPTR ; A← DPTRMOVX @ DPTR, A ; DPTR ←A【实例5】使用程序计数器PC查表:MOV A, #data ;A←dataMOVC A, @ A+DPTR ; PC← PC +1 ,A← A + PC 【实例6】if语句实例:void mainint a,b,c,min;printf "\n please input three number:" ;scanf "%d%d%d ",&a,&b,&c ;if a b&&a c printf "min %d\n",a ;else if b a&&b c printf "min %d\n",b ;else if c a&&c c printf "min %d\n",c ;else printf "There at least two numbers are equal\n" ;【实例7】switch-case语句实例:void mainint num; printf "input one number:" ;scanf "%d",& num ;switch numcase 1: printf "num %d\n", num ;break;case 2: printf "num %d\n", num ;break;case 3: printf "num %d\n", num ;break;case 4: printf "num %d\n", num ;break;default: printf "The number is out of the range\n", num ;【实例8】for语句实例:void mainfor int a 10;n 0;a --printf "%d",a ;【实例9】while语句实例:void mainint i 0;while i 10 i++;【实例10】do…while语句实例:void mainint i 0;do i++;while i 10 ;【实例11】语句形式调用实例:void mainint i 0; while i 10 i++; … … Sum ; /*函数调用*/【实例12】表达式形式调用实例:void mainint a,b,i 0; while i 10 i++; … …i 4*Sum a,b ; /*函数调用*/【实例13】以函数的参数形式调用实例:void mainint a,b,c,i 0; while i 10 i++; … …i c,Sum a,b ; /*函数调用*/【实例14】函数的声明实例:void mainint int x,int y ; /*函数的声明*/ int a,b,c,i 0; while i 10 i++; … … i c,Sum a,b ; /*函数调用*/【实例15】函数递归调用的简单实例:void funint a 1, result,i;for i 0;i 10;i a+I;result fun ; /*函数调用*/return result;【实例16】数组的实例:void mainchar num[3] [3] ’’,’#’,’’ , ’#’,’’,’#’ , ’’,’#’,’’ ; /*定义多维数组*/int i 0,j 0;for ;i 3;i++for ;j 3;j++ printf “%c”,num[i][j] ;printf “/n” ;【实例17】指针的实例:void mainint a 3,*p;p &a; /*将变量a的地址赋值给指针变量p*/printf “%d,%d”,a,*p ; /*输出二者的数值进行对比*/【实例18】数组与指针实例:void mainint i 3,num[3] 1,2,3 ,*p;p num; /*将数组num[]的地址赋值给指针变量p*/result p,3 ; /*函数调用,计算数组的最大值*/【实例19】P1口控制直流电动机实例sfr p1 0x90;sbit p10 p1^0;sbit p11 p1^1;void mainint i, m;int j 100;int k 20;// 正快转for i 0; i 100; i++P10 1;for j 0; j 50; j++m 0;P10 0;for j 0; j 10; j++//正慢转for i 0; i 100; i++P10 1;for j 0; j 10; j++ m 0p10 0;for j 0; j 50; j++ m 0// 负快转for i 0; i 100; i++p11 1;for j 0; j 50; j++p11 0;for j 0; j 10; j++m 0;// 负慢转for i 0; i 100; i++p11 1;for j 0;j 10;j++m 0;p11 0for j 0; j 50; j++ m 0;第二章【实例20】用74LS165实现串口扩展并行输入口(1)函数声明管脚定义//#includesbit LOAD P1^7;//用P1^7控制SH/ 管脚(2)串口初始化函数UART_init//// 函数名称:UART_init// 功能说明:串口初始化,设定串口工作在方式0 //void UART_init voidSCON 0x10;//设串行口方式0,允许接收,启动接收过程ES 0;//禁止串口中断(3)数据接收函数PA//// 函数名称:PA// 输入参数:无// 输出参数:返回由并口输入的数据// 功能说明:接收八位串行数据//unsigned char PA voidunsigned char PA_data;LOAD 0;//当P1.7输出低电平,74LS165将并行数据装入寄存器//当中LOAD 1;//当P1.7输出高电平,74LS165在时钟信号下进行移位UART_init ;//74LS165工作在时钟控制下的串行移位状态while RI 0 ;//循环等待RI 0;PA_data SBUF;return PA_data;//返回并行输入的数据(1)函数声明管脚定义//#includesbit a7 ACC^7;sbit simuseri_CLK P1^6;//用P1^6模拟串口时钟sbit simuseri_DATA P1^5;//用P1^5模拟串口数据sbit drive74165_LD P1^7;//用P1^7控制SH/ 管脚(2)数据输入函数in_simuseri//// 函数名称:in_simuseri// 输入参数:无// 输出参数:data_buf// 功能说明:8位同位移位寄存器,将simuseri_DATA串行输入的数据按从低位到// 高位// 保存到data_buf//unsigned char in_simuseri voidunsigned char i;unsigned char data_buf;i 8;doACC ACC 1;for ;simuseri_CLK 0; ;a7 simuseri_DATA;for ;simuseri_CLK 1; ;while --i! 0 ;simuseri_CLK 0;data_buf ACC;return data_buf ;(3)数据输出函数PAs//// 函数名称:PAs// 输入参数:无// 输出参数:PAs _buf,返回并行输入74LS165的数据// 功能说明:直接调用,即可读取并行输入74LS165的数据,不需要考虑74LS165的// 工作原理//unsigned char PAs voidunsigned char PAs_buf;drive74165_LD 0;drive74165_LD 1;PAs_buf in_simuseri ;return PAs_buf ;【实例21】用74LS164实现串口扩展并行输出口单片机串口驱动74LS164的程序主要包括函数声明管脚定义部分、串口初始化函数以及数据发送函数。
第9章作业-单片机原理与应用及C51程序设计(第4版)-谢维成-清华大学出版社
LOOP:
MOVX @DPTR,A JNB P1.0,$ MOVX A,@DPTR MOV @R0,A INC DPTR INC R0 DJNZ R2,LOOP RET
;启动 A/D 转换,A 的值无意义
;读取转换后的数字量 ;存入片内 RAM 单元 ;指向下一模拟通道 ;指向下一个数据存储单元 ;8 路未转换完,则继续 ;返回
4. 简述 A/D 转换器的主要性能指标。 答:A/D 转换器的主要性能指标 1) 分辨率 2) 转换时间 3) 量程 4) 转换精度 5. 简述 DAC0832 的基本组成。 答:DAC0832 主要由 8 位输入寄存器、8 位 DAC 寄存器、8 位 D/A 转换器和控制逻辑 电路组成。8 位输入寄存器接收从外部发送来的 8 位数字量,锁存于内部的锁存器中,8 位 DAC 寄存器从 8 位输入寄存器中接收数据,并能把接收的数据锁存于它内部的锁存器,8 位 D/A 转换器对 8 位 DAC 寄存器发送来的数据进行转换,转换的结果通过 Iout1 和 Iout2 输出。 6. DAC0832 有几种工作方式?这几种方式是如何实现的? 答:DAC0832 具有直通方式、单缓冲方式和双缓冲方式 3 种工作方式。这三种方式是 通过改变控制引脚 ILE、WR1、WR2 、CS 和 XFER 的连接方法,控制 DAC0832 的 8 位 DAC 寄存器和 8 位 D/A 转换寄存器的通行来实现。如果这两个寄存器直接导通则为直通方式, 如果一个直接导通一个选通或两个连在一起选通则为单缓冲方式,如果两个寄存器先 8 位
习题
1. 简述 D/A 转换器的主要性能指标。 答:D/A 转换器的主要性能指标主要有以下几个方面。 1) 分辨率 2) 精度 3) 线性度 4) 温度灵敏度 5) 建立时间 2. 简述 A/D 转换器的类型及原理。 答:A/D 转换芯片根据转换原理可分为计数型 A/D 器、逐次逼近型 A/D 转换器、双重 积分型 A/D 转换器和并行式 A/D 转换器等;按转换方法可分为直接 A/D 转换器和间接 A/D 转换器;按其分辨率可分为 4~16 位的 A/D 转换器。 3. 简述双重积分型 A/D 转换器的工作原理。 答:双重积分型 A/D 转换器将输入电压先变换成与其平均值成正比的时间间隔,然后 再把此时间间隔转换成数字量,如图所示,它属于间接型转换器。它的转换过程分为采样 和比较两个过程。采样即用积分器对输入模拟电压 Vin 进行固定时间的积分,输入模拟电 压值越大,采样值越大,采样值与输入模拟电压值成正比;比较就是用基准电压(+Vr 或-Vr) 对积分器进行反向积分,直至积分器的值为 0。由于基准电压值大小固定,所以采样值越 大,反向积分时积分时间越长,积分时间与采样值成正比;综合起来,积分时间就与输入 模拟量成正比。最后把积分时间转换成数字量,则该数字量就为输入模拟量对应的数字量。 由于在转换过程中进行了两次积分,所以称为双重积分型。
零基础学单片机C语言程序设计 第5章 C51的数据结构
5.1 C51的数组
数组是把若干具有相同数据类型的变量按有序的形式组织 起来的集合。其中,数组中的每个变量称为数组元素。数 组属于聚合数据类型。一个数组可以包含多个数组元素, 这些数组元素可以是基本数据类型,也可以是聚合数据类 型。
在C51语言中,按照数组元素所属的基本数据类型,数组 可分为数值数组、字符数组、指针数组、结构数组等。其 中,指针数组将在指针部分再作介绍,结构数组将在结构 部分再作介绍。
1.指向一维数组的指针
2.指向二维数组的指针
3.指向一个由n个元素所组成的数组指针
4.指针和数组的关系
5.2.7 C51的指针数组
指针数组是同一数据类型的指针作为元素构成的数组。指 针数组中的每个数组元素都必须是指针变量。指针数组的 定义格式如下:
类型标识符 *数组名[常量表达式]; 其中,类型标识符是指针数组的类型,“[]”内的常量表
2.指针变量赋值
在C51语言中,变量的首地址是由编译系统自动分配,因此 用户不知道变量在内存中的具体地址。为了获得变量的地 址,C51语言中提供了地址运算符“&”,可以获取变量的 首地址。
&变量名
5.2.3 取址运算符和取值运算符
通过指针变量来访问其所指向的变量,需要首先定义该指
针变量。在程序中使用指针变量时,常有用到与指针变量
定义的一般形式为: 类型说明符 数组名 [常量表达式],……; 2.数组元素表示 数组元素,即数组中的变量,是组成数组的基本单元。在C51中,数组
元素是变量,其标识方法为数组名后跟一个下标。数组元素通常也称 为下标变量。数组元素表示的一般形式为:
数组名[下标]
5.1.2 一维数组
一维数组是指只有一个下标标号的数组。一维数组是一个 由若干同类型变量组成的集合,引用这些变量时可用同一 数组名。一维数组在存放时占用连续的存储单元,最低地 址对应于数组的第一个元素,最高地址对应于最后一个元 素。
51单片机编程
《单片机C51程序设计》课程标准一、课程性质课程名称:单片机C51程序设计课程代码:109025学时数:84其中课内实验学时数:34学分数:6适用专业:应用电子技术、电子信息工程技术二、课程教学目标1、课程知识目标掌握单片机基本原理,熟悉KEILL软件的使用,熟悉基于proteus软件的单片机的仿真方法,熟悉MCS-51的结构与应用设计方法,掌握C51结构与基本的程序设计方法,通过应用实例熟悉单片机C语言的在单片机应用设计中的用法。
2、课程技能目标通过本课程的教学,要求学生初步具有用C语言进行单片机系统设计的能力。
3、职业能力目标掌握电子产品设计的基本方法,能够以单片机作为核心进行电子产品的设计与开发。
三、课程内容本课程由理论教学模块、实验教学模块两大模块组成。
其中理论教学模块50学时、占60%,实践(含实验和实训)教学模块34学时,占40%。
各教学模块如下:1、理论教学模块2、实验教学模块四、学生学习指南模块一keil软件与proteus软件的使用Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选。
Proteus ISIS是一款Labcenter 出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。
该软件的特点:①全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。
②具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
基于c51单片机的毕业设计
基于c51单片机的毕业设计基于C51单片机的毕业设计是一项深入学习和应用单片机原理的重要任务,它要求学生具备对C51单片机的全面了解和熟练使用。
在毕业设计中,可以选择不同的主题和要求,下面给出一些相关参考内容,以帮助学生进行毕业设计的开展。
1. 题目和目标选择一个适合的主题,并明确设计的目标。
例如,设计一个基于C51单片机的智能家居系统,目标是实现通过手机控制家庭电器的开关和调节;或者设计一个基于C51单片机的车载音响系统,目标是实现音乐播放、收音机调谐等功能。
2. 功能设计根据主题和目标,确定系统需要实现哪些功能。
例如,对于智能家居系统,需要开发手机App、单片机驱动家用电器等;对于车载音响系统,需要实现音乐文件解码、音乐播放器控制等。
3. 硬件设计根据功能设计,确定需要的硬件模块和电路图。
例如,对于智能家居系统,需要使用手机和单片机进行通信的无线模块,以及控制家电的继电器模块;对于车载音响系统,需要音频解码芯片、功放模块等。
4. 软件设计根据功能设计和硬件设计,编写相应的C程序。
例如,对于智能家居系统,需要编写单片机端的驱动程序和通信协议实现;对于车载音响系统,需要编写音频解码和播放控制程序。
5. 调试与测试设计完成后,需要对系统进行调试和测试。
能否正常工作,是否满足设计要求,需要进行全面测试。
6. 结果分析与展示根据测试结果,对系统进行分析和评估。
如有必要,可以进行性能优化和改进,以满足设计要求。
同时,准备好完整的设计文档和演示材料,以展示毕业设计的成果。
在完成毕业设计时,还应注意以下几点:- 细化设计步骤,制定合理的时间计划,保证项目的顺利进行。
- 在设计过程中保持良好的文档记录,方便后续查看和总结。
- 多与指导老师进行沟通,及时汇报设计进展和遇到的问题,获得指导和建议。
- 打牢基础,多学习和运用相关的电子与嵌入式知识,如模拟电路设计、数字电路设计、嵌入式系统设计等,提高综合能力。
总而言之,基于C51单片机的毕业设计是一项重要的实践任务,需要学生具备全面的专业知识和实际操作能力。
C51单片机C语言程序设计
C51单片机C语言程序设计单片机C语言程序设计是指使用C语言编写程序来控制和操作单片机的工作。
单片机是一种集成电路,它包含了中央处理器、存储器、输入输出接口等功能模块,广泛应用于嵌入式系统中。
在单片机C语言程序设计中,首先需要了解C语言的基本语法和语法规则。
C语言是一种面向过程的编程语言,具有简洁、高效和可移植等特点。
接下来,要熟悉单片机的硬件结构和寄存器的使用方法,了解单片机的输入输出方式、中断、定时器等功能。
在进行单片机C语言程序设计时,需要按照以下步骤进行:1.设置寄存器和引脚的初始化:根据单片机的型号和需要的功能,设置相关的寄存器和引脚的初始化。
这些初始化可以包括引脚的输入输出模式设置、中断向量表的初始化、定时器的设定等。
2.主程序的编写:主程序是单片机的执行入口,通过主程序可以完成各种功能的实现。
在主程序中,可以定义变量、函数和结构体等。
3.中断程序的编写:中断程序是由硬件触发的,可以在需要时被调用执行。
中断程序可以包括外部中断、定时器中断等。
在编写中断程序时,需要设置相应的中断向量,并完成相应的中断服务程序。
4.函数的编写:函数是实现其中一特定功能的代码段,通过函数可以提高程序的模块化和可重用性。
需要根据实际需求编写相应的函数,并在主程序中调用。
5. 调试和测试:在编写完程序后,需要进行调试和测试。
通过调试和测试可以发现程序中的bug和错误,并进行修复。
可以通过缓慢单步调试、观察变量值和输出结果等方式进行调试和测试。
6.优化和改进:在程序完成后,可以对程序进行优化和改进。
通过优化可以提高程序的性能和效率,减少资源的占用。
可以使用编译优化选项、减少不必要的计算和内存使用等方式进行优化。
以上是单片机C语言程序设计的基本步骤和内容。
在实际操作中,还需要根据具体的需求和硬件平台进行相应的调整和编程。
通过合理的设计和编程,可以实现单片机的各种功能和应用,广泛应用于电子设备、汽车、家电等领域。
无论是初学者还是有经验的程序员,都可以通过单片机C语言程序设计来进一步提高和拓展自己的技能。
c51程序设计方法
c51程序设计方法C51程序设计方法C51程序设计是指使用C语言来进行51系列单片机的程序开发和编程。
在C51程序设计中,我们可以通过编写C语言代码来实现对单片机的控制和操作,包括输入输出、中断处理、时钟控制等功能。
在C51程序设计中,首先需要了解单片机的硬件结构和功能。
单片机是一种集成电路,内部包含了CPU、存储器、输入输出接口、定时器、中断控制器等功能模块。
了解这些硬件模块的特点和使用方法,对于进行C51程序设计至关重要。
在C51程序设计中,我们首先需要选择合适的开发环境和编译工具。
常用的C51开发环境有Keil C51、SDCC等,这些工具提供了编译、调试和下载等功能,方便我们进行程序开发和调试。
在C51程序设计中,我们可以通过编写C语言代码来实现对单片机的控制。
C语言是一种高级语言,具有结构化、模块化和可移植等特点,可以方便地实现复杂的功能。
在编写C51程序时,我们可以使用C语言的各种语法和函数库,如变量声明、条件语句、循环语句、函数调用等,来实现对单片机的各种操作。
在C51程序设计中,我们可以利用单片机的输入输出接口来实现与外部设备的通信。
单片机的输入输出接口可以连接各种传感器、开关、显示器、驱动器等外部设备,通过编写相应的C语言代码,可以实现与这些外部设备的数据交换和控制。
在C51程序设计中,我们还可以利用单片机的中断功能来处理各种事件和异常。
中断是一种特殊的事件,当某个条件满足时,单片机会自动跳转到相应的中断服务程序进行处理。
通过编写中断服务程序,我们可以实现对各种事件的即时响应,提高程序的实时性和可靠性。
在C51程序设计中,我们还可以利用单片机的定时器功能来实现各种定时和计时的功能。
定时器可以产生一定时间间隔的中断信号,通过编写相应的中断服务程序,我们可以实现定时和计时的功能,例如定时采样、定时发送数据等。
在C51程序设计中,我们还可以利用单片机的通信接口来实现与其他设备的数据交换。
c51单片机课程设计
c51单片机课程设计一、课程目标知识目标:1. 理解C51单片机的基本原理与结构,掌握其指令系统及编程方法。
2. 学会使用C51单片机进行简单的电路设计与控制系统实现。
3. 了解C51单片机在嵌入式系统中的应用,掌握相关外围电路的设计与调试。
技能目标:1. 能够运用C语言编写简单的C51单片机程序,完成基础控制功能。
2. 熟练使用Keil、Proteus等软件进行C51单片机程序的编译、仿真与调试。
3. 能够分析并解决C51单片机在实际应用中遇到的问题,具备一定的故障排查能力。
情感态度价值观目标:1. 培养学生对电子技术及嵌入式系统的兴趣,激发其创新意识与探索精神。
2. 强化学生的团队合作意识,培养其在项目实践中的沟通与协作能力。
3. 培养学生严谨、务实的科学态度,使其认识到技术对社会发展的积极作用。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为电子技术领域的一门实践性课程,旨在培养学生的编程能力、电路设计能力及实际操作能力。
2. 学生特点:学生已具备一定的电子技术基础,具有较强的学习兴趣和动手能力,但对复杂编程及实际应用尚存一定难度。
3. 教学要求:注重理论与实践相结合,充分调动学生的积极性与主动性,提高其在实际项目中的应用能力。
二、教学内容1. C51单片机原理与结构:介绍C51单片机的硬件结构、工作原理及性能特点,对应教材第一章内容。
- 单片机内部结构- 指令系统与执行过程- 性能参数与选型2. C51单片机编程基础:学习C语言编程,掌握C51单片机程序设计方法,对应教材第二章内容。
- 数据类型、运算符与表达式- 控制语句与函数- 汇编与C语言混合编程3. C51单片机外围电路设计:学习常用外围电路的设计方法,如键盘、显示、传感器等,对应教材第三章内容。
- 键盘电路设计- 显示器接口设计- 传感器信号处理4. C51单片机应用实例:通过实际案例,学习C51单片机在嵌入式系统中的应用,对应教材第四章内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实训任务二:控制LED灯点亮实训准备:KeilC51软件, proteus仿真软件,STP-ISC下载软件,单片机实验板,电源线、下载线分组情况:每4人为一组,组长一名。
小老师两名协助老师指导操作过程。
知识目标:1.了解单片机各引脚功能;2.理解单片机最小系统组成部分;3.掌握C51赋值语句用法;4.掌握C51语言编程、编译基本方法;5.掌握proteus仿真软件基本操作方法;6.掌握C51程序编写、编译、仿真调试、下载流程及方法。
能力目标:1.培养学生数字逻辑分析能力;2.培养学生分析问题及解决问题的能力;情感目标:1.培养学生团队合作的精神;2.培养学生的创新意识;教学重点:1.C51赋值语句用法;2.C51语言编程、编译基本方法教学难点:1.半英文操作界面的理解2.调试程序的方法课时:8课时讲授新课1.单片机引脚功能(40引脚)电源、接地、I/O端口、控制引脚、时钟引脚、复位引脚2.单片机最小系统组成部分:单片机、电源、接地、复位电路、时钟电路。
解释时钟电路,比喻为学校的铃声。
区分:单片机系统与最小系统3.C51语言基本格式#include <reg51.h>void main( ){P2=0XF0;}宏定义,头文件,主函数,分号结束重点:赋值语句(A=B)4.硬件电路分析共阳极,低电平亮观察单片机实物,区分各引脚功能。
查相关电路了求小组回答,习任务实训任务三:控制LED流水灯实训准备:KeilC51软件, proteus仿真软件,STC-ISP下载软件,单片机实验板,电源线、下载线分组情况:每3-4人为一组,组长一名。
小老师两名协助老师指导操作过程。
知识目标:1.理解C51语言数据类型;2.了解单片机的机器周期;3.理解数组概念及用法;4.掌握for循环语句的用法;5.掌握while循环语句的简单用法;6.掌握C51程序编写、编译、仿真调试、下载流程及方法。
能力目标:1.培养学生思维逻辑分析能力;2.培养学生分析问题及解决问题的能力;情感目标:1.培养学生团队合作的精神;2.培养学生的创新意识;教学重点:1.for循环语句的用法;2.数组的概念及用法;3.C51语言数据类型;教学难点:1.for循环语句的用法;2.数组的概念及用法;课时:4课时子任务一:控制LED灯闪烁(2课时)讲授新课一、控制P2口8位LED灯实现闪烁1.电路原理图分析:2.分析P2口每位的状态值;3.写出对应的十六进制,以0X开头;4.赋值语句:P2=0X00; 灯亮P2=0XFF; 灯灭5.编程实现闪烁功能#include <reg51.h>void main( ){P2=0X00;P2=0XFF;}6.分析出现问题的原因单片机执行程序的速度在微秒级,人眼无法识别LED灯亮灭变化,由此引入延时概念,需要循环语句来实现此功能。
P2=0X00;延时,等待P2=0XFF;延时,等待7.引入循环语句(1)for语句●格式:for(初始化表达式;条件表达式;增量表达式){语句;}●执行过程:1.初始化表达式学出态值学作程档,编写仿真程序,观察仿真效果。
出现问题察效果,让学生分析原因?了式要求实例分析for( i=0; i<3; i++) {P2=0XFE;11.无限循环(While(1))while 语句●格式:while(条件表达式)循环体;●执行过程:先判定循环条件的真假,条件为真,则执行循环体条件为假,则跳出循环体,执行后续程序●实例分析i=0;while(i<3){P2=0XFE;i++;}1.赋初值:i=0;2.判断是否满足条件(i<3)(0<3)为真,成立。
3.执行语句:P2=0XFE;i++;i=0+1=1;4.判断是否满足条件(i<3)(1<3)为真,成立。
5.执行语句:P2=0XFE ;i++;i=1+1=2;6.判断是否满足条件(i<3)小组讨论,复述流程小组讨论分行过程?赋行次数?循变系?总结:指定循环置方法。
讲授新课(2)分号的用法分号用做一条语句的结束标志,语句必须与分号“;”结尾。
(3)中英文输入法。
程序必须用英文输入法,程序中不能出现中文字符。
中文输入法主要用来对程序进行注释,提高程序的可读性。
(多行注释,单行注释)(4)层次性:结构清晰,提高可读性。
2.子函数C语言程序是由函数组成的,由一个主函数和若干个其他函数构成。
子函数定义的一般形式如下:类型说明符函数名(){数据说明部分;语句执行部分;}以延时函数为例讲解,各部分讲解void delay( ){unsigned int i;for(i=0;i<40000;i++);}强调子函数要在主函数main( )之前定义。
作用:减少重复书写具有相同功能的语句。
3.通过单灯闪烁,编程实现LED灯流水功能。
◆电路原理分析由上到下,即由低位到高位。
(P2.0,P2.1-----P2.7)◆分析P2口每位的状态值学生在软件界面操作,观察注释后字体变化。
了解子函数基本格式要求,对延时函数功能解。
小组讨论实现方1-2◆P2口赋值0XFE—0XFD—0XFB—0XF7—0XEF—0XDF—0XBF—0X7F ◆功能实现While(1){赋值;延时;}◆编程调试◆仿真下载4.学生完成本次任务后,将while(1)去掉,观察仿真的效果。
现象:只流水一次停止。
讲解:无限循环(While(1))while 语句1.格式:while(条件表达式)循环体;2.执行过程:先判定循环条件的真假,条件为真,则执行循环体条件为假,则跳出循环体,执行后续程序3.实例分析i=0;while(i<3){P2=0XFE;i++;}当条件表达式为常量“1”时,实现无限循环。
While(1){ 决方案。
掌握赋值的规律。
学生分组上机编程操作,小组助。
观象。
让学生直观理解语句的作用,然后在具体讲解语句功能。
实训任务四:控制LED流水灯(三)实训准备:Keil C51软件, proteus仿真软件,STC-ISP下载软件,单片机实验板,电源线,下载线。
分组情况:每3-4人为一组,组长一名。
小老师两名协助老师指导操作过程。
子任务三:数组方式控制LED灯流水(4课时)实训任务五:控制LED数码管显示数字实训准备:Keil C51软件, proteus仿真软件,STC-ISP下载软件,单片机实验板,电源线,下载线。
分组情况:每3-4人为一组,组长一名。
小老师两名协助老师指导操作过程。
子任务三:控制单个数码管显示数字(4课时)为10100100,表示为十六进制代码就是0XA4。
将单片机P0口连接数码管8个字段输入端,让单片机P0口输出显示数字2的段码0XA4,就能实现10100100,的输出电平控制,数码管显示数字2的字形。
P0口7 6 5 4 3 2 1 0数码管段码dp g f e d c b a 电平 1 0 1 0 0 1 0 0十六进制 A 4练习:各小组试写出数码管显示0-9,A-F的段码?目的:熟悉段码的分布及段码的显示原理。
4.电路原理图的分析目的:熟悉各端口的连接情况,有利于电平控制。
P0口连接数码管8个段码,电路板是4位数码管,要选通一位,控制COM共阳极口。
P1.0-P1.3口分别连接四位数码管的COM极。
当P1.0口为低电平0时,第一位数码管COM极为高电平,数码管选通。
P1口为位码。
先选通P1口位码,再给P2口段码。
5.程序编写:让数码管显示各小组的编号(0-9)考查:赋值语句的运用电路连接原理的理解小组活动,学生发言加分环节小组讨论,分原理。
各立完成编写程序;仿真调试;下载程序实训任务六:多位LED数码管静态显示实训准备:Keil C51软件, proteus仿真软件,STC-ISP下载软件,单片机实验板,电源线,下载线。
分组情况:每3-4人为一组,组长一名。
小老师两名协助老师指导操作过程。
子任务一:多位数码管显示相同数字(4课时)先选通P1口位码,再给P2口段码。
2.判断下面程序单片机执行后实现的效果是什么?#include <reg51.h>void delay(){unsigned int i;for(i=0;i<40000;i++);}void main( ){while(1){P1=0XF5;P0=0XB0;delay();P0=0X82;delay();P0=0X90;delay();}}目的:通过实例分析,加深选通原理理解,掌握显示不同数字的方法。
问题: P1=0XF5 这条语句的作用?点明赋值语句控制数码管选通。
2.结合数码管显示数组方式应用小组活动,学生发言实训任务七:多位LED数码管动态显示教学目标:掌握数码管轮流位选的方法;理解数码管动态显示原理;掌握数码管动态显示的方法;教学重点:数码管动态显示原理;教学难点:数码管动态显示的方法;实训准备:Keil C51软件, proteus仿真软件,STC-ISP下载软件,单片机实验板,电源线,下载线。
分组情况:每3-4人为一组,组长一名。
小老师两名协助老师指导操作过程。
子任务二:多位数码管显示不同数字(4课时)思考:编程使四位数码管从低位到高位轮流显示数字6,7,8,9?难点:位选、段选的控制。
先让一位数码管点亮,送入段码;然后再让第二位数码管点亮,送入段码,以此类推,点亮第四位后,在无限循环。
注意:先控制位选,在控制段选。
#include <reg51.h>void delay(){unsigned int i;for(i=0;i<40000;i++);}void main( ){while(1){P1=0XFE;P0=0X82;delay();P1=0XFD;P0=0XF8;delay();P1=0XFB;P0=0X80;delay();P1=0XF7; 小组活动,学生发言小组讨论,分析每步执行过程。
加分设置。