08.12.17第8章.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
08.12.17第8章

第8章 综合实例;【例1】 利用单片机的P0口接8个发光二极管,P1口接8个开关,编程实现,当开关动作时,对应的发光二极管亮或灭。只须把P0口的内容读出后,通过P1口输出即可。 C51语言程序: #include <reg51.h> void main(void) { unsigned char i; P0=0xff; for(;;) { i=P0;P1=i; } };【例2】 设系统时钟频率为12MHZ,用定时/计数器T0编程实现从P1.0输出周期为500μs的方波。 分析:从P1.0输出周期为500μs的方波,只须P1.0每250μs取反一次则可。当系统时钟为12MHZ,定时/计数器T0工作于方式2时,最大的定时时间为256μs,满足250μs的定时要求,方式控制字应设定(02H)。系统时钟为12MHZ,定时250μs,计数值N为250,初值X=256-250=6,则TH0=TL0=06H。;(1)采用中断处理方式的程序:;(2)采用查询方式处理的程序;【例3】设系统时钟频率为12MHZ,编程实现从P1.1输出周期为1s的方波。 根据例2的处理过程,这时应产生500ms的周期性的定时,定时到则对P1.1取反就可实现。由于定时时间较长,一个定时/计数器不能直接实现,可用定时/计数器T0产生周期性为10ms的定时,然后用一个寄存器R2对10ms计数50次或用定时/计数器T1对10ms计数50次实现。系统时钟为12MHZ,定时/计数器T0定时10ms,计数值N为10000,只能选方式1,方式控制字(01H), 初值X: X=65536-10000=55536=1101100011110000B 则TH0=D8H,TL0=F0H。;C语言程序: # include <reg51.h> //包含特殊功能寄存器库 sbit P1_1=P1^1; char i; void main() { TMOD=0x01; TH0=0xD8;TL0=0xf0; EA=1;ET0=1; i=0; TR0=1; while(1); } void time0_int(void) interrupt 1 //中断服务程序 { TH0=0xD8;TL0=0xf0; i++; if (i= =50) {P1_1=! P1_1;i=0;} };【例4】用8051单片机的串行口外接串入并出的芯片CD4094扩展并行输出口控制一组发光二极管,使发光二极管从左至右延时轮流显示。; 8051;【例5】 用8051单片机的串行口外接并入串出的芯片CD4014扩展并行输入口,输入一组开关的信息。;C语言程序: # include <reg51.h> //包含特殊功能寄存器库 sbit P1_0=P1^0; sbit P1_1=P1^1; void main() { unsigned char i; P1_1=1;;【例6】某工业监控系统,具有温度、压力、PH值等多路监控功能,中断源的连接如图5.26所示。对于PH值,在小于7时向CPU申请中断,CPU响应中断后使P3.0引脚输出高电平,经驱动,使加碱管道电磁阀接通1秒钟,以调整PH值。;电磁阀;C语言程序: #include <reg51.h> sbit P10=P1^0; sbit P11=P1^1; sbit P12=P1^2; sbit P13=P1^3; sbit P16=P1^6; sbit P30=P3^0; void int0() interrupt 0 using1 { void int00(); void int01(); void int02(); void int03(); if (P10= =1) {int00();} //查询调用对应的函数 else if (P11= =1) {int01();} else if (P12= =1) {int02();} else if (P13= =1) {int03();} };用C语言编程实现双机通信。 要实现甲与乙两台单片机点对点的双机通信,线路只须将甲机的TXD与乙机的RXD相连,将甲机的RXD与乙机的TXD相连,地线与地线相连。 通信中双机作如下约定: 通信开始时,甲机先发送一个信号AA,乙机接收到后回答一个信号BB,表示同意接收。甲机收到BB后,就可以发送数据了。假定发送10个字符,数据缓冲区为buf,数据发送完后发送一个校验和。乙机接收到数据后,存入乙机的数据缓冲区中,并用接收的数据产生校验和与接收的校验和相比较,如相同,乙机发送00H,回答接收正确;如不同,则发送0

文档评论(0)

ahuihuang1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档