全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
声像1001班单片机原理及应用课程设计马子龙2011.12.19一、题目要求用C语言编写AT89C51单片机程序,设计一个智能数字钟。基本要求:1.C语言程序要求是模块化设计。2.该闹钟基于AT89C51单片机及相关外围电路进行设计。3.该闹钟有4个数码管(共阳极),可分别显示时间(时、分、秒)、及定时时间(分、秒)。4.该闹钟有4个按钮,S1是切换显示按键,该键按下时可分别实现切换正常走时显示、设定走时显示、设置定时时间,启动定时,回到正常状态等功能。S2是设定键,即该键按下,将分别选中需要设定的选项。S3键是加键,即按下去表示相应选项加1。S4键是减键,即按下去表示相应的选项减1。5.该闹钟可以定时时间到,LED将发出提示闪光,且持续30s。发挥要求:1.定时时间可被打断,即打断后恢复时继续计时。2.设置闹钟报警功能;3.能切换显示年月日等信息。二、设计器材1.计算机2.Keil C51开发软件3.AT89C51单片机实训开发板4.双龙烧写软件三、成绩评定实训成绩=实训作品50%+实训报告20%+答辩成绩20%+平实成绩10%四、时间安排1.周一上午:布置题目,查找相关资料下午:介绍、讲解发软件的使用2.周二上午:学习、讲解Keil C51开发软件的使用方法下午:自行设计课程方案3.周三上午:分析设计方案下午:按照设计方案进行编程4.周四上午:编写源程序代码下午:继续编写源程序代码5.周五上午:程序调试与功能测试下午:撰写实训报告书五、功能分析根据题目要求,经分析,其系统框图如图19所示。整个系统由4个部分组成:单片机控制部分、按键部分、蜂鸣器报警部分和数码管及发光二极管显示部分。数码管显示按键1451单片机控制器LED显示 图1按键部分由四个按键组成,低电平有效;数码管部分由1个四位共阳极数码管组成。LED显示部分为8个发光二极管。(1)硬件设计51单片机有四个I/O口,可分别分配如下:P0.0-P0.3分别接4个LED,即LED1(P0.0)、LED2(P0.1)、LED3(P0.2)、LED4(P0.3)。P1.0-P1.5分别接6个数码管的使能控制端。P2.1-P2.4分别接4个按键,即S1(P2.4)、S2(P2.3)、S3(P2.2)、S4(P2.1)。P3.0-P3.7分别接6个数码管的字型控制端。时钟电路引脚(19脚)和(18脚)接12MHz的晶振,构成时钟电路。(2)软件设计该闹钟系统的软件设计要求采用C语言进行模块化设计,功能明确,条理清晰,通俗易懂。设计思路是:利用51单片机的定时T0的中断功能,选择方式1,定时50ms,即每隔50ms产生一个定时中断。在中断服务程序中,设定一个计数变量,该变量计数20次,表示历时1s,此时将调用计时函数jishi( ),在计时函数中,秒变量每增加至60,则分变量加1;分变量每增加至60,则时变量加1;时变量每增至24,则天变量加1及星期变量加1等等,以此类推。在主函数中,设定时间、闹钟、日历等初始值。然后进入一个死循环,使之不停地调用按键函数扫描是否有键按下,若有,则执行相应的代码。若无则显示当前的时间。具体软件设计流程图下图所示。六、部分源程序设计流程图(闹钟程序)1.主函数main( )流程图 2.中断复位子程序timer0( )3.计时子函数jishi( ) 4.S1按键扫描函数key_change( ),S2按键扫描函数key_set( )六、调试1.编译时常见错误(1)语句漏掉分号“;”或多加分号。(2)使用未定义的变量。(3)源程序中出现中文字符。(4)调用的子函数参数类型不一样;(5)子函数写在主调函数前,但未声明。(6)关键词“#include”、“#define”、“main( )”等书写有误。(7)字符串常量与字符常量混淆。(8)忽略了“=”与“=”的差别。(9)switch语句中,漏掉break语句,使程序意义改变。同时要注意case后的是一个冒号“:”,而非分号“;”。(10)忽视了while与dowhile的区别。(11)/是单行注解符号,/*/是多行注解符号,且两种要相匹配,不要忽略其一,否则将有多行源程序被屏蔽掉。(12)花括号 不匹配,漏掉了其中一个或多写了几个。2.联调设置(1)将C源程序在Keil软件内编译成功后,生成*.hex文件。(2)在Proteus仿真软件中搭建仿真电路,设置仿真参数,并将*.hex文件加载到51单片机中。(3)点击仿真开始按钮,观察结果是否正常。(4)若存在问题,可在Keil软件中调试更正,再编译,然后可直接点击仿真按钮,观察问题是否排除。3.注意事项(1)sbit的应用,在单片机C语言中,可以用sbit设置某个I/O端口,使之独立控制其运行。如:sbit fm=P16;此处将P16口定义为蜂鸣器的输出控制端,当直接将fm赋值为fm=1时,意味着此时P16=1,且不影响其他管脚的功能设置。(2)宏定义#define uchar unsigned char是将uchar宏定义为unsigned char类型(无符号字符类型);#define uint unsinged int是将uint宏定义为unsinged int类型(无符号整型)。这样做的目的是使定义无符号类型时方便简介,而uchar、uint并不是系统存在的类型。(3)在51单片机C语言中,定时器中断函数名的固定格式为:void timer0() interrupt 1(4)定时器初值的计算:定时50ms,晶振是12MHz,模式1。TH0=(65536-50000)/256=60=0x3c TL0=(65536-50000)%256=176=0xb0TMOD=0x01(5)注意闰年与平年的月份天数在二月份是不同的。(6)注意51单片机需要包含头文件#include,或#include或#include.,三者选其一即可。(7)为方便起见,一般把用于数码管显示的字型码事先存于一个无符号数组内。调用时,只要传递数组的下标地址即可。开始second=0;minite+;second=60?minite=60?minite=0;hour+;hour=24?hour=0;day+;week+;week=8?year是闰年?week=0;day=0;month+;day=table1month+1?month=13?month=0;year+;day=table2month+1?day=0;month+;month=13?month=0;year+;NY开始S1=0?延时delay( );while(!s1)set_1+;set_1=1;S1=0?set_1=8?开始S2=0?延时delay( );while(!s1)set_2+;set_2=1;S2=0?set_2=4?七、调试1.编译时常见错误(1)语句漏掉分号“;”或多加分号。(2)使用未定义的变量。(3)源程序中出现中文字符。(4)调用的子函数参数类型不一样;(5)子函数写在主调函数前,但未声明。(6)关键词“#include”、“#define”、“main( )”等书写有误。(7)字符串常量与字符常量混淆。(8)忽略了“=”与“=”的差别。(9)switch语句中,漏掉break语句,使程序意义改变。同时要注意case后的是一个冒号“:”,而非分号“;”。(10)忽视了while与dowhile的区别。(11)/是单行注解符号,/*/是多行注解符号,且两种要相匹配,不要忽略其一,否则将有多行源程序被屏蔽掉。(12)花括号 不匹配,漏掉了其中一个或多写了几个。2.联调设置(1)将C源程序在Keil软件内编译成功后,生成*.hex文件。(2)将*.hex文件通过双龙ISP软件下载到51单片机开发板中。(3)观察结果是否正常。(4)若存在问题,可在Keil软件中调试更正,再编译,然后可直接点击仿真按钮,观察问题是否排除。3.注意事项(1)sbit的应用,在单片机C语言中,可以用sbit设置某个I/O端口,使之独立控制其运行。如:sbit fm=P16;此处将P16口定义为蜂鸣器的输出控制端,当直接将fm赋值为fm=1时,意味着此时P16=1,且不影响其他管脚的功能设置。(2)宏定义#define uchar unsigned char是将uchar宏定义为unsigned char类型(无符号字符类型);#define uint unsinged int是将uint宏定义为unsinged int类型(无符号整型)。这样做的目的是使定义无符号类型时方便简介,而uchar、uint并不是系统存在的类型。(3)在51单片机C语言中,定时器中断函数名的固定格式为:void timer0() interrupt 1(4)定时器初值的计算:定时50ms,晶振是12MHz,模式1。TH0=(655
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园吃药喂药通知书
- 广东多地暴雨停课通知书
- 广丰冬季开学通知书
- 庆丰中心小学开学通知书
- 延鲁武校老生返校通知书
- 开发商延期接房通知书
- 开福区政府限电通知书
- 张圩村召开会议通知书
- 张桥水厂停水通知书
- 当阳职高放假通知书
- 2025北京海淀高三上学期期中化学试卷和答案
- 2025版哮喘病症状解读及护理要点
- 高一年级全市联考英语质量分析
- 加氢站安全操作规程
- 贵州省铜仁市思南中学2026届高三上学期10月月考化学试卷(含答案)
- 放疗科头颈癌放疗副作用处理策略
- 2025年汽车外饰件行业分析报告及未来发展趋势预测
- 储罐施工安装施工方案
- 2025年重组人促红素行业分析报告及未来发展趋势预测
- 护理指南-安宁疗护实践指南(2025年版)全面解读课件
- 博士组合物使用指南
评论
0/150
提交评论