《精编》单片机C语言案例教程电子教案概述

上传人:tang****xu5 文档编号:133420834 上传时间:2020-05-27 格式:PPT 页数:357 大小:15.37MB
返回 下载 相关 举报
《精编》单片机C语言案例教程电子教案概述_第1页
第1页 / 共357页
《精编》单片机C语言案例教程电子教案概述_第2页
第2页 / 共357页
《精编》单片机C语言案例教程电子教案概述_第3页
第3页 / 共357页
《精编》单片机C语言案例教程电子教案概述_第4页
第4页 / 共357页
《精编》单片机C语言案例教程电子教案概述_第5页
第5页 / 共357页
点击查看更多>>
资源描述

《《精编》单片机C语言案例教程电子教案概述》由会员分享,可在线阅读,更多相关《《精编》单片机C语言案例教程电子教案概述(357页珍藏版)》请在金锄头文库上搜索。

1、单片机C语言案例教程电子教案 第1章单片机基础 第3章用数码管模拟的循环灯 第4章中断资源的应用编程 第5章日历时钟DS1302的应用编程 第6章AT24C02的应用编程 第7章DS18B20的应用编程 第8章有时控功能和温度显示的电子钟项目设计 第9章16 16点阵LED汉字显示屏项目设计 第10章使用片内EEPROM存储器 第11章单片机与PC的串行通信 第12章单片机片外数据存储器的扩充 第13章A D转换与D A转换简介 第1章单片机基础 1我们所说的单片机 是一块集成电路芯片 下面的三个型号的单片机芯片 都属于8051系列 其品牌为STC 它们的内部组成可认为完全相同 都能直接用在本

2、书单片机学习板的MCU插座上 但性能有所差异 左上为STC89C52的实物图 其片内存储器容量大于STC89C51 左中为STC90C52的实物图 可替代STC89C52 且性能更好 1 1单片机是块集成电路芯片 左下为STC12C5A32的实物图 是所谓的1T单片机 其工作速度比上面两个型号快得多 251系列单片机的内部结构示意图 351系列单片机引脚功能图 左图为8051系列单片机的引脚功能图 它采用双列直插40引脚封装 它所有引脚的功能我们要全部记住 1 2用单片机芯片组成单片机应用系统 1本书单片机学习板电原理路图 2本书单片机学习板印刷电路图 3本书单片机学习板四位数码管电原理图 1

3、 3对单片机编程以实现单片机系统的功能 案例1 编程实现 在4位数码管的最左位上显示 8 案例源程序 include reg51 h sbitqw P2 0 main P0 0 qw 0 程序的第1行称为预处理命令 第2行是定义位寻址变量 第3行 第7行是程序的主函数 C程序是由若干个C函数组成 其中必须有一个也只能有一个名为 main 的函数 main函数就是主函数 第3行称为函数头 第4行 第7行称为函数体 第4行的大括号 称为函数体的开始标志 第7行的 称为函数体的结束标志 开始标志与结束标志之间是若干语句 语句以分号 为结束标志 这个程序运行时的所有功能 是由两个赋值语句具体实现 赋值

4、语句 P0 0 使口0的8个引脚 即单片机芯片的第39 38 37 36 35 34 33 32全部输出低电平 从而使四位数码管的所有 32只 发光二极管的负极均为低电平 赋值语句 qw 0 使口2的最低位引脚 即单片机芯片的第21脚为低电平 这就使单片机学习板上的PNP管Q3的基极为低电平而导通 从而使最左边位数码管的8只发光二极管正极为高电平 1 4把程序写入单片机芯片的操作平台和操作步骤 1首先 在桌面上双击Keil的图标 如下图箭头所指 一建立工程文件 2系统进入该软件的初始界面 如下图 3在上一图中 须单击菜单栏中的Project菜单及其子菜单NewProject 如下图所示 4于是

5、弹出建立新nVisionz工程项目对话框 如下图 在上图的 保存在 I 下拉列表框中选择D盘下的 stc89c52 文件夹 在文件名文本框中 输入工程名 stc89c52 然后单击 保存 此时 系统将弹出CPU选择窗口 如下页图 5在列表框中选择并展开 Atmel 如下图箭头所指 6展开 Atmel 项后如下图 在上图中往下拉滚动条 选中 AT89C52 如下页图 7如下图 选中后单击确定 随后 在弹出的询问框中 选择 是 Y 即可 二建立程序文件 1在菜单栏中单击 File 菜单及其子菜单 New 子菜单 此时在工作界面中会弹出一文本编辑窗口 如下图 说明 单片机程序的编写 就是在上面这一窗

6、口中进行 2把在四位数码管左边显示 8 的C源程序 从键盘上照敲进去 如下图 3程序敲完后 单击 File 菜单及其子菜单 Save 如下图 4在其弹出的对话框中的文件名文本框中输入相应的文件名 stc89c52 c 如下图 注意 这里必须输入C51源程序的扩展名 c 来保存 第三步 把程序文件加载到工程项目中 1在ProjectWindows窗口内 展开Tageget1 右击SourceGroup1 如下图 4右击后出现如下界面 在上图菜单中单击 AddFilestoGroup SourceGroup1 则弹出如下页对话框 5选中 stc89c52 文件后单击 Add 按钮 再单击 Cles

7、e 按钮 则加载工作结束 如下图 此时若展开SourceGroup1 就能看到stc89c52 c已经加入其中 如下图 第四步 设置编译和链接环境 1单击ProjectA菜单及其子菜单optionfortarget Target1 如下图 将弹出编译链接设置界面 如下图 在上图中 单击Output标签后 在复选框GreatHEXFi 上打 其余可用默认值 然后确定 如下图 第五步 编译成HEX文件 单击Project菜单及其子菜单Ruildalltargetfiles 系统就将 C源程序文件编译成指定格式的 HEX文件 如下图 上图编译信息窗中最后一行告诉我们 源程序有0个错误和0个警告 这是

8、最好结论 有1个错误都不能通过编译 必须针对错误提示信息进行修改 对警告则可改可不改 第六步 将第五步产生 HEX文件下载到单片机芯片中 把单片机学习板上的电源和串口连线与PC机接通 用鼠标依次单击 开始 程序 STC ISP V4 80 STC ISP V4 80 就进入如下界面 在MCU类型的下拉列表框中选择 STC89C52RC 再单击 打开程序文件 按钮 弹出 Openfile hexor bin 对话框 如下图 先在上图的下拉列表框中打开 D STC89C52 文件夹 随之就出现 STC8051 hex 文件 单击该文件后再单击 打开 按钮 就返回到下载界面 如下图 按下载软件的提示

9、 关闭一下单片机电源再打开 就可看到下载过程和进度 下载完成后 就可看到单片机四位数码管左边显示的 8 案例1下载过程与运行效果 1 5从数码管显示学单片机编程 1 5 1案例2 数码管上的 8 8 显示 1源程序 include reg51 h sbitqw P2 0 sbitbw P2 1 增加的一个位寻址变量定义main P0 0 qw 0 bw 0 增加的一个赋值语句 2源程序分析 本程序用三个赋值语句实现了它的功能 第一个赋值语句使P0代表的口0的8条I O引脚输出低电平 从而使四位数码管共32个发光二极管的负极为低电平 第二个赋值语句 第三个赋值语句分别使口2的最低两位引脚输出低电

10、平 从而使PNP管Q2 Q3导通 进而使左边两位数码管的共阳极上为高电平 于是 左边两位数码管上的发光二极管全亮 也就是 在四位数码管的左边显示出 8 8 3用流程图表示算法 案例2程序的流程图 案例1程序的流程图 用自然语言描述操作步骤 用C语句描术操作步骤 4仿案例1程序的上机操作全过程 完成案例2程序的下载和运行 5案例2程序的下载操作与运行效果 1 5 2案例3 被动形式的 8051 显示 include reg51 h sbitqw P2 0 定义MCU管脚P2 0位寻址变量名sbitbw P2 1 定义MCU管脚P2 1位寻址变量名sbitsw P2 2 定义MCU管脚P2 2位寻

11、址变量名sbitgw P2 3 定义MCU管脚P2 3位寻址变量名voidmain qw 1 这四个语句的作用是关断四位数码管bw 1 sw 1 gw 1 P0 0 x80 赋 8 的笔段码qw 0 接通千位上的数码管qw 1 关断千位上的数码管P0 0 xc0 赋 0 的笔段码bw 0 bw 1 P0 0 x92 赋 5 的笔段码sw 0 sw 1 P0 0 xf9 赋 1 的笔段码gw 0 gw 1 1源程序 2案例源程序要点分析 本案例中对四位数码管的每一位都要进行控制 因此要定义四个位寻址变量 qw bw sw和gw 主函数由五个执行段组成 第一执行段有四个赋值语句 作用是关断四个数码

12、管的显示 第二段有三个赋值语句 作用是在数码管的第1位 从左数到右 下同 上显示 8 后关断 第三段是在数码管的第2位上显示 0 后关断 第四段是在数码管的第3位上显示 5 后关断 第五段是在数码管的第4位上显示 1 后关断 3案例3程序的流程图 4案例3程序的下载过程与运行效果 15 3案例4 主动形式的 8051 显示 3物理现象解惑 案例3中本应一闪而过的 8051 变成了显示长在的 8051 其原因在于编译系统 单片机程序是在编译系统的迫使下 被动地重复运行 8051 的显示才永不休止 下面的程序 是程序自己主动地进行 8051 的重复显示 从视觉效果上看 被动形式的 8051 比主动

13、形式的 8051 亮度要小 1对案例3程序的基本分析 在案例3中 main函数中的最后一个操作是 gw 1 这就是关掉第4位数码管的显示 按此程序设计的本来效果 数码管上显示的 8051 应是一闪而过 此后数码管因全部被关断而无任何显示 2案例3程序的一个推论 编译系统有个特殊处理 即在main函数结束而返回的指令处 加了一条跳转指令 迫使单片机程序重新运行 4源程序 include reg51 h sbitqw P2 0 定义MCU管脚P2 0位寻址变量名sbitbw P2 1 定义MCU管脚P2 1位寻址变量名sbitsw P2 2 定义MCU管脚P2 2位寻址变量名sbitgw P2 3

14、 定义MCU管脚P2 3位寻址变量名voidmain while 1 循环结构 qw 1 这四个语句的作用是关断四位数码管bw 1 sw 1 gw 1 P0 0 x80 赋 8 的笔段码qw 0 接通千位上的数码管qw 1 关断千位上的数码管P0 0 xc0 赋 0 的笔段码bw 0 bw 1 P0 0 x92 赋 5 的笔段码sw 0 sw 1 P0 0 xf9 赋 1 的笔段码gw 0 gw 1 案例源程序要点分析 与案例3的源程序相比 案例4源程序中的5个执行段 被一个while循环架构所管辖 在此 先简单地说明一个要点 当while后面的小括号中是整数1是 它大括号中的所有语句 将被无

15、数轮重复执行 因此 在案例4程序中 while下面大括号中的那16个赋值语句 从上到下依次执行一轮后 又将回到上面 又从上到下依次执行一轮 再回到上面 如此永无休止地循环下去 从而实现 8051 的正常显示 5案例程序分析及流程图 流程图 6案例4的下载操作运行效果 15 4案例5 模块化的 8051 显示 include reg51 h sbitqw P2 0 定义MCU管脚P2 0位寻址变量名sbitbw P2 1 定义MCU管脚P2 1位寻址变量名sbitsw P2 2 定义MCU管脚P2 2位寻址变量名sbitgw P2 3 定义MCU管脚P2 3位寻址变量名Disp led qw 1

16、 这四个语句的作用是关断四位数码管bw 1 sw 1 gw 1 P0 0 x80 赋 8 的笔段码qw 0 接通千位上的数码管qw 1 关断千位上的数码管P0 0 xc0 赋 0 的笔段码bw 0 bw 1 P0 0 x92 赋 5 的笔段码sw 0 sw 1 P0 0 xf9 赋 1 的笔段码gw 0 gw 1 1源程序 voidmain while 1 Disp led 案例5这个程序的运行特点是 执行流程从主函数进入后 就进入其中的while循环 while循环的循环体中 只有一个函数调用语句 Disp led 执行这一函数调用语句 程序执行流程就跳转到Disp led函数中继续执行 即从上到下依次执行那16个赋值语句 第16个赋值语句执行完就是Disp led函数的结束标志 被调函数运行到其结束标志时 程序执行流程就从被调函数返回到主调函数原调用处继续往下执行 原调用语句下面就是循环体的结束标志 因此又进入下一次 Disp led 调用 程序执行流程又跳转到Disp led函数上执行 Disp led 执行完毕后又返回到主调函数的循环结构中 从而形成无数次的 Disp led

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号