单片机课程设计。
电子时钟。姓名。
专业班级。学号。
指导教师付文秀
单片机课程设计——电子时钟。
一、 实验目的。
1.掌握单片机的应用并熟悉单片机系统的开发、研制过程。
2.学习单片机定时器时间计时处理、按键扫描及led 数码管显示的设计方法。
3.通过自行设计一个电子时钟,掌握51 单片机基本功能并学会使用。
4.可以比较灵活的掌握单片机**软件keil 的使用和proteus 的使用。
二、功能实现。
1.时间显示功能。
由八个数码管显示时间,以24小时进制,显示格式为00-00-00。以开关a、 b 键分别调整小时和分钟。
2.闹钟设定功能。
可设定任意闹钟并显示闹铃时间。当设置时间到时蜂鸣器**《生日快乐》的**,且数码管上显示闹铃时间。按停止键g 使闹铃声停止。
3. 秒表计时功能。
开关d 控制秒表的开始、结束和清零。按键开始计时,再按一次停止计时,再按一次复位。
4.****功能。h 键实现**(《生日快乐》歌)的单独**。g键禁止**的**。
三、工作原理及设计思路。
1.系统整体设计框图。
图1 电路模块框图。
2.主控电路选用stc89c54 型号单片机。
它是兼容8051内核的、高速/低功耗的新一代8051单片机,可反复设置12 时钟/机器周期,工作频率为0~40mhz,相当于普通8051的0~80mhz。内部带有16k 的程序存储空间和节的rom。由于其内部带有16k 的eeprom,具有看门狗的功能,所以系统无需在外部增加存储字模数据的存储芯片和专用看门狗芯片,极大地简化了电路的设计,降低了系统的成本。
单片机具有isp功能,不需要专用的编程器编程。单片机的最小系统构成所需要的部分有晶振和两个电容构成**电路;一个电容和一个电阻构成复位电路;单片机的31 管脚接高电平,使得单片机可以访问内部的存储器,上电即可工作。
图2 mcs-51单片机管脚图。
3.实验中使用交流蜂鸣器,根据i/o 端口输出的方波不同,蜂鸣器就发出不同的声音。使用51 单片机产生电子**时,要对声音的特性有所了解。本次实验中在只考虑声音的高低音变化。
我们要产生不同频率的声音时,可以让51单片机产生不同频率的方波。在程序中,我们使用一个字节来表示每个音符,其中高四位代表**的高低,低四位代表音符的节拍。然后根据乐谱就可以生成十六进制**。
闹铃声由交流蜂鸣器产生,电路如图2,当p1.7输出不同频率的方波,.蜂鸣器便会发出不同的声音。
图3 闹铃电路设计。
4.动态显示法
在数码管显示上,采用动态显示。设计的电路使单片机的p0连接到8 个七段数码管显示器。这8个共阳七段显示器的a、b、c、d、e、f和g全部连接在一起,因此p0 输出的数据应该会在8个数码管上都显示出来,并且显示的数字是一样的。
但是我们利用p2 的端口来控制这8 位共阳数码管,让他们使用扫描的方式分别显示数字,这样使得p0 输出的数据恰好只会在其中一个数码管上面显示出来。当程序执行的速度很快的时候,由于视觉暂留的关系,我们就会看到8 位数码管上面显示出不同的数字了。
利用单片机定时器完成计时功能,定时器0计时中断程序每隔5ms中断一次并当作一个计数,每中断一次计数加1,当计数200次时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。
具体的电路如下图:
图4 显示部分电路。
四、软件设计。
图5 主程序流程图。
软件程序编程如下:
#include <>
#define timer0_count 0xec78 /*10000h-(12,000,000/(12*200))
#define times 25
unsigned char nn;
unsigned char tab[ ]0~~~9
unsigned char int_time,int_time2,int_time3 ; 中断次数计数变量。
unsigned char msecond; /毫秒计数变量。
unsigned char second,second2; /秒计数变量。
unsigned char minute; /分钟计数变量。
unsigned char hour; /小时计数变量。
unsigned char naozhonghour; /闹钟小时计数变量。
unsigned char naozhongminute; /闹钟分钟计数变量。
unsigned char naozhongsecond; /闹钟秒钟计数变量。
unsigned char hour; /小时计数变量。
unsigned char keya=0,keyb=0,keyc=0,keyd=0,keye=0,keyf=0,keyg=0,keyh=0; /按键。
初始值,即断开情况下。
unsigned char i=0,j=0;
void singing();
void delay(nn); 函数delay()存在文件。
code unsigned song=
code int note=
unsigned char ii=0;
unsigned char hi_note,low_note;
定时器t1 用来****。
static void timer1_isr(void) interrupt 3 using 2
tr1=0;
tl1=low_note;
th1=hi_note;
tr1=1;
p3_6=~p3_6;
void delay2(void) /延时函数,延时约0.6ms
unsigned char j;
for(j=0;j<180;j++)
***函数功能:显示秒的子程序入口参数:s
void displaysecond(unsigned char s)
p2=0xbf;
p0=tab[s/10];/显示十位。
delay2();
delay2();
delay2();
p2=0x7f;
p0=tab[s%10]; 显示个位。
delay2();
delay2();
delay2();
p2=0xff; /关闭所有数码管。
p0=0xff;
delay2();
delay2();
delay2();
函数功能:显示分钟的子程序入口参数:m
void displayminute(unsigned char m)
p2=0xf7;
p0=tab[m/10];/显示分钟的十位。
/display[21]=p0;
delay2();
delay2();
delay2();
delay2();
p2=0xef;
p0=tab[m%10]; 显示分钟的个位。
/display[22]=p0;
delay2();
delay2();
delay2();
p2=0xdf;
p0=0xbf; /分隔符“-”的段码。
delay2();
delay2();
delay2();
p2=0xff; /关闭所有数码管。
p0=0xff;
delay2();
delay2();
delay2();
函数功能:显示小时的子程序入口参数:h
void displayhour(unsigned char h)
p2=0xfe;
p0=tab[h/10]; 显示十位。
/display[18]=p0;
delay2();
delay2();
delay2();
p2=0xfd;
p0=tab[h%10]; 显示个位。
/display[19]=p0;
delay2();
delay2();
delay2();
p2=0xfb;
p0=0xbf; /分隔符“-”的段码。
delay2();
delay2();
delay2();
p2=0xff; /关闭所有数码管。
p0=0xff;
delay2();
delay2();
delay2();
函数功能:显示秒表秒数的子程序入口参数:m
void displaysecond2(unsigned char m) /毫秒表的显示。
p2=0xdf;
p0=tab[m%10]&0x7f;
delay2();
delay2();
p2=0xef;
p0=tab[m/10];
delay2();
delay2();
p2=0xff;
p0=0xff;
delay2();
单片机课程设计题目,望大家帮帮忙非常感谢
一 课程设计题目。课程设计的题目从以下3个中任选其一。1 lpc2290控制触摸屏 以lpc2290为微控制器,实现对触摸屏的手写输入控制。2 lpc2290控制led矩阵 以lpc2290为微控制器,在16 16的led矩阵上显示字符。如显示 一 大 四 等。3 lpc2290控制矩阵键盘 以lp...
2019航空电子电气课程设计
仪表飞行程序课程设计。民用飞机副翼偏转状态监控系统设计。一 设计概述。本部分简要介绍课程设计的内容 目的 意义。本段仅供参考 本设计从飞行原理的角度分析了民用航空飞机的副翼偏转的工作原理,研究了相应的控制 驱动等工作机制,阐述了副翼偏转状态监控的重要意义,设计了民用飞机副翼偏转状态监控系统,绘制了系...
2019届单片机毕业设计题目
请同学们从以下四个题目中选择适合自己的项目进行设计。祝同学们毕业设计早日成功!1 基于单片机的花样流水灯。要求 在单片机控制下,当拨动开关k1发出低电平 k1 0 时,发光二极管l1 l12从两头向中间逐个点亮 时间间隔由电位器w来控制 当l1 l12全部点亮后延时2秒钟全部熄灭,如此往复循环。当拨...