- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于PIC16F877A的数字钟设计
电子工程系项目考核(报告)
项目名称:数字时钟项目
姓 名
班 级
学 号
课程名称
项目要求:
数码管默认显示00:00。数码管1,2 表示小时,数码管 3,4 表示分钟。如此,实现时钟功能。要求能够整点报时、闹钟提示;并附带有秒表功能。按键可以调整时钟时间、切换显示页面和设定闹钟时间等。
项目原理分析
在项目用的单片机开发板上单片机的IO 口接四位数码管的各段。同时开发板共阴数码管的阴极由138 译码器的输出端控制。在该项目中我采用了数码管的动态显示,即每位数码管点亮 2ms 时间左右,由于人的视觉暂留现象及发光二极管的余辉效应,只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O 端口,而且功耗更低。在实现了数码管的动态显示的基础上在主程序中通过计算定时器1的中断次数,从而得到计时时间和秒表时间的基准时间。同时在主程序中添加按键处理程序,实现时钟的开始、中断和校时,同时实现闹钟定时和切换显示等功能,还有秒表计时功能。
硬件电路图以及原理
3.1 硬件电路图如下:
3.2硬件原理:
该项目中,主要的功能模块有:数码管显示模块;按键模块;蜂鸣器模块。数码管显示模块主要是由芯片PIC16F877A内部的定时器1的定时中断实现数码管的动态显示。按键模块主要利用矩阵式按键实现多按键功能,矩阵式按键原理是在一端加高电平,然后检测另一端是否为高电平来判断按键是否按下,通过不同的定义可以让按键实现不同的功能。蜂鸣器模块通过三极管的开关作用和驱动作用由芯片控鸣叫与否。
四、程序说明以及程序流程图
该时钟默认显示页面为时钟计时页面,按键SW1 控制时钟、秒表的开始和中断,按按键SW1一次,如果数码管在显示秒表,则开始计秒功能;否则,开始正常计时;再按一次SW1则实现中断功能。按键SW2实现是数码管的选位,从第一个数码管开始,按一次就选中下一位数码管,循环选择。SW3实现的是加1功能,每按一次就在SW2选中的位上加1。SW4是实现数码管切换显示功能,按一次就进入闹钟调时的显示页面,再按一次就进入秒表显示页面,实现数码管显示在时钟计时、闹钟定时和秒表计时这三个不同页面的循环切换显示。图1是时钟、秒表计时开始和中断,以及闹钟提醒的流程图;图2是显示页面的却换流程图;图3是校时和定时流程图。下面就是程序的流程图:
h=1
五、程序清单(要求有详尽的注释)
main()//主函数
{
int a=1,b,z,h=1;//定义一个标志位a,b
ints1=0,s2=0,s3=0,s4=0; //时钟小时分钟的十位和个位
int n1=0,n2=0,n3=0,n4=0;
//闹钟小时分钟的十位和个位
int m1=0,m2=0,m3=0,m4=0;
//秒表的标志位
static bit biaozhi=0;
//时钟的静态标志位
static bit mbz=0;
//秒表的静态标志位
ADCON1=0X06;//初始化
TRISA=0X00;
TRISB=0X01;//外部中断输入
PORTB=0X00;
TRISD=0X01;//设置RD0输入
PORTD=0X01;//设置RD0输入
TRISE=0X00;
timer1init();//定时器1初始化
INTE=1; //外部中断使能
INTEDG=1;//外部中断上升沿
RA1=1;//使能138译码器
LED1=0;LED2=0;LED3=0; LED4=0;//数码管1显示4
while(1)
{
RD4=1;// 按键SW1一端高电平
if(RD0==1)// 判断按键是否按下
{
delay(10);// 延时10mS去键抖
if(RD0==1)//再次确认按键是否按下
{RD2=1;delay(30);RD2=0; //蜂鸣器响30mS
if(h==3) //判断是否是秒表显示页面
{mbz=!mbz;t=0;} //秒表标志位取反,开始计时或中断
else
{biaozhi=!biaozhi;time=0;}//时钟标志位取反,开始计时或中断
}
while(RD0==1);//等待放手
}
RD4=0;
RD5=1; //按键SW2一端高电平
if(RD0==1)// 判断按键SW2是否按下
{delay(10);// 延时10mS去键抖
if(RD0==1)//再次
您可能关注的文档
- 国内外知名品牌UPS电源.doc
- 国产软件CAXA必威体育精装版版2013实体设计全套教学课件b.ppt
- 国内最全的企业各种财产险培训手册.ppt.ppt
- 国内汽车厂商自备目录.doc
- 国培计划小学数学五六模块简报.doc
- 国外园林景观小品荟萃.ppt
- 国培作业--小学学科教学工作质量评价优秀方案.doc
- 国外电视媒体PPT模板.ppt.ppt
- 国外烘干机说明书.pdf
- 国学及其演变.ppt
- 中考语文复习专题二整本书阅读课件.ppt
- 中考语文复习积累与运用课件.ppt
- 2025年初中学业水平考试模拟试题(二)课件.ppt
- 四川省2015届理科综合试题48套第12套.pdf
- 【课件】战争与和平—美术作品反映战争+课件-2024-2025学年高中美术湘美版(2019)美术鉴赏.pptx
- 【课件】青春牢筑国家安全防线 课件 2024-2025学年高中树立总体国家安全观主题班会.pptx
- 【课件】原始人的创造+课件高中美术湘美版(2019)美术鉴赏.pptx
- 上海证券-美容护理行业周报:流量加快去中心化,强运营头部品牌影响较小 -2024-.pdf
- T_CSEIA 1005—2023_能源工业互联网平台数据治理要求.pdf
- T_CDSA 504.16-2023_急流救援技术培训与考核要求.pdf
文档评论(0)