为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

8乘8点阵显示计时一分钟

2017-09-30 12页 doc 139KB 40阅读

用户头像

is_281650

暂无简介

举报
8乘8点阵显示计时一分钟8乘8点阵显示计时一分钟 单片机原理课程设计 课题名称:8乘8点阵显示计时一分钟 专业班级:电气工程及其自动化 学生学号: 学生姓名: 指导教师: 设计时间:2010年7月1日--2010年7月5日 - 0 - 目录 摘要 ..................................................................................................................................................
8乘8点阵显示计时一分钟
8乘8点阵显示计时一分钟 单片机原理课程 课题名称:8乘8点阵显示计时一分钟 专业班级:电气工程及其自动化 学生学号: 学生姓名: 指导教师: 设计时间:2010年7月1日--2010年7月5日 - 0 - 摘要 ........................................................................................................................................................................ 1 设计任务和要求 ............................................................................................................................................ 2 论证 ........................................................................................................................................................ 3 系统硬件设计 ................................................................................................................................................ 3.1 系统总原理图................................................................................................................................. 3.2 元器件清单...................................................................................................................................... 3.3 PCB板图....................................................................................................................................... ............................................................................................................................... 3.4 Proteus仿真图 3.5 分电路图及原理说明 ................................................................................................................... 3.5.1 主控部分(单片机MCS-51).............................................................................. 3.5.2 单片机内部定时器T0.................................................................. 3.5.3 8乘8点阵显示................................................................................ 4 系统软件设计 ................................................................................................................................................ 4.1 程序图 ..................................................................................................................................... 4.2 程序源代码 ........................................................................................................................................ 5 体会 ........................................................................................................................................................ 6 参考文献 ........................................................................................................................................................ - 1 - 8乘8点阵显示计时一分钟 摘要 本次课程设计的是使用单片机内部定时器T0定时一分钟,在一个8乘8点阵上显示数字。 关键字:MCS-51单片机、8乘8点阵,动态扫描,。 1 设计任务和要求 1. 应用MCS-51单片机设计单片机实现定时一分钟,在8乘8点阵上显示。 2. 软件设计部分,根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单; 3.原理图设计部分,根据所确定的设计电路,利用Protel工具软件绘制电路原理图、PCB板图、提供元器件清单。 2 方案论证 直接用单片机的内部定时器来实现时间。该方案以MCS-51单片机为主控芯片,以MCS-51的内部定时器产生的1s中断作为时钟的驱动,然后在一个8乘8点阵显示的电路。此方案最大的缺点在于在一个8乘8点阵显示不是很清楚,但对更深一步了解8乘8点阵的使用有很大的帮助。 3 系统硬件设计 3.1系统总原理图 - 2 - 图1 总原理图 3.2 元件清单 元件序号 型号或主要参数 数量 封装 元件序号 型号或主要参数 数量 封装 R 2 AXIAL0.3 AT89C51 1 DIP40 1kΩ U 11 RP1 1 SIP9 K 1 按键4.5*6.5 1KΩ 按键 C22pF 2 RAD2.54 DS dianzhen 1 点阵8*8-2*2 1 CRYSTAL C104uF 1 RAD2.54 Y1 STAL3 3 1 3.3PCB板图 图2 总电路PCD板图 - 3 - 3.4Proteus仿真图 图3 proteus仿真图 3.5分电路图及原理说明 本次设计的硬件电路由主控部分(单片机MCS-51)、计时部分(单片机内部定时器T0)、显示部分(8乘8点阵)3个部分组成。各部分之间相互协作,构成一个统一的有机整体,实现点阵显示一分钟计时。现就各部分的硬件电路设计作出如下论述: 3.5.1 主控部分(单片机MCS-51) MCS-51单片机作为主控芯片,控制整个电路的运行。其外围电路主要有两部分:复位电路和晶体振荡器。 复位电路的功能是:系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。该设计采用含有二极管的复位电路,复位电路可以有效的解决电源毛刺和电源缓慢下降(电池电压不足)等引起的问题,在电源电压瞬间下降时可以使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。 晶体振荡电路:MCS-51单片机中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为该反向放大器的输入端和输出端。这个反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、 ,起振的难易程度及温度稳定性。如果使用石英晶体,电容应该使用30pF10pF。电路图 - 4 - 如下: +5V 139U1P10P00238 P11P01337P12P02GNDVCC2040436P13P03 535P14P04634P15P05733P16P06 832P17P07 1321INT1P20 12221INT0P21232P2215243 T1P2314254T0P2426C15P253127+5V6 EA/VPP26287P2719Y122PF8X118 CRYSTALC2X2 910RESETRXD 1122PFTXD1730+5VRDALE/P1629WRPSEN K4C3AT89C51 22UFR1R2 1001K 图4主控部分电路图 3.5.2 单片机内部定时器T0 通过单片机内部定时器T0产生1秒中断,定时器工作方式寄存器TMOD=0x01,所以设定定时器T0工作方式1。单片机时钟周期为12MHz,12个时钟周期为一个及其周期,那么此时机器周期就是1us,计满TH0和TL0,就需要2^16-1,个数,再来一个脉冲计数器溢出,随即向CPU申请中断。溢出一次共需65536us,约等于65.5ms,要定时50ms的话,就要给TH0和TL0赋初值,在这个基础上计时50000个数后,定时器溢出。所以TH0=(65536-50000)/256,TL0=(65536-50000)%256。 3.5.3 8乘8点阵 8乘8点阵,本例使用的是共阴极。每8个字节为一个数字的点阵代码,其中每字节的8位对应于一行的中的8个点,例如数组中低7行的8个字节0xf0,0x10,0x10,0x20,0x 40,0x40,0x40,0x40//7就是数字7的第0-7行的点阵编码。P0控制着选中的行,P1给选中的行送编码。 4 系统软件设计 - 5 - 4.1程序流程图 开始 8乘8点阵显示 内部中断T0 计满一秒钟 刷新8乘8 显示 4.2 源程序 #include #define uchar unsigned char #define uint unsigned int uchar count,num,shi,ge; uchar code aa[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; uchar code shuzi[][8]={ 0x60,0x90,0x90,0x90,0x90,0x90,0x90,0x60,//0 0x20,0x60,0x20,0x20,0x20,0x20,0x20,0x70,//1 0x60,0x90,0x10,0x10,0x60,0x80,0x80,0xF0,//2 0x60,0x90,0x10,0x10,0x60,0x10,0x90,0x60,//3 0x20,0x20,0x60,0xA0,0xA0,0xF0,0x20,0x20,//4 0x70,0x80,0x80,0xE0,0x10,0x10,0x90,0x60,//5 0x60,0x90,0x80,0xE0,0x90,0x90,0x90,0x60,//6 0xF0,0x10,0x10,0x20,0x40,0x40,0x40,0x40,//7 0x60,0x90,0x90,0x60,0x90,0x90,0x90,0x60,//8 0x60,0x90,0x90,0x90,0x70,0x20,0x60,0x40,//9 }; - 6 - //延时函数 void delay(uint x) { uint i,j; for(i=0;i>=4; //右移4位 return tt; } //显示函数 void xieshuzi(uchar *kk,uchar *tt) { uchar i,k,t,x; for(i=0;i<8;i++) { P1=aa[i];//选中点阵的行 x=*(kk+i); t=youyi4wei(*(tt+i));//右移4位 x|=t; //两个部分的组合 (逻辑或) P0=~x; //行扫描送行编码 delay(3); P0=0xff; //有效消影 } } void main() { - 7 - TMOD=0x01;//设置定时器T0工作方式1 TH0=(65536-50000)/256;//赋初值(50ms初值) TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//使能定时器0 TR0=1;//开启定时器0 while(1) { xieshuzi(shuzi[shi],shuzi[ge]); //扫描显示两位数 } } //内部定时器T0 void T0_time() interrupt 1 { TH0=(65536-50000)/256;//赋初值(50ms初值) TL0=(65536-50000)%256; count++; //计时满50ms溢出一次 if(count==20) //溢出20次 即50ms*20=1000ms=1s { count=0; num++; if(num==60) num=0; shi=num/10; ge=num%10; } } 5 心得体会 通过本次设计,使我们对单片机的了解有了更加深一步,我发现只有动手做才会孰 能技巧,还有对材料的整理和理解。这次设计运用到的知识很多方面,尤其是单片机, 像AT89C51,引脚多,硬件内部线路接通,所以用起来很方便,8乘8点阵。当然也要 - 8 - 对这些元器件作相应调查。主要就是电路原理图,还有对引脚的作用熟悉。对于软件方面则是灵活运用单片机有关的程序语言,还有很多扩展功能,由于知识匮乏,但是理论知识还是比较详细的。我们最大的成功之处是在这整个过程,动脑寻求解决一个一个问题的办法,对程序是不断思索,务必写出很简单的程序来,使得之能做成功~ 6 参考文献 《单片机原理及其接口技术》(第二版) 清华大学出版社 《新概念51单片机C语言教程》 电子工业出版社 《单片机C语言程序设计实训100例》 电子工业出版社 - 9 -
/
本文档为【8乘8点阵显示计时一分钟】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索