1、单片机课程设计报告 第 1 页 共 17 页 一一 需求分析需求分析 本设计是基于51单片机时钟的LED显示,通过单片机产生计数功能,通过 LED数码管显示,显示时间时、分、秒,并用按键进行时间调整,同时带有整点 报时功能。 二二 总体设计总体设计 1 设计思路 通过51内部定时器产生时钟来进行准确计时,用独立键盘来实现时钟的可 调,最后由LED数码管来显示。 2.器件选择 AT89C52 74LS138 8 位共阴数码管 7407 MAX232 串行口九针插头 12M 晶振 按键 电容 排阻 3.开发环境 KEIL Uvision4 4.下载工具 STC-ISP-V3.5 单片机课程设计报告
2、 第 2 页 共 17 页 三三 硬件电路分析硬件电路分析 该硬件电路由显示电路、电源电路、信号处理电路、单片机最小系统、串口 通信以及按键控制电路六部分构成。 该单片机开发板具备了电源、复位、时钟、键盘、显示等电路,可用于编程 开发单片机的多种控制功能。 由于外部硬件电路已经确定,单片机各引脚已经连接好,其对应位也已经确 定好,因此在进行程序设计前,要对AT89C52各引脚连接的电路以及所控制的电 路进行分析,分析后确定了以下信息: (1)P0口连接数码管八段,通过写P0口来控制数码管显示的内容; (2)P1.0口控制着电路板上的绿色指示灯的亮灭,其中1为灭,0为亮; (3)P2口: 单片机
3、课程设计报告 第 3 页 共 17 页 P2.7 P2.4分别连接K1K4按键,编程时,需要通过读取P2.7 P2.4的值获取按键 状态; P2.0 P2.2分别连接3-8译码器的A、B、C输入端,编程时需要写P2.0 P2.2口来 实现控制六个数码管的显示; P2.3连接3-8译码器的使能端,编程时需要对P2.3写入0,; (4)单片机复位电路已经连接好,复位键可以直接使用,编程时无需编写复位 程序; (5)振荡电路已连接好,其中晶振为12MHz,通过利用中断进行精确计时; 四四 软件设计软件设计 1进行软件设计前需要先学习下KEIL Uvision4和 STC-ISP-V3.5两款软件的使
4、用 方法。 关于KEIL Uvision4软件使用时需要注意问题: 1)新建工程后,会弹出一个“Select Device For Target”对话框,此时需要 点开Atmel然后选择AT89C52,确定; 2)在刚建的工程下,新建file,编好文件保存时在给文件命名是一定要带上 扩展名“.c”; 3)编写好的C文件需要添加到当前Target下,编译前需要找到“Option For Target”对话框进行设置,把晶振频率设置为12MHz,点击“output”,在“create HEX fi”前打上勾,生成十六进制的文件,以用于下载到单片机内。 关于STC-ISP-V3.软件使用时需要注意的
5、问题: 1)选择单片机型号(STC89C52RC); 2)选择Clear Buffer (清缓冲区),Open File打开待烧录的.HEX文件 ; 3) 根据实际连接选择COM口, 实际所用COM口可通过设备管理器查询得到; 4)冷启动。电路板断电后点击Download按钮,然后接通电路板电源,等待 编程结束,成功下载到单片机内。 单片机课程设计报告 第 4 页 共 17 页 2.程序设计思路 本次要实现的功能是可调数字钟,分析后把程序分成五个子模块进行编写, 其中五个子模块分别为时间处理子程序、显示子程序、整点报时子程序、按键扫 描子程序以及中断子程序。 3.各模块实现的功能以及分析 (1
6、)时间处理子程序 该模块中把秒设置为六十进制,分钟设置为六十进制,小时设置为二十四进 制,同时实现秒分和分时之间的进位。 实验程序如下: void time_dis( void) if(sec=60) /秒钟设为 60 进制 sec=0; min+; if( min=60) /分钟设为 60 进制 min=0; hour+; if(hour=24) /时钟设为 24 进制 hour=0; (2)显示子程序 该程序实现数码管的显示。 除了正常计时显示还需要考虑上调节状态下数码 管的显示情况,因此需要用到一系列的条件判断语句。调节按键没有按下时,数 码管显示时钟,此状态下,时与分和分与秒之间的小数点以2Hz的频率闪烁;一 旦调节按键按下,则相应的调节位以2Hz的频率闪烁,由于调节时,只调时分秒 的个位,十位一直显示即可。 显示时的程序流图如下: 单片机课程设计报告 第 5 页 共 17 页 而对于显示分的子程序,同显示时的程序一样,判断条件为adjust_key=2,在写