当前位置:文档之家› 单片机课程设计报告

单片机课程设计报告

课程设计说明书课程名称:单片机原理及应用设计题目:4位DIP开关控制数码管显示系统设计学院:电子信息与电气工程学院学生姓名:王宗康学号:201102020004专业班级:电子信息工程一班指导教师:李志瑞年月日课程设计任务书4位DIP开关控制数码管显示系统设计摘要:用AT89S52,共阳极数码管,4位拨动开关等设计一个电路,并写入程序。

该电路一个USB口为电源输入,4位拨动开关所对应的0000—1111对应于共阳极数码管的0—F,当拨动到某一个二进制数时,数码管上显示出对应的数值。

关键词:4位波动开关;AT89S52;共阳数码管目录1. 设计背景 (1)1.1 单片机设计背景 (1)1.2 设计目的 (1)2. 设计方案 (1)2.1 方案一 (1)2.2 方案二 (1)2.3 方案三 (1)3. 方案实施 (2)3.1 单片机基本结构 (2)3.2 硬件模块电路 (5)3.3 软件程序设计 (9)4. 结果与结论 (13)4.1结果 (13)4.2结论 (13)5. 收获与致谢 (14)6. 参考文献 (14)7. 附件 (15)7.1系统硬件原理图 (15)7.2实物布线图 (16)7.3元器件清单 (17)1.设计背景1.1 单片机设计背景单片机的出现具有划时代的意义。

它的出现使得许多原本花费很高的复杂电路以及繁多的电气元器件都被取缔,取而代之的是一块小小的芯片。

伴随着计算机技术的不断发展,单片机也得到了相应的发展,而且其应用的领域也得到更好的扩展。

在民用,工用,医用以及军用等众多领域上都有所应用。

为了,能够更好的适应这日新月异的社会,我们应当充实我们的知识面,方能不被时代的潮流踩在脚下。

1.2 设计目的介于单片机的重要性,我们应当对单片机的原理,发展以及应用有着一定的了解。

所以,我们应当查阅相关资料,从而能够对单片机有个全方位的了解。

进而将探讨的领域指向具体的国内,从而能够在科技与经济飞速发展的当今社会更好的应用这项技术。

事实上,该项技术在国内有着极为广泛的发展前景,因此,通过对本课题的研究,我们因当能够充分认识到单片机技术的重要性,对单片机未来的发展趋势有所展望。

2. 设计方案2.1 方案一使用7805降压稳压芯片位系统提供电源,拨码开关接在P1口的低四位,高四位通过接74ls247译码器连接共阳数码管。

此方案,用到了很少的IO口,节省了单片机的引脚资源占用。

但是,此方案增加了硬件成本,也增加了软件设计的难度。

2.2 方案二通过电脑USB直接供电,对电源进行简单的滤波处理。

拨码开关接在单片机的P1口低四位,共阳极数码管接在P2口。

此方案,省去了数码管显示所需的译码电路和电源供电所需的7805降压稳压芯片,占用IO口较多,但是软件设计的难度较低,而且硬件成本很低。

2.3 方案三系统选用USB直接供电,电源经过简单的直流滤波为系统提供稳定的5V直流电源。

数码管采用共阴极数码管,经过排阻提供灌入电流,点亮数码管。

拨码开关接在单片机的P1口低四位,共阴数码管接在P2口。

此方案设计中所需的共阴极数码管如果点亮,单独靠单片机的输出电流是做不到的,所以需要上拉电阻为其灌电流,这样就提高了硬件成本,但是编程时和方案二难度一样,只是共阴极数码管的显示编码不一样。

综合考虑,选用第二套方案。

3. 方案实施3.1 单片机基本结构AT89S52单片机为40引脚双列直插芯片,有4个I/0口P0、P1、P2、P3,每条I/0口能独立的做输出和输入。

AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

单片机引脚示意图如图3.1所示。

图3.1 AT89S52引脚示意图P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5 MOSI(在系统编程用)P1.6 MISO(在系统编程用)P1.7 SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。

对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。

在这种应用中,P2 口使用很强的内部上拉发送1。

在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。

P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INTO(外中断0)P3.3 INT1(外中断1)P3.4 TO(定时/计数器0)P3.5 T1(定时/计数器1)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。

一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。

PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。

XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2:振荡器反相放大器的输出端。

3.2 硬件模块电路电源模块电路电源电路如图3.2所示。

电源电路使用的USB直接进行供电,LED和一个300欧姆电阻串联作为系统指示灯工作,使用4.7uF点解电容和100uF的瓷片电容进行滤波处理,使之能够为单片机提供5V的直流稳压电源。

图3.2 电源电路●复位电路复位电路如图3.3所示。

AT89S52的复位是通过RST引脚保持高电平引发的,不进入复位只需RST保持低电平即可。

复位电路中需要有104的瓷片电容对四脚按键去抖动,300欧姆的电阻使之低电平有效。

图3.3 复位电路●时钟电路时钟电路如图3.4所示。

AT89S52需要有一个稳定的外部时钟源为其提供一个稳定的有效的时钟信号作为基准,使其能够正常的工作。

也可以采用其内部的时钟源,但是内部时钟源受到温度等条件的干扰很强。

所以本设计中采用了12MHz的晶振为AT89S52提供外部时钟源,通过查询ATM89S52的使用手册,时钟的滤波电容采用了33pf的瓷片电容。

图3.4 时钟电路●拨码开关电路拨码开关电路如图3.5所示。

拨码开关在电路中需要有如下条件,没有打开时,输入低电平,打开时,输入高电平,所以需要在单片机引脚前对拨码开关连接的信号线进行拉高处理,以提高信号的准确度。

图3.5 拨码开关电路●数码管显示常见的数码管由七个条状和一个点状发光二极管管芯制成,叫七段数码管。

如图3.6所示。

图3.6 数码管引脚图共阳极数码管里面的发光二极管阳极接在一起作为公共引脚,在正常使用时此引脚接电源正极,当发光二极管的阴极接低电平时,发光二极管被点亮,从而显示相应的数字。

共阳数码管的显示编码为:0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH3.3 软件程序设计根据设计要求,首先要做到实时更新拨码开关的输入情况,所以就需要程序开始就能够显示P1口拨码开关的情况,并且要不断的扫描拨码开关的变化情况。

一旦发生改变,就要马上在数码管上进行显示。

程序流程图如图3.7所示。

图3.7程序流程序4. 结果将元器件焊接到音印制上之后,往AT89S52芯片中烧写好程序,接通电源,电源指示灯亮,数码管显示此刻拨码开关的输入值,拨动拨码开关调节输入,数码管上显示不同的数字从“0”到“F”。

调整4位拨动开关按二进制输入:当DIP开关为“0000”,数码管显示“0”;当DIP开关为“0001”,数码管显示“1”;当DIP开关为“0010”,数码管显示“2”;当DIP开关为“0011”,数码管显示“3”;当DIP开关为“0100”,数码管显示“4”;当DIP开关为“0101”,数码管显示“5”;当DIP开关为“0110”,数码管显示“6”;当DIP开关为“0111”,数码管显示“7”;当DIP开关为“1000”,数码管显示“8”;当DIP开关为“1001”,数码管显示“9”;当DIP开关为“1010”,数码管显示“A”;当DIP开关为“1011”,数码管显示“B”;当DIP开关为“1100”,数码管显示“C”;当DIP开关为“1101”,数码管显示“D”;当DIP开关为“1110”,数码管显示“E”;当DIP开关为“1111”,数码管显示“F”。

5. 收获与致谢通过本次的课程设计使得自己从实践中体会和认识了单片机,加深了自己对其的理解。

刚开始的时候,在做电路图的设计,PCB的布线等方面还算比较顺利,但是在进行烧程序的时候,由于用于写程序的软件和进行程序编译的软件不一样,导致了程序中某些路径的指向出现了问题,但是在老师的帮助下,我们很快的就解决了问题,也让自己明白了,只有自己动手做了才能发现问题的所在。

在这个过程中非常的感谢老师从以开始的入门指导,到最后的课程设计报告的审核,老师都非常的负责。

6.参考文献[1] 杜树春.单片机C语言和汇编语言混合编程实例详解.北京:北京航空航天大学出版社,2006.6[2] 张毅刚.单片机原理及应用.北京:高等教育出版社,2009.11[3] 谢嘉奎.电子线路(第四版).北京:高等教育出版社,2004.[4] 臧春华.电子线路设计与应用.北京:高等教育出版社,2005.[5] 杜尚丰. CAN总线测控技术及其应用.北京:电子工业出版社,2007.17. 附件7.1仿真图7.2系统硬件原理图4位DIP开关控制数码管显示系统硬件原理图如图7.1所示。

图7.1 系统硬件原理图7.3实物布线图4位DIP开关控制数码管显示系统实物布线图如图7.2所示。

图7.2 实物布线图7.4 元器件清单4位DIP开关控制数码管显示系统元器件清单如表7.3所示。

表7.37.5 源程序程序代码如下:/*****************************************************************************************************/#include"reg51.h"//共阳数码管0~F编码unsigned chardis[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0 x8e};//数码管初试显示状态unsigned char dis_dat = 0;/**************************************************函数名称:Delay_ms(unsigned int Time)函数功能:为程序提供必要的延时输入参数:Time 延时毫秒数输出参数:无***************************************************/void Delay_ms(unsigned int Time){unsigned char j;unsigned int i;for(i=0; i<Time; i++)for(j=0; j<125; j++);}/**************************************************函数名称:Key_Scan(void)函数功能:4位拨码开关扫描输入参数:无输出参数:无***************************************************/void Key_Scan(void){unsigned char dat;dat = P1 & 0x0f;if(dat != dis_dat){Delay_ms(10);if(dat != dis_dat)dis_dat = dat;}}/************************************************** 函数名称:void main(void)函数功能:程序入口,抉择显示的数值输入参数:无输出参数:无***************************************************/void main(void){P1 = 0xff;P2 = 0xff;while(1){Key_Scan();switch(dis_dat){case 0: P2 = dis[0];break;case 1: P2 = dis[1];break;case 2: P2 = dis[2];break;case 3: P2 = dis[3];break;case 4: P2 = dis[4];break;case 5: P2 = dis[5];break;case 6: P2 = dis[6];break;case 7: P2 = dis[7];break;case 8: P2 = dis[8];break;case 9: P2 = dis[9];break;case 10: P2 = dis[10];break;case 11: P2 = dis[11];break;case 12: P2 = dis[12];break;case 13: P2 = dis[13];break;case 14: P2 = dis[14];break;case 15: P2 = dis[15];break;default : break;}}}。

相关主题