1、C语言课程设计-多功能电脑时钟设计简介n本课程设计原来一般是在大三,上完微机原理及应用课程后开展,自动化专业从2009级开始在大一下期,C程序设计课程后进行;n同学们可以尽早接触专业知识,加深专业认识,避免大二期间的迷惘期;n有利于同学们参加各类科技创新活动;nC语言程序设计、单片机技术是自动化专业学生的看家本领之一;n现在我院开展的学生科技创新活动有:奇数年举行的全国大学生电子竞赛;每年进行的重庆市盛群杯单片机大赛;RobCup杯机器人大赛;每年由学院举行的赛课计划;每年由学生申报的大学生科技创新活动;n2009级开始,自动化专业的同学必须参加一项学生科技创新活动方可毕业。要求n按照老师的布
2、置,认真独立完成有关任务;n认真独立完成课程设计报告;n每位同学应完成设计任务的验收与提交合格的报告;n缺勤三分之一上者为不合格单元一点亮LED指示灯nLED显示原理发光二极管通常是使用砷化镓、磷化镓等所制成;通以电流时将发出光来;单管工作电流一般在几毫安至几十毫安之间;因此只要在二极管的阳极和阴极间加上电源和限流电阻,就可以使其发光,用于指示。单片机控制下的LED指示灯在板子的左上方有四个绿色的LED灯,分别是由P23、P24、P25、P26四个I/O口控制,低电平点亮,高电平熄灭。单片机控制下的LED指示灯#include“reg51.h”sbitLED1=P23;/用LED1符号表示单片
3、机的控制引脚,用符号可以更清晰地表示引脚功能main()while(1)/单片机的主程序往往是一个死循环LED1=0;缩进程序书写的格式要求注解头文件为使用单片机的内部资源提供方便,大家照此方法使用即可。大家感兴趣可以打开reg51.h文件看一下。C51的一个主要特点就是支持位操作。#includereg51.hsbitLED1=P23;/LED1控制引脚sbitLED2=P24;/LED2控制引脚sbitLED3=P25;/LED3控制引脚sbitLED4=P26;/LED4控制引脚voiddelay(unsignedintj)unsignedchari;dofor(i=0;i=200)co
4、unt=0;LED=!LED;中断子程序与普通子程序的区别:1、多了一个后缀interrupt;2、无参数,无返回值;3、在主程序中没有对中断子程序的调用,中断子程序是由一种称之为中断系统的硬件调用的。中断的基本工作过程n发生一个随机的外部事件,中断系统获得此外部事件的编号;n中断系统通过此编号去寻找带有此后缀编号的中断服务子程序;n中断系统控制程序流向由当前程序转向中断服务子程序。n中断服务子程序执行完后,再回到刚才的断点继续执行先前的程序中断系统随机的外部事件编号查找对应编号的中断服务子程序编号一致的中断服务子程序主程序发生中断的点是由外部事件随机确定中断系统的其它功能n中断允许与中断屏蔽
5、;n中断优先级管理;n中断嵌套;这些内容目前同学们了解一下就可以了单片机的定时器0定时器的核心是一个加1计数器,当计数来源是一个稳定频率的脉冲时,就成为定时器。计数满时会通知CPU(产生中断,TF0置位),我们可以利用这一点进行准确定时。定时器的工作模式例:设定时器T0选择工作模式1,定时周期为1ms的方波,单片机的振荡频率=6MHz。(1)根据题意,TMOD=01H D7 D6 D5 D4 D3 D2 D1 D0GATEM1M0GATEM1M0TMOD(89H)M1 M0工作模式功能描述0 0模式013位计数器0 1模式116位计数器1 0模式28位自动重装载计数器1 1模式3定时器0:分成
6、两个8位计数器定时器1:停止工作定时时间的计算n计数值=模值初始值n模值表示计数器所能计的最大值加1,即16位计数器的模值为,16位计数器的模值为。n计数范围为165536()n定时时间为:T=(模值初值)机器周期模值:计数器最大计数值机器周期:(2)计算T0计数初值:每个机器周期的时间长度为:计数值为:初始值=模值计数值=转换为16进制数为:0FE0CHT0的低8位:0CHT0的高8位:0FEHTH0初值为0FEH,TL0的初值为0CH。练习n如果产生一个5ms的定时,单片机的振荡频率是11.0592MHZ,请问定时初值时多少?nTH0=0EEH,TL0=00H#includereg52.h
7、#defineTHCO0 xee#defineTLCO0 x0sbitLED=P24;voidmain()TMOD=0 x11;/设置定时器0工作模式TL0=TLCO;/设置定时时间TH0=THCO;TR0=1;/开定时器0ET0=1;EA=1;while(1);/主程序空闲等待/定时器中断服务子程序voidtimer0()interrupt1staticunsignedcharcount=0;TH0=THCO;/重装初值TL0=TLCO;count+;if(count=200)count=0;sec+;LED=!LED;中断服务程序与中断程序入口中断编号中断名称入口地址0外部中断0(INT0
8、)0003H1定时器0中断000BH2外部中断1(INT1)0013H3定时器1中断001BH4串口中断0023H单片机中断采用固定入口地址中断服务程序由谁来调用?为什么采用satic来修饰变量count?变量的属性n空间属性(防止变量应用混乱)全局变量局部变量n时间属性(及时回收变量所占内存空间)静态变量动态变量单元二要求n用定时器完成一个1S闪烁LED的程序晶振频率为11.0592MHZ定时时间为0.5S定时器初始化;主程序为空循环中断服务程序中完成LED定时闪烁单元三数码管的显示n一种应用很普遍的显示器件nLED数码管是由七段发光二极管组成,分别称为a、b、c、d、e、f、g、DPn可以
9、显示09和AF共16个字母数字及其他特殊字符。数码管外形共阳极共阴极数字共阴极段码共阳极段码00 x3F0 xC010 x060 xF920 x5B0 xA430 x4F0 xB040 x660 x9950 x6D0 x9260 x7D0 x8270 x070 xF880 x7F0 x8090 x6F0 x90段码位码#includereg52.hunsignedcharcodeDuan=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F;sbitP10=P10;voidmain()P10=0;/共阴极数码管,位码送低电平P0
10、=Duan3;/利用数组进行查表,查出对应数字的段码while(1);/死循环多位数码管的显示n如果每一个LED占用一个独立的I/O端口,那么该系统将占较多的硬件资源。n硬件上所有LED的同名段都连在一起,由同一个I/O端口(段端口)控制n每个LED的控制端分别连接到几个I/O端口n在软件上用扫描方法逐个点亮和熄灭LED,利用人的视觉暂留来实现多位LED显示。n保证每个LED在一秒内显示25次以上。数码管的动态扫描多位LED显示流程图#includereg52.h#defineTHCO0 xee#defineTLCO0 x0unsignedcharcodeDuan=0 x3F,0 x06,0
11、x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F;unsignedcharData_Buffer4=1,2,3,9;sbitP10=P10;sbitP11=P11;sbitP12=P12;sbitP13=P13;voidmain()TMOD=0 x11;TH0=THCO;TL0=TLCO;TR0=1;ET0=1;EA=1;while(1);voidtimer0()interrupt1staticunsignedcharBit=0;TH0=THCO;TL0=TLCO;Bit+;if(Bit=4)Bit=0;P1|=0 x0f;P0=DuanData_Bu
12、fferBit;switch(Bit)case0:P10=0;break;case1:P11=0;break;case2:P12=0;break;case3:P13=0;break;单元三要求n用定时器、数码管完成一个秒表程序晶振频率为11.0592MHZ定时中断完成计时与显示主程序完成秒数据十位与个位的分离实现小数点的闪烁单元四键盘处理n键盘:一组按键开关的集合键盘:一组按键开关的集合。用于输入信息。用于输入信息。n单片机上通常有四个按键单片机上通常有四个按键MODE 模式键模式键用于选择系统工作模式。如多功能时用于选择系统工作模式。如多功能时钟的秒表模式、闹钟设定、时间设定等;钟的秒表模式
13、、闹钟设定、时间设定等;UP 向上键向上键-在某一模式下向上调整参数;在某一模式下向上调整参数;DOWN 向下键向下键在某一模式下向下调整参数;在某一模式下向下调整参数;ENT 确认键确认键确定某项操作,或返回最初的工作界面;确定某项操作,或返回最初的工作界面;高电平:高电平:断开;断开;低电平低电平:闭合:闭合单片机常用常用软件来消除按键抖动。软件来消除按键抖动。基本思想基本思想:检测到有键按下,按键对应的:检测到有键按下,按键对应的IOIO线为低,线为低,软件延时软件延时10ms10ms后,后,IOIO线如仍为低,则确认有键按下线如仍为低,则确认有键按下。如何消除按键的抖动如何消除按键的抖
14、动 当键松开时当键松开时,IOIO线变高,软件延时线变高,软件延时10ms10ms后,后,IOIO线仍为线仍为高,说明按键已松开。高,说明按键已松开。采取以上措施,采取以上措施,躲开了两个抖动期躲开了两个抖动期t1t1和和t3t3的影响的影响。单片机键盘工作的三个层次键盘工作的三个层次第第1 1层:单片机如何来监视层:单片机如何来监视键盘的输入。三种工作方键盘的输入。三种工作方式:式:编程扫描编程扫描定时扫定时扫描描中断扫描。中断扫描。第第2 2层:确定具体按键的键号。层:确定具体按键的键号。第第3 3层:执行键处理程序。层:执行键处理程序。/*四个按键控制四个LED灯对应亮灭*/#inclu
15、dereg52.h#defineTHCO0 xee/5ms时间常数设置#defineTLCO0 x0sbitP26=P26;/四个指示灯IO口定义sbitP25=P25;sbitP24=P24;sbitP23=P23;sbitP20=P20;/四个按键接口,0有效,即低电平,键按下sbitP21=P21;sbitP22=P22;sbitP32=P32;voidmain()TMOD=0 x11;/定时器0初始化TH0=THCO;TL0=TLCO;TR0=1;ET0=1;EA=1;P2=0 x07;/准双向口按键检测之前先置1,同时指示灯亮while(1);voidtimer0()interrup
16、t1staticunsignedcharcount=0;/静态变量,退出函数后,值保留TH0=THCO;TL0=TLCO;if(P20=0|P21=0|P22=0|P32=0)count+;if(count=30)/消抖处理count=0;if(P20=0)mode+;/按键按下,指示灯反转elseif(P21=0)P24=!P24;if(mode=2)Hour+;if(mode=3)Min+;elseif(P22=0)P25=!P25;elseif(P32=0)P26=!P26;elsecount=0;单元四要求n用按键实现秒表与时钟功能的切换;n用按键实现当前时钟的小时、分钟可调节;单元五
17、串口通信n串行通信原理n单片机的串行通信nPC机的串行通信串行通信原理数据通信并行通信串行通信波特率:每秒传输二进制位数的量(kbps或kb/s)。并行传输特点:(1)传输速度快:单位时间内可传输一个字符;(2)通信成本高:每位传输要求一个单独的信道支持;因此如果一个字符包含8个二进制位,则并行传输要求8个独立的信道的支持;(3)不支持长距离传输:由于信道之间的电容感应,远距离传输时,可靠性较低。串行传输特点:(1)传输速度较低,一次一位;(2)通信成本也较低,只需一个信道。(3)支持长距离传输,目前计算机网络中所用的传输方式均为串行传输。通信工作方式单工:传输信号是单向的半双工:传输信号双向
18、但不能同时全双工:传输信号双向且能同时由发送器发送到传输线上,再由接收器从传输线上接收。即用高电平表示二进制数1,低电平表示二进制数0。而且每一位持续的时间是固定的,在发送时是以发送时钟作为数据位的划分界限,在接收时是以接收时钟作为数据位的检测。异步通信,允许通信双方使用不同的时钟,但频率差应在允许范围之内。同步通信,通信双方使用相同的时钟。串行通信同步通信波特率可达56kbps或更高数据数据数据数据数据同步字符同步字符1同步字符2同步传送的数据格式110 0/10/10/10/10/10/10/10/10/1 111起始位停止位奇偶校验8位数据空闲位空闲位第 n个 字符10 0/10/1起始
19、位第n+1个字符0/10/1异步通信数据帧格式异步通信波特率可达20kbps,通信双方应有相同的通信速率(波特率),数据帧格式。单片机的串行通信SBUFSBUF发送控制接收控制发 送端 口接 收端 口1波特率控制TXDRXDDBDBTIRI串行中断写SBUF读SBUF1.数据缓冲寄存器数据缓冲寄存器SBUF两个SBUF,一个用于发送(只写);一个用于接收(只读)。映象地址均为99H。2.数据发送与接收控制数据发送与接收控制发送控制器在波特率作用下,将发送SBUF中的数据由并到串,一位位地传输到发送端口;接收控制器在波特率作用下,将接收接收端口的数据由串到并,存入接收SBUF中。voidjies
20、hou(void)interrupt4/接收缓冲区unsignedcharRxBuff4;/RI为1时,表示有数据到来if(RI=1)/清除接收标志RI=0;/读出数据,放入缓冲区备用RxBuff0=SBUF;中断编号中断名称入口地址0外部中断0(INT0)0003H1定时器0中断000BH2外部中断1(INT1)0013H3定时器1中断001BH4串口中断0023H单片机串行数据的接收单片机串行数据的发送SBUF=TxBuff0;while(!TI);/等待发送完成TI=0;/TI为1时表示,发送了一个数据放在任何一个需要发送的地方单片机串行通信的初始化n设置通信速率(波特率)n设置数据帧格
21、式TMOD=0 x21;TCON=0 x50;IE=0 x9a;D7 D6 D5 D4 D3 D2 D1 D0GATEM1M0GATEM1M0TMOD(89H)M1 M0工作模式功能描述0 0模式013位计数器0 1模式116位计数器1 0模式28位自动重装载计数器1 1模式3定时器0:分成两个8位计数器定时器1:停止工作SCON=0 x50;TH1=0 xfd;TL1=0 xfd;溢出率11.0592MHZ/=(0 x100-0 xfd)*12=307200HZTMOD=0 x21;TCON=0 x50;IE=0 x9a;SCON=0 x50;TH1=0 xfd;TL1=0 xfd;EAES
22、ET1EX1ET0EX0IETMOD=0 x21;TCON=0 x50;IE=0 x9a;SCON=0 x50;TH1=0 xfd;TL1=0 xfd;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 电源控制寄存器电源控制寄存器SMODGF
23、1GF0PDIDLSMOD波特率控制:该位为1时,波特率增大一倍!波特率=2SMODT1溢出率/32波特率=307200/32=9600TMOD=0 x21;TCON=0 x50;IE=0 x9a;SCON=0 x50;TH1=0 xfd;TL1=0 xfd;D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0TCON定时器定时器/计数器控制寄存器计数器控制寄存器单片机串行接口电路1569载波检测DCD接收数据RXD发送数据TXD数据终端就绪信号地GND数据装置就绪请求发送RTS清除发送CTS振铃指示计算机的计算机的RS232接口接口RS232电气特性电气特性:n逻
24、辑“1”:3V15V;逻辑“0”:3V15V。n传输距离15米。n波特率20kb/s。电平转换电平转换计算机电平是TTL电平,它与RS-232C电平不兼容,必须进行电平转换。电平转换的电路很多,MAX232是一种新型的专用集成电路,类似的集成电路还很多。C1+C1-C2+C2-VCCV+V-电压倍增器+5V+10V电压反向器+10V-10V1111+5VT1OUTT2OUTR1OUTR2OUTT1INT2INR1INR2INC1C2C3C4TTL/CMOS输入TTL/CMOS输出RS-232C输出RS-232C输入MAX232C2-V-C1+V+C1-C2+T2OUTR2INR2OUTT2INT1INR1OUTR1INT1OUTVCCGND12345678910161514131211RXD(pin2)RXDTXD(pin3)TXDGND(pin5)GND计算机单片机