数码管显示拨码开关编码报告.docx
《数码管显示拨码开关编码报告.docx》由会员分享,可在线阅读,更多相关《数码管显示拨码开关编码报告.docx(21页珍藏版)》请在冰豆网上搜索。
数码管显示拨码开关编码报告
电气化13届《微机原理课程设计》
课程论文
微机原理课程设计
题目数码管显示拨码开关编码
学生姓名李得田
学号8021209205
所属学院机械电气化工程学院
专业农业电气化与自动化
班级电气化13-2
日期2012.6
塔里木大学教务处制
《数码管显示拨码开关编吗》设计报告目录
1、设计题目……………………………………………………2
二、设计内容与要求………………………………………………2
三、设计目的意义…………………………………………………2
3.1设计目的……………………………………………………2
3.2设计意义………………………………………………………2
四、系统硬件电路图………………………………………………3
4.1Proteus软件简介以及仿真电路图……………………………………3
4.2Protel99SE简介以及所绘图形……………………………………4
五、程序流程图与源程序…………………………………………8
5.1主程序流程图………………………………………………9
5.2子程序流程图………………………………………………9
5.3源程序………………………………………………………10
六、系统功能分析与说明…………………………………………11
6.18051单片机介绍……………………………………………11
6.2单片机系统设计步骤……………………………………………18
七、设计体会…………………………………………………………19
八、参考文献…………………………………………………………20
一、设计题目
数码管显示拨码开关编码
二、设计内容与要求
用8051单片机控制系统显示拨码开关所设置的编码000~255。
三、设计目的意义
3.1设计目的
1、了解单片机系统中实现LED动态显示的原理及方法;
2、详细了解89C51芯片的性能及编程方法;
3、了解单片机系统基本原理,了解单片机控制原理;
4、掌握AT89C51输入/输出接口电路设计方法;
5、掌握AT89C51程序控制方法;
6、掌握单片机汇编编程技术中的设计和分析方法;
7、掌握使用PROTEUS软件进行仿真的方法。
8、学会使用并熟练掌握电路绘制软件Protel99SE;
9、掌握电路图绘制及PCB图布线技巧。
3.2设计意义
1、在系统掌握单片机相应基础知识的前提下,熟悉单片机应用系统的设计方法及系统设计的基本步骤。
2、完成所需单片机应用系统原理图设计绘制的基础上完成系统的电路图设计。
3、完成系统所需的硬件设计制作,在提高实际动手能力的基础上进一步巩固所学知识。
4、进行题目要求功能基础上的软件程序编程,会用相应软件进行程序调试和测试工作。
5、用AT89C51设计出题目所要求的数码管动态循环显示,并针对实际设计过程中软、硬件设计方面出现的问题提出相应解决办法。
6、通过单片机应用系统的设计将所学的知识融会贯通,锻炼独立设计、制作和调试单片机应用系统的能力;领会单片机应用系统的软、硬件调试方法和系统的研制开发过程,为进一步的科研实践活动打下坚实的基础。
四、系统硬件电路图
4.1Proteus软件简介以及仿真电路图
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
Proteus软件具有其它EDA工具软件(例:
multisim)的功能。
这些功能是:
(1)原理布图
(2)PCB自动或人工布线
(3)SPICE电路仿真
革命性的特点:
(1)互动的电路仿真
用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
(2)仿真处理器及其外围电路
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。
配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。
图4-1所示为使用proteus软件建立的模型,经仿真,程序实现了预定功能。
图4-1使用proteus建立的仿真模型
4.2Protel99SE简介以及所绘图形
Protel99SE是应用于Windows9X/2000/NT/XP操作系统下的EDA设计软件,采用设计库管理模式,可以进行联网设计,具有很强的数据交换能力和开放性及3D模拟功能,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,可以设计32个信号层,16个电源--地层和16个机加工层。
Protel99SE的系统组成
按照系统功能来划分,Protel99se主要包含以下两大部分和6个功能模块。
1、电路工程设计部分
(1)电路原理设计部分(AdvancedSchematic99):
电路原理图设计部分包括电路图编辑器(简称SCH编辑器)、电路图零件库编辑器(简称Schlib编辑器)和各种文本编辑器。
本系统的主要功能是:
绘制、修改和编辑电路原理图;更新和修改电路图零件库;查看和编辑有关电路图和零件库的各种报表。
(2)印刷电路板设计系统(AdvancedPCB99):
印刷电路板设计系统包括印刷电路板编辑器(简称PCB编辑器)、零件封装编辑器(简称PCBLib编辑器)和电路板组件管理器。
本系统的主要功能是:
绘制、修改和编辑电路板;更新和修改零件封装;管理电路板组件。
(3)自动布线系统(AdvancedRoute99):
本系统包含一个基于形状(Shape-based)的无栅格自动布线器,用于印刷电路板的自动布线,以实现PCB设计的自动化。
2、电路仿真与PLD部分
(1)电路模拟仿真系统(AdvancedSIM99):
电路模拟仿真系统包含一个数字/模拟信号仿真器,可提供连续的数字信号和模拟信号,以便对电路原理图进行信号模拟仿真,从而验证其正确性和可行性。
(2)可编程逻辑设计系统(AdvancedPLD99):
可编程逻辑设计系统包含一个有语法功能的文本编辑器和一个波形编辑器(Waveform)。
本系统的主要功能是;对逻辑电路进行分析、综合;观察信号的波形。
利用PLD系统可以最大限度的精简逻辑部件,使数字电路设计达到最简化。
(3)高级信号完整性分析系统(AdvancedIntegrity99):
信号完整性分析系统提供了一个精确的信号完整性模拟器,可用来分析PCB设计、检查电路设计参数、实验超调量、阻抗和信号谐波要求等。
Protel99SE的功能特性:
(1)开放式集成化的设计管理体系
(2)超强功能的、修改与编辑功能
(3)强大的设计自动化功能
鉴于Protel99SE有如此强大功能,因此在本最小系统设计中使用Protel99SE制图,所制电路原理图和PCB图如下所示。
图4-2电路原理图
图4-3单片机Protel图
图4-4晶振电路
图4-5复位电路
图4-6PCB电路图
五、程序流程图及源程序
5.1主程序流程图
图5-1主程序流程图
5.2子程序流程图
图5-2定时器0中断流程图
5.3源程序
//头文件:
#include"reg51.h"
//变量定义:
unsignedchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//表:
共yin数码管0-9
//引脚定义:
sbitSMG_q=P2^0;//定义数码管控制脚(千位)
sbitSMG_b=P2^1;//定义数码管阴级控制脚(百位)
sbitSMG_s=P2^2;//定义数码管阴级控制脚(十位)
sbitSMG_g=P2^3;//定义数码管阴级控制脚(个位)
//函数声明:
voiddisplay(unsignedcharda);//定义显示函数,参数为显示内容
voiddelay(void);//主函数,C语言的入口函数:
voidmain(void)
{
unsignedchari=0;//作为查表的索引号
unsignedcharldata;//
unsignedintj;//此变量作为计数跳变刷新时间
while
(1)
{unsignedcharp1;
ldata=p1;
j=5000;
while(j--){
display(ldata);//刷新5000次,约1秒,
}
}
}
//显示函数,参数为显示内容
voiddisplay(unsignedcharda)
{
SMG_q=1;//选择千位数码管
P0=table[da/1000];//获取十位值,查表输出定义好的数码管段值与P0口,显示相应的0-9
delay();//延时
P0=0X00;//清除数码管显示,因是共阴型,所以不是0
SMG_q=0;//关闭千位数码管
SMG_b=1;//选择百位数码管
P0=table[da%1000/100];//获取百位值,查表输出定义好的数码管段值与P0口,显示相应的0-9
delay();//延时
P0=0X00;//清除数码管显示,因是共阴型,所以不是0
SMG_b=0;
SMG_s=1;//选择十位数码管
P0=table[da%100/10];//获取十位值,查表输出定义好的数码管段值与P0口,显示相应的0-9
delay();//延时
P0=0X00;//清除数码管显示,因是共阴型,所以不是0
SMG_s=0;
SMG_g=1;//选择个位数码管
P0=table[da%10];//获取个位值,查表输出定义好的数码管段值与P0口,显示相应的0-9
delay();//延时
P0=0X00;//清除数码管显示,因是共阴型,所以不是0
SMG_g=0;//关闭个位数码管
}
//延时子函数,短暂延时
voiddelay(void){
unsignedchari=10;
while(i--);
}
六、系统说明与设计分