1 / 13
文档名称:

Proteus电子钟仿真实训报告.doc

格式:doc   大小:210KB   页数:13页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Proteus电子钟仿真实训报告.doc

上传人:一花一叶 2019/3/8 文件大小:210 KB

下载得到文件列表

Proteus电子钟仿真实训报告.doc

文档介绍

文档介绍:,12M晶振数码管动态扫描驱动——P2口数码管段码驱动——P1口闹铃驱动————(外部中断0,正常、调时、调分、调秒)定时/正常切换键K2——————,显示时间参数。、比较定时时间、驱动闹铃。,调整时间闪烁效果的定时。。,、、闹钟单元、标志位初始化I/O端口初始化定时器、中断初始化时钟显示单元首地址初始化 调用键盘检测函数调用LED显示函数调用LED显示函数延时去抖有键按下吗? N Y 闹钟设定否?是抖动吗? Y N 调用查键值函数 N调用闹钟判断启动函数 Y是时钟修改键吗?Y调用时钟设置函数是闹钟修改键吗? Y 调用闹钟设置函数 N是加1功能键吗? Y调用加1修改功能函数N N主程序函数main流程ftion()关定时器禁止闹钟修改、清闹钟修改标志设置时钟秒单元为显示首地址时钟修改记录值加1 记录值为1吗? Y将时钟秒修改标志置1 N记录值为2吗? Y将时钟分修改标志置1 N记录值为3吗? Y将时钟小时修改标志置1 N时钟单元修改位置记录值清零开定时器 返回 时钟设置函数流程ftion1 禁止时钟修改将闹钟秒单元设为显示首地址闹钟修改记录值加1 将闹钟分单元修改标志位置1记录值为1吗? 将闹钟小时单元修改标志位置1记录值为2吗? 将闹钟已设定标志位置1 闹钟修改记录值清零 恢复时钟显示单元首地址返回闹钟设置函数流程返回闹钟值与计时值时、分单元相等否?启动闹钟标志置位 Y 闹钟10s计时到否? N N停闹、清楚闹钟标志和10s计时标志返回 闹钟判断启动函数流程返回 秒单元内容加1,十进制调整记录值为2吗?到60s否?清零记录值为2吗?分单元内容加1,十进制调整到60min否?清零小时单元内容加1,十进制调整记录值为2吗?到24h否?清零记录值为2吗?分单元内容加1,十进制调整到60min否?清零记录值为2吗?秒单元内容加1,十进制调整到24h否?清零返回加1修改功能函数流程时单元加1时单元加1时单元加1250um中断服务开始关中断满40次(10ms)否?250us次数清零1s到否?10ms次数清零如果已启闹铃则闹铃时间变量加1满40次(10ms)否?秒单元清零时单元加1分单元加1时单元清零分单元清零24h到否?1h到否?中断返回开中断 N N YY N N YY N 、定时计数中断程序、时间调整程序、闹钟设置程序四大模块。在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块作介绍。/***************数字钟程序***************/#include<>#defineucharunsignedcharsbitbuzzer=P2^7; //定义蜂鸣器控制端口/**************函数声明*************/voiddisplay(uchar*p);ucharkeyscan(); //扫描键盘有无键按下ucharsearch(); //按键识别voidalarm(); //闹钟判断启动voidftion0(); //时钟修改voidftion1(); //闹钟修改voidcum(); //加1修改/***************全局变量定义****************/ucharclockbuf[3]={0,0,0};//存放时钟时分秒的十进制数ucharbellbuf[3]={0,0,0};//存放闹钟时分秒的十进制数ucharmsec1; //10ms中断次数ucharmsec2; //1s循环次数uchartimdata,rtimdata; //时钟和闹钟修改位置标志ucharcount; //闹钟启动后10s计时单元uchar*dis_p; //显示缓冲区指针bitarmbit;//闹钟标志,为0闹钟未设定,为1已设定bitrtimbit;//闹钟是否启动标志,为1已启动bitrhourbit;//闹钟小时修改标志,为1正在修改闹钟小时bitrminbit;//闹钟分修改标志,为1正在修改闹钟分bithourbit;//时钟小时修改标志,为1正在修改时钟小时bitm