微控制器最终版本作业
- 格式:doc
- 大小:107.00 KB
- 文档页数:11
1.在下列总线中,哪种需用导线最少()A.SPIB.I2CC.并行通信【参考答案】: B2.若中断源都编程为同级,当他们同时申请中断时CPU首先响应( )A.T0B.INT0C.T1D.INT1【参考答案】: B3.外部程序存储器的选通控制信号为()A./RDB.ALEC./WRD./PSEN【参考答案】: D4.下列指令中不合法的是()A.MOV A,R1B.MOV R1,AC.MOV DPTR,AD.MOV A,30H【参考答案】: C5.下列指令中与进位标志CY无关的是()A.移位指令B.位操作指令C.传送指令D.条件转移指令【参考答案】: C6.外部数据存储器读选通条件是()A.RSTB.ALEC./PSEND./RD【参考答案】: D7.定时器0的中断程序入口地址为()A.001BHB.0003HC.000BHD.0013H【参考答案】: C8.响应中断时要保护断点,自动将其内容压入堆栈的是()A.DPTRB.PSWC.SPD.PC【参考答案】: D9.若(A)=8FH,(R0)=F8H,(C)=0,执行ADDC A,R0指令后,正确结果是( )A.(A)= 87H,(C)=1B.(A)= 87H,(C)=0C.(A)= 8FH,(C)=1D.(A)= 8FH,(C)=0【参考答案】: A10.可以为访问程序存贮器提供或构成地址的有()A.只有程序计数器PCB.只有PC和累加器AC.只有PC,A和数据指针DPTRD.PC,A,DPTR和堆栈指针SP【参考答案】: C11.知(SP)=37H,进行子程序调用时,把断点地址进栈保护后SP的值为()A.36HB.37HC.38HD.39H【参考答案】: D12.单片机复位的条件是( )A.初始上电和正常工作期间,RST端维持2个机器周期的高电平B.初始上电和正常工作期间,RST端维持20毫秒的高电平C.初始上电需20毫秒,正常工作期间只需2个机器周期的高电平【参考答案】: C13.说P1-P3口都是准双向口是因为()A.数据不能同时出进B.做输入时先向口锁存器送1【参考答案】: A14.以下哪个属于前向通道器件()A.A/DB.D/AC.LEDD.继电器【参考答案】: A15.89C51选择寄存器组是通过对以下2两位编码实现()A.RS1 RS0B.M1 M0C.SM1 SM0D.TF1 TF0【参考答案】: A16.外部中断申请标志IE1和IE0都是由硬件自动置1和清0A.错误B.正确【参考答案】: B17.定时器T0方式2为自动回复初值,故初始化时只需将初值装入TL0A.错误B.正确【参考答案】: A18.一个机器周期等于12个振荡周期,执行一条指令需要一个或几个机器周期.A.错误B.正确【参考答案】: B19.定时/计数器在工业控制实际中发挥重要作用A.错误B.正确【参考答案】: B20.复位后, 内RAM的值是不确定的A.错误B.正确【参考答案】: B。
《控制系统的输出》作业设计方案(第一课时)一、作业目标本次作业旨在帮助学生掌握控制系统的输出,了解如何通过计算机编程控制硬件设备,提高他们的动手能力和解决问题的能力。
二、作业内容1. 制作简易电机控制器学生需要使用指定的硬件设备(如电机、微控制器、杜邦线等)和编程软件(如Arduino IDE),根据提供的示例代码,编写程序以控制电机。
任务要求:a. 正确连接硬件设备,确保电机能够正常工作。
b. 理解代码逻辑,能够根据代码实现电机的控制。
c. 调试程序,确保在所有情况下电机都能正确工作。
2. 设计控制系统界面学生需要使用软件工具设计一个控制系统界面,该界面应能够显示电机的当前状态和控制信息。
任务要求:a. 设计界面布局,确保界面简洁、易于操作。
b. 使用软件工具实现界面功能,能够实时显示电机状态和控制信息。
c. 评估界面的美观性和易用性。
三、作业要求1. 学生需独立完成作业,不得抄袭。
2. 作业完成后,需提交电子版作业文件至教师指定的平台。
3. 作业文件应包括代码和设计图,并附有操作说明和思考。
4. 学生需根据教师要求,完成作品的自我评价和反思。
四、作业评价1. 教师将对提交的作业进行评估,重点考察学生是否掌握了控制系统的输出和如何通过计算机编程控制硬件设备。
2. 评价标准包括但不限于:硬件连接是否正确、代码逻辑是否清晰、界面设计是否简洁易用、作品美观性和创新性等。
3. 对于优秀作品,将给予一定的奖励,以激励学生的学习积极性和创造力。
五、作业反馈1. 学生需在完成作业后,及时向教师反馈作业过程中遇到的问题和困难,以便教师了解学生的学习情况,及时提供帮助和支持。
2. 教师将根据学生的反馈,对教学方法和教学内容进行反思和改进,以提高教学质量和学生的学习效果。
3. 通过作业反馈,学生可以更好地了解自己的学习状况和不足之处,从而有针对性地进行改进和提高。
综上所述,本次作业设计方案旨在帮助学生掌握控制系统的输出,提高他们的动手能力和解决问题的能力。
南京晓庄学院信息工程学院计算机组成原理课程实验报告实验名称:微控制器实验年级专业班级:14 级计算机专业专本1班班级学号: 14131521 姓名:殷宇翔学号:姓名:时间: 2016 年 12 月 3 日一、实验目的、要求:1、掌握时序信号发生电路组成原理。
2、掌握微程序控制器的设计思想和组成原理。
3、掌握微程序的编制、写入,观察微程序的运行。
二、实验仪器设备、器件及环境:三、实验方法、原理:实验所用的时序电路原理如图2.6.1所示,可产生4个等间隔的时序信号TS1~TS4 ,其中SP为时钟信号,由实验机上时钟源提供,可产生频率及脉宽可调的方波信号。
学生可根据实验要求自行选择方波信号的频率及脉宽。
为了便于控制程序的运行,时序电路发生器设计了一个启停控制触发器UN1B,使TS1~TS4信号输出可控。
图中“运行方式”、“运行控制”、“启动运行”三个信号分别是来自实验机上三个开关。
当“运行控制”开关置为“运行”,“运行方式”开关置为“连续”时,一旦按下“启动运行”开关,运行触发器UN1B的输出QT一直处于“1”状态,因此时序信号TS1~TS4将周而复始地发送出去;当“运行控制”开关置为“运行”,“运行方式”开关置为“单步”时,一旦按下“启动运行”开关,机器便处于单步运行状态,即此时只发送一个CPU周期的时序信号就停机。
利用单步方式,每次只运行一条微指令,停机后可以观察微指令的代码和当前微指令的执行结果。
另外,当实验机连续运行时,如果“运行方式”开关置“单步”位置,也会使实验机停机。
(1)微程序控制电路微程序控制器的组成如图2.6.2,其中控制存储器采用3片E2PROM 2816芯片,具有掉电保护功能,微命令寄存器18位,用两片8D触发器74LS273(U23、U24)和一片4D触发器74LS175(U27)组成。
微地址寄存器6位,用三片正沿触发的双D触发器74LS74(U14~U16)组成,它们带有清“0”端和预置端。
第1篇一、引言随着教育改革的不断深入,实践教学在高等教育中的地位日益凸显。
实践教学不仅能够帮助学生将理论知识与实际操作相结合,提高学生的动手能力和创新能力,还能培养学生的团队协作精神和沟通能力。
本小组在本次实践教学活动中,以“XX项目”为研究对象,通过团队协作,完成了项目的策划、实施和总结,现将实践成果报告如下。
二、项目背景及目标1. 项目背景随着社会经济的快速发展,企业对高素质、高技能人才的需求日益增长。
为了满足这一需求,高校纷纷加强实践教学环节,培养学生的实际操作能力和创新意识。
本项目旨在通过实践,提高学生对XX行业的认识,培养学生的团队协作能力和项目管理能力。
2. 项目目标(1)使学生掌握XX行业的基本知识和技能;(2)培养学生的团队协作精神和沟通能力;(3)提高学生的项目管理能力和创新意识;(4)提升学生的综合素质,为将来的就业和职业发展打下坚实基础。
三、实践过程1. 项目策划阶段(1)确定项目主题:在教师的指导下,小组成员对XX行业进行了深入调研,确定了项目主题为“XX项目”。
(2)制定项目计划:小组成员根据项目主题,制定了详细的项目计划,包括项目目标、时间安排、人员分工等。
(3)进行市场调研:小组成员对XX市场进行了调研,了解了市场需求和竞争状况。
2. 项目实施阶段(1)分工合作:小组成员根据自身特长和兴趣,分工合作,分别负责项目的不同模块。
(2)实地考察:小组成员前往相关企业进行实地考察,了解企业运营情况。
(3)技术培训:小组成员参加了XX技术培训,提高了自身的专业技能。
(4)项目实施:小组成员按照项目计划,分工合作,完成了项目的实施。
3. 项目总结阶段(1)项目成果展示:小组成员对项目成果进行了展示,包括项目报告、演示文稿等。
(2)项目总结:小组成员对项目进行了总结,分析了项目过程中的优点和不足。
(3)经验分享:小组成员分享了项目经验,为今后的实践教学提供了借鉴。
四、实践成果1. 知识技能提升通过本次实践,小组成员对XX行业有了更深入的了解,掌握了XX行业的基本知识和技能,提高了自身的综合素质。
基于stm32考试试卷和答案# 基于STM32考试试卷和答案## 一、选择题1. STM32系列微控制器属于以下哪种类型的微控制器?A. 8位微控制器B. 16位微控制器C. 32位微控制器D. 64位微控制器**答案:C**2. STM32F103系列微控制器的主频是多少?A. 72MHzB. 84MHzC. 120MHzD. 168MHz**答案:C**3. STM32微控制器的JTAG接口包含以下哪些引脚?A. SWDIO, SWCLKB. TDI, TDO, TMS, TCKC. SWDIO, SWCLK, TDI, TDO, TMS, TCKD. None of the above**答案:C**4. STM32微控制器的以下哪个外设支持DMA?A. GPIOB. USARTC. ADCD. All of the above**答案:D**5. STM32微控制器的以下哪个引脚可以用于BOOT模式?A. PA0B. PB0C. PC0D. PD0**答案:A**## 二、填空题1. STM32微控制器的______位浮点运算单元(FPU)可以执行单精度和双精度浮点运算。
**答案:32**2. STM32F103系列微控制器的______个外设时钟域允许独立的时钟控制。
**答案:2**3. STM32微控制器的______接口允许通过USB进行程序下载和调试。
**答案:ST-Link**4. STM32微控制器的______引脚可以用于唤醒微控制器。
**答案:WKUP**5. STM32微控制器的______外设可以用于生成精确的时间延迟。
**答案:TIM**## 三、简答题1. 简述STM32微控制器的中断优先级是如何工作的。
**答案:**STM32微控制器使用嵌套向量中断控制器(NVIC)来管理中断优先级。
每个中断源可以被分配一个优先级,NVIC根据这些优先级来决定哪个中断应该首先被处理。
《控制系统的输出》作业设计方案(第一课时)一、作业目标本次作业旨在帮助学生掌握控制系统的输出,了解如何通过计算机编程控制硬件设备,提高他们的动手能力和解决问题的能力。
二、作业内容1. 制作简易电机控制器学生需要使用指定的硬件设备(如电机、微控制器、杜邦线等)和指定的软件平台(如Arduino IDE),编写并运行程序,实现对电机的控制。
作业内容包括但不限于:熟悉硬件设备的连接方法、掌握如何设置微控制器的参数、编写并调试控制电机的程序等。
2. 完成作业报告学生需在完成硬件连接和程序编写后,提交一份作业报告,包括但不限于:设备连接情况、程序调试过程、遇到的问题及解决方法等。
三、作业要求1. 按时完成作业:学生需在规定时间内完成作业,不得拖延。
2. 独立完成:学生需独立完成作业,不得抄袭或使用他人资源。
3. 质量要求:学生需确保作业质量,正确使用软硬件设备,正确连接硬件,编写正确的程序。
4. 提交作业报告:学生需提交完整的作业报告,包括硬件连接情况、程序调试过程、遇到的问题及解决方法等。
四、作业评价1. 评分标准:根据作业报告的质量、程序的正确性、硬件连接情况等综合评价。
2. 评价方式:教师对学生提交的作业报告进行批改,给出分数和评价意见。
3. 反馈机制:对于学生在作业中遇到的问题,教师将在课堂上进行解答和指导。
同时,教师也将将评价意见反馈给学生,帮助他们更好地理解和掌握控制系统的输出。
五、作业反馈在完成本次作业后,学生将获得一份详细的反馈报告,包括他们在完成作业过程中出现的问题、需要改进的地方以及教师对他们的评价。
学生可以根据反馈报告进行自我反思和改进,以提高他们在控制系统输出方面的技能和能力。
此外,教师还将根据学生的作业完成情况,对他们在控制系统输出方面的掌握程度进行评估,并为他们在后续课程中的学习提供针对性的建议和指导。
通过本次作业,学生将能够深入了解控制系统的输出,掌握如何使用计算机编程控制硬件设备,提高他们的动手能力和解决问题的能力。
《单片机原理与应用项目式教程》12345678自测题答案邹显圣主编目录绪论 (2)项目一 (4)项目二 (7)项目三 (9)项目四 (14)项目五 (17)项目六 (21)项目七 (24)项目八 (27)项目九 (30)绪论1.单片机发展分为哪几个阶段?各阶段的特点是什么?答:共分为四个阶段,分别如下:1)第一代单片机(1975~1976年)。
这个时期生产的单片机其特点是制造工艺落后,集成度低,而且采用双片形式。
2)第二代单片机(1976~1978年)。
其性能低、品种少、寻址范围有限、应用范围也不广。
3)第三代单片机(1979~1982年)。
存储容量大、寻址范围广,而且中断源、并行I/O口、定时器/计数器的个数都有了不同程度的增加,同时它还新集成了全双工的串行通信接口电路;在指令系统方面普遍增设了乘除法和比较指令。
4)第四代单片机(1983年以后)。
出现了工艺先进、集成度高、内部功能更强和运算速度更快的16位单片机,它允许用户采用面向工业控制的专用语言,如C语言等。
2.AT89系列单片机分为几类?各类的主要技术特点是什么?都有哪些型号?答:二进制、八进制、十进制和十六进制。
内部采用二进制4.十六进制数能被计算机直接执行吗?为什么要用十六进制数?答:不能。
引入十六进制数是为了表示或者书写上的方便,因为一位十六进制数可以代表四位二进制数。
5.单片机的应用领域主要有哪些?答:智能化产品、智能化接口、智能化测控系统、智能化仪表6.将下列十进制数转换为二进制数和十六进制数。
(1)125D (2)0.525D (3)121.678D (4)47.945D答:(1)1111101B、7DH(2)0.1000011B、0.86H(3)1111001.101011B、79.ACH(4)101111.1111B、2F.F0H7.将下列二进制数转换为十进制数和十六进制数。
(1)10110101B (2)0.101100100B(3)0.1010B (4)1101.0101B答:(1)181D、B5H(2)0.695D、0.B2H(3)0.625D、0.AH(4)13.3125D、D.5H8.将下列十六进制数转换为二进制数和十进制数。
stm32考试题及答案判断题一、判断题(每题2分,共20分)1. STM32系列微控制器是基于ARM Cortex-M3内核的。
()答案:√2. STM32的所有I/O端口均支持5V容限。
()答案:×3. STM32的内部时钟系统可以提供高达72MHz的时钟频率。
()答案:×4. STM32的ADC模块可以同时对多个通道进行采样。
()答案:√5. STM32的USART模块可以配置为硬件流控制模式。
()答案:√6. STM32的内部Flash存储器可以作为程序存储空间,也可以作为数据存储空间。
()答案:√7. STM32的GPIO端口可以配置为模拟输入模式。
()答案:√8. STM32的RTC模块可以提供毫秒级的定时功能。
()答案:×9. STM32的DMA控制器可以用于内存到内存的数据传输。
()答案:√10. STM32的CAN模块支持CAN 2.0B协议。
()答案:√二、填空题(每题2分,共20分)1. STM32的______内核支持中断嵌套,最多可以嵌套______层中断。
(ARM Cortex-M3,8)2. STM32的内部时钟系统可以通过______模块进行配置。
(RCC)3. STM32的______模块可以用于生成精确的时间延迟。
(TIM)4. STM32的______模块可以用于存储用户数据。
(EEPROM)5. STM32的______模块可以用于实现PWM输出。
(TIM)6. STM32的______模块可以用于实现模数转换。
(ADC)7. STM32的______模块可以用于实现数模转换。
(DAC)8. STM32的______模块可以用于实现实时时钟功能。
(RTC)9. STM32的______模块可以用于实现看门狗功能。
(IWDG)10. STM32的______模块可以用于实现以太网通信。
(ETH)三、简答题(每题10分,共40分)1. 简述STM32的内部时钟系统的主要组成部分。
《微控制器应用开发》期终考试试卷(A 卷)适用专业:1、计算机能识别的语言是( ) A.汇编语言 B.自然语言 C.机器语言 D.高级语言2、程序状态字PSW 的( )位为1时,表示加法运算中,产生了进位。
A. C B. Ac C. Ov D. P3、SJMP rel ,设rel =7FH ,并假设该指令存放在2114H 和2115H 单元中,执行完该条指令后CPU 到何处去取指令( ) A. 2114H B. 2116H C. 2115H D. 2195H4、在中断服务程序中,至少应有一条( ) A.传送指令 B.中断返回指令 C.加法指令 D.转移指令5、当MCS-51进行多机通讯时,串行接口的工作方式应选为( ) A. 方式2或方式3 B. 方式1 C. 方式2 D. 方式0二、填空题(每小空1分,共10分)1、MCS-51单片机片内共有________字节单元的RAM ,________字节单元的ROM 。
2、MCS-51单片机的堆栈SP在操作中遵循____________________原则3、在MCS-51单片机上电或复位时,程序计数器PC的内容为________。
4、串行中断ES的中断入口地址为________。
5、外部中断请求有两种信号方式即_____________和_____________。
6、定时/计数器的核心模块是________________________。
7、A/D转换器是将___________转换为______________________的器件。
三、名词解释(每小题4分,共12分)1、单片机2、串行通信3、波特率四、简答题(每小题5分,共20分)1、简述MCS-51单片机CPU的运算器中有哪些部分组成?2、简述MCS-51串行通信的4种工作方式。
3、简述MCS-51单片机中有哪几种寻址方式?4、简述MCS-51单片机的中断响应过程。
五、程序填空(每小题4分,共20分)1、试分析以下程序的执行结果。
微控制器作业答案 doc微控制器作业答案doc微控制器作业(第四章)4.5、试用c51语言撰写将0-9,a-f转换成适当的asc2码点的程序。
答:程序段如下:#include#includevoidmain(){unsignedcharch;scanf(\if(9>=ch>=0||f>=ch>=a)printf(\return0;}4.11、用c51语言和汇编语言混合编程的方法,使单片机的p1.0引脚产生占空比为90%周期为10ms的方波。
请问:程序如下:c程序文件:#include#defineucharunsignedcharsbitp1_0=p1^1;externdelay1ms(uncharx);//外部函数delay1ms()声明,入口参数为xmain(){for(;;){p1_0=1;delay1ms(9);//调用外部函数delay1ms(9),参数9送进寄存器r7p1_0=0;delay1ms(1);}}voiddelay1ms(){#pragmaasmpublic_delay1ms//用public声明_delay1ms为其他函数调用,以\开头后跟函数名desegmentcode//定义de段在定义函数段rsegde//定义de为当前段_delay1ms:nopdela:movr1,#0f8hlop1:nopnopdjnzr1,lop1djnzr7,delaretend#pragmaendasm}微控制器作业(第六章)6.2、设计一个声光报警器,设备正常运行时,绿色指示灯亮,若设备非正常运行时,红灯闪烁、报警器持续发声报警。
答:#include#includedefineredp1^0//红灯输入definegreenp1^1//绿灯输入voiddelay(viod);main(){it0=0;//外中断0电平引爆方式ea=1;//对外开放cpu中断容许ex0=1;//设置外中断0中断容许px0=0;//中断系统只有一个中断源,设置为低中断优先级while(1){bingbing=1;//蜂鸣器三极管截止,不叫;green=0;//绿灯亮}}voiddelay1s(){#pragmaasmmovr7,#1000del:movr6,#500djnzr6,$djnzr7.del#pragmaendasm}extern()interrupt0{bingbing=0;//使蜂鸣器持续发声green=1;//绿灯灭red=0;//使红灯亮delay1s();red=1;//红灯灭}definebingbingp1^2//蜂鸣器输出6.3、简述at89s系列单片机内部中断源,并指出各中断源中断服务程序入口地址。
《微控制器》作业院系:电气信息工程学院班级:姓名:学号:目录引言 (3)1.时钟功能的实现选择 (3)2.时间显示电路的设计 (4)2.1扫描方式的选择 (4)2.2LED数码管的选择 (5)2.3显示电路的整体实现 (5)附录1原理图的绘制 (5)附录2PCB的绘制 (7)附录3系统源程序 (8)结论 (11)引言单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。
单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。
将它嵌入到形形色色的应用系统中,就构成了众多产品、设备的智能化核心。
本设计就是应用单片机强大的控制功能制作而成的电子万年历,该电子万年历包括三大功能:实时显示年、月、日、时、分、秒;实时监测环境温度(可根据需要启动高温报警功能);电子闹钟。
本设计采用的是AT89C51单片机,计时芯片采用DALLAS公司的充电时钟芯片DS1302,该芯片通过简单的串行通信与单片机进行通信,时钟/日历电路能够实时提供年、月、日、时分、秒信息,当外部电源掉电时能够利用后备电池准确计时。
温度检测采用DALLAS公司的数字化温度传感器,该芯片采用的是独特的“一线总线”的方式与单片机进行通信,一线总线独特而且经济的特点,是用户可以轻松的组建传感器网络,为测量系统的构建引入全新的概念。
实时温度采用一线总线的方式传输大大的提高了信号的抗干扰性,分辨率可通过软件设置,其小巧的体积为各种环境下测量温度提供了方便。
显示器件采用通用型1602液晶,可显示32个字符,如果使用数码管来做显示器件需消耗大量的系统资源,因此采用低功耗的1602液晶,该液晶显示方便,功能强大,完全能满足数字万年历的显示要求。
1. 时钟功能的实现选择方案一:采用实时时钟芯片。
实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需程序干预。
计算机可通过中断或查询方式读取计时数据进行显示,因此计时功能的实现无需占用CPU的时间,程序简单。
此外,实时时钟芯片多数带有锂电池做后备电源,具备永不停止的计时功能;具有可编程方波输出功能,可用做实时测控系统的采样信号等;有的实时时钟芯片内部还带有非易失性RAM,可用来存放需长期保存但有时也需变更的数据。
由于功能完善,精度高,软件程序设计相对简单,且计时不占用CPU时间,因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能。
2. 时间显示电路的设计2.1 扫描方式的选择我选用LED数码管作为显示部分的主要元件,数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类[5]。
方案一:静态显示驱动静态显示就是显示驱动电路,具有输出锁存功能。
当显示器显示某个字符时,相应的段恒定的导通或截止,直到显示另一个字符为止。
即单片机将所有要显示的数据送出后就不再控制LED,直到下一次显示时再传送一次新的显示数据。
静态显示的数据稳定,数码管的亮度较高,占用的CPU时间少,程序容易,管理简单,但占用的I/O线资源教多。
静态显示中,每一个显示器都要占用单独的具有锁存功能的I/O接口,该接口用于笔划段字型代码。
这样单片机只要把要显示的字形代码发送到接口电路,该字段就可以显示发送的字形。
要显示新的数据时,单片机在发送新的字形码。
动态扫描方法是用其接口电路把所有显示器的8个笔画段a~h同名端连在一起,而每一个显示器的公共极COM 各自独立的受I/O线控制。
CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM段,而这一段是由I/O控制的,由单片机决定何时显示哪一位了。
优点:程序简单,亮度高。
缺点:所占I/O口过多,不适合数目多的数码管设计课题。
方案二:动态显示驱动数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2mS,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
2.2 LED数码管的选择LED数码管分为共阴和共阳两种,以利用AT89C51灌电流比较大的特点作为数码管的位选,而段码则由上拉电阻驱动,用共阴数码管会使电路更加简单共阴数码管管脚图与内部结构怎样测量数码管引脚,分共阴和共阳:找公共共阴和公共共阳首先,我们找个电源(3到5伏)和1个1K(几百的也欧的也行)的电阻,VCC串接个电阻后和GND接在任意2个脚上,组合有很多,但总有一个LED会发光的找到一个就够了,,然后用GND不动,VCC(串电阻)逐个碰剩下的脚,如果有多个LED(一般是8个),那它就是共阴的了。
相反用VCC 不动,GND逐个碰剩下的脚,如果有多个LED(一般是8个),那它就是共阳的。
也可以直接用数字万用表,红表笔是电源的正极,黑表笔是电源的负极[6]。
2.3 显示电路的整体实现显示电路共包含14位数码管外加4个LED发光二极管,数码管的段选部分由P0口控制,即数码管的段选端并联与P0口,数码管的段控端a、b、c、d、e、f、g、dp分别接到P0口的P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7口线上,段选部分与P0口之间接上拉电阻来输入高电平与增强驱动电流,电阻的大小可影响数码管的亮度,由于我没有外加其他驱动电路因此我选择1K的排阻来增加驱动能力;数码管的位选由P1口和P2口控制,每个数码管的位控线单独占用单片机P1口和P3口一根输出口线,如果发现数码管还是不够亮的话,可在位选端加NPN三极管放大电流,此时要加限流电阻以免数码管被烧。
在时分秒之间我各设置了2个LED做为时间分隔符来随秒位每秒闪烁一次,更加的美观.附录1 原理图的绘制(1)在Protel 99se中先新建一个工程,把所需要的元件载入到文档里面(2)画好元件库与封装库里的没有的元件原理图与封装。
(3)再按照系统电路图绘制导线,把元件连好线。
附录2 PCB的绘制单片机控制部分PCB图数码管显示部分pcb图附录3系统源程序#include<AT89X51.h>unsigned char codedispcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6 D,0x7D,0x07,0x7F,0x6F,0x40};//共阴极unsigned chardispbitcode[]={0x00,0x21,0x42,0x63,0x84,0x A5,0xC6,0xE7};//管子的选择unsigned char dispbuf[8]={0,0,10,0,0,10,2,1}; //16为显示间断号符unsigned char dispbym[8]={1,2,7,0,6,0,0,2}; unsigned char dispbitcnt;unsigned char second;unsigned char minite;unsigned char hour;unsigned char day;unsigned char month;unsigned char yearh;unsigned char yearl;unsigned int tcnt;unsigned char mstcnt;unsigned char i,j;void main(void){TMOD=0x02; //设置模式为定时器T0的模式2 (8位自动重装计数初值的计数值)TH0=0x06; //设置计数器初值,靠TH0存储重装的计数值X0=256-250=6TL0=0x06;TR0=1; //启动T0ET0=1; //开启定时器T0中断允许EA=1; //开启中断总控制yearh=20;yearl=6;month=7;day=21;hour=12; //初始值为12:00:00while(1){if(P0_0==0) //扫描秒钟按钮{for(i=5;i>0;i--) //按钮抖动消除for(j=248;j>0;j--); //计时if(P0_0==0){second++;if(second==60){second=0;}dispbuf[0]=second%10;dispbuf[1]=second/10;while(P0_0==0);}}if(P0_1==0) //扫描分钟按钮{for(i=5;i>0;i--)for(j=248;j>0;j--);if(P0_1==0){minite++;if(minite==60){minite=0;}dispbuf[3]=minite%10;dispbuf[4]=minite/10;while(P0_1==0);}}if(P0_2==0) //扫描时钟按钮{for(i=5;i>0;i--)for(j=248;j>0;j--);if(P0_2==0){hour++;if(hour==24){hour=0;}dispbuf[6]=hour%10;dispbuf[7]=hour/10;while(P0_2==0);}}if(P0_3==0){for(i=5;i>0;i--)for(j=248;j>0;j--);if(P0_3==0){day++;if(month==2&&((yearl==0&&yearh%4==0)|| (yearl!=0&&yearl%4==0))&&day==30)day= 1;else if(month==2&&day==29)day=1;elseif((month==4||month==6||month==9||month== 11)&&day==31)day=1;else if(day==32)day=1;dispbym[0]=day%10;dispbym[1]=day/10;while(P0_3==0);}}if(P0_4==0){for(i=5;i>0;i--)for(j=248;j>0;j--);if(P0_4==0){month++;if(month==13)month=1;dispbym[2]=month%10;dispbym[3]=month/10;while(P0_4==0);}}if(P0_5==0){for(i=5;i>0;i--)for(j=248;j>0;j--);if(P0_5==0){yearl++;if(yearl==100){yearl=0;yearh++;if(yearh==100)yearh=20;}dispbym[4]=yearl%10;dispbym[5]=yearl/10;dispbym[6]=yearh%10;dispbym[7]=yearh/10;while(P0_5==0);}}}}void t0(void)interrupt 1 using 0 //t0的中断程序{mstcnt++;if(mstcnt==8) //8次250us为2ms,即每隔2ms扫描一个数码管{mstcnt=0;P1=dispcode[dispbuf[dispbitcnt]];P2=dispcode[dispbym[dispbitcnt]];P3=0xff;P3=dispbitcode[dispbitcnt]; //管子的选择dispbitcnt++;if(dispbitcnt==8){dispbitcnt=0;}}tcnt++;if(tcnt==4000) //定时器的定时计数,4000次250us为1秒{tcnt=0;second++;if(second==60) //从秒到时层层嵌套,程序较为精练{second=0;minite++;if(minite==60){minite=0;hour++;if(hour==24){hour=0;day++;if(month==2&&((yearl==0&&yearh%4==0)|| (yearl!=0&&yearl%4==0))&&day==30)day= 1;else if(month==2&&day==29)day=1;elseif((month==4||month==6||month==9||month== 11)&&day==31)day=1;else if(day==32)day=1;if(day==1){month++;if(month==13){month=1;yearl++;if(yearl==100){yearl=0;yearh++;if(yearh==100){yearh=20;}}}}}}}dispbuf[0]=second%10; //送显示数据dispbuf[1]=second/10;dispbuf[3]=minite%10;dispbuf[4]=minite/10;dispbuf[6]=hour%10;dispbuf[7]=hour/10;dispbym[0]=day%10;dispbym[1]=day/10;dispbym[2]=month%10;dispbym[3]=month/10;dispbym[4]=yearl%10;dispbym[5]=yearl/10;dispbym[6]=yearh%10;dispbym[7]=yearh/10;}}结论本设计通过软硬件的结合利用单片机实现了智能化万年历时钟的展示,它具有集成化,智能化,高精度,高性能,高可靠性和低价格等优点,是一个值得推广的一种方法。