单片机应用课程设计报告.doc_第1页
单片机应用课程设计报告.doc_第2页
单片机应用课程设计报告.doc_第3页
单片机应用课程设计报告.doc_第4页
单片机应用课程设计报告.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机应用课程设计报告 院系:电子工程系班级: 姓名: 学号:#1目 录第一章 单片机开发系统控制板电路说明1一、控制系统硬件组成1二、芯片介绍3第二章 单片机应用课程设计内容8一、1号单片机测试8二、1号单片机与串口9三、2号单片机与串口11四、2号单片机与键盘13五、键盘与串口14六、存储设计15第三章 总结.19参考文献20第一章 单片机开发系统控制板电路说明一、控制系统硬件组成本实验所用电路板包含单片机,键盘处理,直流电机驱动,转速采集,声光报警,继电器控制,rs232通信接口等部分组成,本次实验中我们所要用的模块有以下几块:1.1号单片机模块,2.2号单片机模块,3.rs232通信模块,4.5v电源稳压模块,5.按键模块等。以下是各个模块介绍,及原理图。1.1号单片机模块图1-1本模块实现了单片机的最小系统,设置了看门狗(watchdog),并且配以isp下载接口,其中加入了串行 eeprom芯片(24c02),以实现单片机掉电后的数据存储。22号单片机模块图1-2本模块同样实现了单片机的最小系统,设置了看门狗(watchdog),并且配以isp下载接口,但2号单片机的p0口与锁存器74hc573相连接以便直接控制按键模块,同样rs232通信模块也直接与2号单片机模块相连接。具体连接方式见各模块的原理图。3rs232通信模块图1-3本模块实现了2号单片机与上位机之间的串口通信,在本次实验中可以利用串口调试助手发送和接收单片机中的数据。45v电源稳压模块图1-4本模块实现了为1、2号两块单片机提供5v工作电压的功能。5.按键模块图1-5本模块可以通过程序,使得不同按键被按下产生不同的效果。在编程中加入合理的消抖和延时等待。二、芯片介绍 1at89s52主要性能l 与mcs-51单片机产品兼容l 8k字节在系统可编程flash存储器l 1000次擦写周期l 全静态操作:0hz33hzl 三级加密程序存储器l 32个可编程i/o口线 l 三个16位定时器/计数器l 八个中断源l 全双工uart串行通道l 低功耗空闲和掉电模式l 掉电后中断可唤醒l 看门狗定时器l 双数据指针l 掉电标识符 图1-6图1-7vcc:电源。gnd:地。p0口:p0口是一个8位漏极开路的双向i/o口。p1口:p1口是一个具有内部上拉电阻的8位双向i/o口。p2口:p2口是一个具有内部上拉电阻的8位双向i/o口。p3口:p3口是一个具有内部上拉电阻的8位双向i/o口。rst:复位输入。ale/prog:地址锁存控制信号(ale)是访问外部程序存储器时,锁存低八位地址的输出脉冲。psen:外部程序存储器选通信号。ea/vpp:访问外部程序存储器控制信号。xtal1:振荡器反向放大器和内部时钟发生电路的输入端。xtal2:振荡器反向放大器的输出端。274hc573 图1-8 表1-1374hc30八输入与非门 图1-9 图1-10474hc32二输入与非门 图1-11 图1-12524c022k串行eeprom 图1-13 图1-14第二章 单片机应用课程设计内容一、1号单片机测试1、实验目的 证明1号单片机能够起振,可以正常工作。2、实验要求保证1号单片机及其外围电路无故障。3、实验设备电路板一块,电脑一台,万用表一块,下载线一根4、实验内容1、程序设计思路和流程图给p0口全部置1依次给p00p07口置0if(p07=0)?否是图2-12、程序清单和程序说明/led流水灯 利用软件实现延时控制#include #define leddata p1/定义led灯控制口const unsigned char leddis_l=0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00;/led流水灯控制编码,从右向左const unsigned char leddis_r=0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00;/led流水灯控制编码,从左向右/名称:延时函数 输入参数:延时变量 输出参数:无void delay(unsigned int count)unsigned char i;while(count-) for(i=255;i;i-);unsigned int main(void) / 主函数 unsigned char i;while(1) for(i=0;i8;i+) leddata = leddis_li; delay(100); /延时可调节led流水灯的速度 delay(200);/间隙延时 for(i=0;i8;i+) leddata = leddis_ri; delay(100); /延时可调节led流水灯的速度return 0;3、调试中遇到的问题及其解决方法问题:一号单片机模块芯片at89s52不能正常工作。解决:换了一个芯片后工作正常,说明是芯片问题,电路板正常。二、1号单片机与串口1、实验目的 测试1号单片机与串口连接是否正常。2、实验要求要求熟悉单片机通讯的使用和编程的设计思路。3、实验设备电路板一块,电脑一台,万用表一块,下载线一根4、实验内容1、设编写程序下载到一号单片机中在串口调试助手中观察显示结果与程序是否一致if(一致)?否结束检查修改计思路和流程图 图2-22、程序清单和程序说明/*完成串口的接收和发送 等待上位机发送的数据,并把它加上字符串tiancikj后发给上位机 波特率选择9600,8位,无校验,停止位1*/#include #include uart.h#define led p1/定义led灯控制端口sbit beep = p11;/定义蜂鸣器控制口/变量定义unsigned char dat_temp;unsigned char flag=0,count = 0;unsigned char dis = tiancikj;void delayms(unsigned int count1) /时函数while (count1-) unsigned char count2 = 0;for (; count230; count2+); void voice(void) /发音 unsigned int count1,count2;for (count1=0; count1800; count1+) beep = beep; delayms(1);for (count2=0; count2400; count2+) beep = beep; delayms(2); void main(void)/ 主函数uart_init();/串口初始化led = 0xff;/将led等全熄灭beep = 0; ea = 0;putstring(wellcome to nan jing tian ci ke ji !n);while(1) putstring(please input you choice:n); putstring(a: led on b : led off c: beep d:back n); switch (getchar() case a:putstring(your choice is an); led &= 0xfe;/点亮led0灯 break;case b:putstring(your choice is bn) led |= 0x01;/熄灭led灯 break;case c:putstring(your choice is cn); voice();/蜂鸣器响一下 break;case d:putstring(your choice is d,please retry!n); break;default:putstring(your choice is wrong,please retry!n); break;while(1);void uart_isr(void) interrupt 4/串口中断函数if(ti)/判断是否为发送中断 ti = 0;if(ri)/判断是否为接收中断 ri = 0;3、调试中遇到的问题及其解决方法实验时先完成了2号单片机与串口的连接测试,解决问题后1号单片机与串口连接一切正常。4、运行结果:wellcomwellcome to nan jing ci ke ji!please input you choice:a:led on b:led off c:beef d:back三、2号单片机与串口1、实验目的 测试2号单片机与串口连接是否正常。2、实验要求要求熟悉单片机通讯的使用和编程的设计思路。3、实验设备电路板一块,电脑一台,万用表一块,下载线一根4、实验内容1、编写程序下载到二号单片机中在串口调试助手中观察显示结果与程序是否一致if(一致)?否结束检查修改程序设计思路和流程图 图2-32、程序清单和程序说明/*完成串口的接收和发送,等待上位机发送的数据,并把它加上字符串tiancikj后发给上位机,波特率选择9600,8位,无校验,停止位1*/#include #include uart.h#define led p1/定义led灯控制端口sbit beep = p11;/定义蜂鸣器控制口/变量定义unsigned char dat_temp;unsigned char flag=0,count = 0;unsigned char dis = tiancikj;void delayms(unsigned int count1) /时函数while (count1-) unsigned char count2 = 0;for (; count230; count2+); void voice(void) /发音 unsigned int count1,count2;for (count1=0; count1800; count1+) beep = beep; delayms(1);for (count2=0; count2400; count2+) beep = beep; delayms(2); void main(void)/ 主函数uart_init();/串口初始化led = 0xff;/将led等全熄灭beep = 0; ea = 0;putstring(wellcome to nan jing tian ci ke ji !n);while(1) putstring(please input you choice:n); putstring(a: led on b : led off c: beep d:back n); switch (getchar() case a:putstring(your choice is an); led &= 0xfe;/点亮led0灯 break;case b:putstring(your choice is bn); led |= 0x01;/熄灭led灯 break;case c:putstring(your choice is cn); voice();/蜂鸣器响一下 break;case d:putstring(your choice is d,please retry!n); break;default:putstring(your choice is wrong,please retry!n); break;while(1);void uart_isr(void) interrupt 4/串口中断函数if(ti) ti = 0;/判断是否为发送中断if(ri) ri = 0;/判断是否为接收中断3、调试中遇到的问题及其解决方法电路板中串口管脚连接不正确,用导线重连。4、运行结果:wellcomwellcome to nan jing ci ke ji!please input you choice:a:led on b:led off c:beef d:back四、2号单片机与键盘1、实验目的 测试按键工作是否正常。2、实验要求要求熟悉单片机通讯的使用和编程的设计思路。3、实验设备电路板一块,电脑一台,万用表一块,下载线一根4、实验内容接电源使二号单片机工作按按钮key17依次给p00p07口置0,用万用表检验。if(p0对应口=0)?是否看原理图检查电路1、实验思路和流程图 图2-42、调试中遇到的问题及其解决方法测量时发现74hc04芯片的1、2号管脚无反应,发现原理图与实验电路板不符,1、2号管脚应为5、6号管脚。电路板中有一条线断路,用导线连了一条。五、键盘与串口1、实验目的 掌握按键输入串口显示的单片机程序的编写。2、实验要求编写程序使得按键按下时可以通过串口在上位机上显示相应的值。3、实验设备电路板一块,电脑一台,万用表一块,下载线一根4、实验内容1、程序设计思路和流程图接电源使二号单片机工作按按钮key17依次给p00p07口置0,用万用表检验。if(p0对应口=0)?是否看原理图检查电路 图2-52、程序清单和程序说明#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(); 3、调试中遇到的问题及其解决方法一切正常4、运行结果依次按按键key1key8分别显示a b c d e f g h六、存储设计1、实验目的 实现24c02芯片的掉电存储读写功能。2、实验要求要求熟悉单片机与外部存储芯片之间相连接时的使用和编程的设计思路。3、实验设备电路板一块,电脑一台,万用表一块,下载线一根4、实验内容将1234存入24c02芯片关闭电源再接通,从芯片中读取数据通过串口调试助手判断显示数据与存入的是否相同。1、程序设计思路和流程图 图2-62、程序清单和程序说明/* 内容:此程序用于检测eeprom性能,测试方法如下:写入24c02一些数据,然后在内存中清除这些数据, 掉电后主内存将失去这些信息,然后从24c02中调入这些数据。看是否与写入的相同。*/ #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+) ; void start(void) / 启动iic总线 sda=1; _nop_();_nop_(); scl=1; _nop_();_nop_();_nop_();_nop_();_nop_(); sda=0; _nop_();_nop_();_nop_();_nop_();_nop_(); scl=0; void stop(void) / 停止iic总线 sda=0; _nop_(); scl=1; _nop_();_nop_();_nop_();_nop_();_nop_(); sda=1; _nop_();_nop_();_nop_();_nop_();_nop_(); scl=0; void ack(void) /应答iic总线 sda=0;_nop_();_nop_();_nop_();scl=1;_nop_();_nop_();_nop_();_nop_();_nop_(); scl=0;_nop_();_nop_();void noack(void) / 非应答iic总线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()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论