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

下载本文档

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

文档简介

C语言课程设计-----多功能电脑时钟设计简介本课程设计原来一般是在大三,上完微机原理及应用课程后开展,自动化专业从2021级开始在大一下期,C程序设计课程后进行;同学们可以尽早接触专业知识,加深专业认识,防止大二期间的迷惘期;有利于同学们参加各类科技创新活动;C语言程序设计、单片机技术是自动化专业学生的看家本领之一;现在我院开展的学生科技创新活动有:奇数年举行的全国大学生电子竞赛;每年进行的重庆市盛群杯单片机大赛;RobCup杯机器人大赛;每年由学院举行的赛课方案;每年由学生申报的大学生科技创新活动;2021级开始,自动化专业的同学必须参加一项学生科技创新活动方可毕业。要求按照老师的布置,认真独立完成有关任务;认真独立完成课程设计报告;在20周星期五以前,不得离校;每位同学离校前应完成设计任务的验收与提交合格的报告;缺勤三分之一上者为不合格单元一点亮LED指示灯LED显示原理发光二极管通常是使用砷化镓、磷化镓等所制成;通以电流时将发出光来;单管工作电流一般在几毫安至几十毫安之间;因此只要在二极管的阳极和阴极间加上电源和限流电阻,就可以使其发光,用于指示。 单片机控制下的LED指示灯在板子的左上方有四个绿色的LED灯,分别是由P23、P24、P25、P26四个I/O口控制,低电平点亮,高电平熄灭。单片机控制下的LED指示灯#include"reg51.h“#include“reg51.h〞sbitLED1=P2^3; //用LED1符号表示单片机的控制引脚,用符号可以更清晰地表示引脚功能main(){while(1)//单片机的主程序往往是一个死循环{LED1=0;}} 缩进程序书写的格式要求注解头文件为使用单片机的内部资源提供方便,大家照此方法使用即可。C51的一个主要特点就是支持位操作。#include"reg51.h"sbitLED1=P2^3; //LED1控制引脚sbitLED2=P2^4; //LED2控制引脚sbitLED3=P2^5; //LED3控制引脚sbitLED4=P2^6; //LED4控制引脚voiddelay(unsigned

intj){

unsignedchari;do{for(i=0;i<230;i++);}while(j--);}

main(){while(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类型?如何方便地书写程序?unsignedchar这样的字符偏长怎样确定延时时间的长短?如何更方便地修改延时时间?单片机的端口MCS-51单片机有4个双向并行的8位I/O口P0~P3,P0口为三态双向口,可驱动8个TTL电路,P1、P2、P3口为准双向口〔作为输入时,口线被拉成高电平,故称为准双向口〕,其负载能力为4个TTL电路。单元一要求完成一个流水灯程序位赋值法移位指令法单元二定时器控制的LED前面由延时程序控制的LED闪烁存在以下问题时间不够准确;太消耗CPU资源,延时程序相当于CPU在空转等待;采用定时器就可解决以上问题。单片机的定时器0定时器的核心是一个加1计数器,当计数来源是一个稳定频率的脉冲时,就成为定时器。计数满时会通知CPU〔中断,TF0置位〕,我们可以利用这一点进行准确定时。定时器的工作模式例:设定时器T0选择工作模式1,定时周期为1ms的方波,单片机的振荡频率=6MHz。〔1〕根据题意,TMOD=01HD7D6D5D4D3D2D1D0GATEM1M0GATEM1M0TMOD(89H)M1M0工作模式功能描述00模式013位计数器01模式116位计数器10模式28位自动重装载计数器11模式3定时器0:分成两个8位计数器定时器1:停止工作定时时间的计算计数值=模值-初始值模值表示计数器所能计的最大值加1,即16位计数器的模值为,16位计数器的模值为。计数范围为1~65536()定时时间为:T=〔模值-初值〕×机器周期模值:计数器最大计数值机器周期:〔2〕计算T0计数初值:每个机器周期的时间长度为:计数值为:初始值=模值-计数值=转换为16进制数为:0FE0CHT0的低8位:0CHT0的高8位:0FEHTH0初值为0FEH,TL0的初值为0CH。练习如果产生一个5ms的定时,单片机的振荡频率是11.0592MHZ,请问定时初值时多少?TH0=0EEH,TL0=00H#include"reg52.h"#defineTHCO0xee#defineTLCO0x0sbitLED=P2^4;voidmain(){TMOD=0x11;//设置定时器0工作模式TL0=TLCO;//设置定时时间 TH0=THCO;

TR0=1; //开定时器0

ET0=1;

EA=1;while(1);//主程序空闲等待}//定时器中断效劳子程序voidtimer0()interrupt1 {staticunsignedcharcount=0;TH0=THCO;//重装初值TL0=TLCO;count++;if(count>=200){count=0;LED=!LED;}}中断效劳程序与中断程序入口中断编号中断名称入口地址0外部中断0(INT0)0003H1定时器0中断000BH2外部中断1(INT1)0013H3定时器1中断001BH4串口中断0023H单片机中断采用固定入口地址中断效劳程序由谁来调用?为什么采用satic来修饰变量count?单元二要求用定时器完成一个1S闪烁LED的程序晶振频率为11.0592MHZ定时时间为0.5S定时器初始化;主程序为空循环中断效劳程序中完成LED定时闪烁单元三数码管的显示一种应用很普遍的显示器件LED数码管是由七段发光二极管组成,分别称为a、b、c、d、e、f、g、DP可以显示0~9和A~F共16个字母数字及其他特殊字符。数码管外形共阳极共阴极数字共阴极段码共阳极段码00x3F0xC010x060xF920x5B0xA430x4F0xB040x660x9950x6D0x9260x7D0x8270x070xF880x7F0x8090x6F0x90段码位码#include"reg52.h"unsignedcharcodeDuan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};sbitP10=P1^0;voidmain(){ P10=0;//共阴极数码管,位码送低电平P0=Duan[3];//利用数组进行查表,查出对应数字的段码while(1);//死循环}多位数码管的显示如果每一个LED占用一个独立的I/O端口,那么该系统将占较多的硬件资源。硬件上所有LED的同名段都连在一起,由同一个I/O端口(段端口)控制每个LED的控制端分别连接到几个I/O端口在软件上用扫描方法逐个点亮和熄灭LED,利用人的视觉暂留来实现多位LED显示。保证每个LED在一秒内显示25次以上。数码管的动态扫描多位LED显示流程图#include"reg52.h"#defineTHCO0xee#defineTLCO0x0unsignedcharcodeDuan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};unsignedcharData_Buffer[4]={1,2,3,4};sbitP10=P1^0;sbitP11=P1^1;sbitP12=P1^2;sbitP13=P1^3;voidmain(){ TMOD=0x11;TH0=THCO;TL0=TLCO;TR0=1;ET0=1;EA=1;while(1);}voidtimer0()interrupt1{staticunsignedcharBit=0;TH0=THCO;TL0=TLCO;Bit++;if(Bit>=4)Bit=0;

P1|=0x0f;P0=Duan[Data_Buffer[Bit]];switch(Bit){

case0:P10=0;break;case1:P11=0;break;case2:P12=0;break;case3:P13=0;break;}}单元三要求用定时器、数码管完成一个秒表程序晶振频率为11.0592MHZ定时中断完成计时与显示主程序完成秒数据十位与个位的别离单元四键盘处理键盘:一组按键开关的集合。用于输入信息。单片机上通常有四个按键MODE模式键—用于选择系统工作模式。如多功能时钟的秒表模式、闹钟设定、时间设定等;UP向上键--在某一模式下向上调整参数;DOWN向下键—在某一模式下向下调整参数;ENT确认键—确定某项操作,或返回最初的工作界面;高电平:断开;低电平:闭合单片机常用软件来消除按键抖动。根本思想:检测到有键按下,按键对应的IO线为低,软件延时10ms后,IO线如仍为低,那么确认有键按下。如何消除按键的抖动

当键松开时,IO线变高,软件延时10ms后,IO线仍为高,说明按键已松开。采取以上措施,躲开了两个抖动期t1和t3的影响。单片机键盘工作的三个层次第1层:单片机如何来监视键盘的输入。三种工作方式:①编程扫描②定时扫描③中断扫描。第2层:确定具体按键的键号。第3层:执行键处理程序。/*四个按键控制四个LED灯对应亮灭*/#include"reg52.h"#defineTHCO0xee //5ms时间常数设置#defineTLCO0x0sbitP26=P2^6; //四个指示灯IO口定义sbitP25=P2^5;sbitP24=P2^4;sbitP23=P2^3;sbitP20=P2^0; //四个按键接口,0有效,即低电平,键按下sbitP21=P2^1;sbitP22=P2^2;sbitP32=P3^2;voidmain(){ TMOD=0x11; //定时器0初始化 TH0=THCO; TL0=TLCO; TR0=1; ET0=1; EA=1;

P2=0x07;//准双向口按键检测之前先置1,同时指示灯亮 while(1);}voidtimer0()interrupt1{staticunsignedcharcount=0;//静态变量,退出函数后,值保存TH0=THCO;TL0=TLCO;

if(P20==0||P21==0||P22==0||P32==0){ count++; if(count>=30) //消抖处理 { count=0; if(P20==0) P23=!P23; //按键按下,指示灯反转 elseif(P21==0) P24=!P24; elseif(P22==0) P25=!P25; elseif(P32==0) P26=!P26; }}elsecount=0;}单元四要求用按键实现秒表与时钟功能的切换;用按键实现当前时钟的小时、分钟可调节;单元五串口通信串行通信原理单片机的串行通信PC机的串行通信串行通信原理数据通信并行通信串行通信波特率:每秒传输二进制位数的量〔kbps或kb/s〕。并行传输特点:

〔1〕传输速度快:单位时间内可传输一个字符;

〔2〕通信本钱高:每位传输要求一个单独的信道支持;因此如果一个字符包含8个二进制位,那么并行传输要求8个独立的信道的支持;

〔3〕不支持长距离传输:由于信道之间的电容感应,远距离传输时,可靠性较低。

串行传输特点:

〔1〕传输速度较低,一次一位;

〔2〕通信本钱也较低,只需一个信道。

〔3〕支持长距离传输,目前计算机网络中所用的传输方式均为串行传输。通信工作方式单工:传输信号是单向的半双工:传输信号双向但不能同时全双工:传输信号双向且能同时由发送器发送到传输线上,再由接收器从传输线上接收。即用高电平表示二进制数1,低电平表示二进制数0。而且每一位持续的时间是固定的,在发送时是以发送时钟作为数据位的划分界限,在接收时是以接收时钟作为数据位的检测。异步通信,允许通信双方使用不同的时钟,但频率差应在允许范围之内。同步通信,通信双方使用相同的时钟。串行通信同步通信波特率可达56kbps或更高数据数据数据……数据数据……同步字符同步字符1同步字符2同步传送的数据格式1100/10/10/10/10/10/10/10/10/1111起始位停止位奇偶校验8位数据空闲位空闲位第n个字符100/10/1起始位第n+1个字符0/10/1异步通信数据帧格式异步通信波特率可达20kbps,通信双方应有相同的通信速率〔波特率〕,数据帧格式。单片机的串行通信SBUFSBUF发送控制接收控制发送端口接收端口≥1波特率控制TXDRXDDBDBTIRI串行中断写SBUF读SBUF1.数据缓冲存放器SBUF两个SBUF,一个用于发送〔只写〕;一个用于接收〔只读〕。映象地址均为99H。2.数据发送与接收控制发送控制器在波特率作用下,将发送SBUF中的数据由并到串,一位位地传输到发送端口;接收控制器在波特率作用下,将接收接收端口的数据由串到并,存入接收SBUF中。voidjieshou(void)interrupt4{ //接收缓冲区unsignedcharRxBuff[4];//RI为1时,表示有数据到来if(RI==1){//去除接收标志RI=0;//读出数据,放入缓冲区备用RxBuff[0]=SBUF;}}中断编号中断名称入口地址0外部中断0(INT0)0003H1定时器0中断000BH2外部中断1(INT1)0013H3定时器1中断001BH4串口中断0023H单片机串行数据的接收单片机串行数据的发送SBUF=TxBuff[0];while(!TI);//等待发送完成TI=0;//TI为1时表示,发送了一个数据放在任何一个需要发送的地方单片机串行通信的初始化设置通信速率〔波特率〕设置数据帧格式TMOD=0x21;TCON=0x50;IE=0x9a;D7D6D5D4D3D2D1D0GATEM1M0GATEM1M0TMOD(89H)M1M0工作模式功能描述00模式013位计数器01模式116位计数器10模式28位自动重装载计数器11模式3定时器0:分成两个8位计数器定时器1:停止工作SCON=0x50;TH1=0xfd;TL1=0xfd;溢出率11.0592MHZ/=(0x100-0xfd)*12=307200HZTMOD=0x21;TCON=0x50;IE=0x9a;

SCON=0x50;TH1=0xfd;TL1=0xfd;EA--ESET1EX1ET0EX0IETMOD=0x21;TCON=0x50;IE=0x9a;SCON=0x50;TH1=0xfd;TL1=0xfd;SM0SM1SM2RENTB8RB8TIRISCONREN:允许接收控制位,由软件设定。REN=1时允许接收,REN=0时禁止接收。SM0SM1方式功能说明000移位寄存器输入/输出,波特绿为fosc/120118位UART,波特率可变(T1溢出率/n,n=32或16)1029位UART,波特率为fosc/n,n=64或32)1139位UART,波特率可变(T1溢出率/n,n=32或16)PCON电源控制存放器SMOD———GF1GF0PDIDLSMOD波特率控制:该位为1时,波特率增大一倍!波特率=2SMODT1溢出率/32波特率=307200/32=9600TMOD=0x21;

TCON=0x50;IE=0x9a;SCON=0x50;TH1=0xfd;TL1=0xfd;D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1

温馨提示

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

评论

0/150

提交评论