课程设计报告使用51单片机设计软件钟、涡流称重计、光电转速计

上传人:人*** 文档编号:458252768 上传时间:2024-02-20 格式:DOC 页数:15 大小:197KB
返回 下载 相关 举报
课程设计报告使用51单片机设计软件钟、涡流称重计、光电转速计_第1页
第1页 / 共15页
课程设计报告使用51单片机设计软件钟、涡流称重计、光电转速计_第2页
第2页 / 共15页
课程设计报告使用51单片机设计软件钟、涡流称重计、光电转速计_第3页
第3页 / 共15页
课程设计报告使用51单片机设计软件钟、涡流称重计、光电转速计_第4页
第4页 / 共15页
课程设计报告使用51单片机设计软件钟、涡流称重计、光电转速计_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《课程设计报告使用51单片机设计软件钟、涡流称重计、光电转速计》由会员分享,可在线阅读,更多相关《课程设计报告使用51单片机设计软件钟、涡流称重计、光电转速计(15页珍藏版)》请在金锄头文库上搜索。

1、课程设计报告课题一 使用51单片机设计软件钟一、 实验目的:1. 掌握元器件及芯片的焊接与调试;2. 了解基于51单片机的软件钟的工作原理;3. 会用C语言编写时钟函数,复习用switch语句和do-while语句、for语句实现循环的方法;4. 会使用MEDWIN编译调试程序,并生成HEX,通过数据线下载到电路板上;5. 根据自己焊接的板子在程序中设置按键控制时钟的调整。二、 算法原理:所谓软件钟就是利用51单片机制作一个电子时钟。其算法就是以单片机的时钟为基准,记录单片机时钟脉冲的数量,当数量足够多(如脉冲为每秒6Mhz,那么记录6M个脉冲所需时间即为1秒)就可以将显示部分的“秒”位加一。

2、加到60以后进位为“分”,”秒“位清零以后继续记录。当“分”累加为60以后进位为”时“,”分“位清零以后继续记录,当”时“位为24以后,”时“位清零并继续记录。三、 硬件原理: 显示电路:单片机外围电路(复位电路,时钟电路): 按键控制电路: 数码管驱动电路:四、 实现功能要求:使用中需要对时钟进行调整。在调整的时候需要一个按键来进入调整状态。进入调整状态以后需要一个按键来向左移动调整位置,一个按键来向右移动调整位置,一个按键来增加所选位置的数值,一个按键来减小所选位置的数值。调整完成以后还需要一个按键来 退出调整位置,恢复时钟的计数运转。以上所需按键可以根据需要合并。在调整中另外一个需要注意

3、的问题是如何显示目前所选定调整的位置(如秒的个位或者十位,分的个位或者十位等)。可以采用是否显示数位右下的小数点或者所选需调整位是否闪烁来让操作者明确目前自己所选定的需要调整的数位。五、 设计内容:(1)硬件焊接:按照电路图焊接好各个元器件和芯片插座,注意焊接时焊点要尽量光滑,与管脚接触良好,元件的管脚弯曲处要尽量光滑,有需要区分正负极的元器件焊接时要注意不要焊反。焊接完后将元件多余的管脚用尖嘴钳剪掉,以免形成短路。(2)软件设计:1子程序设计:A. 单片机初始化程序a) 定时器T0中断服务程序B. 显示子程序C. 时钟运行计数子程序D. 时间数据送显示缓冲区子程序E. 设置时间子程序F. 时

4、钟调整子程序G. 键值读入子程序H. 延时子程序2.实验程序清单:第 1 页 共 15 页#pragma db oe#include #include #include #include #include #include #define uint unsigned int#define uchar unsigned char#define ulong unsigned longvoid display(void);void initsiu(void);void delay(void);void sztz(void);void jssz(void);void setsz(void);void

5、tzszw(uchar zj);uchar inkey(void);uchar sec,min,hour;uchar disdat6;uchar code tab=0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0x6f;uint count;uchar set_state,xsd;sbit zsd=P10;main()uchar i; for (i=0;i2;i+) disdati= 0; /将显示缓存清零 initsiu(); /初始化单片机 set_state=0; do i=inkey(); /设置时钟 if(i=0x70) setsz(); js

6、sz(); display(); /显示 if(sec & 0x01) /指示灯闪烁 zsd=1; else zsd=0; while(1);void display(void)/六位数码管显示程序,disdat是要显示的内容(是09的数字),xsd是在那一位显示小数点 uchar i,disa,disb,disc; disb = 0x00; /显示第n位 for (i=0;i6;i+) /共显示6个数据 disa = disdati; /显示数据 if (disa 2) disdat0=0; else if (disdat0=0) disdat0=2; else disdat0-; hour

7、=disdat0*10+disdat1; break; case 1: /时低位调整 if (zj=0) disdat1+; if (disdat19) disdat1=0; else if (disdat0!=2&disdat1=0) disdat1=9; /else /disdat1-; else if(disdat0=2&disdat1=0) disdat1=3;else disdat1-; if(disdat0=2&disdat13) disdat1=0; hour=disdat0*10+disdat1; break; case 2: /分高位调整 if (zj=0) disdat2+

8、; if (disdat25) disdat2=0; else if (disdat2=0) disdat2=5; else disdat2-; min=disdat2*10+disdat3; break; case 3: /分低位调整 if (zj=0) disdat3+; if (disdat39) disdat3=0; else if (disdat3=0) disdat3=9; else disdat3-; min=disdat2*10+disdat3; break; case 4: /秒高位调整 if (zj=0) disdat4+; if (disdat45) disdat4=0; else if (disdat4=0) disdat4=5; else disdat4-;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号