c语言课程设计_第1页
c语言课程设计_第2页
c语言课程设计_第3页
c语言课程设计_第4页
c语言课程设计_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言课程设计,-多功能电脑时钟设计,简介,本课程设计原来一般是在大三,上完微机原理及应用课程后开展,自动化专业从2009级开始在大一下期,C程序设计课程后进行;同学们可以尽早接触专业知识,加深专业认识,避免大二期间的迷惘期;有利于同学们参加各类科技创新活动;C语言程序设计、单片机技术是自动化专业学生的看家本领之一;,现在我院开展的学生科技创新活动有:奇数年举行的全国大学生电子竞赛;每年进行的重庆市盛群杯单片机大赛;RobCup杯机器人大赛;每年由学院举行的赛课计划;每年由学生申报的大学生科技创新活动;2009级开始,自动化专业的同学必须参加一项学生科技创新活动方可毕业。,要求,按照老师的布置,认真独立完成有关任务;认真独立完成课程设计报告;每位同学应完成设计任务的验收与提交合格的报告;缺勤三分之一上者为不合格,单元一 点亮LED指示灯,LED显示原理,发光二极管通常是使用砷化镓、磷化镓等所制成;通以电流时将发出光来;单管工作电流一般在几毫安至几十毫安之间;因此只要在二极管的阳极和阴极间加上电源和限流电阻,就可以使其发光,用于指示。,单片机控制下的LED指示灯,在板子的左上方有四个绿色的LED灯,分别是由P23、P24、P25、P26四个I/O口控制,低电平点亮,高电平熄灭。,单片机控制下的LED指示灯,#include “reg51.h”sbit LED1=P23;/用LED1符号表示单片机的控制引脚,用符号可以更清晰地表示引脚功能main() while(1) /单片机的主程序往往是一个死循环 LED1=0; ,缩进,程序书写的格式要求,注解,头文件为使用单片机的内部资源提供方便,大家照此方法使用即可。大家感兴趣可以打开reg51.h文件看一下。 C51的一个主要特点就是支持位操作。,#include reg51.hsbit LED1=P23;/LED1控制引脚sbit LED2=P24;/LED2控制引脚sbit LED3=P25; /LED3控制引脚sbit LED4=P26; /LED4控制引脚void delay(unsigned int j) unsigned char i; do for(i=0;i=200) count=0; LED=!LED; ,中断子程序与普通子程序的区别:1、多了一个后缀 interrupt;2、无参数,无返回值;3、在主程序中没有对中断子程序的调用,中断子程序是由一种称之为中断系统的硬件调用的。,中断的基本工作过程,发生一个随机的外部事件,中断系统获得此外部事件的编号;中断系统通过此编号去寻找带有此后缀编号的中断服务子程序;中断系统控制程序流向由当前程序转向中断服务子程序。中断服务子程序执行完后,再回到刚才的断点继续执行先前的程序,中断系统的其它功能,中断允许与中断屏蔽;中断优先级管理;中断嵌套;这些内容目前同学们了解一下就可以了,单片机的定时器0,定时器的核心是一个加1计数器,当计数来源是一个稳定频率的脉冲时,就成为定时器。 计数满时会通知CPU(产生中断,TF0置位),我们可以利用这一点进行准确定时。,定时器的工作模式,例:设定时器T0选择工作模式1,定时周期为1ms的方波,单片机的振荡频率=6MHz。(1)根据题意,TMOD=01H,D7 D6 D5 D4 D3 D2 D1 D0,TMOD(89H),定时时间的计算,计数值=模值初始值模值表示计数器所能计的最大值加1,即16位计数器的模值为 ,16位计数器的模值为 。 计数范围为165536( )定时时间为:T=(模值初值)机器周期,模值:计数器最大计数值,机器周期:,(2)计算T0计数初值:,每个机器周期的时间长度为:,计数值为:,初始值=模值计数值=,转换为16进制数为:0FE0CHT0的低8位:0CHT0的高8位:0FEHTH0初值为0FEH,TL0的初值为0CH。,练习,如果产生一个5ms的定时,单片机的振荡频率是11.0592MHZ,请问定时初值时多少?TH0=0EEH,TL0=00H,#include reg52.h#define THCO 0xee#define TLCO 0x0sbit LED=P24;void main() TMOD=0x11; /设置定时器0工作模式 TL0=TLCO; /设置定时时间 TH0=THCO; TR0=1; /开定时器0 ET0=1; EA=1; while(1) ; /主程序空闲等待,/定时器中断服务子程序void timer0() interrupt 1 static unsigned char count=0; TH0=THCO; /重装初值 TL0=TLCO; count+; if(count=200) count=0; sec+; LED=!LED; ,中断服务程序与中断程序入口,单片机中断采用固定入口地址,中断服务程序由谁来调用?为什么采用satic 来修饰变量count?,变量的属性,空间属性(防止变量应用混乱)全局变量局部变量时间属性(及时回收变量所占内存空间)静态变量动态变量,单元二要求,用定时器完成一个1S闪烁LED的程序晶振频率为11.0592MHZ定时时间为0.5S定时器初始化;主程序为空循环中断服务程序中完成LED定时闪烁,单元三 数码管的显示,一种应用很普遍的显示器件LED数码管是由七段发光二极管组成,分别称为a、b、c、d、e、f、g、DP可以显示09和AF共16个字母数字及其他特殊字符。,数码管外形 共阳极 共阴极,段码,位码,#include reg52.hunsigned char code Duan=0x3F, 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次以上。,数码管的动态扫描,多位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,9;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定时中断完成计时与显示主程序完成秒数据十位与个位的分离实现小数点的闪烁,单元四 键盘处理,键盘:一组按键开关的集合。用于输入信息。单片机上通常有四个按键MODE 模式键用于选择系统工作模式。如多功能时钟的秒表模式、闹钟设定、时间设定等;UP 向上键-在某一模式下向上调整参数;DOWN 向下键在某一模式下向下调整参数;ENT 确认键确定某项操作,或返回最初的工作界面;,高电平:断开;低电平:闭合,常用软件来消除按键抖动。,基本思想:检测到有键按下,按键对应的IO线为低,软件延时10ms后,IO线如仍为低,则确认有键按下。,如何消除按键的抖动,当键松开时,IO线变高,软件延时10ms后,IO线仍为高,说明按键已松开。,采取以上措施,躲开了两个抖动期t1和t3的影响。,键盘工作的三个层次,第1层:单片机如何来监视键盘的输入。三种工作方式:编程扫描定时扫描中断扫描。,第2层:确定具体按键的键号。,第3层:执行键处理程序。,/*四个按键控制四个LED灯对应亮灭*/#include reg52.h#define THCO 0xee/5ms时间常数设置#define TLCO 0x0sbit P26=P26;/四个指示灯IO口定义sbit P25=P25;sbit P24=P24;sbit P23=P23;sbit P20=P20;/四个按键接口,0有效,即低电平,键按下sbit P21=P21;sbit P22=P22;sbit P32=P32;void main() TMOD=0x11;/定时器0初始化 TH0=THCO;TL0=TLCO;TR0=1; ET0=1; EA=1; P2=0x07;/准双向口按键检测之前先置1,同时指示灯亮while(1);,void timer0() interrupt 1 static unsigned char count=0;/静态变量,退出函数后,值保留 TH0=THCO; TL0=TLCO; if(P20=0|P21=0|P22=0|P32=0) count+; if(count=30)/消抖处理 count=0;if(P20=0) mode+;/按键按下,指示灯反转else if(P21=0) P24=!P24; if(mode=2) Hour+; if(mode=3)Min+; else if(P22=0) P25=!P25;else if(P32=0) P26=!P26; else count=0;,单元四要求,用按键实现秒表与时钟功能的切换;用按键实现当前时钟的小时、分钟可调节;,单元五 串口通信,串行通信原理单片机的串行通信PC机的串行通信,串行通信原理,波特率:每秒传输二进制位数的量(kbps或kb/s)。,并行传输特点:(1)传输速度快:单位时间内可传输一个字符;(2)通信成本高:每位传输要求一个单独的信道支持;因此如果一个字符包含8个二进制位,则并行传输要求8个独立的信道的支持;(3)不支持长距离传输:由于信道之间的电容感应,远距离传输时,可靠性较低。串行传输特点:(1)传输速度较低,一次一位;(2)通信成本也较低,只需一个信道。(3)支持长距离传输,目前计算机网络中所用的传输方式均为串行传输。,通信工作方式,单工:传输信号是单向的半双工:传输信号双向但不能同时全双工:传输信号双向且能同时,由发送器发送到传输线上,再由接收器从传输线上接收。即用高电平表示二进制数1,低电平表示二进制数0。而且每一位持续的时间是固定的,在发送时是以发送时钟作为数据位的划分界限,在接收时是以接收时钟作为数据位的检测。,异步通信,允许通信双方使用不同的时钟,但频率差应在允许范围之内。,同步通信, 通信双方使用相同的时钟。,串行通信,同步通信波特率可达56kbps或更高,异步通信波特率可达20kbps,通信双方应有相同的通信速率(波特率),数据帧格式。,单片机的串行通信,1.数据缓冲寄存器SBUF两个SBUF,一个用于发送(只写);一个用于接收(只读)。映象地址均为99H。,2.数据发送与接收控制发送控制器在波特率作用下,将发送SBUF中的数据由并到串,一位位地传输到发送端口;接收控制器在波特率作用下,将接收接收端口的数据由串到并,存入接收SBUF中。,void jieshou(void) interrupt 4 /接收缓冲区 unsigned char RxBuff4; /RI为1时,表示有数据到来 if(RI=1) /清除接收标志 RI=0; /读出数据,放入缓冲区备用 RxBuff0=SBUF; ,单片机串行数据的接收,单片机串行数据的发送,SBUF=TxBuff0;while(!TI); /等待发送完成TI=0; /TI为1时表示,发送了一个数据,放在任何一个需要发送的地方,单片机串行通信的初始化,设置通信速率(波特率)设置数据帧格式,TMOD=0x21; TCON=0x50; IE=0x9a;,D7 D6 D5 D4 D3 D2 D1 D0,TMOD(89H),SCON=0x50;TH1=0xfd;TL1=0xfd;,溢出率11.0592MHZ/ =(0x100-0xfd)* 12=307200HZ,TMOD=0x21; TCON=0x50; IE=0x9a;,SCON=0x50;TH1=0xfd;TL1=0xfd;,IE,TMOD=0x21; TCON=0x50; IE=0x9a;,SCON=0x50;TH1=0xfd;TL1=0xfd;,SCON,REN:允许接收控制位,由软件设定。REN=1时允许接收,REN=0时禁止接收。,PCON 电源控制寄存器,SMOD波

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论