单片机应用课程设计报告.doc

上传人:laozhun 文档编号:4147297 上传时间:2023-04-07 格式:DOC 页数:22 大小:351KB
返回 下载 相关 举报
单片机应用课程设计报告.doc_第1页
第1页 / 共22页
单片机应用课程设计报告.doc_第2页
第2页 / 共22页
单片机应用课程设计报告.doc_第3页
第3页 / 共22页
单片机应用课程设计报告.doc_第4页
第4页 / 共22页
单片机应用课程设计报告.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《单片机应用课程设计报告.doc》由会员分享,可在线阅读,更多相关《单片机应用课程设计报告.doc(22页珍藏版)》请在三一办公上搜索。

1、 单片机应用课程设计报告 院系:电子工程系班级: 姓名: 学号:#目 录第一章 单片机开发系统控制板电路说明1一、控制系统硬件组成1二、芯片介绍3第二章 单片机应用课程设计内容8一、1号单片机测试8二、1号单片机与串口9三、2号单片机与串口11四、2号单片机与键盘13五、键盘与串口14六、存储设计15第三章 总结.19参考文献20第一章 单片机开发系统控制板电路说明一、控制系统硬件组成本实验所用电路板包含单片机,键盘处理,直流电机驱动,转速采集,声光报警,继电器控制,RS232通信接口等部分组成,本次实验中我们所要用的模块有以下几块:1.1号单片机模块,2.2号单片机模块,3.RS232通信模

2、块,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号单片机与上位机之间的串口

3、通信,在本次实验中可以利用串口调试助手发送和接收单片机中的数据。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 双

4、数据指针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-1

5、374HC30八输入与非门 图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灯控制口co

6、nst 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) / 主函数 u

7、nsigned 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、实验要求要求熟悉单片机通讯的使用

8、和编程的设计思路。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 ch

9、ar 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+) BEE

10、P = 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); L

11、ED &= 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) inter

12、rupt 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、实验设备电路板一块,电脑一台,万用表一

13、块,下载线一根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

14、 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 m

15、ain(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;ca

16、se 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;

17、/判断是否为发送中断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

18、(P0对应口=0)?是否看原理图检查电路1、实验思路和流程图 图2-42、调试中遇到的问题及其解决方法测量时发现74HC04芯片的1、2号管脚无反应,发现原理图与实验电路板不符,1、2号管脚应为5、6号管脚。电路板中有一条线断路,用导线连了一条。五、键盘与串口1、实验目的 掌握按键输入串口显示的单片机程序的编写。2、实验要求编写程序使得按键按下时可以通过串口在上位机上显示相应的值。3、实验设备电路板一块,电脑一台,万用表一块,下载线一根4、实验内容1、程序设计思路和流程图接电源使二号单片机工作按按钮KEY17依次给P00P07口置0,用万用表检验。If(P0对应口=0)?是否看原理图检查电路

19、图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(!

20、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;

21、 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、实验设备电路板一

22、块,电脑一台,万用表一块,下载线一根4、实验内容将1234存入24C02芯片关闭电源再接通,从芯片中读取数据通过串口调试助手判断显示数据与存入的是否相同。1、程序设计思路和流程图 图2-62、程序清单和程序说明/* 内容:此程序用于检测EEPROM性能,测试方法如下:写入24c02一些数据,然后在内存中清除这些数据, 掉电后主内存将失去这些信息,然后从24c02中调入这些数据。看是否与写入的相同。*/ #include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include /包含NOP空指令函数_nop_();#define AddWr 0xa0 /写数据地址,需

23、要参考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_();_no

24、p_(); 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) /

25、非应答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; Sc

26、l=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|0x0

27、1; 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(); Sen

28、d(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();

29、 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=1,2,3,4;/ 显示码值 1234, RdFromROM(Numbe

30、r,4,4); P2=0x00; 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; 3、调试中遇到的问题及其解决方法一切正常4、运行结果重复输出1234。第三章 总结证明1号单片机能够起振,

31、可以正常工作保证1号单片机及其外围电路无故障参考文献1毛玉良主编.微机系统原理及应用.南京:东南大学出版社,2006.82姜仲秋等主编.C语言程序设计.南京:南京大学出版社,1998.13刘宝琴等.数字电路与系统(第二版).清华大学出版社,20074 康华光,陈大钦,电子技术基础 (模拟部分)第四版.北京:高等教育出版社.19995 吴运昌,模拟集成电路原理与应用.广州:华南理工大学出版社,19956数字电子技术基础. 清华大学电子教研组编.阎石主编. 第四版.北京:高等教育出版社,1998年 7数字电子技术.姜学庸,赵九捷,赵一群编.天津大学出版社,1994年8数字逻辑与计算机硬件设计基础(第二版)(英文原版). 美 M.Morris Mano,Charles R. Kime著.北京:电子工业出版社,2002年

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号