




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机应用课程设计报告 院系:电子工程系班级:07级自动化2班姓名:李靖雯学号:01207212东南大学成贤学院2010.925目 录第一章 单片机开发系统控制板电路说明1一、控制系统硬件组成1二、芯片介绍4第二章 单片机应用课程设计内容8一、1号单片机测试8二、1号单片机与串口10三、2号单片机与串口12四、2号单片机与键盘12五、键盘与串口14六、存储设计18第三章 总 结.24参考文献25第一章 单片机开发系统控制板电路说明一、控制系统硬件组成1、1号单片机硬件图图1-1该1号单片机为目前最常用的at89s52,它带有8k储存空间,它主要实现单片机当中的最小系统,其中设置了看门狗max813来对单片机进行监控。另外,还加入了一个24c02的2*8k的串行e2prom的芯片, 同时配以isp下载接口,来实现单片机掉电以后的数据存储。2、2号单片机硬件图图1-2 该2号单片机也是目前最常用的at89s52,带有8k的储存空间,主要实现单片机当中的最小系统,其中设置了看门狗max813来对单片机进行监控。它也配有isp下载接口, 但2号单片机的p0口与锁存器74hc573相连接以便直接控制按键模块,同样rs232通信模块也直接与2号单片机模块相连接。具体连接方式见具体各模块的原理图。3、 5v电源稳压模块电路图图1-3这个模块主要实现了为1号两块单片机和2号两块单片机提供5v工作电压的功能。4、按键电路图图1-4电路图中的8个按键用与非门再加非门的形式连接到单片机中的断口,通过编不同的程序,并且在编程中加入合理的消抖和延时等待,使得按键以后单片机等待中断的来临,从而做程序中相应的操作。 5、rs232通信模块图1-5这个模块主要实现了2号单片机与上位机之间的串口通信,可以利用串口调试助手发送和接受单片机中的数据。二、芯片介绍1、at89s52 a.功能特性描述at89s52具有以下标准功能: 8k字节flash,256字节ram,32 位i/o 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,at89s52 可降至0hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。b.at89s52芯片如下: 图1-6p0 口:p0口是一个8位漏极开路的双向i/o口p1 口:p1 口是一个有内部上拉电阻的8 位双向i/o 口,p1 输出缓冲器能驱动4 个ttl 逻辑电平。p2 口:p2 口是一个具有内部上拉电阻的8 位双向i/o 口,p2 输出缓冲器能驱动4 个ttl 逻辑电平。对p2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。2、74hc573 a.功能特性描述 sl74hc573 跟ls/al573 的管脚一样,器件的输入是和标准cmos 输出兼容的,加上拉电阻,它们能和ls/alsttl 输出兼容。当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。它的输出能直接接到cmos,nmos 和ttl 接口上,操作电压范围为2.0v6.0v,低输入电流为1.0ua。这个器件还带有保护电路,以免被高的静态电压或电场损坏。但是对于高阻抗电路,vin 和vout应该被控制在gnd(vin 或vout)vcc的范围内。不用的输入管腿必须连接到一个适合的逻辑电压电平,不用的输出管腿必须悬空。b.74hc573芯片如下:图1-7c.功能表:表1-13、max813l芯片及工作原理a.各引脚功能及工作原理(1)手动复位输入端():该端输入低电平时保持140 ms以上,max813l就输出复位信号.输入端的最小输入脉宽要求可以有效地消除开关的抖动。与ttl/cmos兼容。(2)工作电源端(vcc):接+5v电源。(3)电源接地端(gnd):接0 v参考电平。(4)电源故障输入端(pfi):该端输入电压低于125 v时,5号引脚输出端的信号由高电平变为低电平。(5)电源故障输出端():电源正常时,保持高电平,电源电压变低或掉电时,输出由高电平变为低电平。(6)看门狗信号输入端(wdi):程序正常运行时,必须在小于16 s的时间间隔内向该输入端发送一个脉冲信号,以清除芯片内部的看门狗定时器。若超过16 s该输入端收不到脉冲信号,则内部定时器溢出,8号引脚由高电平变为低电平。(7)复位信号输出端(rst):上电时,自动产生200 ms的复位脉冲,手动复位端输入低电平时,该端也产生复位信号输出。(8)看门狗信号输出端():正常工作时输出保持高电平,看门狗输出时,该端输出信号由高电平变为低电平。b.max813l的引脚图1-84、24c02 24c02是一个1k/2k/4k/8k/16k位串行cmos e2prom,内部含有128/256/512/1024/2048 个8 位字节,catalyst 公司的先进cmos 技术实质上减少了器件的功耗. cat24wc01 有一个8 字节页写缓冲器,24c01/24c02有一个16 字节页写缓冲器.该器件通过i2c 总线接口进行操作有一个专门的写保护功能。图1-9第二章 单片机应用课程设计内容一、1号单片机测试1、实验目的通过该实验熟悉keilc环境熟悉编程和下载程序的方法,并通过简单的测试程序检测12v5v电源转换模块以及1号单片机是否能够正常工作 2、实验要求要求学会检测硬件系统,熟悉单片机编程、汇编和下载的过程3、实验设备 电路板两块,电脑一台,万用表一块,下载线一根,导线少许,锡丝少许,电烙铁一把,烙铁架一个4、实验内容a、程序设计流程图给p1口全部置1将0255依次赋值给p1口使p1.1口实现闪烁p1.0口持续一段时间置0p1.7口持续一段时间置0循环图2-1b、程序清单和程序说明sfr p1 = 0x90; sbit p1_0 = p1 0; sbit p1_7 = 0x90 7; sbit p1_1 = 0x91; void main(void)unsigned int a;unsigned char b;dofor (a=0;a50000;a+)p1_0 = 0; for (a=0;a50000;a+)p1_7 = 0;for (b=0;b255;b+)for (a=0;a10000;a+)p1 = b; /用b的值来做跑马灯的花样p1 = 255; for (b=0;b255;b+)for (a=0;a10000;a+) /p1_1闪烁p1_1 = 0;for (a=0;a10000;a+)p1_1 = 1; while(1);c、调试中遇到的问题及其解决方法问题1:用easy 51pro下载程序时,发现程序不能正常烧入单片机。解决方法:经同学指导,原来是编程器下载线设置项应选为altera byteblaster才能将程序正常烧入单片机。 问题2:电源单独测试的时侯输出的三个电压幅值是正常的,但是连接大板子的时侯电源上的+15v,+12v,-15v都不正常。;解决方法:给大板子利用导线直接上5v,用万用表测试大板子的+5v与gnd,发现是短路的,在老师的帮助下,经过反复观察、测试,发现是因为大板子背面一块贴片电容由于焊的时候不注意锡连在一起而造成整个板子短路了,把那个电容正确重新焊好并且经过严密的检测,重新上电以后,再次用万用表测试电源上的+15v,+12v,-15v是正常的。问题3:大板子和小板子连接,并上电以后,大板子上1号单片机上的5v电源出不来。解决方法:经过检测和严密的分析,这个情况是由于74hc573被焊反了,以致于5v电源出不来,并且导致有些芯片过热而烧坏,重新焊好74hc573,再次上电之后发现5v电源可以出来。问题4:用万用表测试单片机时,管脚电平没反应。解决方法:用万用表检测发现一些虚焊问题,通过重新焊接并检测,单片机能测出正确的电平;二、1号单片机与串口1、实验目的 测试控制板的单片机1号与串口是否能正确工作,为存储设计打下基础。2、实验要求熟悉单片机串口通讯的使用和编程的设计思路。3、实验设备电路板两块,电脑一台,万用表一块,下载线一根,导线少许,锡丝少许,电烙铁一把,烙铁架一个4、实验内容a、程序设计思路和流程图开始给单片机上电,并烧入程序,单片机处于初始化状态等待串口中断是否到来在串口调试助手输入栏输入相应的值,输出显示出字符asc码+1之后的字符是串口处于之前状态否循环图2-2b、程序清单和程序说明#include void main (void)scon = 0x50;tmod |= 0x20; th1 = 0xfd; tr1 = 1; ea = 1; es = 1; while (1) void uart_ser (void) interrupt 4unsigned char temp; if(ri) ri=0; temp=sbuf; p1=temp; sbuf=temp; if(ti) ti=0; 向单片机中烧入程序后,打开串口调试助手,在手动发送窗口写入相应的字母,则会显示相应的字符asc码+1之后的字符。 图2-3c、调试中遇到的问题及其解决方法问题:在调试1号单片系统中的串口通信模块时发现,不论写入怎样的程序,串口调试助手都无法显示出相应的字符。解决方法:经检查发现,我们的max232芯片7、8两脚未与串口接口两脚连接,且短路线没有割断。当用导线连接好两个脚并割断短路线后,1号单片机与串口可以工作正常,串口调试助手可以正常显示出相应的字符。三、2号单片机与串口与1号单片机的调试方法相同四、2号单片机与键盘1、实验目的 通过按键来控制2号单片机与键盘的连接工作情况,从而检测硬件电路和软件程序的正确性。2、实验要求单片机与按键相连接的使用和编程的设计思路,学会软件与硬件相结合。3、实验设备电路板两块,电脑一台,万用表一块,下载线一根,导线少许,锡丝少许,电烙铁一把,烙铁架一个4、实验内容a、程序设计思路和流程图开始给单片机上电,并烧入程序,单片机处于初始化状态按下8个按键中任意一个是按键的输入口都是高电平否循环外部中断是否来临单片机处于之前状态否p1口得到相应的值否图2-4b、程序清单和程序说明#include#includesbit keyb=p27 ;sbit int2b=p32;sbit rdb=p37; void main(void) p1=0xff; p0=0xff;while(1)/循环if(int2b=0)/外部中断是否来临keyb=0;rdb=0;/573芯片输出使能端置低电平p1=p0;/p0口值赋给p1;用万用表测试p1口的电平,检测全部为高电平。依次按下8个按键,相应的p1口的8个引脚依次由高变低,并有锁存功能。c、调试中遇到的问题及其解决方法问题:在调试过程中发现无论有没有按下按键,经万用表测试,单片机2管脚的0.0-0.7脚都是低电平。解决方法:通过老师检测,发现是有两个该连接的地方没有连接,导致中断不能正常进入,连接好后,单片机和键盘都可以正常工作,实现了单片机与键盘的连接功能。五、键盘与串口1、实验目的 实现单片机,串口及按键三方面的连接,进一步测试其软件和硬件的正确性2、实验要求熟悉单片机与外部硬件的通信,并在串口中检测其正确性3、实验设备电路板两块,电脑一台,万用表一块,下载线一根,导线少许,锡丝少许,电烙铁一把,烙铁架一个4、实验内容a、程序设计思路和流程图给单片机上电,并烧入程序,单片机处于初始化状态p1口得到相应的值单片机处于之前状态循环是否开 始按下8个按键中任意一个外部中断是否来临按键的输入口都为高电平是否等待串口中断是否来临根据按键,显示相应字符串口处于之前状态是否图2-5b、程序清单和程序说明#include#include#define uchar unsigned char#define uint unsigned intsbit keyb=p27;sbit int2b=p32;sbit rdb=p37; void delay(int i) int j; for(j=0;ji;j+); /延时void init() tmod=0x20;scon=0x50;th1=0xfa; tl1=0xfa;pcon=0x80;tr1=1; ea=1;es=0;ri=0;ti=0; /串口初始化void display(uchar i) sbuf=i;while(!ti);delay(15000);ti=0; 串口显示函数 void key() uchar a;p0=0xff;keyb=1; if(int2b=0)/外部中断是否来临delay(1);if(int2b=0)keyb=0;rdb=0;a=p0;switch(a)case 0xfe:display(a);keyb=1;break;case 0xfd:display(b);keyb=1;break;case 0xfb:display(c);keyb=1;break;case 0xf7:display(d);keyb=1;break;case 0xef:display(e);keyb=1;break;case 0xdf:display(f);keyb=1;break;case 0xbf:display(g);keyb=1;break;case 0x7f:display(h);keyb=1;break; /按键函数并送到缓冲区void main() init();display(x); while(1)/循环 key();c、调试中遇到的问题及其解决方法问题:测试的时候,按下按键相应的字符出不来。解决方法:经检查,用导线连接的两个口断开,重新焊接以后,再次测验是正确的。 六、存储设计1、实验目的 实现24c02芯片的失电后再上电复位存储读写功能2、实验要求熟悉单片机与外部存储芯片之间相连接时的使用3、实验设备电路板两块,电脑一台,万用表一块,下载线一根,导线少许,锡丝少许,电烙铁一把,烙铁架一个4、实验内容a、程序设计思路和流程图开始发出停止条件以初始化写循环程序传送开始传送控制字节设备是否应答?no存入4个数值分别为0x11,0x22,0x33,0x44清除当前数据调用存储数据传送数据到串口在上位机上显示图2-6b、程序清单和程序说明#include /包含头文件,头文件包含特殊功能寄存器的定义 #include /包含nop空指令函数_nop_(); #define addwr 0xa0 /写数据地址,需要参考24c02芯片文档 #define addrd 0xa1 /读数据地址 sbit sda=p12; /定义总线连接端口 sbit scl=p13;void mdelay(unsigned char j) unsigned int i; for(;j0;j-) for(i=0;i125;i+) ; /*启动iic总线*/ void start(void) sda=1; _nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_();_nop_(); sda=0; _nop_();_nop_();_nop_();_nop_();_nop_(); scl=0; /*停止iic总线*/ void stop(void) sda=0; _nop_(); scl=1; _nop_();_nop_();_nop_();_nop_();_nop_(); sda=1; _nop_();_nop_();_nop_();_nop_();_nop_(); scl=0; void ack(void) sda=0;_nop_();_nop_();_nop_();scl=1;_nop_();_nop_();_nop_();_nop_();_nop_();scl=0;_nop_();_nop_();void noack(void) sda=1; _nop_();_nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_();_nop_(); scl=0; _nop_();_nop_(); /*发送一个字节*/ void send(unsigned char data) unsigned char bitcounter=8; unsigned char temp; do temp=data; scl=0; _nop_();_nop_();_nop_();_nop_();_nop_(); if(temp&0x80)=0x80) sda=1; else sda=0;scl=1;temp=data1;data=temp;bitcounter-; while(bitcounter); scl=0; /*读入一个字节并返回*/ unsigned char read(void) unsigned char temp=0; unsigned char temp1=0; unsigned char bitcounter=8; sda=1; do scl=0; _nop_();_nop_();_nop_();_nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_();_nop_(); if(sda) temp=temp|0x01; else temp=temp&0xfe; if(bitcounter-1) temp1=temp1; temp=temp1; bitcounter-; while(bitcounter);return(temp); /*写入数据*/ void wrtorom(unsigned char data,unsigned char address,unsigned char num) unsigned char i; unsigned char *pdata; pdata=data; for(i=0;inum;i+) start(); send(addwr); /写入芯片地址 ack(); send(address+i);/写入存储地址 ack(); send(*(pdata+i);/写数据 ack(); stop(); mdelay(20); /*读出数据*/ void rdfromrom(unsigned char data,unsigned char address,unsigned char num) unsigned char i; unsigned char *pdata; pdata=data; for(i=0;inum;i+) start(); /写入芯片地址 send(addwr); ack(); send(address+i);/写入存储地址 ack(); start(); send(addrd); /读入地址 ack(); *(pdata+i)=read();/读数据 scl=0; noack(); stop(); void init() tmod=0x20;scon=0x50;th1=0xfa;tl1=0xfa; pcon=0x80;tr1=1;ea=1;es=0;ri=0;ti=0; void display(unsigned char i) sbuf=i; while(!ti); ti=0; /*主程序*/void main() unsigned char number4=0x02,0x04,0x06,0x08;/ 显示码值wrtorom(number,4,4); /写入24c02 mdelay(200); number0=0; /清除当前数据 number1=0; number2=0; number3=0; rdfromrom(number,4,4); /调用存储数据 while(1) int i; for(i=0;i4;i+) init(); p2=numberi; display(numberi);mdelay(200);mdelay(200);if(i=4)break; c、调试中遇到的问题及其解决方法问题1:在调试一号单片机系统的24c02存储芯片时,发现无法读取信息。解决方法:在检查硬件电路无错的情况下,调试软件。软件程序发生错误,要先写入24c02,再进行读写。问题2:程序改过之后,调试
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西职业技术学院《化工厂设计基础》2023-2024学年第二学期期末试卷
- 南京信息职业技术学院《世界少数族裔文学》2023-2024学年第二学期期末试卷
- 湖南商务职业技术学院《电子设计制造与测试一》2023-2024学年第二学期期末试卷
- 南阳医学高等专科学校《镜头语言与导演基础》2023-2024学年第二学期期末试卷
- 广东农工商职业技术学院《工程招投标》2023-2024学年第二学期期末试卷
- 贵州民族大学《建筑荷载》2023-2024学年第二学期期末试卷
- 四川民族学院《BIM造价管理应用》2023-2024学年第二学期期末试卷
- 玉溪职业技术学院《图像采集与处理》2023-2024学年第二学期期末试卷
- 湖南有色金属职业技术学院《安全心理学》2023-2024学年第二学期期末试卷
- 厦门理工学院《医学影像设备学》2023-2024学年第二学期期末试卷
- GB/T 45501-2025工业机器人三维视觉引导系统通用技术要求
- 2025年武汉数学四调试题及答案
- GB 19081-2025饲料加工系统粉尘防爆安全规范
- 2024年全国高中数学联赛北京赛区预赛一试试题(解析版)
- PICC专科护士进修学习汇报
- 工厂如何消除静电与防止静电实践篇
- 我学会了洗碗作文
- 武汉市住宅专项维修资金使用申请表
- 牛津译林版英语八年级下册8B——单词默写(表格版)
- 霍尼韦尔x温控仪中文说明书——有程序设定篇
- 人们通过合作取得更大的成功辩论稿
评论
0/150
提交评论