




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
提供全套毕业论文,各专业都有单片机课程设计课题: 计数器系 别: 电气与电子工程系专 业: 电子信息工程姓 名: 学 号: 093409160河南城建学院 2011年12月28日成绩评定一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。二、评分评分项目设计报告评分答辩评分平时表现评分合 计 (100分)任务完成情 况(20分)课程设计报告质量(40分)表达情况(10分)回答问题情 况(10分)工作态度与纪律(10分)独立工作能力(10分)得分课程设计成绩评定班级 姓名 学号成绩: 分(折合等级 )指导教师签字 年 月 日一、前言 自动计数器在日常生活中屡见不鲜,它是根据不同的情况设定的,能够 通过技术功能实现一些相应的程序, 如通过自动计数器来实现自动打开和关闭各 种电器设备的电源。广泛用于路灯,广告灯,电饭煲等领域。 自动计数器给人们生产生活带来了极大的方便, 而且大大地扩展了自动计数器的 功能。诸如自动定时报警器、按时自动打铃、时间程序自动控制、定时广播、自 动启闭电路,定时开关烤箱、甚至各种定时电器的自动启用等,所有这些,都是 以自动计数器为基础的。由于它的功能强劲,用途广泛,方便利用,所以在这个 电子科技发展的时代,它是一个很好的电子产品。如在洗衣机的定时控制以及路 灯等一些人们不能再现场控制的操控。都可以利用自动计数器来完成这样的功 用。可见此系统所能带来的方便和经济效益是相当远大的。因此,研究自动计数 器及扩大其应用,有着非常现实的意义。 本次课设设计是检验理论学习水平、实践动手能力及理论结合实际的能力,要求 具有一定的分析处理问题能力和自学能力的一个比较重要得实践课程。 通过这样 的过程,使我们的论文及实践水平有一次较为全面的检查,同时也使我们硬件方 面的能力有所提高,对以后的学习有这非常重要的意义。 二、设计目的1、使学生增进对单片机的感性认识,加深对单片机理论方面的理解;2、使学生掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、i/o口、a/d、d/a、串行口通讯等;3、使学生了解和掌握单片机应用系统的软硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。三、设计要求1、可以实现六位的计数:0999999 2、键盘能实现全锁、半锁、清零功能3、能实现计数的自加一 减一四、总体设计1、 电路的总体原理框图数码管74ls138 单片机按键开关74ls472、 led显示器的结构与原理(1)结构种类 七段led显示器(数码管)系发光器件的一种。常用的led发光器件有两类:数码管和点阵。数码管内部有七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组成字符。常见数码管有10根管脚。管脚排列如下图(a)所示。其中com为公共端,根据内部发光二极管的接线形式可分为共阴极和共阳极两种。如下图(b)(c)所示,使用时,共阴极数码管公共端接地,共阳极数码管公共端接电源。发光二极管需510ma的驱动电流才能正常发光,一般需加限流电阻控制电流的大小。 (2)显示原理 led数码管的ag七个发光二极管。加正电压的发光加零电压的不能发光,不同亮暗的组合能形成不同的字符,这种组合称为字型码。共阳极和共阴极的字型码是不同的,如下所示。 led字符显示代码表显示 段符号 十六进制代码 dp g f e d c b a 共阴极 共阳极0 0 0 1 1 1 1 1 1 3fh c0h1 0 0 0 0 0 1 1 0 06h f9h2 0 1 0 1 1 0 1 1 5bh a4h3 0 1 0 0 1 1 1 1 4fh b0h4 0 1 1 0 0 1 1 0 66h 99h5 0 1 1 0 1 1 0 1 6dh 92h6 0 1 1 1 1 1 0 1 7dh 82h7 0 0 0 0 0 1 1 1 07h f8h8 0 1 1 1 1 1 1 1 7fh 80h9 0 1 1 0 1 1 1 1 6fh 90h3、 译码器原理(74ls47) 译码为编码的逆过程。它将编码时赋予代码的含义“翻译”过来。实现译码的逻辑电路成为译码器。译码器输出与输入代码有唯一的对应关系。74ls47是输出低电平有效的七段字形译码器,它在这里与数码管配合使用,表2列出了74ls47的真值表,表示出了它与数码管之间的关系。 表2 输 入 输 出 显示数字符号 lt() rbi(-) a3 a2 a1 a0 bi()/rbo() a() b() c() d() e() f() g() 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 x 0 0 0 1 1 1 0 0 1 1 1 1 1 1 x 0 0 1 0 1 0 0 1 0 0 1 0 2 1 x 0 0 1 1 1 0 0 0 0 1 1 0 3 1 x 0 1 0 0 1 1 0 0 1 1 0 0 4 1 x 0 1 0 1 1 0 1 0 0 1 0 0 5 1 x 0 1 1 0 1 1 1 0 0 0 0 0 6 1 x 0 1 1 1 1 0 0 0 1 1 1 1 7 1 x 1 0 0 0 1 0 0 0 0 0 0 0 8 1 x 1 0 0 1 1 0 0 0 1 1 0 0 9 x x x x x x 0 1 1 1 1 1 1 1 熄灭 1 0 0 0 0 0 0 1 1 1 1 1 1 1 熄灭 0 x x x x x 1 0 0 0 0 0 0 0 8 (1)lt():试灯输入,是为了检查数码管各段是否能正常发光而设置的。当lt()=0时,无论输入a3 ,a2 ,a1 ,a0为何种状态,译码器输出均为低电平,若驱动的数码管正常,是显示8。 (2)bi():灭灯输入,是为控制多位数码显示的灭灯所设置的。bi()=0时。不论lt()和输入a3 ,a2 ,a1,a0为何种状态,译码器输出均为高电平,使共阳极数码管熄灭。 (3)rbi(-):灭零输入,它是为使不希望显示的0熄灭而设定的。当对每一位a3= a2 =a1 =a0=0时,本应显示0,但是在rbi(-)=0作用下,使译码器输出全为高电平。其结果和加入灭灯信号的结果一样,将0熄灭。 (4)rbo():灭零输出,它和灭灯输入bi()共用一端,两者配合使用,可以实现多位数码显示的灭零控制。3、 74ls138 3 线8 线译码器,共有 54/74s138和 54/74ls138 两种线 路结构型式。 其工作原理如下: 当一个选通端(e1)为高电平,另两个选通端(e2)和/(e3))为低电平时,可将地址端(a0、a1、a2)的二进制编码在y0至y7对应的输出端以低电平译出。比如:a2a1a0=110时,则y6输出端输出低电平信号。 利用 e1、e2和e3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。 若将选通端中的一个作为数据输入端时,74ls138还可作数据分配器。 可用在8086的译码电路中,扩展内存。4、硬件总体设计1、 主要元器件选择主要元器件选用型号和数量如下:1个at89c51(单片机) 1个crystal(晶振) 2个cap(电容) 1个res(电阻) 2个7seg-com-cathod(共阴极数码管) 1个cap-elec(电解电容) 1个发光二极管 1个74ls47(七段字形译码器) 1个74ls138(3 线8 线译码器)2、 系统板上硬件连线(1 单片机p3.0p3.7接按键端口p0p7(2 单片机p0.0p0.7接74ls47和74ls138的输入端(3 数码管的七段和六位分别与74ls47 和74ls138的输出端相接5、 软件总体设计 # include # include # include bit flag0=0; /*设定位标记,键盘扫描回应标记*/sbit led = p20; /*led*/ char m=0,ptr=0,ptr1=0; /*ptr键盘扫描指标,ptr1显示器扫描指标*/bit stand=0,stand1=0; /*键盘锁控制位*/char code tab16=0x01,0x02,0x03,0x0c, /*键盘码*/0x04,0x05,0x06,0x0d,0x07,0x08,0x09,0x0e,0x0a,0x00,0x0b,0x0f;unsigned long data16; /*按键值存放数组*/void delay (unsigned int value) /*延时子程序*/while (value!=0) value-; /*10us延时*/void scan(void); /*声明键盘扫描子程序*/void clear(void); /*声明清除按键存放/显示器数组data子程序*/void xch(void); /*声明按键存放/显示器数组data 右键滚入子程序*/void cf(void);void ch5(void);void main() /*主程序*/ tmod=0x11; /* timer0,timer1工作在mode1方式*/ th1=(65536-3000)/256; /*设定每隔3000us扫描一次*/ tl1=(65536-3000)%256; ie=0x88; /*8是允许中断,a是timer0,timer1中断使能位*/ tr1=1; /*启动temer1*/ clear(); /*调用清除显示器为000000子程序*/ while (1) do scan (); /*调用键盘扫描子程序有按flag0会为1*/ while (flag0!=1); /*判断有按键输入否?*/ delay(1000); /*按钮去抖动*/ while(m=p1); /*按钮放开否?*/ delay(1000); switch(tabptr) /*是则测试ptr键盘扫描计数器指标至tab取到的键盘码*/ case 0x0e: if(stand=0&stand1=0)clear(); /*是否按c是则调用清除显示器clear*/ break; case 0x0c: /*是否按a,计数器加*/ if(stand=0) cf(); break; case 0x0d: /*是否按b,计数器减*/ if(stand=0) ch5(); break; case 0x0a: /*是否按*,锁键*/ stand=1; break; case 0x0f: /*是否按d,解锁键*/ stand=0; stand1=0; break; case 0x0b: /*是否按#,半锁键*/ if(stand=0) stand1=1; break; default: if(stand=0&stand1=0)xch(); else ;break; /*跳出此循环*/ void cf(void)unsigned long temp;temp=data0; temp=temp+data1*10; temp=temp+data2*100; temp=temp+data3*1000; temp=temp+data4*10000;temp=temp+data5*100000;if(temp=999999)temp=0;elsetemp+;data0=(temp%10); /*取秒的个位数存入data20*/data1=(temp/10%10); /*取秒的十位数存入data21*/data2=(temp/100%10); data3=(temp/1000%10); data4=(temp/10000%10); data5=(temp/100000%10); void ch5(void)unsigned long temp;temp=data0; temp=temp+data1*10; temp=temp+data2*100; temp=temp+data3*1000; temp=temp+data4*10000;temp=temp+data5*100000;if(temp=0)temp=999999;elsetemp-;data0=(temp%10); /*取秒的个位数存入data20*/data1=(temp/10%10); /*取秒的十位数存入data21*/data2=(temp/100%10); data3=(temp/1000%10); data4=(temp/10000%10); data5=(temp/100000%10); void xch(void)char c; for(c=5;c0;c-) datac=datac-1; data0=tabptr;void clear(void) /*清除显示data为00子程序*/char c; /*声明变量*/for(c=0;c6;c+) /*将00存入显示数组data*/datac=0x00; /*返回主程序*/void scan(void) /*扫描键盘子程序*/char a1=0xf7,i; /*a1=0xf7列扫描初值,i行*/flag0=0; /*设按键回应标记为0,键盘扫描计数指标为0*/ptr=0;for(i=0;i1|0x80; /*高位补1,由于p1.7p1.4未接+5v,而是由指令加载高电平*/ /*返回主程序*/void service_int1 () interrupt 3 using 2 /*timer1中断子程序*/char ptr1; /*声明扫描指标变量*/ th1=(65536-3000)/256; /*每隔4000us扫描一次*/ tl1=(65536-3000)%256; if(stand=1) led=0;else led=1; if (ptr15) ptr1=0; /*ptr15表示6个数码管都已经扫描过*/ p0=(ptr14)|dataptr1; /*将扫描值左移至高4位再加上数据*/ ptr1+; /*扫描指标加1*/ /*返回主程序*/五、各部分电路设计1.mcs-51单片机电路的设计本电路使用单片机内部振荡器,12mhz的晶体谐振器直接接在单片机的时钟端口x1和x2,电路中c2、c3为振荡器的匹配电容。该电路简单,工作可靠 。2.按键电路按键的左右管脚分别相连,与单片机的p1口连接3.74ls47 74ls138数码管电路本电路使用74ls47控制数码管的七段显示,74ls138控制数码管的位显示 六、整体电路图(见附图)七、设计总结1、 设计过程中遇到的问题及解决方法1)在编程后发现程序无法运行,有几个错误,经过检查后发现原来开始的uchar 与 uint 这两个变量在main函数中没有定义导致出错(2)在焊接玩工程板后发现通电后无反应,经过仔细的排查才发现原来由于焊工不精导致很多地方出现虚焊,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院医疗保险费用审核制度
- 商会运营框架方案
- 2025中型建筑装饰装修工程施工合同2
- 2025年头孢类抗菌药物项目发展计划
- 2025乙方加盟商合同范本
- 2025年数字电视广播发射机合作协议书
- 2025驾驶员用工合同范本格式
- 知识产权保护与管理计划
- 微信公众号行业保安管理总结计划
- 餐饮配送行业安全工作总结计划
- 2024年四川省眉山市中考地理+生物试卷(含答案)
- 房地产中介服务质量调研报告
- 当代世界经济与政治 李景治 第八版 课件 第1、2章 当代世界政治、当代世界经济
- 2023年复合型胶粘剂项目安全评价报告
- DZ∕T 0215-2020 矿产地质勘查规范 煤(正式版)
- 【初中+语文】中考语文一轮专题复习+《名著阅读+女性的力量》课件
- 城市道路桥梁工程施工质量验收规范 DG-TJ08-2152-2014
- 响应面分析软件DesignExpert使用教程
- 《新病历书写规范》课件
- 2024城镇燃气管道非开挖修复更新工程技术规范
- 肠胃消化健康的知识讲座
评论
0/150
提交评论