PIC单片机课程设计报告(轻院)

合集下载

PIC课程设计报告

PIC课程设计报告

《PIC单片机实训》课程设计(或微型直流电机转速控制或交流电压/频率检测)学生姓名:学号:专业班级:指导教师:二○一一年九月二十三日目录(二号字体)一. 课程设计目的 (3)二. 课程设计题目描述和要求 (3)三. 课程设计报告内容 (4)四.课程设计总结 (14)一.课程设计目的《PIC单片机课程设计》是电气工程及其自动化专业及相近专业的一门重要的专业实践课,本课程在《PIC 单片机》课程的基础上,通过硬件设计与软件编程与调试的实践,进一步掌握PIC 单片机的应用方法,熟练PIC 单片机的C 程序的编写与调试,是毕业设计前的一次重要的实践。

二.课程设计题目描述和要求根据附图1~附图5,设计一个具有完整功能、有一定工作量与一定难度的单片机应用线路,并绘制能用于仿真的Proteus 线路图,编制相应的单片机C 语言,分别在Proteus 仿真界面和实物板上调试运行正确。

最后用实物进行运行演示。

本设计内容分为线路设计、绘制Proteus线路图、编程调试几个部分。

1.线路设计本设计采用短路插和杜邦线连接的方式未用部分短路插应拔起,避免与其他硬件部分冲突并节省电源,并避免与电源相关的芯片发热。

电机速度控制:包括电机电压PWM控制、电机速度检测(使用光电遮断器)、电机转速显示(LCD或数码管)、按键(速度整定等)。

2.Proteus 线路图绘制根据所设计的线路图,绘制与之一致的,能用于仿真的Proteus 线路图。

要求所绘的线路图美观、紧凑,参数要与课设板一致。

3.软件编制与调试根据所设计的线路图编制相应的单片机C 程序,要求所编制的程序符合C 语言格式并加上注解。

每编一段即进行编译,有错及时修改,并先在Proteus上仿真,基本正确后再用ICD2仿真,最后应脱机运行。

三.课程设计报告内容1.设计程序#include <pic.h>__CONFIG (0x20F1); //运行用//引脚定义#define LCD_RS RD4 //LCD 寄存器选择数据H/指令L #define LCD_RW RD5 //LCD 读H/L写控制线#define LCD_E RD6 //LCD E 时钟//常数定义#define DAT 1 //LCD写数据时为1#define COM 0 //LCD写命令时为0#define LINE1 0b10000000 //第一行定义#define LINE2 0b11000000//函数声明void interrupt ISR(void);void CSH(void);void LCD_CSH(void);void LCD_BUSY(void);void LCD_WRITE(char,char);void LCD_WRITE_4(char,char);char LCD_READ(void);void DISP_MENU(const char *);void DISP_ST_DT(char);void DISP_ST_DT1(char);void BCD(unsigned int);void DELAY(unsigned int);void DELAY_I(unsigned int);void DELAY_US(char);void PWM(void);//宏定义,清屏#define CLR_LCD() \LCD_WRITE(0b00000001,COM); \DELAY(2)//变量定义const char AA[17]="LINYANJUN2610800";char QW,BW,SW,GW; //无符号字符0--255int START_T,DELTA_T,RZ,RF; //有符号整形,2个字节long T1N; //有符号长整形,4字节signed char KEY_CHANGE,KEY_SET,KEY_INC,KEY_DEC,KEY_T1N;const int BB[8]={2000,800,255,255,255,255,255,255};//PWM初始化void PWM(void){ TRISC1=0;PR2=255; //晶振4MHZ,频率1KHZ,占空比20% CCPR2L=0x32;CCP2CON=0b00101100; //PWM模式,TMR2是其工作时基T2CON=0b00000101;}//LCD模块初始化void LCD_CSH(void){ DELAY(20); //延时20msLCD_WRITE_4(0b0011,COM); //发送控制序列DELAY(10); //延时10msLCD_WRITE_4(0b0011,COM); //发送控制序列DELAY_US(10); //延时100usLCD_WRITE_4(0b0011,COM); //发送控制序列DELAY_US(10); //延时100usLCD_WRITE_4(0b0010,COM); //4位数据格式LCD_BUSY(); //LCD忙检测LCD_WRITE(0b00101000,COM);LCD_WRITE(0b00001100,COM);CLR_LCD();LCD_WRITE(0b00000110,COM);}void CSH(void){ TRISD=0; //D口全为输出TRISB=0b00000111; //B口低三位为输入TRISC=0b00000100; //C口设置ANSEL=0;ANSELH=0b00000000; //数字口WPUB=0b00000111; //887P224设置B口弱上拉使能IOCB=0b00000111;KEY_SET=0;KEY_INC=0;KEY_DEC=0;LCD_CSH(); //LCD初始化OPTION=0b00111111; //INT下降上升沿中断INTCON=0b11011000; //中断控制寄存器//初始化CCP1CON=0; //CCP模块关闭CCP1IF=0; //中断标志位CCP1CON=0b00000110; //捕捉四个上升沿T1CON=0b00110001;TMR1H=TMR1L=0;CCP1IE=1;START_T=BB[0];}//主程序void main(void){signed char R1;unsigned int i;CSH(); //全部的初始化PWM(); //PWM的初始化DISP_MENU(AA); //显示(AA)中的数DELAY(1000); //延时1s看清上行显示的内容CLR_LCD();DISP_ST_DT(START_T);DISP_ST_DT1(DELTA_T);DELAY(100);while(1){ if (KEY_SET==1) //设置按键按1次{ if(KEY_INC==1) //按下加按键{ START_T+=100;if (START_T>=2500){START_T=2500;}KEY_INC=0; //处理结束清0避免重复处理KEY_CHANGE=1; //已经改变设置标志刷新显示}if(KEY_DEC==1) //按下减按键{ START_T-=100;if (START_T<=500){START_T=500;}KEY_DEC=0;KEY_CHANGE=1;}if(KEY_CHANGE==1) //如果有修改{ DISP_ST_DT(START_T);KEY_CHANGE=0;}}if(START_T>DELTA_T){ CCPR2L+=1;DELAY(500);}if(START_T<DELTA_T){ CCPR2L-=1;DELAY(500);}if(KEY_T1N>=1){ DISP_ST_DT1(DELTA_T);DELAY(80);TMR1H=TMR1L=0;T1CON=0b00110001;CCP1IE=1;CCP1CON=0b00000110;KEY_T1N=0;}}}//LCD上的显示void DISP_ST_DT(char ST){ LCD_WRITE(0b00001100,COM); //不闪LCD_WRITE(LINE1+4,COM); //即第1行的第4个字符BCD(START_T);LCD_WRITE('R',DAT); //在当前位置显示字符'R' LCD_WRITE('1',DAT); //在当前位置显示字符'1' LCD_WRITE('=',DAT);LCD_WRITE(QW+0x30,DAT); //显示千位LCD_WRITE(BW+0x30,DAT); //显示百位LCD_WRITE(SW+0x30,DAT); //显示十位LCD_WRITE(GW+0x30,DAT); //显示个位LCD_WRITE('r',DAT); //在当前位置显示字符'r'LCD_WRITE('/',DAT); //在当前位置显示字符'/' LCD_WRITE('n',DAT); //在当前位置显示字符'n'}void DISP_ST_DT1(char DT){BCD(DELTA_T);LCD_WRITE(LINE2+4,COM); //即第2行的第4个字符LCD_WRITE('R',DAT); //在当前位置显示字符'R' LCD_WRITE('2',DAT); //在当前位置显示字符'2' LCD_WRITE('=',DAT); //在当前位置显示字符'=' LCD_WRITE(QW+0x30,DAT); //显示千位LCD_WRITE(BW+0x30,DAT); //显示百位LCD_WRITE(SW+0x30,DAT); //显示十位LCD_WRITE(GW+0x30,DAT); ; //显示个位LCD_WRITE('r',DAT); //在当前位置显示字符'r' LCD_WRITE('/',DAT); //在当前位置显示字符'/' LCD_WRITE('n',DAT); //在当前位置显示字符'n'}void interrupt ISR(void){ if(INTF==1&&RB0==0) //中断标志INTF { DELAY_I(30);KEY_SET+=1;if(KEY_SET>=2){KEY_SET=0;}INTF=0;INTCON=0b11011000;}if(RBIF==1){ DELAY_I(30);if (RB1==0 && KEY_SET==1){ KEY_DEC=1;}if (RB2==0 && KEY_SET==1){ KEY_INC=1;}RBIF=0;}if(CCP1IF==1&&RB0==1&&RB1==1&&RB2==1) //捕捉的中断{ KEY_T1N=1; //捕捉4个下降沿完成T1N=CCPR1H;T1N=T1N<<8;T1N=T1N+CCPR1L;T1N=T1N*8; //4个脉冲,1转的时间CCPR1H=CCPR1L=0;DELTA_T=60000000/T1N;CCP1IE=0;T1CON=0;CCP1CON=0;CCP1IF=0;}}//写R1的高4位,FLAG为寄存器选择void LCD_WRITE_4(char R1,char FLAG){ LCD_RW=0; //写模式LCD_RS=FLAG; //寄存器选择PORTD &= 0b11110000; //RB的数据4位清0LCD_E=1; //使能PORTD |=R1; //送R1的低4位至RB口的高4位NOP();NOP(); //短延时LCD_E=0; //数据送入有效LCD_RS=0;PORTD &= 0b11110000; //RB的数据4位清0 }//写一字节数R1,FLAG为写命令或数据选择,0为写命令,1为写数据void LCD_WRITE(char R1,char FLAG){char R2;LCD_BUSY();R2=R1>>4;LCD_WRITE_4(R2,FLAG);R2=R1 & 0x0F;LCD_WRITE_4(R2,FLAG);}//读LCD状态char LCD_READ(void){ char R1;LCD_RS=0; //寄存器选择LCD_RW=1; //读为1NOP();NOP(); //短延时LCD_E=1; //使能NOP();NOP(); //短延时R1=PORTD;R1=R1<<4; //读数据的高4位给R1高4位R1=R1 & 0xF0;LCD_E=0; //读数据结束NOP();NOP(); //短延时LCD_E=1; //使能NOP();NOP();R1 |= PORTD>>1; //读PORTB的1-4位,R1的高4位不变!LCD_E=0; //读数据结束LCD_RW=0;return (R1);}//检测LCD是否忙void LCD_BUSY(void){ char R1;while(1){ R1=LCD_READ(); //读寄存器if ((R1 & 0x80)==0x00) //最高位为忙标志位break;};}//整屏显示void DISP_MENU(const char *A){char i;CLR_LCD();LCD_WRITE(LINE1,COM); //回到行首for (i=0;i<16;i++)LCD_WRITE(A[i],DAT); //显示16个字符,ASCII码对应的字符}//从R1双字节数转换为十进制数千位-个位: QW,BW,SW,GWvoid BCD(unsigned int R1){ QW=0;BW=0;SW=0;GW=0;while(R1>=1000){R1-=1000;QW++;}while(R1>=100){R1-=100;BW++;}while(R1>=10){R1-=10; SW++;}GW=R1;}//延时(n)msvoid DELAY(unsigned int n){ unsigned int j;char k;for (j=0;j<n;j++)for (k=246;k>0;k--) NOP();}//延时(n)ms,中断专用 void DELAY_I(unsigned int n) { unsigned int j; char k;for (j=0;j<n;j++)for (k=246;k>0;k--) NOP();}//延时(n ×10)us void DELAY_US(char n) { char j; for (j=0;j<n;j++){NOP();NOP();}}2. PROTEUSE 线路接线图D 7D 6D 5D 4D 3D 2D 1D 0ER W R S V S S V D D V E E3.设计说明1.确定期望转速在用PROTEUS 仿真中。

pic报告

pic报告

pic报告一、课程设计的内容1、单片机小系统的制作:万能板上制作,初始化程序设计。

2、在单片机小系统上开发应用系统。

二、课程设计的要求与数据实验前认真阅读实验指导书,复习与课程设计相关的理论知识,明确实验目的。

在两周内完成指定的任务,完成电路设计并编程实现相应的功能由老师验收,完成实验报告的撰写,报告要求实验现象的描述。

三、课程设计应完成的工作1、完成最小系统的制作,写程序,完成最小系统跑马灯功能。

2、在单片机最小系统上做功能扩展,并编程实现相应的功能。

四、课程设计进程安排周次星期节次实验名称实验主要内容实验仪器台套数拟安排批次每组学生人数实验室名称及地点13 一1-4 单片机技术实践课程要求,任务安排50 1 1 实验2号楼21413 一1应用原理图和教至二-7MCS51或PIC或飞思单片机设计一个小系统PCB图设计,元器件清单提交室,图书馆13 三至五1-7单片机小系统的制作万能板上制作,初始化程序设计50 1 1 实验2号楼21214 一1-7 在单片机小系统上开发应用系统多进位计算器,定时器,计时器等设计教室,图书馆14 二至三1-7自选一个题目在单片机小系统上扩展应用系统,实现功能50 1 1 实验2号楼30714 四1-7 总结报告教室,图书馆14 五现场答辩实验2号楼214五、应收集的资料及主要参考文献1、李荣正等,PIC单片机原理及应用(第4版),北京航空航天大学出版社,北京,2010.112、汪正谋,朱力恒,Protel99SE电路设计与仿真技术,福建科学技术出版社,福建,2004发出任务书日期:年月日指导教师签名:计划完成日期:年月日基层教学单位责任人签章:主管院长签章:目录1 设计任务目的及要求 (5)1.1课程设计的目的 (5)1.2课程设计的要求 (5)2 原理及步骤 (5)2.1PIC16F877A工作原理 (5)2.2最小系统设计 (6)2.3跑马灯程序设计 (7)2.4扩展设计 (7)3 实验结果 (12)4 总结 (12)参考文献 (12)1 设计任务目的及要求1.1 课程设计的目的利用PIC单片机最小系统,熟悉PIC16F877的工作原理并学习硬件的设计方法及软件编程技巧。

PIC课设报告与PIC程序与仿真图

PIC课设报告与PIC程序与仿真图

X X X X 《PIC单片机课程设计》数字钟设计报告学生: x x x学号: ***********专业: *****************班级: ****************指导教师: **********二○一二年 12 月 16 日目录1.课程设计目的 (2)2.课程设计要求 (2)3.课程设计容 (2)4.问题分析 (6)5.设计体会 (6)6.参考书目 (6)7.附:PIC程序与仿真图 (7)1.课程设计目的①进一步熟悉PIC单片机原理与应用;②巩固并提高对这学期PIC单片机知识的学习和应用;③熟悉对PIC16F887的编程;④掌握实验板上的操作和运用;⑤了解数字钟的组成和原理,编写程序并在实验板上运行。

2.课程设计要求1)运用所学的PIC单片机知识,对PIC16F887进行编程,实现数字钟的功能。

2)在软件仿真可行后,下载到实验板上进行演示。

3)在基本功能实现的基础上,可以适当的添加一些附加功能。

4)设计完毕后,总结和整理资料,写成设计报告。

3.课程设计容运用PIC16F887芯片和DS1307时钟芯片,用C语言编程,通过ICD2烧写进芯片,在1602液晶显示屏上实现时间显示、运行的功能称为数字钟。

液晶显示屏显示着年、月、日、时、分、秒、星期。

数字钟有调整时间的功能,通过对按键的操作可以对时间进行调整。

3.1系统功能说明显示屏分两行显示,第一行显示日期:年—月—日、星期,第二行显示格式为时间(时:分:秒)。

显示秒由00一直加到59,分钟由00加到59,小时采用24小时制,由00加到23,星期由1一直加到7,日由01一直加到31,月由01一直加到12,年由2000一直加到2099。

按键操作时,按键S1按下时,数字加;按键S5按下时,数字减;按键S9按下时,位左移;按键S13按下时,位右移。

3.2设计步骤1、先画好仿真图;2、把数字钟分为几个模块,分别完成一个一个模块的编程;3、各个模块程序编写完成后,用仿真图仿真;4、若仿真图可实现,则把各个模块程序下载到实验板上运行;5、各个模块完成后再把各个模块串联起来,进行调试。

PIC单片机原理及应用第三版课程设计

PIC单片机原理及应用第三版课程设计

PIC单片机原理及应用第三版课程设计一、前言PIC单片机原理及应用是一门非常重要的课程,它是在电子工程、计算机科学等领域中必须学习的基础课程之一。

本文将介绍PIC单片机的原理和应用,并且将会介绍一份课程设计,希望对读者有所帮助。

二、PIC单片机的原理单片机是一种集成电路,它包含了一些用于控制和处理数据的硬件设备。

PIC单片机是由美国微芯科技公司(Microchip Technology Inc.)生产的,是一种非常流行的单片机,它广泛应用于各种计算机和电子系统中。

PIC单片机的结构包括三个部分:处理器核心、外围设备和存储器。

1. 处理器核心PIC单片机的处理器核心采用RISC(Reduced Instruction Set Computing,精简指令集)结构,该结构在指令的执行速度和效率方面相对较高。

PIC单片机的处理器核心包括了一个15位或33位的存储器指针、一个独立的数据寄存器和一个常量移位器等。

2. 外围设备PIC单片机的外围设备包括了很多种外设,比如通用输入/输出端口(GPIO)、模拟模块、定时器、计数器、USART(通用异步收发传输器)等。

这些外设可以用于很多种不同的应用中。

3. 存储器PIC单片机的存储器包括了程序存储器和数据存储器两种。

程序存储器存储了单片机的指令和程序,而数据存储器可以存储程序中用到的数据。

三、PIC单片机的应用PIC单片机在很多领域都有着广泛的应用,包括电子、工业、计算机等。

1. 电子应用在电子应用领域中,PIC单片机由于体积小、功耗低、成本低等优点,被广泛应用于各种控制系统、智能家居、数字音频处理等方面。

2. 工业应用在工业应用领域中,PIC单片机被用于控制和监控各种工业设备和生产过程。

比如说,一些自动化工厂中的计数器、条码扫描器、工艺控制器等都是由PIC单片机控制的。

3. 计算机应用在计算机应用领域中,PIC单片机和各种其他的硬件设备一起被用于开发各种类型的计算机系统。

pic单片机做课程设计

pic单片机做课程设计

pic单片机做课程设计一、课程目标知识目标:1. 理解PIC单片机的基本结构、工作原理及功能特点;2. 掌握PIC单片机的编程语言和开发环境;3. 学会使用PIC单片机进行简单的电路设计和控制系统搭建;4. 了解单片机在现实生活中的应用,培养对电子技术的兴趣。

技能目标:1. 能够运用所学的PIC单片机知识,设计并完成具有一定功能的课程项目;2. 培养动手实践能力,学会焊接、调试和排错;3. 提高问题分析能力,能够针对实际问题设计合理的单片机控制系统;4. 增强团队协作能力,学会在项目中进行沟通与分工。

情感态度价值观目标:1. 培养学生对电子技术的热情,激发学习兴趣;2. 培养学生具备良好的学习习惯,积极面对挑战,勇于克服困难;3. 增强学生的创新意识,鼓励他们在课程设计中发挥想象力和创造力;4. 培养学生的环保意识,关注电子垃圾处理和资源节约。

本课程针对高年级学生,结合学科特点和教学要求,注重理论与实践相结合,旨在提高学生的动手能力、创新意识和团队协作能力。

通过课程学习,使学生掌握PIC单片机的相关知识,为今后从事电子技术领域的工作打下基础。

同时,课程目标分解为具体的学习成果,便于教学设计和评估,确保课程实施的有效性。

二、教学内容1. PIC单片机基本结构:介绍PIC单片机的内部结构,包括CPU、存储器、输入输出端口等,参考教材第二章内容;2. PIC单片机工作原理:讲解PIC单片机的工作原理,包括指令执行、中断处理等,参考教材第三章内容;3. 编程语言与开发环境:学习PIC单片机的编程语言(如C语言)及开发环境(如MPLAB),参考教材第四章内容;4. 基本电路设计与控制:教授如何使用PIC单片机设计简单的电路和控制系统,参考教材第五章内容;- 输入输出控制;- 定时器/计数器应用;- 中断处理;5. 应用案例与项目实践:分析PIC单片机在实际应用中的案例,如温度控制系统、智能小车等,参考教材第六章内容;6. 课程项目设计与实施:指导学生进行课程项目设计,要求具备一定功能,并能实际操作,结合教材内容及实际需求进行。

结业设计PIC单片机课设报告

结业设计PIC单片机课设报告

目录一、目的 (2)二、描述和要求 (2)三、硬件选择 (2)四、硬件电路图 (5)五、程序设计 (5)六、总结 (7)七、参考书目 (8)附录:程序代码 (9)一、目的随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。

而创自古以来就是把守门户的铁将军,人们对它要求甚高。

即要安全可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。

传统的门既要备有大量的钥匙。

又要担心钥匙丢失后的麻烦。

另外,如:宾馆、办公大楼、仓库、保险柜等由于人员的变动,开锁的钥匙也不再是只有一人拥有。

购得新居的家庭。

由于装修施工等人住时也要把原有的锁胆更换,况且钥匙随身携带也诸多不便。

随着单片机的问世,出现了带微处理器的电子密码锁,它的出现解决了传统锁的许多缺点,使密码锁具有很高的安全性、可靠性。

目前已经大量地应用于日常生活之中。

希望通过本课设完成具有一定实用性的电子密码锁,从而培养对单片机学习的兴趣,巩固PIC单片机的知识内容,提高实践动手能力。

二、描述和要求1、密码正确则电机转动。

2、密码错误则需重新输入,若连续三次输入错误则报警声响起,键盘被锁。

3、按错键时可按“删除”键删除输入键值。

4、按下一个键时响一声,说明按键按下。

三、硬件选择1、单片机PIC16F887本系统设计的核心控制芯片为PIC16F887。

它是一款采用纳瓦技术的40引脚8位CMOS增强型闪存单片机。

PIC16F887具有8K字程序存储器,368字节用户可用数据存储器和256字节EEPROM。

具有36个I/0口,14个A/D通道,1个CCP,1个增强型CCP,1个增强型通用同步/异步收发器,1个主控同步串行端口,2个比较器,2个8位计数器/定时器,1个16位计数器/定时器。

PIC16F887引脚图如下:本系统用到的引脚主要有:引脚1:RE3/MCLR/Vpp,系统复位端。

接操作按键K1。

引脚11、32:Vdd,系统电源端。

pic单片机课程设计

pic单片机课程设计

pic单片机课程设计一、课程目标知识目标:1. 让学生掌握PIC单片机的基本结构、工作原理及功能特点;2. 使学生了解并熟练运用PIC单片机的指令系统,进行简单的程序设计;3. 让学生掌握PIC单片机外围电路的设计方法,并能进行基本的电路搭建。

技能目标:1. 培养学生具备使用PIC单片机进行嵌入式系统开发的能力;2. 培养学生运用编程软件(如MPLAB)进行程序编写、调试的能力;3. 提高学生分析问题、解决问题的能力,使其能够运用所学知识解决实际问题。

情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发其探索精神;2. 培养学生具备良好的团队合作意识,使其在项目实践中互相学习、共同成长;3. 培养学生具备创新意识,鼓励其在课程设计中勇于尝试新方法、新技术。

课程性质:本课程为实践性较强的课程,以项目为导向,注重培养学生的动手能力和实际应用能力。

学生特点:学生具备一定的电子基础和编程基础,对新技术具有好奇心,喜欢动手实践。

教学要求:结合学生特点,课程设计应注重理论与实践相结合,充分调动学生的积极性,引导其主动参与教学活动,提高学生的实际操作能力。

在教学过程中,关注学生的个体差异,因材施教,使每位学生都能在课程中收获成长。

通过课程目标的实现,为学生在后续的嵌入式系统开发领域打下坚实基础。

二、教学内容1. PIC单片机基本原理- 单片机概述、发展历程及分类- PIC单片机的内部结构、工作原理及性能特点2. PIC单片机指令系统与编程- 指令集介绍、指令格式及操作方法- 程序设计基础:顺序结构、分支结构、循环结构- 编程实例分析及练习3. PIC单片机外围电路设计- 常用外围元器件及其功能- 基本电路设计方法:输入/输出接口、模拟/数字转换、定时器/计数器等- 电路搭建与调试技巧4. 嵌入式系统项目实践- 项目分析与需求分析- 系统设计、程序编写及调试- 系统测试与优化5. 教学内容安排与进度- 第一章:PIC单片机基本原理(2课时)- 第二章:PIC单片机指令系统与编程(4课时)- 第三章:PIC单片机外围电路设计(4课时)- 第四章:嵌入式系统项目实践(6课时)教学内容依据课程目标,结合教材章节进行组织,注重理论与实践相结合,使学生能够循序渐进地掌握PIC单片机的相关知识和技能。

pic单片机实验报告

pic单片机实验报告

pic单片机实验报告篇一:PIC单片机实验报告实验一循环点亮LED灯一、实验内容:将RE0-RE5配置为输出,连接6个LED灯;编写程序,调试并运行,下载到实验板上,实现循环点亮。

二、实验目的:学习PIC单片机I/O端口功能及特点,了解I/O端口引脚及连线,控制寄存器。

在开发板上实现循环点亮LED灯。

三、实验要求1. 了解掌握PIC单片机的结构和功能。

2. 应熟练掌握MPLAB开发环境的使用方法。

3. 熟练掌握PIC单片机的程序编写方法。

4. 掌握MPLAB IDE硬件调试的技巧。

四、实验准备:1、I/O引脚及连线:I/O端口特点:1、所有I/O 输入端口都是施密特触发器输入,以便增强抗干扰性。

2、外设复用:所有的器件引脚(除VDD、VSS、MCLR 和OSC1/CLKI之外),均为外设与I/O端口所共用。

3、如果外设使能,并且外设正在使用相关引脚时,该引脚将不再作为通用I/O 引脚使用。

4、优先级:I/O 与多个外设复用时I/O 引脚的名称定义了与该引脚相关的各个功能的优先级,如:I/O 引脚与两个外设复用(“外设A”和“外设B”)外设A 对引脚的控制具有最高优先权,若外设A 和外设B 同时使能,外设A将控制I/O 引脚5、电平变化通知引脚:电平变化通知引脚(CN)内接输入电平变化通知模块,使得dsPIC30F器件能够向处理器发出中断请求,以响应所选输入引脚上的状态变化。

I/O端口控制寄存器:所有的端口引脚,都有三个与端口引脚的操作直接相关的寄存器。

① TRISx:数据方向寄存器。

决定各个引脚是输入引脚还是输出引脚。

–若某个I/O 引脚的TRIS 位为“1”,则该引脚是输入引脚。

–某个I/O 引脚的TRIS 位为“0”,则该引脚被配置为输出引脚。

–复位以后,所有端口引脚被定义为输入。

② PORTx:I/O端口寄存器。

访问的是I/O引脚上的数据。

读的是端口引脚值;写端口引脚,写的是端口数据锁存器(LATx )。

PIC单片机课程设计

PIC单片机课程设计

PIC单片机课程设计设计报告题目:数字秒表学校:河北联合大学信息工程学院学号:XXXXXXX姓名:XXX目录一:课程设计题目二:课程设计目的三:课程设计任务与要求四:总体设计4.1设计原理及方案论证4.2 硬件部分4.2.1系统设计总框图4.2.2电路组成及工作原理4.2.3 单片机PIC16F877简介4.3 软件部分4.3.1 程序流程图4.3.2 程序清单五、总结参考文献一:课程设计题目秒表计时器二:课程设计目的课程设计的主要目的是通过对电子时钟的设计实践,了解PIC单片机系统控制过程、设计要求、应完成的工作内容和具体设计方法。

通过设计也有助于复习、巩固以往所学的知识,达到灵活应用的目的。

课程设计应强调能力培养为主,在独立完成设计任务的同时,还要注意其他方面的能力的培养与提高,如独立工作能力与创造力;综合运用专业及基础知识的能力,解决实际工程技术问题的能力等。

三:课程设计任务与要求:任务:利用PIC16F877单片机设计秒表计时器。

要求:通过试验箱上任意四位LED显示器显示时钟范围:00.00秒-99.99秒,分辨度:0.01秒。

在设计过程中用一个定时器作为基本计数单元,使用一个矩阵式四键键盘进行控制,当定时器定时时间到时,就让0.01秒计数单元加1,当秒计数达到99.99时,就自动返回到0,重新开始秒计数。

四:总体设计设计原理:此次课程设计题目是秒表计时器,由课程设计的要求和任务,以及单片机课程学习和实验,最终采用MAPLAB+ICD+实验箱作为软件编程硬件调试平台,由于设计为秒表,要求系统对时间敏感,采用了定时器和简单循环来定时,其中一个软件一个硬件,会在方案论证中分析在0.01秒时采用的是硬件定时,即用单片机内部的定时器TMR0。

先将时钟初始化,赋入初值2ms定时,循环5次来进行0.01秒定时。

然后由定义的变量S0来进行加一运算,然后将其值通过PIC的SPI 硬件接口将数据发送至级联的74HC595,最终在数码管上进行静态显示。

pic课程设计

pic课程设计

pic课程设计一、课程目标知识目标:1. 学生能理解并掌握课程核心概念,如XXX(此处填写具体学科概念),建立扎实的理论基础。

2. 学生能运用所学知识,分析和解决实际生活中的问题,将理论知识与实际应用相结合。

技能目标:1. 学生通过本课程的学习,培养良好的XXX(此处填写学科相关技能,如实验操作、数据处理等)技能,提高实践操作能力。

2. 学生能够运用所学技能,独立完成课程项目,具备一定的创新意识和团队协作能力。

情感态度价值观目标:1. 学生在学习过程中,培养对学科的兴趣和热情,形成积极向上的学习态度。

2. 学生通过课程学习,认识到所学知识在现实生活中的重要性,增强社会责任感和使命感。

3. 学生在团队合作中,学会尊重他人,培养良好的沟通能力和团队精神。

课程性质:本课程为XXX学科(此处填写具体学科)的示范课,旨在帮助学生巩固基础知识,提高实践能力,培养创新精神和团队协作能力。

学生特点:考虑到学生所在年级的特点,课程设计将注重知识性与趣味性相结合,激发学生的学习兴趣,同时关注学生的个体差异,因材施教。

教学要求:教师应关注学生的实际需求,注重启发式教学,引导学生主动探究,提高课堂互动效果。

同时,注重过程性评价,及时了解学生的学习进度,调整教学策略,确保课程目标的达成。

二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. 知识讲解:- 教材章节:XXX(此处填写教材具体章节)- 内容列举:XXX(此处列举具体教学内容,如基本概念、原理、公式等)2. 实践操作:- 教材章节:XXX(此处填写教材具体章节)- 内容列举:XXX(此处列举实践操作相关内容,如实验、案例分析等)3. 知识拓展:- 教材章节:XXX(此处填写教材具体章节)- 内容列举:XXX(此处列举拓展性内容,如学科前沿、跨学科知识等)4. 课程项目:- 教材章节:XXX(此处填写教材具体章节)- 内容列举:XXX(此处列举课程项目相关内容,明确项目目标、任务分配等)教学大纲安排如下:1. 导入新课:通过生活实例或问题,激发学生兴趣,引出本节课的学习内容。

PIC单片机课程设计报告(轻院)

PIC单片机课程设计报告(轻院)

河北联合大学轻工学院QINGGONG COLLEGE, HEBEI UNITED UNIVERSITY《PIC 单片机课程设 计》专业班级: 电信一班学生姓名: 靳涛学 号:201124520108指导教师: 曹义2014年7月6日单片机课程设计报告、课程设计目的本课程设计是在《PIC 单片机原理及应用》及《单片机C 语言编程》课程的基 础上,通过硬件设计、软件编程及仿真调试的实践,进一步掌握 用方法,熟练掌握PICCC 语言程序的编写与调试,是毕业设计前的一次重要实践, 为今后走上工作岗位打下坚实的单片机应用基础。

二、设计题目及要求2.1设计题目:基于PIC16F877单片机的DS18B2温度显示 2.2设计要求 实时温度显示,并具有超限报警功能。

输出显示采用LEDt 段数码显示器。

用八段数码管作为显示设备,要求显示实时温度。

由DS18B2(确定所取的温度值三、设计原理说明3.1温度采集模块DS18B2是美国DALLAS^司推出的单总线数字温度传感器。

DS18B2内部集成 了温敏元件、数据转换芯片、存储器芯片和计算机接口芯片等多功能模块。

其主要技术特点有:具有独特的单线接口方式;可以通过数据线供电, 具有超低功耗 工作方式;测温范围为-55 C 〜125C ,测温精度为0.5 C ;温度转换精度9〜12 位可编程,直接将温度转换值以二进制数码的方式串行输出。

四、电路设计设计硬件电路图如下:图1 DS18b20温度采集模块PIC 单片机的应 A E U :伍2 iniLJ W——I\ZCLO Z单片机课程设计报告-PL ................................4 ■ ■ ■■ ■ U2 ..................图2完整电路图五、流程图如下OKWLKIM PUHVrDtf-K-LrCiT m-innun"B n w■/•FnvBpj"H™--dCDTKiH^rK H|K.VTII>WWFZ■riL-Jum IH7KT-I12-K.U^LU--AhrtHElKi^pr?w KUE4]p.nfnfDnhmn iLiafnn■■haro■:nkmn HKWMHkTWTIJHI1 LSI ■:-:昏/丰Sy-#矿-,一单片机课程设计报告六、程序编程如下:#in elude <p ic.h>#defi ne uchar un sig ned char #defi ne uint un sig ned int #defi ne DQ RC1#defi ne DQ_LOW() TRISC1=0;DQ=0_CONFIG(0X 3B31);table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x9table1[]={0x40,0x79,0x24,0x30,0x19,0xuchar a1,a2,a3,a4;void delay( uint X ); void delayus( uin t,uchar);12,0X 02, void reset()0X 78,0X 00,0X 10}; uchar st=1;uint temper;DQ_HIGH(); void ini t(); DQ_LOW();void dis p( uchar nu m1,uchar delayus(70,30);nu m2,uchar nu m3,uchar num 4); void write_byte(uchar date); uchar read_byte(); void get_tem(); void main() DQ_HIGH();delayus(4,4);if(DQ==1)st=1;elseini t();while(1)#defi ne DQ_HIGH() TRISC1=1/* delayus(0,0);//20 delayus(1,1);//30delayus(2,2);//45con stuchardelayus(4,4);//70delayus(70,30);//7502,0X 82, delayus(50,10);//500*/// uchar num;0xf8,0x80,0x90}; get_tem();con stucharNOP();NOP();while(st)单片机课程设计报告NOP();NOP();NOP();NOP();NOP();NOPvoid write_byte(uchar date)NOP();NOP();NOP();NOP();temp=date&0x01;//01010101DQ_HIGH();for(num=10 0;num>0;num--)dis p( a1,a2,a3,a4);st=O; DQ_LOW();delayus(50,10);();uchar i,te mp; j=DQ;DQ_HIGH(); if(j==1)NOP();NOP(); date=date|0x80;//1000for(i=8;i>0;i--) 0000delayus(1,1);DQ_LOW(); return (date);delayus(0,0);if(te mp==1) void get_tem()DQ_HIGH();delayus(2,2); uchar tem1,tem2, num; date=date>>1;//00101010reset(); // 复位 write_byte(0xCC);//跳过ROM write_byte(0x44);//温度转换uchar i,date;reset();static bit j; write_byte(0xCC);for(i=8;i>0;i--) date=date>>1; DQ_HIGH(); NOP();NOP(); write_byte(0xBE);tem1=read_byte();tem2=read_byte();aaa=(tem2*256+tem1)*6.25;temp er=(i nt)aaa;DQ_HIGH();float aaa;uchar read_byte()nu m2,uchar nu m3,uchar num4)void delayus( uint x,uchar y)PORTB=0X 04;//0010 00002. 在调程序的过程中,需要耐心的调试,如在数码管的显示中,需要先给位a1=tem per/1000; P ORTD=0;a2=te mp er%1000/100; P ORTB=0;a3=tem per%100/10; P ORTC=0;a4=te mp er%10;void dis p( uchar nu m1,ucharuint i;uchar j;for(i=x;i>0;i--); for(j=y;j>0;j--);个数码管void delay( uint X )uint a,b;for(a=x;a>0;a--)for(b=110;b>0;b--);void in it()TRISD=0;TRISB=0XC3;P ORTD=table[ nu m1];// 显示第delay(2);PORTB=0X 08;//0001 0000个数码管个数码管P ORTD=table1[ num2];// 显示第二delay(2);PORTB=0X 10;//0000 1000P ORTD=table[ nu m3];// 显示第delay(2);个数码管六、设计总结PORTB=0X 20;//0000 0100P ORTD=table[ nu m4];// 显示第delay(2);1.又进一步对PIC16F877芯片了解及应用,将自己所有学的理论知识得到实践;if(tem per>3000) RC7=1;选再给段选,才能让数码管正常点亮;3.对DS18B20温度模块有了初步的了解,对该芯片的初始化也有了进解,将理论很好的应用于实践中;4.对map lab软件有初步了解了,能利用其画一些硬件仿真电路图;5.仿真现象和计算机的性能有关,不同的计算机性能对同一程序的仿真,会有一定的差异,单是对程序运行时间长度的仿真是精确的。

pic课设实验报告

pic课设实验报告

==《PIC单片机》课程设计学生姓名:学号:专业班级:指导教师:二○○12年05 月04 日目录(二号字体)1 设计方案,目的,内容. (1)2.设计的硬件及说明 (1)3.设计的软件及说明 (5)4 实验结果 (6)5小结 (7)一课程设计的目的《PIC 单片机课程设计》是电气工程及其自动化专业及相近专业的一门重要的专业实践课,本课程在《PIC 单片机》课程的基础上,通过硬件设计与软件编程与调试的实践,进一步掌握PIC 单片机的应用方法,熟练PIC 单片机的C 程序的编写与调试,是毕业设计前的一次重要的实践,为今后走上工作岗位打下坚实的单片机应用基础。

二设计内容1 Proteus 线路图绘制根据所设计的线路图,绘制与之一致的,能用于仿真的Proteus 线路图。

要求所绘的线路图美观、紧凑,参数要与课设一致。

2、软件编制与调试根据所设计的线路图制相应的单片机C 程序,要求所制的程序符合C 语言格式并加上注解。

每编一段即进行译,有错及时修改,并先在Proteus 上仿真,基本正确后再用PICkit3 在线调试,最后应脱机运行。

三设计方案1我做的是数字钟及数字温度计:包括按键.LCD.蜂鸣器时钟芯片DS1307和温度传感器TC74。

2功能;此设计可以感测环境的温度,显示当前的时间,及闹钟。

温度与时间都显示在LCD显示屏上。

四硬件设计及说明1复位按键此图用于复位单片机,使其从新执行相应的程序。

12 振荡方式此图是LP.XT.HS的晶体振荡/陶瓷振荡器接线方式,这种方式接线更准。

3时钟芯片DS1307及附属接线时钟芯片DS1307用于产生时间,它提供了秒、分、时、日、年、和星期等数据,能算只瑞年2100年,时钟的晶振是典型的32.768Hz。

(1)其引脚作用如下:2(2)DS1307的读写如下;1写DS1307 的步骤如下:a) 发送启始位;b) 发送DS1307 的7位地址+0 (写),即0b11010000;c) 发送要写入DS1307 的地址,地址见图16,如要修改分,此值为1;d) 发送要写入DS1307 的数,如要把分修改为十进制数37,则此数为0x37;e) 发送停止位;2读DS1307 的步骤如下:a) 发送启始位;b) 发送DS1307 的7位地址+0 (写),即0b11010000;c) 发送要读的DS1307 的起始地址,如要从秒读起,为0;d) 发送停止位;e) 发送重新开始位;f) 发送DS1307 的7位地址+1 (读),即0b11010001;g) 发送读使能位,接收一个数据,单片机发送应答位;h) 发送读使能,接收下一个数据(地址会自动+1),单片机发送应答位,直到读数完成,接收最后一个数时单片机不发送应答位;i) 发送停止位;注意在DS1307仿真的时候七位地址为0b1001101 而实际为0b1001000 ;(3)功能是;提供时间通过pic16F877送入LCD中显示。

pic单片机实验报告

pic单片机实验报告

pic单片机实验报告
《pic单片机实验报告》
实验目的:通过对pic单片机的实验,掌握其基本原理和应用技能,提高对单
片机的理解和应用能力。

实验内容:
1. 初步了解pic单片机的基本结构和工作原理;
2. 学习pic单片机的编程语言和编程工具;
3. 进行简单的pic单片机实验,如LED灯控制、数码管显示等;
4. 分析实验结果,总结经验和教训。

实验步骤:
1. 阅读pic单片机的相关资料,了解其基本原理和应用领域;
2. 学习pic单片机的编程语言和编程工具,如C语言和MPLAB X IDE;
3. 进行LED灯控制实验,编写简单的程序控制LED的亮灭;
4. 进行数码管显示实验,编写程序实现数字的显示和滚动效果;
5. 分析实验结果,总结经验和教训,找出存在的问题并改进。

实验结果:
1. 成功掌握了pic单片机的基本原理和编程技能;
2. 实现了LED灯控制和数码管显示的实验,并取得了良好的效果;
3. 发现了一些问题,如程序逻辑错误和电路连接不良,及时改进并取得了成功。

实验总结:
通过本次实验,我对pic单片机有了更深入的了解,掌握了其基本原理和编程
技能,提高了对单片机的应用能力。

同时,也发现了一些问题并及时改进,取
得了良好的实验效果。

希望能在今后的学习和工作中,更好地应用pic单片机,为科研和工程项目做出更大的贡献。

PIC单片机报告

PIC单片机报告

PIC单片机报告第一篇:PIC单片机报告PIC单片机实验报告一、定时器的使用(1)实验目的:通过学习和实验理解PIC单片机定时器的内部工作原理,学会定时器初始化配置编程,并能利用实验板对定时器有简单的应用。

(2)实验器材:16位PIC单片机学习板。

(3)实验过程:1、PIC单片机定时器概述:根据具体器件,dsPIC30F 器件系列提供了几个16 位定时器。

这些定时器被指定为Timer1、Timer2、Timer3 ……等。

可分为三种类型:A类型时基、B类型时基和C类型时基。

A类型时基:在大多数dsPIC30F 器件上,至少有一个A 类型定时器。

通常Timer1 是A 类型定时器。

A 类型定时器与其他类型的定时器相比,有下列独特的功能:可以使用器件的低功耗32 kHz 振荡器作为时钟源工作可以在使用外部时钟源的异步模式下工作A 类型定时器独特的功能使它可以用于实时时钟应用(Real-Time Clock,RTC)。

16 位定时器模式:在16 位定时器模式下,定时器在每个指令周期递增,直到与预先装入周期寄存器PR1 中的值匹配,然后复位至0,继续计数。

当CPU 进入空闲模式时,定时器将停止递增,除非TSIDL(T1CON<13>)位 = 0。

如果TSIDL = 1,定时器模块逻辑将继续递增,直到CPU 空闲模式终止。

位同步计数器模式:在16 位同步计数器模式下,定时器将在外部时钟信号的上升沿递增,外部时钟信号与内部相位时钟同步。

定时器计数,直到等于PR1 中预先装入的值,然后复位至0,继续计数。

当CPU 进入空闲模式时,同上。

位异步计数器模式:在16 位异步计数器模式下,定时器在外部时钟信号的上升沿递增。

定时器计数,直到等于PR1 中预先装入的值,然后复位至0,继续计数。

当定时器配置为异步工作模式时,CPU 进入空闲模式,如果TSIDL = 1,则定时器将停止递增。

B类型时基:在大多数dsPIC30F 器件上,如果存在Timer2 和Timer4,它们是B 类型定时器。

pic单片机实验报告

pic单片机实验报告

pic单片机实验报告PIC单片机实验报告引言:PIC单片机是一种非常常见的嵌入式系统开发工具,被广泛应用于电子产品的设计与制造过程中。

本实验报告将介绍我对PIC单片机的实验研究,并分享实验过程中的收获和心得体会。

实验一:LED灯的控制在本实验中,我使用PIC单片机来控制一组LED灯的亮灭。

通过编程,我成功实现了按键控制LED灯的开关,以及通过定时器实现LED灯的闪烁效果。

这个实验让我初步了解了PIC单片机的编程方法和基本原理。

实验二:温度传感器的应用在这个实验中,我将PIC单片机与温度传感器连接,并通过编程实现了温度的实时监测和显示。

通过这个实验,我深入了解了模拟信号的采集和数字信号的处理过程,并学会了如何使用PIC单片机进行数据的读取和处理。

实验三:蜂鸣器的控制本实验中,我使用PIC单片机控制了一个蜂鸣器的发声。

通过编程,我实现了不同频率的声音输出,并且可以通过按键控制声音的开关。

这个实验让我了解了如何通过PIC单片机来控制外部设备,并且学会了如何利用定时器来产生不同频率的方波信号。

实验四:液晶显示屏的应用在这个实验中,我将PIC单片机与液晶显示屏连接,并通过编程实现了文字和图形的显示。

通过这个实验,我学会了如何使用PIC单片机来控制液晶显示屏,并且了解了液晶显示屏的基本原理和工作方式。

实验五:无线通信模块的应用在本实验中,我将PIC单片机与无线通信模块连接,并通过编程实现了两个PIC 单片机之间的无线数据传输。

通过这个实验,我了解了无线通信模块的基本原理和工作方式,并学会了如何使用PIC单片机进行无线通信的应用。

结论:通过对PIC单片机的实验研究,我深入了解了PIC单片机的工作原理和应用方法。

通过编程和实践,我成功实现了LED灯的控制、温度传感器的应用、蜂鸣器的控制、液晶显示屏的应用以及无线通信模块的应用。

这些实验不仅让我掌握了PIC单片机的基本编程技巧和应用方法,还培养了我对嵌入式系统开发的兴趣和能力。

pic单片机课程设计

pic单片机课程设计

资料收集于网络,如有侵权请联系网站删除《PIC 单片机课程设计》报告题目:温度监测与控制学生姓名:学号:指导教师:年月日目录一.课程设计性质与目的 (02)二.课程设计任务和要求 (02)三.课程设计具体步骤3.1 总体方案设计说明 (03)3.2 硬件设计说明 (03)3.3 软件设计说明 (06)四.设计总结与体会4.1 设计结果 (08)4.2 问题及解决方法 (08)4.2 感想及体会 (08)五.参考文献 (09)六.附录 (10)一.课程设计性质和目的:《PIC 单片机课程设计》是电气工程与自动化专业及相近专业的一门重要的专业实践课,本课程在《PIC 单片机》课程的基础上,通过硬件设计与软件编程与实际实验板调试的实践,进一步掌握 PIC 单片机的 C 程序语言的编写与调试,是毕业设计前的一次重要的实践,为今后走上工作岗位打下坚实的单片机应用基础。

具体来说,这次课程设计能让我扩展、加深对 PIC 单片机应用的了解,包括中断、定时器、 PWM、显示等功能模块的应用;接触项目中 C 语言编程的逻辑,如何一步一步实现所想要的功能;通过分析选择元件,学着查找相关元件资料;在后期,优化程序,使之能满足实际运行要求;最终完成该课程设计。

二.课程设计任务和要求:我的课程设计题目是《温度监测与控制》,要求当温度 T 超过电机启动设定值(START_T) 时,为了防止在临界温度值时的风扇频繁启/停,控制风扇的启/停要有一定的回差值(DELTA_T) , 即当 T>=START_T 时启动风扇,当 T<(START_T-DELTA_T) 时关闭风扇,并要求START_T 和 DELTA_T 能由用户设定。

具体来说:1)利用 LCD,显示实时温度,电机启动温度值及温度控制回差值;2)能够通过按键的设置增大或减小转启动温度及回差温度;3)通过 LED 亮灭实现预警;4)通过风扇(直流电机)实现散热。

PIC单片机课程设计

PIC单片机课程设计

《PIC单片机》课程设计学生姓名:学号:专业班级:指导教师:二○一二年五月四日目录1、摘要 (1)2、课程设计目的 (1)3、设计题目及要求 (1)3.1设计题目: (1)3.2功能实现: (1)3.3设计要求: (1)4、课程设计内容 (2)4.1设计步骤 (2)4.2设计原理 (2)4.3模块功能说明 (2)4.4 程序流程图 (5)4.5 设计与调试分析 (5)4.6 PROTEUS仿真图 (6)5.总结 (6)5.1 遇到的问题 (6)5.2 结论 (7)1、摘要随着社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便于生活的自动控制系统开始进入了人们的生活,以单片机为核心的各种系统也越来越多。

同时也标志了自动控制领域成为了数字化时代的一员。

它实用性强,功能齐全,技术先进,使人们相信这是科技进步的成果。

它更让人类懂得,数字时代的发展将改变人类的生活,将加快科学技术的发展。

这次设计为基于PIC16F887的智能时钟,以Microchip公司的PIC16F系列单片机为核心, TC74温度传感器、 DS1307时钟芯片以及LCD1602等构成外围电路,可以实时显示时间和温度,并可根据需要调整时间参数。

关键词:单片机,PIC16F887,TC74,DS1307,LCD1602,智能时钟2、课程设计目的本学期,我们开设了《PIC单片机》的课程。

江和老师系统的给我们介绍了Microchip 公司PIC16F877A单片机的主要参数和功能,以及MAPLAB调试软件、PICC编译器和PROTEUS仿真软件的使用,让我们受益良多!经过两个月的学习,我们已掌握基本的编程技巧,但平时的联系主要都是靠仿真实现,而实物跟仿真终究是有差别的。

因此,为了锻炼我们的实际动手能力和编程调试能力,我们开设了PIC单片机课程设计。

本课程设计是在《PIC单片机》课程的基础上,通过硬件设计与软件编程与调试的实践,进一步掌握PIC单片机的应用方法,熟练PIC单片机的C程序的编写与调试,是毕业设计前的一次重要实践,为今后走上工作岗位打下坚实的单片机应用基础。

单片机课程设计报告[5篇]

单片机课程设计报告[5篇]

单片机课程设计报告[5篇]第一篇:单片机课程设计报告《单片机课程设计报告》学校:专业:班级:姓名:学号:指导教师:摘要由于单片机体积小、成本低、使用方便,所以被广泛地应用于仪器仪表、现场数据的采集和控制。

通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用。

关键词单片机,程序,流水灯,数码管,温度计,键盘扫描,定时器等。

实验内容一、课程设计的目的以本学期对单片机的学习和认识,并通过本次课程设计加以应用,从而达到一个对所学知识的巩固、更深一步的理解,面对一个电子设计,应对出系统的方案,分析出各个板块来,再对各个板块进一步的具体的设计,先进行硬件电路设计,此时一定要考虑好要用什么元件、各个元件的具体参数、是否能实现应有功能,从而得到一个完整的硬件电路。

在根据该电路设计出软件的功能模块、从而完成程序流程图,在根据流程图完成程序的设计,并通过反复的调试、运行、更正,直至完成既定功能为止,最后将软件、硬件结合进行调试、运行,对其功能进行最终测试,并反复思考其测试中遇到相应问题的原因,并将其一一处理,从而完成本次设计的实验要求,以及本次课程设计的最终目的。

实验一:键盘操作实验实验要求:通过本次实验实现对键盘的控制,操作数码管的显示数字。

实验程序:#include #include #include #include #define WR273 XBYTE[0XC000] #define RD244 XBYTE[0XC000] #define uchar unsigned char #define uint unsigned int sbit DQ =P1^0;uint count=0,x,buf[20],tim,flag;uchar fen,shi;uchar codetable_16_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80 ,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};uchar codetable_16_2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x0 0,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};voidled_clc(void){ XBYTE[0X8000]=0XFF;XBYTE[0X9000]=0XFF;XBYTE [0XA000]=0XFF;XBYTE[0XB000]=0XFF;}void delay(unsigned int i){ while(i--);} void delay_1ms(uint z){ uint i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);} uchar key_test(){ WR273=0XF0;if((RD244&0X0F)!=0X0F)return 1;else return 0;}void time_init(){ TMOD=0X01;TH0=(65536-46080)/256;TL0=(65536-46080)%256;TR0=1;ET0=1;EA=1;} void time_display(){if(count==10000)count=0;XBYTE[0X8000]=table_16_1[coun t%10];XBYTE[0X9000]=table_16_1[count%100/10];XBYTE[0XA00 0]=table_16_1[count%1000/100];XBYTE[0XB000]=table_16_1[co unt/1000];} void TIME_SET(){ uchar a,b,c,d,key;while(flag==1){ led_clc();while(!key_test());a=keyscan();XBYTE[0XB000]=table_16_1[a];while(!key_test());b=keyscan();XBYTE[0XA000]=table_16_2[b];while(!key_test());c=keyscan();XBYTE[0X9000]=table_16_1[c];while(!key_test());d=keyscan();XBYTE[0X8000]=table_16_1[d] ;while(!key_test());key=keyscan();if(key==11){shi = a*10+b;fen = c*10+d;flag=0;} } } void TIME_DIS(){if(tim==60){ fen++;tim=0;if(fen==60){ shi++;fen=0;if(shi==24)shi=0;} } XBYTE[0X8000]=table_16_1[fen%10];XBYTE[0X9000]=table_16_1 [fen/10];XBYTE[0XA000]=table_16_2[shi%10];XBYTE[0XB000]=ta ble_16_1[shi/10];} void main(){ uint temp;led_clc();// serial_init();time_init();while(1){ temp=keyscan();if(temp==10)fla g=1;TIME_SET();//XBYTE[0X8000]=table_16_1[temp];//time_display();TIME_DIS();} } void time()interrupt 2 { uchar m;TH0=(65536-46080)/256;TL0=(65536-46080)%256;m++;if(m==20){ m=0;count++;tim++;} } void serial()interrupt 4 { if(RI==1){ x=SBUF;RI=0;} put_char(x);delay_1ms(5);}实验心得体会:通过本次实验,让我对单片机实验有了更深的了解,认为这个实验还是比较容易的,没有花太多的时间。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河北联合大学轻工学院
QINGGONG COLLEGE, HEBEI UNITED UNIVERSITY 《PIC单片机课程设
计》
学生姓名:靳涛
学号:201124520108
学部:信息科学与技术专业班级:电信一班
指导教师:曹义
2014年7 月6 日
一、课程设计目的
本课程设计是在《PIC单片机原理及应用》及《单片机C语言编程》课程的基础上,通过硬件设计、软件编程及仿真调试的实践,进一步掌握PIC单片机的应用方法,熟练掌握PICC C语言程序的编写与调试,是毕业设计前的一次重要实践,为今后走上工作岗位打下坚实的单片机应用基础。

二、设计题目及要求
2.1 设计题目:
基于PIC16F877单片机的DS18B20温度显示
2.2 设计要求
实时温度显示,并具有超限报警功能。

输出显示采用LED七段数码显示器。

用八段数码管作为显示设备,要求显示实时温度。

由DS18B20确定所取的温度值
三、设计原理说明
3.1 温度采集模块
DS18B20是美国DALLAS公司推出的单总线数字温度传感器。

DS18B20内部集成了温敏元件、数据转换芯片、存储器芯片和计算机接口芯片等多功能模块。

其主要技术特点有:具有独特的单线接口方式;可以通过数据线供电,具有超低功耗工作方式;测温范围为-55℃~125℃,测温精度为0.5℃;温度转换精度9~12位可编程,直接将温度转换值以二进制数码的方式串行输出。

四、电路设计
设计硬件电路图如下:
图1 DS18b20温度采集模块
五、流程图如下
六、程序编程如下:
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
#define DQ RC1
#define DQ_HIGH() TRISC1=1
#define DQ_LOW() TRISC1=0;DQ=0
__CONFIG(0x3B31);
const uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x9 2,0x82,
0xf8,0x80,0x90};
const uchar table1[]={0x40,0x79,0x24,0x30,0x19,0x 12,0x02,
0x78,0x00,0x10};
uint temper;
uchar a1,a2,a3,a4;
void delay(uint x);
void delayus(uint,uchar);
void init();
void disp(uchar num1,uchar num2,uchar num3,uchar num4);
void write_byte(uchar date);
uchar read_byte();
void get_tem();
void main() {
init();
while(1)
{
/* delayus(0,0);//20
delayus(1,1);//30
delayus(2,2);//45
delayus(4,4);//70
delayus(70,30);//750
delayus(50,10);//500*/ // uchar num;
get_tem();
}
}
void reset()
{
uchar st=1;
DQ_HIGH();
NOP();NOP();
while(st)
{
DQ_LOW();
delayus(70,30);
DQ_HIGH();
delayus(4,4);
if(DQ==1)
st=1;
else
st=0;
delayus(50,10);
}
}
void write_byte(uchar date)
{
uchar i,temp;
DQ_HIGH();
NOP();NOP();
for(i=8;i>0;i--)
{
temp=date&0x01;//01010101
DQ_LOW();
delayus(0,0);
if(temp==1)
DQ_HIGH();
delayus(2,2);
DQ_HIGH();
date=date>>1;//00101010 }
}
uchar read_byte()
{
uchar i,date;
static bit j;
for(i=8;i>0;i--)
{
date=date>>1;
DQ_HIGH();
NOP();NOP();
DQ_LOW();
NOP();NOP();NOP();NOP();NOP();NOP ();
DQ_HIGH();
NOP();NOP();NOP();NOP();
j=DQ;
if(j==1)
date=date|0x80;//1000 0000
delayus(1,1);
}
return (date);
}
void get_tem()
{
uchar tem1,tem2,num;
float aaa;
reset(); //复位
write_byte(0xCC);//跳过ROM
write_byte(0x44);//温度转换
for(num=100;num>0;num--)
disp(a1,a2,a3,a4);
reset();
write_byte(0xCC);
write_byte(0xBE);
tem1=read_byte();
tem2=read_byte();
aaa=(tem2*256+tem1)*6.25;
temper=(int)aaa;
a1=temper/1000;
a2=temper%1000/100;
a3=temper%100/10;
a4=temper%10;
if(temper>3000) RC7=1;
}
void delayus(uint x,uchar y) {
uint i;
uchar j;
for(i=x;i>0;i--);
for(j=y;j>0;j--);
}
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--); }
void init()
{
TRISD=0;
TRISB=0XC3;
PORTD=0;
PORTB=0;
PORTC=0;
}
void disp(uchar num1,uchar num2,uchar num3,uchar num4)
{
PORTB=0x04;//0010 0000
PORTD=table[num1];//显示第一个数码管
delay(2);
PORTB=0x08;//0001 0000
PORTD=table1[num2];//显示第二个数码管
delay(2);
PORTB=0x10;//0000 1000
PORTD=table[num3];//显示第三个数码管
delay(2);
PORTB=0x20;//0000 0100
PORTD=table[num4];//显示第四个数码管
delay(2);
}
六、设计总结
1.又进一步对PIC16F877芯片了解及应用,将自己所有学的理论知识得到实践;
2.在调程序的过程中,需要耐心的调试,如在数码管的显示中,需要先给位
选再给段选,才能让数码管正常点亮;
3.对DS18B20.温度模块有了初步的了解,对该芯片的初始化也有了进一步了解,将理论很好的应用于实践中;
4.对maplab软件有初步了解了,能利用其画一些硬件仿真电路图;
5.仿真现象和计算机的性能有关,不同的计算机性能对同一程序的仿真,会有一定的差异,单是对程序运行时间长度的仿真是精确的。

设计成绩:教师签名:
年月日。

相关文档
最新文档