用单片机和led数码管实习0到120程序设计

单片机数码管显示实训_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
单片机数码管显示实训
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢单片机实习报告-单片机实验报告
您现在的位置:&&>>&&>>&单片机实习报告
单片机实习报告来源:&&&&关键词:
  武汉理工大学《单片机应用实习》  实习任务书  学生姓名:龙威
专业班级: 通信1103班 指导教师:郭志强
工作单位: 信息工程学院 题
单片机应用  初始条件:
单片机最小系统、下载电路、扩展电路、软件(PROTEUS等)、万用表、电烙铁等工具  要求完成的主要任务:  1)完成单片机最小系统的设计、焊接、调试  2)完成ISP下载电路的设计、焊接  3)完成系统软件的设计,包括程序结构设计、流程图绘制、程序设计  4)利用仿真软件完成系统仿真工作  5)在单片机最小系统硬件上实现任务3中规定的功能  时间安排:  指导教师签名:
日  系主任(或责任教师)签名:
日     1     武汉理工大学《单片机应用实习》报告  目录  摘
要 ...................................................................... 3  Abstract ................................................................... 4  1 基本原理................................................................... 5  1.1基本原理及原理框图 ....................................................... 5  1.2 STC89C52结构功能介绍 .................................................... 5 2 论证.................................................. 错误!未定义书签。  3 硬件设计................................................................... 9  3.1复位电路 ................................................................. 9  3.1.1上电复位 ................................................................................................................ 9  3.1.2按键复位 .............................................................................................................. 10  3.2振荡电路 ................................................................ 10  3.3 单片机最小系统单片机 .................................................... 11  3.4 显示电路 ................................................................ 11  3.5矩阵键盘电路 ............................................................ 12  3.6串口通信电路 ............................................................ 12  3.7总设计电路 .............................................................. 14  4 软件设计.................................................................. 15  4.1 软件介绍 ................................................................ 15  4.1.1设计软件Protel ................................................................................................. 15  4.1.2 程序编写软件Keil ............................................................................................ 15  4.1.3仿真软件Proteus ............................................................................................... 16  4.2 数码管显示 .............................................................. 16  4.3串口通信的设计 .......................................... 错误!未定义书签。  5仿真结果及 ........................................................ 18  5.1键盘扫描仿真 ............................................ 错误!未定义书签。  6 实物调试结果 .............................................................. 20  7元件列表 .................................................................. 22  8参考文献 .................................................................. 24  9附录 ...................................................................... 31     2     武汉理工大学《单片机应用实习》报告  摘
要  单片微型计算机简称单片机,又称为微型控制器,是微型计算机的一个重要分支。随着电子技术的发展,大规模及超大规模集成电路和制造工艺的进一步提高,单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,广泛应用于控制系统、数据采集系统、智能化仪器表等领域。  本次课程设计包括单片机最小系统(包括复位和时钟电路)及供电系统、4*4矩阵键盘、独立6个8段LED数码管显示电路及DS18B20温度传感器。利用Protel电路设计软件进行原理图设计,利用keil软件编程以及proteus软件仿真,借此巩固单片机应用、模拟电路、数字电路课程及学会各种工程软件的使用。  关键字:单片机 最小系统 矩阵键盘 仿真 硬件设计     3     武汉理工大学《单片机应用实习》报告  Abstract  Single chip microcomputer short chip, also known as the micro controller, is a microcomputer is an important branch of. With the development of electronic technology, large-scale and ultra large scale integrated circuit and manufacturing process to further improve, chip for its high reliability, high cost, low voltage, low power consumption and a series of advantages, widely used in control system, data acquisition system, intelligent instrument and meter etc.  The curriculum design, including the smallest single-chip system ( including a reset and clock circuit and power supply system ), 4*4 matrix keyboard, the independent 6 8 LED digital tube display circuit and the temperature sensor DS18B20. Using Protel circuit design software schematic design, using keil software and Proteus Software simulation, to consolidate the SCM application, analog circuit, digital circuit course and learn all kinds of engineering software use.     4     武汉理工大学《单片机应用实习》报告  1 基本原理  1.1基本原理及原理框图  单片机最小系统,是指用最小的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路、按键输入、显示输出等。单片机接口电路主要用来连接计算机和其他外部设备。
本次设计主要完成的扩展电路包括键盘显示电路、数字温度计两大模块。  图1-1总原理框图 1.2 STC89C52结构功能介绍  STC89C52是一种带8K字节闪烁可编程可擦除只读存储器的低电压、高性能COMOS8位微处理器,又称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。  STC89C52具有8K在系统可编程存储器。具有以下配置:8KFlash,512字节RAM,32I/O口线,定时器,内置4KBROM,三个16位定时器、计数器,一个6向量2级中断结构,双全工串行口。STC89C52引脚图如下:  5     武汉理工大学《单片机应用实习》报告     图1-2 STC89C52引脚图     STC89C52芯片共40引脚,各引脚功能如下:  VCC(40引脚):电源电压  VSS(20引脚):接地  RST复位端  P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。  P1端口(P1.0~P1.7,1~8引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流P2端口(P2.0~P2.7,21~28引脚):P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。  在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX @DPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVX @R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。  6     武汉理工大学《单片机应用实习》报告  P3端口(P3.0~P3.7,10~17引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。P3口除作为一般I/O口外,还有其他一些复用功能。     7     武汉理工大学《单片机应用实习》报告  2方案论证  一个4X4的矩阵键盘,其中,10个按键是0~9数字键;另外6个是功能键,用于功能选择和控制,如“数据输入”、“数据显示”、“串行通信”功能选择键,以及“回车”、“清除”、控制键。由6个7段LED数码管组成的显示电路。  利用51的串口实现串行通信接口电路。通过功能选择键,使得单片机处于不同的工作状态并通过LED显示相应的内容;可选择的功能包括:数据输入;数据显示;串口通信通过功能选择键选择“数据输入”后,可分次输入10个4位十进制数据,并将输入的数据保存在内部RAM中。或者,自己设计10个十进制数的输入及显示方式。  通过功能选择键选择“数据显示”后,可显示之前输入的10个4位十进制数据中的任一个。将两个单片机最小系统通过串口连接起来,其中一个作为主系统,另一个作为辅系统。当通过功能选择键选择“串行通信”后,当在主系统上按下数字键后主系统的LED按从左向右移东的方式显示按键输入的数字,同时辅系统的LED上显示与主系统同样的内容。     8     武汉理工大学《单片机应用实习》报告  3 硬件设计  硬件电路主要由复位电路、振荡电路、数码管显示电路、矩阵键盘电路和串口电路等组成。各单元模块电路如下:  3.1复位电路  个机器周期。3.1.1上电复位STC89系列单片及为高电平复位通常在复位引脚RST上连接一个电容到VCC再连接一个电阻到GND由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位随后回归到低电平进入正常工作状态这个电阻和电容的典型值为10K和10uF。     9     武汉理工大学《单片机应用实习》报告  3.1.2按键复位  按键复位就是在复位电容上并联一个开关当开关按下时电容被放电、RST也被拉到高电平而且由于电容的充电会保持一段时间的高电平来使单片机复位.  3.2振荡电路  单片机系统里都有晶振在单片机系统里晶振作用非常大全称叫晶体振荡器他结合单片机内部电路产生单片机所需的时钟频率单片机晶振提供的时钟频率越高那么单片机运行速度就越快单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。  在通常工作条件下普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率称为压控振荡器VCO。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作以提供稳定精确的单频振荡。  单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振而通过电子调整频率的方法保持同步。  晶振通常与锁相环电路配合使用以提供系统所需的时钟频率。如果不同子系统需要不同频率的时钟信号可以用与同一个晶振相连的不同锁相环来提供。 STC89C51使用11.0592MHz的晶体振荡器作为振荡源由于单片机内部带有振荡电  武汉理工大学《单片机应用实习》报告  3.3 单片机最小系统单片机  最小系统包括晶振时钟电路和复位电路。原理图如图 3-1 所示。  图3-3 单片机最小系统     图3-3 单片机最小系统 在单片机引脚 XTAL1 和 XTAL2 外接晶体整荡器或陶瓷振荡器,就构成了内部震荡方式,由于单片机内部有一个高增益反向放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲,晶振通常选择 6MHz、12MHz 或 24MHz。与晶振连接的电容起稳定振荡频率、快速起振的作用。电容值一般为 5~30pf。  复位操作完成单片机片内电路初始化,复位结束后,单片机从一种确定状态开始运行。当单片机复位引脚 RST 出现 5ms 以上高电平时,单片机就完成复位操作。复位操作通常有两种形式:上电复位和开关复位。常用上电开关复位电路如上图所示,上电后,由于电容 C1 充电,时 RST 持续一段时间高电平。当单片机已在运行中时,按下复位键也能使 RST 持续一段时间高电平,从而实现开关复位操作。通常 C110~30ufR110kΩ。  3.4 显示电路  本次需要采用 6 个数码管,若单独采用数码管连线时比较麻烦,故设计采用 6 位一体的共阴极数码管,若使 6 个数码管显示正常时间,必须采用采用数码管的动态扫描方式,即每一时刻只有一个数码管点亮,采用软件延时和人眼的视觉暂留效果, 使人眼看到的数码管是同时点亮的。因此需要用 6 个端口控制数码管的位选,即决定哪个数码管点亮。每个数码管的8 个数据口控制数码管的段选,即决定数码管显示什么字符。考虑到数码管采用动态扫描方式,即循环扫  11     武汉理工大学《单片机应用实习》报告  描数码管的 6 位,并将显示字符送入段选位,我们采用P0口控制数码管的 8 个段选位,并采用 74HC04 实现数码管驱动及数据锁存功能。     3.5矩阵键盘电路  其工作原理是从0列开始顺序行扫描即该行输出为0。每扫描一行读入列线数据从0开始列检查找该行输出为0的列若无则顺序扫描下一行并检查其各列若找到某列线为0则该列与检查行交叉的按键为被按下的键。从0行0列开始顺序将按键编号就可以按扫描的值得到按键的值。本设计使用的是4个独立按键其功能设置为时间的显示、时间的设置、温度的显示和数字频率的显示。其电路原理图如图3.4所示。  此外还要消除按键在闭合或断开时的抖动。消除抖动的方法可采用消抖电路RS触发器闩锁电路硬件消除抖动也克采用延时方式软件消除抖动延时后再重读以跳过抖动期。在矩阵键盘中通常采用软件消除抖动。  本设计中主要使用了独立键盘故电路图中简要的画出了44的矩阵键盘和4个独立按键。  图3-5 矩阵键盘  3.6串口通信电路  串口是计算机上一种非常通用设备通信的协议不要与通用串行总线  12     武汉理工大学《单片机应用实习》报告  Universal Serial Bus或者USB混淆。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议很多GPIB兼容的设备也带有RS-232口。同时串口通信协议也可以用于获取远程采集设备的数据。  串口通信的概念非常简单串口按位bit发送和接收字节。尽管比按字节byte的并行通信慢但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时规定设备线总常不得超过20米并且任意两个设备间的长度不得超过2米而对于串口而言长度可达1200米。  典型地串口用于ASCII码字符的传输。通信使用3根线完成1地线2发送3接收。由于串口通信是异步的端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。  MAX232是电平转换芯片。1970年美国电气学会规定“RS232”串口通信协议。规定逻辑“1”-5— -15V逻辑“0”5— 15V 。噪声容限为2V。要实现利用串口与单片机进行通信就要进行电平转换把标准转化成单片机可以识别的。MAX220–MAX249都是电平转换芯片在单片机最小系统中使用MAX232。其电路原理图如图3.6所示。  图3-6 串口通信电路     13  武汉理工大学《单片机应用实习》报告  3.7总设计电路     图3-7总设计电路     14     武汉理工大学《单片机应用实习》报告  4 软件设计  4.1 软件介绍  4.1.1设计软件Protel  PROTEL是Altium公司在80年代末推出的EDA软件,在电子行业的CAD软件中,它当之无愧地排在众多EDA软件的前面,是电子设计者的首选软件,它较早就在国内开始使用,在国内的普及率也最高,有些高校的电子专业还专门开设了课程来学习它,几乎所有的电子公司都要用到它,许多大公司在招聘电子设计人才时在其条件栏上常会写着要求会使用PROTEL。  Protel 99采用全新的管理方式,即数据库的管理方式。Protel 99 是在桌面环境下第一个以独特的设计管理和团队合作技术为核心的全方位的印制板设计系统。所有Protel99设计文件都被存储在唯一的综合设计数据库中,并显示在唯一的综合设计编辑窗口。  Protel 99软件沿袭了Protel以前版本方便易学的特点,内部界面与Protel 98大体相同,新增加了一些功能模块。Protel公司引进了德国INCASES公司的先进技术,在Protel99中集成了信号完整性工具,精确的模型和板分析,帮助你在设计周期里利用信号完整性分析可获得一次性成功和消除盲目性。  本次设计采用的是Altium Dsigner进行电路原理图的绘制。  4.1.2 程序编写软件Keil  Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍  本次设计编程主要使用Keil软件进行编程。     15     武汉理工大学《单片机应用实习》报告  4.1.3仿真软件Proteus  Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。  使用Proteus 软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;在单片机课程设计和全国大学生电子设计竞赛中,我们使用 Proteus 开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。实践证明,在使用 Proteus 进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。  本次采用的是Proteus进行仿真。  4.2 数码管显示  在软件设计过程中,首先要了解满足要求的程序流程图,然后根据流程图写出对应的C51程序,利用proteus进行仿真,通过一步步的调试,使设计达到目标。     武汉理工大学《单片机应用实习》报告  4.串口通信设计     图4-1发送数据的程序流程图     图4-2接受数据的程序流程图  17     武汉理工大学《单片机应用实习》报告  5仿真结果     图5-1数码管显示     18     武汉理工大学《单片机应用实习》报告     图5-2串口通信     19     武汉理工大学《单片机应用实习》报告  6 实物调试结果及     6-1 实物正面图     6-2实物背面图  20     武汉理工大学《单片机应用实习》报告     结论:将程序烧进单片机之后,经过调试之后,发现单片机能够正常工作,并且能够实现要求的各项功能,说明程序也能满足要求。这次的设计去的成功,自己的努力也得到了回报。  在这次设计过程中,体现出自己单独仿真的能力以及综合运用知识的能力,体会到了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。在电路的设计仿真整个过程中,我深刻地认识到了耐心与细心的重要性,我将严格要求自己,养成一丝不苟的学习和态度,为以后走向打基础。本次课程设计对我专业知识的运用进行了全方面的考核与检测,同时更加强了学习专业知识的决心,以及对以后从事电子方面的信心。  平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。比如一些程序的调用,通过动手实践让我们对调用映象深刻。所以这个课程设计对我们的作用是非常大的。  通过课程设计,使我深深地体会到,干任何事都必须耐心、细致。在编程过程中,有的时候犯了一些小错误很正常,发现错误要积极思考,耐心寻找,越是心烦意乱则更难查错。在以后的学习生活以至于工作中,我们一定要养成一种高度负责、一丝不苟的良好习惯。这次课程设计使我在工作风度上得到了一次难得的磨练。也衷心感谢老师和同学对我悉心的指导。  由于程序较为复杂,加上我之前没怎么写过程序,所以调试起来很是费力,但我坚定只要我有恒心,我就能做出来,在经过几个通宵之后,我成功的将功能在实物上实现。这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。     21     武汉理工大学《单片机应用实习》报告  7元件列表  1单片机最小系统部分     2下载电路部分     22  武汉理工大学《单片机应用实习》报告  3软件部分  4工具     23  武汉理工大学《单片机应用实习》报告  8参考文献  [1] 霍孟友等,单片机原理与应用,机械工业出版社  [2] 李广弟等 单片机基础 北京航空航天出版社, 2001.7  [3] 楼然苗等 51 系列单片机设计实例 北京航空航天出版社  [4] 马忠梅等,单片机的C语言应用程序设计,北京航空航天大学出版社  [5] 张毅刚等, MCS-51单片机应用设计,哈工大出版社,2004年第2版  [6] 李全利,迟荣强编著 单片机原理及接口技术 高等教育出版社     24     武汉理工大学《单片机应用实习》报告  9附录  单片机源程序:  /******************************************************************************  *名称:十位十进制输入,数码显示及串口通信 *连接方法:数码管的位连P1口,段端接P2口 *功能:,数据输入,数码显示,串口通信
*时间:     ******************************************************************************/ #include&reg52.h& #include&intrins.h& #define uchar unsigned char #define uint unsigned int  uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90, 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; uchar s[]={0,0,0,0,0}; uchar shu1[]={0,0,0,0,0}; //uchar wei2[];  //uchar wei1[]={0x01,0x03,0x07,0x0f};  uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; uchar code disp[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; uchar shu[4]; uchar shuma[50];  uchar a=0,b,k,i,j=0,shi,ge,temp,key,bu,num1 = 0; uchar sum,temp1,enter = 0; bit keyinput = 0,t=0; bit xianshi = 0;  25     武汉理工大学《单片机应用实习》报告  bit xianshi1=0;  bit dual = 0;  bit anjian = 0;  bit aa = 0;  bit tt = 0;  //bit shuma = 0;    sbit tem = P3^3;  /**********************************************************
延时程序  *********************************************************/ void delay_nop()  {  _nop_();  _nop_();  _nop_();  _nop_();  }  void delay_ms(uint ms)
//延时ms毫秒 {  uint i,j;  for(i=i&0;i--)     }     void delay_us(uint n)  {  while (n--);  }  void init()  26  for(j=110;j&0;j--);
//延时nus  武汉理工大学《单片机应用实习》报告  {  TMOD = 0X20;  TH1 = 0  TL1 = 0X  TR1 = 1;  SM0 = 0;  SM1 = 1;  REN = 1;  EA = 1;  }     /**********************************************************
串口发送程序  *********************************************************/ void send()  {  if(dual == 1)  {  if(anjian==1)  {  uint i=0;     SBUF=0
while(!TI);
for(i=0;i&6;i++)
SBUF=s[i]; while(!TI); TI=0;  27     武汉理工大学《单片机应用实习》报告  }  }  else if(xianshi==1)  {  uint b=0;  SBUF=0  while(!TI);  TI=0;  for(b=0;b&4;b++)
{  SBUF = shu[b];
while(!TI);  TI=0;  }  }  else if(aa == 1)  {  uint c=0;  SBUF=0  while(!TI);  TI=0;  for(c=0;c&5;c++)
{  SBUF = shu1[c];
while(!TI);  TI=0;  }  }  }  }  28     武汉理工大学《单片机应用实习》报告  void ds_init()
{  bit flag=1;  while(flag)  {  tem = 1;  delay_us(1);  tem = 0;  delay_us(58);  tem = 1;  delay_us(6);  flag =  }  delay_us(50);  tem = 1;  }     void ds_write(uchar dat)  {    for(i=0;i&8;i++)  {  tem = 0;  delay_nop();  tem = (bit)(dat&0x01);  delay_us(6);  tem = 1;  dat&&=1;  }  tem = 1; //写数据  29     武汉理工大学《单片机应用实习》报告  }     uchar ds_read()  {  uchar value=0,i;  for(i=0;i&8;i++)  {     }    }  /****************************************************
键盘扫描程序  ****************************************************/ int keyscan(void)  {  P0 = 0X0f;
//扫描行  temp = P0;  temp = (temp & 0x0f);  if (temp != 0X0f)  delay_ms(5);  30  //读数据 tem = 1; _nop_(); value &&= 1; tem = 0; delay_nop(); tem = 1; delay_nop(); if (tem)
value|=0x80; delay_us(6);  武汉理工大学《单片机应用实习》报告  if ((0x0f & P0) != 0x0f)  {  keyinput = ~  temp = ~(temp|0xf0);  switch(temp)  {  case 1:key = 0;  case 2:key = 1;  case 4:key = 2;  case 8:key = 3;  }  }  P0 = 0xf0;
//扫描列  temp = P0;  temp = (temp & 0xf0);  if (temp != 0xf0)  delay_ms(1);  if((P0 & 0xf0) != 0xf0)  {  temp = ~(temp|0x0f);  switch(temp)  {  case 16:key += 0;
case 32:key += 4;
case 64:key += 8;
case 128:key += 12;
}  delay_ms(80);  }    31     武汉理工大学《单片机应用实习》报告  }  /**************************************************
主函数  **************************************************/ void main()  {  init();  while(1)  {  ds_start();  num=temp_read();  keyscan();  //t = t1;  if(aa == 0)  {  if(key &= 0 && key &= 9)  {  anjian = 1;  xianshi = 0;  xianshi1 = 0;  a =  if(t != keyinput)  {  delay_us(100);  if(t != keyinput)  {  if(bu == 1)  {  sum = 1;  32     武汉理工大学《单片机应用实习》报告  for(i = 5;i & 1;i--)
//十进制数据显示方式
s[i] = s[i-1];  s[1] = keyscan();  }  t =  delay_us(100);  }  }  for(k=0; k&5; k++)  {  P1 = wei[k+1];  P2 = table[s[k]];  delay_us(200);  }  send();  }  if(enter == 1 && anjian == 1 && sum == 0)  {  s[0] =
//写序号  temp1 = a*5;  shuma[temp1] = s[0];  enter = 0;  key = 15;  bu = 1;  }  if(enter == 2)  {  sum = 0;  bu = 0;  key = 15;  33     武汉理工大学《单片机应用实习》报告  enter = 0;  for(i=1;i&5;i++)  shuma[temp1+i]=s[i];  for(i = 0;i & 5;i++)  s[i] = 0;  }  }     if(key == 11)
//串行发送允许
{  dual = ~  }  if(key == 12)
{  enter++;  if(enter == 3)  enter = 0;  }  if(key == 13)
//删除键  {  sum = 0;  bu = 0;  key = 15;  enter = 0;  for(i = 0;i & 5;i++)  s[i] = 0;  }     if(key == 14)
//数码显示允许
{  34     武汉理工大学《单片机应用实习》报告  aa = 1;  }  if(key == 15)
//键盘输入允许
{  aa = 0;  P1 = 0x00;  }  if(aa == 1)  {  if(key &= 0 && key &= 9)  {  xianshi1 = 1;  anjian = 0;  xianshi = 0;  b = keyscan();  for(j = 0;j & 5;j++)  {  shu1[j]=shuma[b*5+j];
}  for(i = 0;i & 5;i++)  {  P1 = wei[i+1];  P2 = table[shu1[i]];  delay_us(200);  }  }  send();  }  }  }  35     武汉理工大学《单片机应用实习》报告     接收单片机程序  #include&reg51.h&  #define uchar unsigned char  #define uint unsigned int  //sbit dula=P2^6;  //sbit wela=P2^7;  bit recevflag=9;  uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,  0x6d,0x7d,0x07,0x7f,0x6f,  0xbf,0x86,0xdb,0xcf,0xe6,  0xed,0xfd,0x87,0xff,0xef  };  uchar s[5]={0,0,0,0,0};  uchar r[4]={2,2,2,2};  uchar code wei[]={0x10,0x0f,0x08,0x04,0x01};  uchar a,  uint m=0;  uint k=0;  /****************************************************************** 延时程序  /******************************************************************/ void delay_ms(uint ms)  {  uint i,j;  for(i=i&0;i--)     }  void delay_us(uint n)  {  36  for(j=110;j&0;j--);  武汉理工大学《单片机应用实习》报告  while (n--);  }  /****************************************************************** /****************************************************************** 按键显示程序  /******************************************************************/ void display2()  {    for(u=0;u&5;u++)  {  P0=table[s[u]];  P2=wei[u];  delay_us(200);  }  }     void main()  {  TMOD = 0x20;  TH1 = 0  TL1 = 0X  TR1 = 1;  REN = 1;  SM0 = 0;  SM1 = 1;  EA = 1;  ES = 1;     while(1)  37     武汉理工大学《单片机应用实习》报告  {     }  }     void ser()interrupt 4  {  RI=0;  a=SBUF;  recevflag=1;  if(a==0xff)  {     }  else if(a==0xaa)  {     }  else if(testbyte==0xff&&recevflag==1)  38  while(testbyte==0xff) {
} while(testbyte==0xAA) {
} display();
display2();
testbyte=a; recevflag=0; m=0; testbyte=a; recevflag=0; k=0;  武汉理工大学《单片机应用实习》报告  {     }  else if(testbyte==0xAA&&recevflag==1)
{  r[k]=a; s[m]=a; m++; if(m==5)m=0; recevflag=0;  k++;     }  recevflag=0;  }  if(k==4)k=0; recevflag=0;     39     武汉理工大学《单片机应用实习》报告  实习成绩表  40  
本文★★网址:/yuedu/92238.html
好文大家读
上一篇文章:
下一篇文章:
Copyright &
All Rights Reserved.《》

我要回帖

 

随机推荐