收藏 分享(赏)

C语言课程设计 前三单元ppt.ppt

上传人:ysd1539 文档编号:8147711 上传时间:2019-06-11 格式:PPT 页数:22 大小:1.18MB
下载 相关 举报
C语言课程设计 前三单元ppt.ppt_第1页
第1页 / 共22页
C语言课程设计 前三单元ppt.ppt_第2页
第2页 / 共22页
C语言课程设计 前三单元ppt.ppt_第3页
第3页 / 共22页
C语言课程设计 前三单元ppt.ppt_第4页
第4页 / 共22页
C语言课程设计 前三单元ppt.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、C语言课程设计,-多功能电脑时钟设计,单元一 点亮LED指示灯,LED显示原理,发光二极管通常是使用砷化镓、磷化镓等所制成; 通以电流时将发出光来; 单管工作电流一般在几毫安至几十毫安之间; 因此只要在二极管的阳极和阴极间加上电源和限流电阻,就可以使其发光,用于指示。,单片机控制下的LED指示灯,在板子的左上方有四个绿色的LED灯,分别是由P23、P24、P25、P26四个I/O口控制,低电平点亮,高电平熄灭。,单片机控制下的LED指示灯,#include “reg51.h“ sbit LED1=P23; /用LED1符号表示单片机的控制引脚,用符号可以更清晰地表示引脚功能 main() wh

2、ile(1) /单片机的主程序往往是一个死循环 LED1=0; ,缩进,程序书写的格式要求,注解,头文件为使用单片机的内部资源提供方便,大家照此方法使用即可。C51的一个主要特点就是支持位操作。,#include “reg51.h“ sbit LED1=P23; /LED1控制引脚 sbit LED2=P24; /LED2控制引脚 sbit LED3=P25; /LED3控制引脚 sbit LED4=P26; /LED4控制引脚 void delay(unsigned int j) unsigned char i;dofor(i=0;i230;i+);while(j-); ,main() wh

3、ile(1)LED1=0; /点亮LEDLED2=0;LED3=0;LED4=0;delay(1000); /延时LED1=1; /关闭LEDLED2=1;LED3=1;LED4=1;delay(1000); ,控制四个LED灯闪烁,变量i,j为什么定义成unsigned类型? 如何方便地书写程序? unsigned char 这样的字符偏长 怎样确定延时时间的长短?如何更方便地修改延时时间?,单片机的端口,MCS-51单片机有4个双向并行的8位I/O口P0P3,P0口为三态双向口,可驱动8个TTL电路,P1、P2、P3口为准双向口(作为输入时,口线被拉成高电平,故称为准双向口),其负载能力为

4、4个TTL电路。,单元一要求,完成一个流水灯程序 位赋值法 移位指令法,单元二 定时器控制的LED,前面由延时程序控制的LED闪烁存在以下问题 时间不够准确; 太消耗CPU资源,延时程序相当于CPU在空转等待; 采用定时器就可解决以上问题。,单片机的定时器0,定时器的核心是一个加1计数器,当计数来源是一个稳定频率的脉冲时,就成为定时器。计数满时会通知CPU(中断,TF0置位),我们可以利用这一点进行准确定时。,定时器的工作模式,例:设定时器T0选择工作模式1,定时周期为1ms的方波,单片机的振荡频率=6MHz。 (1)根据题意,TMOD=01H,D7 D6 D5 D4 D3 D2 D1 D0,

5、TMOD (89H),定时时间的计算,计数值=模值初始值 模值表示计数器所能计的最大值加1,即16位计数器的模值为 ,16位计数器的模值为 。 计数范围为165536( ) 定时时间为:T=(模值初值)机器周期,模值:计数器最大计数值,机器周期:,(2)计算T0计数初值:,每个机器周期的时间长度为:,计数值为:,初始值=模值计数值=,转换为16进制数为:0FE0CH T0的低8位:0CH T0的高8位:0FEH TH0初值为0FEH,TL0的初值为0CH。,练习,如果产生一个5ms的定时,单片机的振荡频率是11.0592MHZ,请问定时初值时多少?TH0=0EEH,TL0=00H,#inclu

6、de “reg52.h“#define THCO 0xee #define TLCO 0x0sbit LED=P24;void main() TMOD=0x11; /设置定时器0工作模式TL0=TLCO; /设置定时时间 TH0=THCO;TR0=1; /开定时器0ET0=1; EA=1;while(1) ; /主程序空闲等待 ,/定时器中断服务子程序 void timer0() interrupt 1 static unsigned char count=0;TH0=THCO; /重装初值TL0=TLCO;count+;if(count=200)count=0;LED=!LED; ,中断服务

7、程序与中断程序入口,单片机中断采用固定入口地址,中断服务程序由谁来调用? 为什么采用satic 来修饰变量count?,单元二要求,用定时器完成一个1S闪烁LED的程序 晶振频率为11.0592MHZ 定时时间为0.5S 定时器初始化; 主程序为空循环 中断服务程序中完成LED定时闪烁,单元三 数码管的显示,一种应用很普遍的显示器件 LED数码管是由七段发光二极管组成,分别称为a、b、c、d、e、f、g、DP 可以显示09和AF共16个字母数字及其他特殊字符。,数码管外形 共阳极 共阴极,段 码,位 码,#include “reg52.h“unsigned char code Duan=0x3

8、F, 0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;sbit P10=P10;void main() P10=0; /共阴极数码管,位码送低电平P0=Duan3;/利用数组进行查表,查出对应数字的段码while(1) ; /死循环 ,多位数码管的显示,如果每一个LED占用一个独立的I/O端口,那么该系统将占较多的硬件资源。 硬件上所有LED的同名段都连在一起,由同一个I/O端口(段端口)控制 每个LED的控制端分别连接到几个I/O端口 在软件上用扫描方法逐个点亮和熄灭LED,利用人的视觉暂留来实现多位LED显示。 保证每个LED在一秒内显示25次以上

9、。,数码管的动态扫描,多位LED显示流程图,#include “reg52.h“ #define THCO 0xee #define TLCO 0x0unsigned char code Duan=0x3F, 0x06, 0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F; unsigned char Data_Buffer4=1,2,3,4; sbit P10=P10; sbit P11=P11; sbit P12=P12; sbit P13=P13;void main() TMOD=0x11;TH0=THCO;TL0=TLCO;TR0=1;ET0=1;EA=1;while(1) ; ,void timer0() interrupt 1 static unsigned char Bit=0;TH0=THCO;TL0=TLCO;Bit+;if(Bit=4)Bit=0;P1|=0x0f;P0=DuanData_BufferBit;switch(Bit)case 0: P10=0;break;case 1: P11=0;break;case 2: P12=0;break;case 3: P13=0;break; ,单元三要求,用定时器、数码管完成一个秒表程序 晶振频率为11.0592MHZ 定时中断完成计时与显示 主程序完成秒数据十位与个位的分离,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报