pic报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
pic报告
一、课程设计的内容
1、单片机小系统的制作:万能板上制作,初始化程序设计。
2、在单片机小系统上开发应用系统。
二、课程设计的要求与数据
实验前认真阅读实验指导书,复习与课程设计相关的理论知识,明确实验目的。
在两周内完成指定的任务,完成电路设计并编程实现相应的功能由老师验收,完成实验报告的撰写,报告要求实验现象的描述。
三、课程设计应完成的工作
1、完成最小系统的制作,写程序,完成最小系统跑马灯功能。
2、在单片机最小系统上做功能扩展,并编程实现相应的功能。
四、课程设计进程安排
周次星期节次实验名称
实验主要
内容
实验
仪器
台套
数
拟
安
排
批
次
每
组
学
生
人
数
实验
室名
称及
地点
13 一1
-
4 单片机技术实践课程要求,
任务安排
50 1 1 实验
2号
楼
214
13 一1应用原理图和教
至二-
7
MCS51
或PIC
或飞思单
片机设计
一个小系
统
PCB图设
计,元器件
清单提交
室,
图书
馆
13 三
至
五1
-
7
单片机小
系统的制
作
万能板上
制作,初始
化程序设
计
50 1 1 实验
2号
楼
212
14 一1
-
7 在单片机
小系统上
开发应用
系统
多进位计
算器,定时
器,计时器
等设计
教
室,
图书
馆
14 二
至
三1
-
7
自选一个
题目
在单片机
小系统上
扩展应用
系统,实现
功能
50 1 1 实验
2号
楼
307
14 四1
-
7 总结报告教
室,
图书
馆
14 五现场答辩实验
2号
楼
214
五、应收集的资料及主要参考文献
1、李荣正等,PIC单片机原理及应用(第4版),北京航空航天大学出版社,北京,2010.11
2、汪正谋,朱力恒,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的工作原理并学习硬件的设计方法及软件编程技巧。
1.2 课程设计的要求
1、完成最小系统的制作,编写程序,实现跑马灯功能。
2、在完成的最小系统电路板上做任意功能扩展。
2 原理及步骤
2.1 PIC16F877A工作原理
1、PIC16F877A的40根接脚图,如图所示,每根接脚都有其特定功能:
图1. PDIP40引脚PIC16F877接脚说明
2、PIC16F877A简介:
该芯片是由Microchip公司所生产开发的新产品,属于PICmicro系列单片微机,具有Flash program程序内存功能,可以重复烧录程序,适合教学、开发新产品等用途;而其内建ICD(In Circuit Debug)功能,可以让使用者直接在单
片机电路或产品上,进行如暂停微处理器执行、观看缓存器内容等,让使用者能快速地进行程序除错与开发。
2.2 最小系统设计
1、根据以下原理图制作最小系统电路板:
2、利用Protel软件画出该原理图的PCB图如下
2.3 跑马灯程序设计
1、设计思路:根据原理图的连接方法,设计程序,实现跑马灯功能。
本设计利用移位的思想,将led灯循环点亮。
部分程序如下:
while (1)
{
temp=0xfe;
for(num=0;num<8;num++) //循环八次
{
PORTD=temp; //第一盏灯亮
delay_1602(8000);
temp=(temp<<1)|0x01; //通过移位思想逐一点亮led }
}
}
2.4 扩展设计
本设计在最小系统的基础上进行扩展,扩展功能为1602液晶显示,显示内容第一行:YU QIU YI第二行为:DIAN ZI 2。
1、1602液晶显示屏接口介绍
(1)接口图:
(2)接口信号说明:
2、基本操作时序
(1)读状态:输入:RS=L,RW=H,E=H 输出:D0~D7=状态字
(2)写指令:输入:RS=L,RW=L,D0~d7=指令码,E=高脉冲输出:无(3)读数据:输入:RS=H, RW=H, E=H 输出:D0~D7=数据
(4)写数据:输入:RS=H, RW=L, D0~D7=数据,E=高脉冲输出:无
3 状态字说明
STA7 STA6 STA5 STA4 STA3 STA2 STA1 STA0 D7 D6 D5 D4 D3 D2 D1 D0
STA0-6 当前数据地址指针的数值
STA7 读写操作使能1:禁止0:允许
4、RAM地址映射图
控制器内部带有80X8位(80字节)的RAM缓冲区,对应关系如下图:
5、程序如下:
/*************************************************************** // description:驱动1602液晶的驱动程序
***************************************************************/ #include <pic.h>
//-------------------------------------------------------------
// port associated with hardware , we may have to change when transplant #define RS RC4
#define RW RC5
#define E RC6
#define LCDPORT PORTB
//-------------------------------------------------------------
// user define
#define COMMAND 0
#define DATA 1
#define uint8 unsigned char
//-------------------------------------------------------------
// data used for test
const uint8 table[]="YU QIU YI"; //定义显示内容
const uint8 table1[]="DIAN ZI 2";
//------------------------------------------------
// function prototype
void delay_1602(int);
void WriteLcd(uint8,uint8);
void InitIO();
void Init1602();
////MAIN function
void main()
{
uint8 num;
InitIO(); //初始化端口
Init1602(); //初始化显示屏
for(num=0; num<9; num++)
{
WriteLcd(DATA,table[num]); //写入数据
delay_1602(1600);
}
WriteLcd(COMMAND,0x80+0x40);
for(num=0; num<9; num++)
{
WriteLcd(DATA,table1[num]);
delay_1602(1600);
}
while (1);
}
// delay function
/*----------------------------------------
函数名称:delay_1602()
功能描述:延时函数
-----------------------------------------*/
void delay_1602(int time)
{
while(time--);
}
/*----------------------------------------
函数名称:WriteLcd()
功能描述:向1602写入命令(style=0)或写入数据(style=1)-----------------------------------------*/
void WriteLcd(uint8 style, uint8 input)
{
RS = style;
//RW = 0;
LCDPORT = input;
delay_1602(400);
E = 1;
delay_1602(400);
E = 0;
}
/*----------------------------------------
函数名称:InitIO()
功能描述:初始化PIC单片机的IO口,设置相应I/O口的工作模式-----------------------------------------*/
void InitIO()
{
TRISC4=0; // set port c pin4 as output
TRISC5=0; // set port c pin5 as output
TRISC6=0; // set port c pin6 as output
TRISB=0; // set port b as output port
//RC4=0; // set port c pin4 as low
//RC5=0; // set port c pin5 as low
RC6=0; // set port c pin6 as low
//LCDPORT=0; //
}
/*----------------------------------------
函数名称:Init1602()
功能描述:初始化液晶1602,设置其工作模式
-----------------------------------------*/
void Init1602()
{
//WriteLcd(COMMAND,0x01);
WriteLcd(COMMAND,0x38);
WriteLcd(COMMAND,0x0e);
WriteLcd(COMMAND,0x06);
WriteLcd(COMMAND,0x01);
WriteLcd(COMMAND,0x80);
}
3 实验结果
1、由PCB图制作印刷电路板,并将相应的元件焊接上去,完成整体电路的连接。
2、将写好的程序烧写入芯片中,连接好电源
3、测试跑马灯及lcd显示屏的显示结果,功能实现。
4 总结
此次实训中,了解到单片机最小系统及外围电路的工作原理,学习到设计电路与程序编程的方法,重温原理图与PCB板的制作,过程中遇到不少问题,例如PCB的布线,lcd与单片机之间的连接等,但经过不断的调试验证,终于完成了制作。
此次实训让我学到的更多是实际操作的经验,学到书上学不到的东西。
参考文献
1、李荣正等,PIC单片机原理及应用(第4版),北京航空航天大学出版社,北京,2010.11
2、张谨,张伟,张立宝.Protel 99SE 入门与提高.北京:人民邮电出版社,2007。