tc蜂鸣器流水灯数码管显示作息时间控制单片机课程设计(2)
- 格式:doc
- 大小:1.10 MB
- 文档页数:25
一、课程设计目的《单片机原理及应用》课程设计是一项重要的实践性教育环节,是学生在校期间必须接受的一项工程训练。
在课程设计过程中,在教师指导下,运用工程的方法,通过一个简单课题的设计练习,可使学生初步体验单片机应用系统的设计过程、设计要求、完成工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。
通过课程设计,应能加强学生如下能力的培训:(1)独立工作能力和创造力;(2)查阅图书资料,产品手册和各种工具书的能力;(3)工程绘图的能力;(4)编写技术报告和编制技术资料的能力(5)综合运用专业及基础知识,解决实际工程技术问题的能力;二、设计要求2.1总体要求(1) 独立完成设计任务(2) 绘制系统硬件总框图(3) 绘制系统原理电路图(4) 制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;(5) 制定编写调试方案,编写用户操作使用说明书(6) 写出设计工作小结。
对在完成以上文件过程所进行的有关步骤如设计思想、指标论证、方案确定、参数计算、元器件选择、原理分析等作出说明,并对所完成的设计作出评价,对自己整个设计工作中经验教训,总结收获和今后研修方向。
2.2 具体要求本次工程实践的校内部分主要以单片机为基础,进行单片机软件编程,目的是为了提高学生的软件编程和系统设计能力,整个设计系统包括两个部分,硬件及软件部分,硬件部分已经制作成功,学生只需要掌握其原理和焊接相应的元器件,掌握元器件的辨别和元器件的作用以及应用场所即可,另外对所焊接的电路还需要进行仔细的检查,判断是否有焊接错误的地方或者短路的地方,对出现的异常情况要能够根据现象判别原因,并具备解决问题的能力,从而切实提高学生的硬件电子电路的分析、判断能力。
软件编程是本次工程实践的重要环节。
在为期两周的工程实践中,将占据主要时间,学生要完成的软件编程任务主要包括以下几点:1)、熟悉Keil C51编程平台及相关编程软件2)、编写、调试蜂鸣器、继电器动作、方波程序并进行软硬件联调3)、编写、调试LED流水灯(循环显示)程序并进行软硬件联调4)、编写、调试键盘扫描子程序并进行软硬件联调5)、编写、调试数码管动态扫描程序并进行软硬件联调6)、电子钟设计(包括键盘、时钟、显示等)7)、作息时间控制系统设计(包括键盘、显示、时钟、报警等)8)、智能交通灯控制系统设计9)、车速里程测量、显示设计三、设计内容及方法单片机原理及其应用课程设计通常选择一般常见、常用的简单应用装置或对象进行微机控制。
======================蜂鸣器与流水灯实验===================实验(一)蜂鸣器一、电路图二、程序注释1、频率、节拍常数的编码2、定时/计数器0中断赋初值,使计数器计满一次时时间为100ms。
同时没记一满次,n减13、毫秒的延时函数4、无参数返回值的延时函数5、主函数,用switch函数选择,当case为0x00时,延时一段时间再开始6、让i自加1,延时7、选择频率常数,选择m、n为第1个,第2个……第i个频率8、开定时器中断,延时4*m的时间等待节拍完成,当n不等于0时,将选出来的频率依次输出,实验(二)流水灯一、电路图二、程序注释①直接赋值控制亮灯法#include <reg52.h>sbit LED0=P1^0 ; //定义八个流水灯等为输出端口P1^0~P1^7 sbit LED1=P1^1 ;sbit LED2=P1^2 ;sbit LED3=P1^3 ;sbit LED4=P1^4 ;sbit LED5=P1^5 ;sbit LED6=P1^6 ;sbit LED7=P1^7 ;void delay(float t) //延时函数{ unsigned int i,j;j=t*100;while(j--){for(i=8000;i;i--);}}void main() //主函数{while(1){LED0=0; //亮第1个灯delay(0.1); //延时0.1sLED0=1; //熄灭LED1=0; //亮第2个灯delay(0.1);LED1=1;LED2=0; //亮第3个灯delay(0.1);LED2=1;LED3=0; //亮第4个灯delay(0.1);LED3=1;LED4=0; //亮第5个灯delay(0.1);LED4=1;LED5=0; //亮第6个灯delay(0.1);LED5=1;LED6=0; //亮第7个灯delay(0.1);LED6=1;LED7=0; //亮第8个灯delay(0.1);LED7=1;}}②循环左移法#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit p1=P1^0;uchar temp;void delay(uint); //延时函数声明void main() //主函数{temp=0xfe; //将0xfe赋给tempP1=temp; //P1值为temp,即11111110,第一个灯亮 while(1){temp=_crol_(temp,1); /*循环左移函数,每次向左移一位,使其第1,2,3……依次为0*/delay(100); //延时0.1sP1=temp; //将temp值赋给P1使}}void delay(uint z) //延时函数{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}。
单片机流水灯课程设计第一篇:单片机流水灯课程设计单片机原理及系统课程设计报告基于AT89C51单片机的流水灯引言1.1 课题简介单片机全称叫单片微型计算机(Single Chip Microcomputer),是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:在智能仪器仪表上的应用,例如精密的测量设备;在工业控制中的应用,用单片机可以构成形式多样的控制系统、数据采集系统,例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等;在家用电器中的应用可从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
单片机在医用设备领域中的应用,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等;在各种大型电器中的模块化应用,如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。
本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。
《单片机应用技术》课程标准一、概述(一)课程性质单片机技术是现代电子工程领域一门飞速发展的技术,其在教学及产业界的技术推广仍然是当今科学技术发展的热点。
学习单片机并掌握其设计应用技术已经成为电子类学生必须掌握的一门技术,也是现代工科学生就业的一个基本条件。
《单片机应用技术》是应用电子技术、电气自动化等专业一门专业基础课,是我系重点建设课程之一。
它以模拟电子技术、数字电子技术、C语言等课程为基础。
后续课程是各专业课如:计算机控制、智能化仪器仪表、程控交换机等通信设备、数控机床、课程设计、毕业设计,一般都要应用到单片机系统的应用。
它可以充分体现学生利用自己所掌握的知识解决实际工程问题的能力。
单片机知识在电子类专业整个课程体系中处于承上启下的核心地位。
通过本课程的学习,使学生掌握单片机技术及其在工业控制、经济建设和日常生活中的应用,培养学生实践能力、创新能力和新产品设计开发能力,为将来从事电子电器新产品设计开发,电子产品的检测和维护等工作奠定坚实的基础,为学生将来在电子类专业领域进一步发展打下良好基础。
(二)课程基本理念本课程的设计突破了学科体系模式,打破了原来各学科体系的框架,将各学科的内容按“项目”进行整合。
本课程的“项目”以职业实践活动为主线,因而,它是跨学科的,且理论与实践一体化。
强调学生个人适应就业市场变化的需要。
因而,本课程的设计兼顾了企业和个人两者的需求,着眼于人的全面发展,以培养全面素质为基础,以提高综合职业能力为核心。
本课程包含了单片机应用技术的五个项目,每个项目均由若干个具体的典型工作任务组成,每个任务均将相关知识和实践(含实验)过程有机结合,力求体现“做中学”、“学中做”的教学理念;本课程内容的选择上降低理论重心,突出实际应用,注重培养学生的应用能力和解决问题的实际工作能力。
(三)课程设计思路突出三性:职业性、实践性和开放性。
即职业性:将单片机应用技术中符合电子专业高职类学生就业岗位需要的内容提取出来,使本课程的学习内容和环境与实际工作基本一致。
蜂鸣器单片机课程设计一、课程目标知识目标:1. 学生能够理解单片机的结构组成、工作原理及其在自动化控制中的应用。
2. 学生能够掌握蜂鸣器的工作原理,并运用编程知识实现对蜂鸣器的控制。
3. 学生能够了解并掌握相关的电子元器件知识,如电阻、电容、二极管等。
技能目标:1. 学生能够运用所学知识,设计并搭建简单的基于单片机的蜂鸣器控制系统。
2. 学生能够编写程序,实现对蜂鸣器音调、音量的控制,完成特定功能。
3. 学生能够通过实践操作,培养动手能力、问题解决能力和团队协作能力。
情感态度价值观目标:1. 学生能够培养对电子技术的兴趣,激发学习热情,形成自主学习、探索未知的良好习惯。
2. 学生能够认识到单片机在现实生活中的应用,理解科技发展对生活的改善,增强社会责任感。
3. 学生能够在团队协作中学会尊重他人,培养良好的沟通能力和团队精神。
分析课程性质、学生特点和教学要求,本课程旨在让学生在掌握单片机基本原理的基础上,通过实践操作,学会设计简单的蜂鸣器控制系统,培养实际操作能力。
课程目标分解为具体学习成果,为后续教学设计和评估提供依据。
二、教学内容1. 单片机基础知识:介绍单片机的组成、工作原理,重点讲解AT89C51单片机的内部结构、引脚功能及其指令系统。
相关教材章节:第一章 单片机概述、第二章 AT89C51单片机结构。
2. 蜂鸣器工作原理:讲解蜂鸣器的基本构造、工作原理,以及如何通过单片机控制蜂鸣器发出不同音调的声音。
相关教材章节:第三章 常用外围设备、第六章 单片机控制蜂鸣器。
3. 程序设计:教授如何编写C语言程序,实现对蜂鸣器音调、音量的控制,并完成特定功能。
相关教材章节:第四章 单片机C语言编程、第五章 单片机中断与定时器。
4. 电子元器件知识:介绍电阻、电容、二极管等常用电子元器件的原理及应用。
相关教材章节:第七章 常用电子元器件。
5. 实践操作:安排学生进行单片机控制蜂鸣器的实践操作,包括电路搭建、程序编写、调试与优化等。
武汉**大学单片机设计报告课程单片机课程设计设计题目 LED灯及蜂鸣器年级专业信息与计算科学09级学号学生姓名指导教师2012年 04 月 17 日设计题目:一、要求1.了解LED显示流水灯的原理。
2.能够在LED上显示和控制蜂鸣器的工作。
3.熟悉掌握keil软件的使用。
二、分析本设计使用AT89C52RC做为主控制模块,利用简单的外围电路来驱动LED蝴蝶。
设计分为三个模块:单片机控制模块,输出显示模块和驱动模块,单片机控制模块以单片机为核心,以软件KEIL编程实现信号输出,以驱动LED及蜂鸣器为目的。
三、设计1、硬件方面(1)、LED驱动模块图文显示有静态和动态两种方案,本设计中静动态都用到了。
动态扫描的意思简单的说就是轮流点亮。
具体就图案来说,把内部同行的发光管的阳极相连在一起,先送出对应行的发光管亮灭的数据并锁存,然后选通其它行使其燃亮相同的时间,然后熄灭。
反复循环。
蜂鸣器的控制则是加入三极管接在VCC,单片机的第20引脚和负极上,以此来控制蜂鸣器的工作。
(2)、硬件设计实验板上设计一个蝴蝶状的LED显示,可用于简单的图形图像。
蝴蝶的图案是由74个LED绿灯、8个红灯、10个黄灯拼接而成。
其中绿灯直接接到正负极上,黄灯和红灯接到单片机的P2口,来控制其闪动。
2、软件编程(包括流程图、完整的汇编源程序及其注释)1.电路图本软件要求实现如下要求:外圈绿灯亮度明亮,红灯和黄灯都不停地闪动,蜂鸣器自动播放歌曲。
电路图如下:2.主程序本设计的系统软件能使系统LED各点亮度均匀,充足,可显示清晰图案,并且闪动。
系统主程序开始后,首先是对系统环境初始化,包括设置串口,中断和端口;然后闪动红黄灯,由于单片机没有停机指令,所以可以设置系统程序不断循环。
3.序代码如下:#include <reg51.h>#include <rtx51tny.h>#include <absacc.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define DY_PORT P2 //设置LED连接的I/O组#define DY_SPEED 100 //设置每一个明亮级的停留时间(值域:0~65535)struct music_type{ uchar tone;uchar delay;};void delay (unsigned int a){ // 1ms延时程序unsigned int i;while( --a != 0){for(i = 0; i < 600; i++);//STC单片机在外部晶振为12MHz时i值上限为600} //AT89C51单片机在外部晶振为12MHz时i值上限为125}uint code tonetab[]={ //D调7声音阶3个8度63967,64138,64291,64360,64489,64603,64704, //低音1~764752,64837,64913,64948,65012,65070,65120, //中音1~765144,65186,65225,65242,65274,65303,65328 //高音1~7};//曲谱,每个音符两项数据:第1项为音高,第2项为节拍(以1/4拍为单位)struct music_type code notetab[]={ //”三十里铺”曲谱1+14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1+14,0x04,6+7,0x02,5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,1+14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1+14,0x04,6+7,0x02,5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,1+14,0x02,4+7,0x04,5+7,0x02,1+14,0x02,1+14,0x04,6+7,0x02,5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,4+7,0x03,4+7,0x01,3+7,0x02,2+7,0x02,1+7,0x03,2+7,0x01,5+7,0x02,2+7,0x02,1+7,0x08,1+14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1+14,0x04,6+7,0x02,5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,1+14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1+14,0x04,6+7,0x02,5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,1+14,0x02,4+7,0x04,5+7,0x02,1+14,0x02,1+14,0x04,6+7,0x02,5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,4+7,0x03,4+7,0x01,3+7,0x02,2+7,0x02,1+7,0x03,2+7,0x01,5+7,0x02,2+7,0x02,1+7,0x08,0,0x00};sbit P10=P1^0; //连接无源蜂鸣器/*sbit SDAT=P3^4; //连接显示数码的移位寄存器sbit SCLK=P3^5;*/volatile uchar tl1,th1; //存控制定时器1定时参数uint led=0x0001; //LED初始显示数据bit dir=0; //LED流水方向控制标志void T1_sev() interrupt 3 //定时器T1中断:控制蜂鸣器发声频率{ TL1=tl1; //重装定时数据TH1=th1;P10=!P10; //蜂鸣器驱动倒相}void INT1_serv() interrupt 2 //外中断1,改变LED流水方向标志{ dir=!dir; //流水方向控制标志改变}void init() _task_ 0 //任务0:初始化,激活任务1~3{ TMOD|=0x10; //系统硬件初始化ET1=1;IT1=1;EX1=1;os_create_task(1); //启动任务1~3/* os_create_task(2);*/os_create_task(3);os_delete_task(0); //自身撤退}void disled() _task_ 1 //任务1:16个LED流水显示{ unsigned int temp;unsigned int i;while(1){ temp=0xA0;for(i=0;i<8;i++){ //8个流水灯逐个闪动DY_PORT=~temp;delay(DY_SPEED); //调用延时函数temp<<=1;}temp=0xA7;for(i=0;i<8;i++){ //8个流水灯反向逐个闪动DY_PORT=~temp;delay(DY_SPEED); //调用延时函数temp>>=1;}temp=0xA0;for(i=0;i<8;i++){ //8个流水灯依次全部点亮DY_PORT=temp;delay(DY_SPEED); //调用延时函数temp<<=1;}temp=0xA7;for(i=0;i<8;i++){ //8个流水灯依次反向全部点亮DY_PORT=temp;delay(DY_SPEED); //调用延时函数temp>>=1;}os_wait2(K_IVL,10); //控制LED流水显示的节奏}}void musicplay() _task_ 3 //任务3:蜂鸣器演奏”三十里铺”{ uchar i,j;while(1){ i=0;while(notetab[i].delay){ if(!notetab[i].tone) TR1=0; //音高数据为0else //音高数据不为0{ th1=TH1=tonetab[notetab[i].tone-1]/256; //用定时参数控制T1的振荡频率(音高)tl1=TL1=tonetab[notetab[i].tone-1]%256;TR1=1; //该音符发声}for(j=0;j<notetab[i].delay;j++) //控制音符的持续时间(节拍)os_wait2(K_IVL,20);i++; //拟换下个音符}TR1=0; //停奏os_wait2(K_IVL,100); //奏完1遍后的等待}}3、调试说明使用LEIL 软件编译调试代码,确保无误后下载到单片机里,硬件电路连接p2口LED的所有跳帽,下载生成的hex文件,即可看到LED屏幕上能够出现明亮的蝴蝶图案并且有歌曲的伴随。
单片机论文之流水灯及数码管控制解析用单片机控制流水灯及数码管目录课程设计目录 (1)课程设计摘要 (2)正文 (3)课程设计涉及的知识及所需平台 (3)元件介绍 (9)电路设计及分析 (12)程序设计 (14)调试运行 (21)设计心得 (23)参考文献 (24)一:课程设计摘要设计摘要设计要求:利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减至765398并保持显示此数,与此同时利用定时器0以500MS的速度进行流水灯从上到下的移动,当数码管上的数减到停止时,流水灯也停止然后全部闪烁,3秒后(用T0定时)流水灯全部关闭,数码管上显示“HELLO”,到此保持住。
设计说明:数码管的动态显示是一种按位轮流点亮各位数码管的显示方式,即在某一时段,只让其中一位数码管的“位选端有效”,并送出相应的字型显示编码。
此时其他位的数码管因位选端无效而都处于熄灭状态;下一时段按顺序选通另外一位数码管,并送出相应的字型显示编码,按此规律循环下去,即可使各位数码管分别间断地显示出相应的字符。
通过定时器可以控制单片机上的数码管以及流水灯的显示时间,从而达到设计的要求。
关键词:单片机,数码管,动态显示,流水灯,定时器设计目的以AT89C52单片机为核心,制作一个数码管和流水灯互相配合显示的器件。
巩固加深对AT89C52单片机的认识,学会用AT89C52设计最小系统,并由此拓展运用单片机实现其他功能的设计。
设计引言单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
单片机课程设计 蜂鸣器一、课程目标知识目标:1. 让学生理解单片机的基本原理和功能,掌握蜂鸣器在单片机系统中的应用。
2. 使学生掌握蜂鸣器的电路连接和工作原理,能够运用编程实现蜂鸣器的控制。
3. 帮助学生掌握相关指令和程序设计方法,实现蜂鸣器的不同音调、音量及节奏的控制。
技能目标:1. 培养学生动手操作能力,能够独立完成蜂鸣器与单片机的连接和调试。
2. 提高学生的编程能力,使其能够设计出功能完善、结构清晰的蜂鸣器控制程序。
3. 培养学生的问题分析和解决能力,能够针对实际需求,调整程序参数,实现不同功能。
情感态度价值观目标:1. 培养学生对单片机课程的兴趣和热情,激发学生主动探索和实践的精神。
2. 培养学生的团队合作意识,鼓励学生在课堂上积极交流、分享经验,共同进步。
3. 培养学生严谨、认真、负责的学习态度,使其在课程学习过程中养成良好的学习习惯。
课程性质分析:本课程为单片机课程设计,以实践操作为主,注重理论联系实际,提高学生的动手能力和创新能力。
学生特点分析:学生处于高年级阶段,已具备一定的单片机基础知识和编程能力,对实践操作有较高的兴趣。
教学要求:结合课程性质和学生特点,明确课程目标,注重理论与实践相结合,充分调动学生的积极性和主动性,培养其独立思考和解决问题的能力。
通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高其综合素质。
二、教学内容1. 理论知识:- 单片机原理概述,重点掌握其内部结构、工作原理及指令系统。
- 蜂鸣器工作原理,包括蜂鸣器的种类、电路连接方式及声音产生机制。
- 编程语言基础,复习C语言基本语法,强调其在单片机编程中的应用。
2. 实践操作:- 蜂鸣器与单片机的硬件连接,学会使用面包板进行电路搭建。
- 编写蜂鸣器控制程序,实现不同音调、音量和节奏的控制。
- 调试程序,学会使用调试工具,分析并解决程序运行过程中可能出现的问题。
3. 教学大纲:- 第一周:单片机原理复习及蜂鸣器工作原理学习。
1 绪论1.1课程设计目的《单片机原理及应用》课程设计是一项重要的实践性教育环节,是学生在校期间必须接受的一项工程训练。
在课程设计过程中,在教师指导下,运用工程的方法,通过一个简单课题的设计练习,可使学生初步体验单片机应用系统的设计过程、设计要求、完成工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。
通过课程设计,应能加强学生如下能力的培训:1、独立工作能力和创造力;2、查阅图书资料,产品手册和各种工具书的能力;3、工程绘图的能力;4、编写技术报告和编制技术资料的能力;5、综合运用专业及基础知识,解决实际工程技术问题的能力。
1.2 设计要求1.2.1总体要求(1) 独立完成设计任务(2) 绘制系统硬件总框图(3) 绘制系统原理电路图(4) 制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;(5) 制定编写调试方案,编写用户操作使用说明书(6) 写出设计工作小结。
对在完成以上文件过程所进行的有关步骤如设计思想、指标论证、方案确定、参数计算、元器件选择、原理分析等作出说明,并对所完成的设计作出评价,对自己整个设计工作中经验教训,总结收获和今后研修方向。
1.2.2 具体要求本次工程实践的校内部分主要以单片机为基础,进行单片机软件编程,目的是为了提高学生的软件编程和系统设计能力,整个设计系统包括两个部分,硬件及软件部分,硬件部分已经制作成功,学生只需要掌握其原理和焊接相应的元器件,掌握元器件的辨别和元器件的作用以及应用场所即可,另外对所焊接的电路还需要进行仔细的检查,判断是否有焊接错误的地方或者短路的地方,对出现的异常情况要能够根据现象判别原因,并具备解决问题的能力,从而切实提高学生的硬件电子电路的分析、判断能力。
软件编程是本次工程实践的重要环节。
在为期两周的工程实践中,将占据主要时间,学生要完成的软件编程任务主要包括以下几点:(1)熟悉Keil C51编程平台及相关编程软件(2)编写、调试蜂鸣器、继电器动作、方波程序并进行软硬件联调(3)编写、调试LED流水灯(循环显示)程序并进行软硬件联调(4)编写、调试键盘扫描子程序并进行软硬件联调(5)编写、调试数码管动态扫描程序并进行软硬件联调(6)电子钟设计(包括键盘、时钟、显示等)(7)作息时间控制系统设计(包括键盘、显示、时钟、报警等)(8)智能交通灯控制系统设计(9)车速里程测量、显示设计1.3 设计内容及方法单片机原理及其应用课程设计通常选择一般常见、常用的简单应用装置或对象进行微机控制。
所涉及的系统可以实际制作,也可以实验室模拟,具体步骤和内容如下1.3.1设计准备认真研究设计任务书,明确设计要求、条件、内容、和步骤;通过阅读有关资料,了解设计对象;复习课程有关内容,熟悉有关单元电路的设计方法和设计步骤;搜集、分析、消化相关资料、软件等,掌握微型计算机应用系统软件的设计方法;准备好设计需要的图书、资料和工具;拟定设计计划等。
1.3.2功能设计及系统总体设计要求学生有创新精神和创新意识,分析所掌握的资料,了解设计对象的功能。
在充分考虑功能设计后,进行总体设计,以功能、结构为标,制定总体方案,规划硬、软件功能分配等;初步确定关键元器件地选择。
2 硬件电路总体设计2.1 硬件总框图硬件总框图如下图2.1所示图2.1 硬件总框图 原理说明:本电路以单片机A T89C52为主控电路,分别连接按键控制扫描模块、时钟模块、数码显示模块、LED 显示模块、扬声器模块。
首先,按键扫描模块的四个按键分别用来控制数码显示、LED 显示和扬声器工作,P0口用来控制其段选以显示相应的数值。
P1口控制数码管的位选,以显示相应的数值。
在其位选控制部分,采用了9012型的三极管,要求当P1口输出低电平时,位选成功,使得该位选的数码管亮,数码管显示时分通过按键1控制。
P2口作为输出口,用来控制LED 的亮灭,要使其亮只需要让P2.0-P2.7口保持低电平 就可以使8个灯亮起来。
同时通过P3.4端控制蜂鸣器发生,当P3.4输出低电平时候使蜂鸣器发出声音,按下按键3时使蜂鸣器发声。
最后通过按按键4实现作息时间控制的功能。
2.1.1 主控电路本次课程设计中主要是设计一个以作息时间控制为主的多功能控制系统。
该设计中我们主控电路部分采用了单片机AT89C52芯片来实现这些功能,AT89C52是一个低电压,高性能CMOS 的8位单片机,片内含8KB 的可反复擦写的Flash 只读程序存储器和256B 的随机存取数据存储器(RAM )。
其引脚如下2.2图所示:图2.2.AT89C52引脚图主控电路 按键控制扫描模块 DS1302实时时钟模数码管显示模块 LED 显示模块扬声器模块VCC:供电电压。
GND:接地。
P0口(P0.0-P0.7):P0口来控制数码管的段选,以显示相应的数值。
P1口 (P1.0-P1.7):P1口用来控制数码管的位选,以达到动态显示的效果。
P2口 (P2.0-P2.7):P2口来控制LED的亮灭。
P3口 (P3.0-P3.7):P3.0为RXD(串行输入口),P3.1为TXD(串行输出口),P3.2为/INT0(外部中断0),P3.3为/INT1(外部中断1),P3.4为T0(记时器0外部输入),P3.5为T1(记时器1外部输入),P3.6为/WR(外部数据存储器写选通),P3.7为/RD(外部数据存储器读选通)。
XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。
RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源正负端。
P0~P3 为可编程通用I/O 脚,其功能用途由软件定义。
2.1.2 按键控制扫描模块按键用于控制数码显示、LED显示、扬声器等模块的工作。
通过扫描按键是否按下,来设定各模块的工作情况,使各模块可以在按键的控制下,有序地进行工作设计中使用单个按键实现单个功能,属于较为简单的控制方式.如图2.3所示图2.3 按键输入电路在多功能系统设计的实验中中我们使用四个按键分别与单片机的P1.4、P1.5、P1.6、P1.7相连,按键1控制数码管显示、按键2控制LED流水灯、按键3控制蜂鸣器发声,按键4控制作息时间。
通过按下相应的按键来处理相应的程序。
2.1.3 DS1302实时时钟模块如图DS1302模块图2.4 DS1302模块电路图如上图2.4所示DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
DS1302与CPU的连接:实际上,在调试程序时可以不加电容器,只加一个32.768kHz 的晶振即可。
只是选择晶振时,不同的晶振,误差也较大。
如下图2.5所示图2.5 Ds1302引脚图其中Vcc1为后备电源,VCC2为主电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),SCLK始终是输入端。
如图2所示DS1302 控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM 数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
在控制字指令输入后的下一个SCLK 时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。
同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,利用单片机的外部中断来处理中断系统通过数码管显示出时间。
2.1.4 数码管显示模块设计中采用四位共阳极数码管,共阳极是指其公共端接正极,通过单片机AT89C52的P1口控制其位选,以达到动态显示的效果,再通过P0口,控制其段选以显示相应的数值。
在其位选控制部分,采用了一个9012型三极管,要求当P1口输出低电平时,位选成功。
如下图2.6所示图2.6 数码管显示电路硬件电路中,数码管显示的小时和分.小时通过按键2控制,分通过按键3控制。
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
①静态显示驱动:静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
②动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。