C51单片机技术应用与实践课件第2章.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C51单片机技术应用与实践课件第2章.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51 单片机 技术 应用 实践 课件
- 资源描述:
-
1、第二篇 单片机基础篇课程内容理论理论实践任务1 点亮交通灯理论认知1 问题提出:理论认知1十字路口交通灯模型理论认知1任务从简单到复杂,从单一到综合亮单灯、闪烁单灯、跑马灯、数码管动态显示字符、带数码管显示的十字路口交通灯5个小任务。在任务的学习和体验中,体会单片机的编程思路理论认知1【知识目标】(1)学习利用I/O控制等点亮的工作原理;(2)一般单片机C程序的编写结构;(3)学习头文件、宏定义的作用;(4)区分全局变量和局部变量的差异;(5)子函数的使用方法。【能力目标】(1)会根据要求设计灯的控制点亮,并能根据要求设计参数;(2)熟练掌握单片机C程序的结构;(3)正确选用变量并正确设置数据
2、类型;(4)选择正确的头文件,并正确进行变量申明;(5)正确书写主函数、子函数。总体目标理论认知1学习目标【知识目标】(1)掌握单片机最小系统硬件组成;(2)初步了解程序设计的概念。【能力目标】(1)进行单片机最小系统的硬件搭建;(2)学习并应用相关的单片机开发工具;(3)初步进行软件程序的设计。1.1点亮单灯理论认知1 用单片机来实现对一个发光二极管实现点亮的功能。用单片机的P1.0口来点亮一个发光二极管。理论认知1123456ABCD654321DCBATitleNumberRevisionSizeBDate:2-Feb-2009 Sheet of File:D:新研新建文件夹PCB版.D
3、DBDrawn By:D1R1+5V 要保证图中二极管点亮,发光二极管需要正向导通,回路中电流310mA,发光二极管导通时电压降以1.7V估算,R1在此电路中的选择范围为3301k,我们在本次任务中取510。用单片机的I/O口控制二极管的亮灭只需由P1端口的P1.0送出低电平,二极管就被点亮,反之就熄灭。理论认知1任务从简单到复杂,从单一到综合亮单灯、闪烁单灯、跑马灯、数码管动态显示字符、带数码管显示的十字路口交通灯5个小任务。在任务的学习和体验中,体会单片机的编程思路实践训练21.硬件设计(1)仿真原理图单片机控制的发光二极管亮灭原理图任务实施实践训练22.软件编程(1)端口分配用单片机的P
4、1.0口来控制二极管的亮灭,单片机上电时,P0P3端口的每一位都处于高电平状态,P1.0=1,二极管处于熄灭状态,通过软件编程改变P1.0,使之变为0而使二极管被点亮。实践训练2(2)程序流程 程序流程比较简单,此处略。(3)具体程序/-/名称:亮灭单灯/-/说明:light按所给的电平亮灭发光二极管/-#includesbit light=P10;/声明控制发光二极管亮灭端口为port 1的第0位void main()/主函数while(1)/死循环 light=0;/给变量light低电平,就是给P1.0低电平,此时灯处于常亮状态实践训练23.点亮单灯仿真效果实践训练21.21.2单灯闪烁
5、单灯闪烁目标要求目标要求要求二极管亮灭闪烁的时间为200ms,控制端口仍然采用P1.0口。问题分析问题分析200 ms P1.0时序硬件设计同点亮单灯实践训练2软件编程软件编程端口分配同点亮单灯程序流程程序流程实践训练2具体程序具体程序/-/名称:单灯闪烁/-/说明:light按所给的电平点亮或熄灭二极管/-#include#define uchar unsigned char#define uint unsigned intsbit light=P10;/声明控制二极管闪烁端口为port 1的第0位实践训练2/-/延时子函数,延时单位为xms/-void delayms(uint x)/延时
6、函数声明和定义,x为形参uint i,j;for(i=0;ix;i+)for(j=0;j120;j+);/注意上个for语句与本句for语句之不同,本句属于for语句嵌套,/省略了括号,所以本节是带分号的实践训练2/-/主函数/-void main()while(1)/为死循环,在这里是反复实现二极管的交替状态 light=light;/二极管的状态改变,原来为1,即可起为0,反之,亦然delayms(100);/二极管状态保持100ms后,由于while(1)语句,返回上一句执行取反 实践训练2单灯闪烁仿真效果单灯闪烁仿真效果实践训练21.31.3跑马灯跑马灯目标要求目标要求 P1口的8位分
7、别接着二极管,通过编程依次实现P1口8个二极管由低位到高位依次点亮和熄灭,依次点亮的时间为200ms。问题分析问题分析跑马灯要求P1口产生的时序实践训练2硬件设计仿真原理图仿真原理图软件编程端口分配端口分配P1口来控制二极管的轮流点亮程序流程程序流程实践训练2具体程序具体程序(1)采用循环左移的编程#include#include/添加此项头文件,是考虑主程序中用到_crol_循环左移函数,而此函/数包含在此项文件中#define uchar unsigned char#define uint unsigned intvoid delayms(uint x)/实现延时x(单位ms)uchar
8、t;while(x-)/此处也可以用for(i=0;ix;i+),效果一样,体会不同语句的编法实践训练2for(t=0;t120;t+);void main()P1=0 xfe;/跑马灯初始点亮状态为P1.0点亮while(1)P1=_crol_(P1,1);/循环左移,最高位送至最低位,形成封闭的左循环,每一次/向左移动一位实践训练2delayms(200);/跑马灯过程中每个灯的状态保持200ms(2)采用布尔移位运算的编程#include#define uchar unsigned char#define uint unsigned intuchar aa;/定义全局变量aavoid d
9、elayms(uint x)/延时x(单位为ms)子函数实践训练2uchar t;while(x-)for(t=0;t120;t+);void main()while(1)实践训练2uchar i;aa=0 xfe;/设置跑马灯初始点亮的灯 for(i=0;i8;i+)/8盏跑马灯 P1=aa;delayms(200);aa=aa1|0 x01;/布尔运算符,每次向左移一位,但不形成封闭的循环,/最高位的1会消失,为弥补这个缺陷,每次移位后在最低位加上1 实践训练2(3)采用一维数组的编程/*跑马灯*/=声明区=#include#defineuchar unsigned char#define
10、turn P1/用turn变量定义P1口/*声明8盏灯从低到高分别点亮时端口应对应的数据*/char code TAB8=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;/*延迟函数,延迟约x(单位为ms)*/void delay(int x)/延迟函数开始实践训练2int i,j;/声明整数变量i、jfor(i=0;ix;i+)/计数x次,延迟xfor(j=0;j120;j+);/计数120次,延迟1ms/延迟函数结束/=主程序=void main()/主程序开始uchar i;/声明无符号字符型变量iwhile(1)/死循环,程序一直跑for
11、(i=0;i8;i+)/显示07,共8次实践训练2turn=TABi;/显示数字delay(200);/延迟200ms/for循环结束/主程序结束实践训练2跑马灯仿真效果跑马灯仿真效果实践训练1.41.4数码管动态显示多个不同字符数码管动态显示多个不同字符目标要求目标要求在8位集成式数码管上同时显示多个不同的字符探究学习探究学习1.数码管的种类 a)共阴极 b)共阳极 c)管脚配置图2-14 LED显示器2实践训练22.数码管的段码LED显示器的字段码(七段码)显示字符共阴极字码段共阳极字码段显示字符共阴极字码段共阳极字码段03FHC0H96FH90H106HF9HA77H88H25BHA4H
12、B7CH83H34FHB0HC39HC6H466H99HD5EHA1H56DH92HE79H86H67DH82HF71H8EH707HF8HP73H8CH87FH80H熄灭00HFFH实践训练2(1)静态显示(2)动态显示实践训练2硬件设计硬件设计 8个数码管共阳动态显示,选用P0口作为段码输出,用8个限流电阻控制数码管的亮度,P2口作为8个数码管的片选,显示最低位至最高位时由P2口依次送出0 x80、0 x40、0 x20、0 x10、0 x08、0 x04、0 x02、0 x01,考虑用三极管驱动来增大片选的驱动能力。1.仿真原理图实践训练2软件编程软件编程1.端口分配 P0口作为段码口,
13、P2口作为位选口,P2.7对应数码管的高位,P2.0对应低位。8只数码管显示多个不同字符流程图程序流程程序流程8只数码管显示多个不同字符流程图实践训练2具体程序具体程序/*8只数码管显示多个不同字符*/=声明区=/数码管动态扫描显示18#include#include#define uchar unsigned char#define uint unsigned int/各数字的数码管共阳段码uchar code DSY_CODE=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;实践训练2/-/延时x(单位为ms)/-vo
14、id delayms(uint x)uchar i;while(x-)for(i=0;i120;i+);/-/主程序/-实践训练2void main()uchar k,m=0 x80;P0=0 xff;/数码管处于不显示状态P2=0 x00;/数码管未被选中while(1)for(k=0;k8;k+)m=_crol_(m,1);/从最低位开始选起P2=m;实践训练2P0=DSY_CODEk+1;/从数字1开始显示delayms(2);/延时2ms 数码管动态显示多个不同字符仿真效果图实践训练21.51.5带数码管显示的十字路口交通灯带数码管显示的十字路口交通灯目标要求目标要求 东西方向定义为a
15、线方向,南北方向定义为b线方向,要求a线方向绿灯亮20s,同时b线方向红灯亮20s,20s时间到,a线方向黄灯闪烁5s,1次/s实践训练2问题分析问题分析十字路口交通灯的时序实践训练2硬件设计硬件设计 对南北和东西向的指示灯进行分配,具体如下:P0.0、P0.1、P0.2分配给东西向的红、黄、绿灯,P0.3、P0.4、P0.5分配给南北向的红、黄、绿灯。由于采用的是数码管共阴动态显示,P2.0、P2.1作为南北向b线数码管高位和低位片选,低电平为选中数码管,P2.2、P2.3作为东西向a线数码管高位和低位片选,低电平为选中数码管。P3口作为段码的输出口。实践训练2 任务实施1.硬件设计 对南北
16、和东西向的指示灯进行分配,具体如下:P0.0、P0.1、P0.2分配给东西向的红、黄、绿灯,P0.3、P0.4、P0.5分配给南北向的红、黄、绿灯。由于采用的是数码管共阴动态显示,P2.0、P2.1作为南北向b线数码管高位和低位片选,低电平为选中数码管,P2.2、P2.3作为东西向a线数码管高位和低位片选,低电平为选中数码管。P3口作为段码的输出口。实践训练2123456ABCD654321DCBATitleNumberR evisio nSizeBDate:12-Mar-201 4Sh eet of File:F:1-教学教材4-C 51单片机技术应用与实践C 51单片机技术应用与实践(陆旭
17、明编写部分)万年历+交通灯改+双机通信1.DdbDrawn B y:VCC40GND20R ST9X119X218PSEN29ALE30(AD0)P0.039(AD1)P0.138(AD2)P0.237(AD3)P0.336(AD4)P0.435(AD5)P0.534(AD6)P0.633(AD7)P0.732P1.0/T21P1.1/T2EX2P1.2/R XD13P1.3/TXD14P1.4/INT25P1.5/INT36P1.6/INT47P1.7/INT58(A8)P2.021(A9)P2.122(A1 0)P2.223(A1 1)P2.324(A1 2)P2.425(A1 3)P2.
18、526(A1 4)P2.627(A1 5)P2.728P3.0/R XD010P3.1/TXD011P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/W R16P3.7/R D17EA31U1AT89S51Y16MHzC315PC215PC110UF16V1122S1SW-SPSTR1310KR10220R12220R11220R9220R8220R7220R6220R5220R4220R1220R2220R3220D10LED-GD11LED-YD12LED-RD7LED-RD8LED-YD9LED-GD3LED-G1A2KD1LED-RD2LED-Y
19、D6LED-GD5LED-YD4LED-RP0.0P0.1P0.2P0.2P0.1P0.0P0.3P0.4P0.5P0.5P0.4P0.3P0.0P0.1P0.2P0.3P0.4P0.5P2.0P2.1P2.2P2.3X1X2+5 VRSTRSTX1X2+5 V1234567891110JP2R S23 2_TxDR S23 2_R xD1310118129147C 1+1C 2+4GND15C 1-3VCC16R 1T1T2R 2C 2-5V-6V+2U2MAX2 02C PEC 40.1u FC 50.1u FC 80.1u FC 60.1u F+5 VC 70.1u FTx DR S23
20、 2_TxDR S23 2_R xDR xD123JP1C ON3+5 VabcdefgdpR xDTx DA10B9C1D4E3F6G5DP2abfcgdedpabfcgdedpCS18CS27U4LG56 21DHA10B9C1D4E3F6G5DP2abfcgdedpabfcgdedpCS18CS27U3LG56 21DHR 142KR 1610 0R 155.1KR 172KR 1910 0R 185.1KQ1Q2Q3E2C3B1Q4R 202KR 2210 0R 215.1KR 2510 0R 245.1KR 232KP2.0P2.1P2.2P2.3+5 V+5 V+5 V+5 Vab
21、cdefgdpabcdefgdp+5 V+5 V带数码管显示的十字路口交通灯原理图实践训练2软件编程软件编程1.程序流程实践训练22.具体程序/*带数码管显示的十字路口交通灯*/=声明区=#include#define uchar unsigned char#define uint unsigned intsbit red_a=P00;sbit yellow_a=P01;sbit green_a=P02;sbit red_b=P03;实践训练2sbit yellow_b=P04;sbit green_b=P05;uchar time;#define SEGP3/定义七段显示器接至Port 3/
22、*声明七节显示器驱动信号阵列(共阴)*/char code TAB10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,/数字040 x6d,0 x7d,0 x07,0 x7f,0 x6f;/数字59uchar operation_type=1;/*延迟函数,延迟约x(单位为ms)*/void delayms(int x)实践训练2int i;while(x-)for(i=0;i120;i+);/*动数码管态显示*/void display(int x)int i,j;j=x/4;for(i=0;ij;i+)实践训练2uchar shi,ge;shi=time/10;ge=time
23、%10;P2=0 xfa;/选中a、b线中高位数码管P2.3、P2.1SEG=TABshi;/取十位段码delayms(2);/十位段码亮2msP2=0 xf5;/选中a、b线中低位数码管P2.4、P2.2SEG=TABge;/取个位段码delayms(2);/个位段码亮2ms实践训练2 void traffic_light()/交通灯的一个周期4个状态switch(operation_type)/从第一个状态进入,依次转入下个状态 uchar i;case1:red_a=1;yellow_a=1;green_a=0;/第一个状态下a线各个灯的状态red_b=0;yellow_b=1;gree
24、n_b=1;/第一个状态下b线各个灯的状态time=21;/第一个状态保持时间while(time-)实践训练2for(i=0;i5;i+)display(200);operation_type=2;/进入第二个状态阶段break;case 2:time=6;while(time-)for(i=0;i10;i+)实践训练2display(100);yellow_a=!yellow_a;green_a=1;/第二个状态下a线黄灯闪烁状态 operation_type=3;/进入第三个状态阶段break;case 3:red_a=0;yellow_a=1;green_a=1;/第三个状态下a线各个
25、灯的状态red_b=1;yellow_b=1;green_b=0;/第三个状态下b线各个灯的状态 time=21;/第三个状态保持时间while(time-)实践训练2for(i=0;i5;i+)display(200);operation_type=4;/进入第四个状态阶段break;case 4:time=6;while(time-)for(i=0;i10;i+)display(100);实践训练2yellow_b=!yellow_b;green_b=1;/第四个状态下b线黄灯闪烁状态operation_type=1;/返回到第一个状态void main()/交通灯主函数while(1)t
展开阅读全文