PIC单片机课程设计报告
更新时间:2023-04-25 04:53:01 阅读量: 实用文档 文档下载
.
Word 文档目录
一、课程设计目的 ............................................................................................................................. - 1 -
二、设计题目及要求 ......................................................................................................................... - 1 -
2.1 设计题目:.................................................................................................................................. - 1 - 2.2 功能实现:.................................................................................................................................. - 1 -
2.3 设计要求:.................................................................................................................................. - 1 -
三、设计原理说明 ............................................................................................................................. - 1 -
3.1 时钟模块...................................................................................................................................... - 1 - 3.2 显示模块...................................................................................................................................... - 2 - 3.3 按键模块...................................................................................................................................... - 2 -
3.4 温度采集模块.............................................................................................................................. - 2 -
四、硬件原理图 ................................................................................................................................. - 2 -
五、软件设计 ..................................................................................................................................... - 4 -
六、设计总结 ................................................................................................................................... - 19 -
PIC单片机课程设计报告
一、课程设计目的
本课程设计是在《PIC单片机原理及应用》及《单片机C语言编程》课程的基础上,通过硬件设计、软件编程及仿真调试的实践,进一步掌握PIC单片机的应用方法,熟练掌握PICC C语言程序的编写与调试,是毕业设计前的一次重要实践,为今后走上工作岗位打下坚实的单片机应用基础。
二、设计题目及要求
2.1 设计题目:
基于PIC16F877单片机的多功能电子时钟
2.2 功能实现:
实时时钟显示,时间可调;实时温度显示,并具有超限报警功能。输出显示采用LCD1602或LED七段数码显示器。
2.3 设计要求:
自己设计硬件和程序编程,画出完整的电路原理图,用Multisim或Proteus仿真,最终可实现脱机运行。
三、设计原理说明
3.1 时钟模块
DS1307是美国DALLAS公司推出的I2C总线接口实时时钟芯片,它可独立于CPU 工作,不受CPU主晶振及其电容的影响,且计时准确,月累积误差一般小于10秒。芯片还具有主电源掉电情况下的时钟保护电路,DS1307的时钟靠后备电池维持工作,拒绝CPU对其读出和写入访问。同时还具有备用电源自动切换控制电路,因而可在主电源掉电和其它一些恶劣环境场合中保证系统时钟的定时准确性。
- 1 -
PIC单片机课程设计报告DS1307具有产生秒、分、时、日、月、年等功能,且具有闰年自动调整功能。同时,DS1307芯片部还集成有一定容量、具有掉电保护特性的静态RAM,可用于保存一些关键数据。
3.2 显示模块
如用LCD1602作为显示设备,要求显示屏分两行显示,第一行显示日期(年-月-日)和星期,第二行显示时间(时:分:秒)和温度。显示秒由00一直加到59,分钟数也由00加到59,小时采用24小时制,由00加到23,如此循环显示。
3.3 按键模块
按键用来作为时间调整。要求至少设计4个按键,按键1作为设置键;按键2、按键3分别为增加、减少键,在设置键按下时,此两个按键方有效;按键4是确定键,在设置键按下时方才有效。
3.4 温度采集模块
DS18B20是美国DALLAS公司推出的单总线数字温度传感器。DS18B20部集成了温敏元件、数据转换芯片、存储器芯片和计算机接口芯片等多功能模块。其主要技术特点有:具有独特的单线接口方式;可以通过数据线供电,具有超低功耗工作方式;测温围为-55℃~125℃,测温精度为0.5℃;温度转换精度9~12位可编程,直接将温度转换值以二进制数码的方式串行输出。
四、硬件原理图
(含原理图、电路仿真图)
时间显示:
- 2 -
PIC单片机课程设计报告
按下温度键temp后显示温度:
- 3 -
PIC单片机课程设计报告
五、软件设计
(含流程图、带注释的程序清单)
#include
#include
- 4 -
PIC单片机课程设计报告#include
#define _XTAL_FREQ 1000000UL
#define speak RC3
#define ON 0
#define OFF 1
#define DQ RB5
//设置数据方向
#define DQ_IN() TRISB5 = 1 //输入
#define DQ_OUT() TRISB5 =0 //输出
//DS1302引脚定义
#define IO RA1
#define SCLK RA0
#define RST RA2
//DS1302端口数据读写方向
#define SET_IO_RD() TRISA1 = 1
#define SET_IO_WR() TRISA1 = 0
#define LCD_CLS 0x01
#define LCD_HOME 0x02
#define LCD_SETMODE 0x04
#define LCD_SETVISIBLE 0x08
#define LCD_SHIFT 0x10
#define LCD_SETFUNCTION 0x20
#define LCD_SETCGADDR 0x40
#define LCD_SETDDADDR 0x80
#define PORT_LCD_DAT PORTD
#define PORT_LCD_CTL PORTC
#define TRIS_LCD_DAT TRISD
#define TRIS_LCD_CTL TRISC
#define RS RC5
- 5 -
PIC单片机课程设计报告#define RW RC6
#define E RC7
extern unsigned char DateTime[];
extern char WEEK[][4]= {"SUN","MON","TUS","WEN","THU","FRI","SAT"};
//0,1,2,3,4,5,6分别对应周日,周一至周六
//所读取的日期时间(秒,分,时,日,月,星期,年)
unsigned int temper;
unsigned int settempe = 570 ;
unsigned char DateTime [7];
unsigned char tmp[]="0000";
//向DS1302写入一个字节
unsigned char RB1_FLAG = 0;
const unsigned char tone[]={108,102,91,86,77,68,61,57};//发声的频率常数
void delay18us(unsigned char x) //18us,每次加1,增加9us
{
unsigned char i;
for(;x>0;x--)
{
for(i=0;i<1;i++);
}
}
void delay1ms(unsigned int x)
{
unsigned char i;
for(;x>0;x--)
for(i=0;i<165;i++);
}
void write_byte_to_DS1302(unsigned char x)
{
unsigned char i; SET_IO_WR();
- 6 -
PIC单片机课程设计报告for(i=0x01; i !=0x00; i <<= 1)
{
if (x & i) IO = 1; else IO =0;
SCLK = 0; SCLK =1; __delay_us(10);
}
}
//从DS1302读取1字节
unsigned char get_byte_form_DS1302()
{
unsigned char i,dat =0x00; SET_IO_RD();
for(i = 0; i < 8; i++)
{
SCLK = 1; SCLK=0;
if(IO) dat |= (0x01<
}
return (dat>>4)*10 + (dat&0x0F);
}
//从DS1302指定位置读数据
unsigned char read_data(unsigned char addr)
{
unsigned char dat;
RST = 1;
write_byte_to_DS1302(addr);
dat = get_byte_form_DS1302();
RST = 0;
return dat;
}
//向DS1302指定地址写数据
void Write_DS1302(unsigned char addr,unsigned char dat)
- 7 -
PIC单片机课程设计报告{
RST = 1;
write_byte_to_DS1302(addr);
write_byte_to_DS1302(dat);
RST = 0;
}
void port_init()
{
ADCON1 = 0X06; //RA设置为普通IO口
TRISA = 0X00; //端口A设置为输出
OPTION = 0X00; //端口B弱上拉使能
TRISB = 0xFF;
PORTC = 0X00;
TRISC = 0X00; //端口C设置为输出
PORTD = 0X00;
TRISD = 0X00; //端口D设置为输出
speak=0;
}
void song(unsigned char x)
{
unsigned char i,j;
for(i=0;i<60;i++)
{
for(j=0;j<3;j++)
{
speak = 1;
delay18us(tone[x]);
speak = 0; //翻转发声
- 8 -
PIC单片机课程设计报告delay18us(tone[x]);
}
}
}
void keyscan()
{
unsigned char a ,b ;
DateTime[0]=0;
Write_DS1302(0x8E,0x00); //
Write_DS1302(0x80,0x80); //
if(RB2==0) //小时+1
{
DateTime[2] = DateTime[2]+1; //第三个元素小时+1
if(DateTime[2] == 24) DateTime[2]= 0;//当变为24H时,小时位归零
a = DateTime[2]/10*16+DateTime[2]%10; //变成16进制数据
Write_DS1302(0x84,a);
}
if(RB3==0)
{
DateTime[1] = DateTime[1]+1; //第二个元素分钟+1
if(DateTime[1] == 60) DateTime[1]= 0;//当变为60min时,小时位归零
b = DateTime[1]/10*16+DateTime[1]%10; //变成16进制数据
Write_DS1302(0x82,b);
}
if(RB4==0)
- 9 -
PIC单片机课程设计报告{
song(3);
while(RB4 == ON);
Write_DS1302(0x80,0x00); // 调整完毕后启动时钟运行
Write_DS1302(0x8E,0x00); // 禁止写
RB1_FLAG = 0; // 将RB1按下后产生的标志清除
}
}
//DS1302初始化
void init_DS1302()
{
unsigned char second_REG;
second_REG = read_data(0x81); //读取秒寄存器当前值
//如果高位CH为1,则表示当前DS1302振荡器出于待机状态
//这时需要将CH(clock halt flag)位设为0,打开振荡器使时钟运行
if ((second_REG & 0x80) == 0x80)
{
Write_DS1302(0x8E,0x00) ; //写控制字节,取消写保护
Write_DS1302(0x80,second_REG & 0x7F) ; //0x80地址不变,设高位CH=0
Write_DS1302(0x8E,0x80) ; //加保护
}
}
//读取当前日期
void getDateTime()
{
//Write_DS1302(0x8E,0x00); //允许写操作
- 10 -
PIC单片机课程设计报告unsigned char i, addr = 0x81;
for (i=0; i<7; i++)
{
DateTime[i] = read_data(addr);
addr +=2;
}
}
//********LCD显示子函数***********************//
//**********结束LCD子函数********************//
void LCD_BUSY_WAIT() //忙等待
{
unsigned char status;
TRIS_LCD_DAT = 0xFF;
RS = 0; RW = 1;
do
{
E =1; NOP();
status = PORT_LCD_DAT;
E = 0;
}
while (status & 0x80);
}
void Write_LCD_Command(unsigned char cmd) //写LCD命令
{
TRIS_LCD_DAT = 0x00;
PORT_LCD_DAT = cmd;
PORT_LCD_CTL = TRIS_LCD_CTL = 0x00;
RS = 0;
RW = 0;
E = 1 ;
- 11 -
PIC单片机课程设计报告NOP();
E = 0 ;
LCD_BUSY_WAIT();
}
void Write_LCD_Data(unsigned char dat) //写LCD寄存器数据
{
TRIS_LCD_DAT = 0x00;
PORT_LCD_DAT = dat;
RS = 1;
RW = 0;
E = 1 ;
NOP();
E = 0;
LCD_BUSY_WAIT();
}
void LCD_Initialize()
{
Write_LCD_Command(0x38);
__delay_ms(2);
Write_LCD_Command(0x01);
__delay_ms(2);
Write_LCD_Command(0x06);
__delay_ms(2);
Write_LCD_Command(0x0C);
__delay_ms(2);
}
void LCD_ShowString(unsigned char r, unsigned char c, char *str)
{
unsigned char i = 0;
if(r == 0) Write_LCD_Command(0x80 | c);
- 12 -
正在阅读:
PIC单片机课程设计报告04-25
上河图雕琢的意义现代诗歌03-21
中国音乐史自己总结110-30
街道计生办20xx年度工作总结02-26
家里有跳蚤怎么办?02-11
境外突发事件应急管理预案12-09
会计知识大赛竞赛试题05-02
六一儿童节的系列活动02-21
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 单片机
- 课程
- 报告
- 设计
- PIC
- 海通证券_零售行业2012年三季报总结分析-业绩分化持续 关注4Q12&
- 39- Clone Farm(lucrehuang)
- 中国人民解放军历史上的70个军
- 计算机控制系统高金源版课后答案
- 2020年武汉市初中毕业生学业考试英语试卷(word版,附答案)
- c#笔试题经典50题(含答案)
- 五浪下跌尾声再现 个股活跃度快速增加
- 江苏专转本、专升本、专接本的区别
- 建筑施工模板安全技术规范试卷1
- 地震勘探中的常见地震干扰波及压制方法
- 2016-2021年中国及全球打夯机行业市场发展战略分析及投资前景专
- 11912 民俗文化与旅游 自考考试大纲
- 2020年度工作总结及2020年工作打算文档6篇
- 成功源于专注的作文_专注方能成功作文.doc
- 2020年酒店客房主管个人工作总结4篇
- 部编版八年级历史下学期期中考试试卷(含答案)
- 【七上部编语文】名著导读 《西游记》 精读和跳读(名师教案)
- 读书的名人名言大全【精】
- 消火栓系统调试步骤
- 2018年东北林业大学外国语学院448汉语写作与百科知识