毕业设计(文)
设计(文)题目: 功电子时钟
达 日 期: 20** 年 4 月 26 日
开 始 日 期: 20** 年 5 月 5 日
完 成 日 期: 20** 年 5 月 15 日
指 导 教 师: ***
学 生 专 业: 应电子技术
班 级: 0702班
学 生 姓 名: ***
教 研室: ***
电气工程 系
功电子时钟
摘
设计采LCD液晶屏幕显示系统STC89C52RC单片机核心键盘温度采集定时闹铃日期提醒等功模块组成基题目基求系统时间显示闹铃方式进温度采集系统行重点设计外扩展整点报时非易失闹铃信息存储国外重节日提醒等功系统部分功软件实现吸收硬件软件化思想部分功通软件实现电路简单明系统稳定性提高系统仅成功实现求基功数发挥部分实现具定创新功
关键字: LCD液晶显示双电源供电温度采集生日提醒重节日提醒整点报时
MULTIFUNCTIONAL ELECTRONIC CLOCK
ABSTRACT
This design USES the LCD screen display system to STC89C52RC singlechip keyboard temperature gathering regular alarm functions date remind module Based on the basic requirements the topic of time display alarm system and temperature gathering way into the key design In addition the expanded on time nonvolatile storage and alarm messages and important festivals remind etc Function The system software to realize the function of most of the hardware and software the absorption of thought to realize the function of software the circuit is simple the system stability is greatly improved This system not only successfully realized the requirements of the basic functions most of the play but also got certain innovation function
KEY WORDS STC89C52RC microcontroller LCD display double power supply temperaturebirthday reminder the important festivals remind viewers Talkclock
目 录
摘 Ⅰ
设计(文)容求: 1
1求 1
(1)基求: 1
(2)发挥部分: 1
(3)创新部分 1
2设计(文)容 1
(1)方案证 1
(2)总体方案 2
(3)系统硬件设计(单元电路设计分析) 3
(4)系统软件设计流程 6
二 技术指标: 9
1基部分技术指标测试分析 9
2发挥部分技术指标测试分析: 9
3创新部分技术指标测试分析 9
三 参考资料附录 **
参考资料: **
附 录: 11
附:获取DS1302芯片中时间信息程序: 11
附二:获取DS18B20芯片中温度信息程序: 12
附三:LCD1602宏函数程序: 14
附四:功数字时钟说明: 16
附件五:进程计划表 17
附件六:总结 18
总结致谢 19
设计(文)求容:
1求
(1)基求:设计制作功电子时钟
111设计支持年月日星期时分秒时钟时钟时间调整功闹钟功
112时钟附带温度计功温度检测精度高2度显示精度1度
113时钟具装卸电池时掉电保护功保护时间5分钟
(2)发挥部分:
121提高温度检测精度0℃40℃显示01℃
122实现双电源供电(220V电池供电)
123够提供生日提醒指示够天提供3时间点闹钟报时功
(3)创新部分
131非易失定时闹铃
132重日期提醒
133整点报时
2设计(文)容
(1)方案证
11显示部分
显示部分次设计重部分般三种方案:
方案:采LED显示分静态显示动态显示静态显示方式需译码驱动装置引线复杂性较低动态显示方式避免静态显示问题设计果处理易造成亮度低闪烁等问题
方案二:采LC1602D显示LCD1602液晶显示具丰富样性灵活性电路简单易控制功耗等优点信息量较系统较适合
方案二:采LCD12864显示LCD12864液晶显示具丰富样性动画显示文字显示电路简单易控制功耗等优点信息量系统较适合
鉴述原价格时间素采方案二
12数字时钟
数字时钟设计核心部分根需采两种方案实现:
方案:方案完全软件实现数字时钟原理:单片机部存储器设三字节分存放时钟时分秒信息利定时器软件结合实现1秒定时中断产生次中断存储器相应秒值加1秒值达60清零相应分字节值加1分值达60清零分字节时字节值加1时值达24时字节清零该方案具硬件电路简单特点单片机电程序执行次执行程序时定时器重新赋初值该时钟精度高
方案二:方案采Dallas公司专时钟芯片DS1302该芯片部采石英晶体振荡器芯片精度**ms年具完备时钟闹钟功直接显示设置软件编程相简单保证时钟电网电压足突然掉电等突发情况正常工作芯片部包含锂电池电网电压足突然掉电时系统动转换部锂电池供电系统系统电程序执行时锂电池保证芯片正常运行备时提供正确时间
基时钟芯片述优点设计采方案二完成数字时钟功
13温度采集
现品追求样化功化系统加温度测量显示模块够方便生活该设计具性化
方案:采热敏电阻满足40摄氏度90摄氏度测量范围热敏电阻精度重复性性较差检测1摄氏度信号适
方案二:采温度传感器DS18B20DS18B20满足55摄氏度+125摄氏度测量范围DS18B20测量精度高增值量05摄氏度秒温度转化成数字测温度值存储两八位RAM中单片机直接中读出数转换成十进制温度方便
基DS18B20优点决定选取DS18B20测量温度
14闹铃部分
般时钟带闹铃实现闹铃方式采两种
方案:闹钟信息存放单片机带存储器中该方案成低易实现掉电会造成前信息丢失
方案二:闹钟信息存放非易失储存器AT24C02中该方案完全掉电情况会造成闹钟信息丢失避免方案带麻烦
15电源模块
方案:采干电池作系统电源需常换电池符合节约型社会求
方案二:采直流稳压电源作系统电源干电池作辅助电源仅需常更换电源市电停止时够采干电池做系统电源更加安全
方案三:采开关电源系统做电源稳压器件稳压干电池做辅助电源仅需常更换电源市电停止时够采干电池做系统电源更加安全
基分析决定采方案三
(2)总体方案
21工作原理
设计采STC89C52RC单片机作系统控制模块单片机DS18B20DS1302AT24C02中数利软件进行处理数传输显示模块实现温度日历闹铃显示LCD液晶显示器显示模块单片机传数显示出显示样化显示电路中键实现种显示求选择切换
STC89C52RC
DS1302
DS18B20
独立键盘
LCD1602
AT24C02
蜂鸣器
22总体设计 图
图:系统框架图
(3)系统硬件设计(单元电路设计分析)
31 STC89C52RC单片机系统:
系统包括晶体振荡电路复位开关电源部分图2STC89C52RC单片机系统
图2 系统电路图
32温度测量模块
温度测量传感器采DALLAS公司DS18B20单总线数字化温度传感器测温范围55℃~125℃编程9位~12位AD转换精度测温分辨率达00625℃采寄生电源工作方式CPU需根口线便DS18B20通信占CPU口线少节省量引线逻辑电路接口电路图3示
图3 DS18B20测量电路
33时钟模块
时钟模块采DS1302芯片DS1302DALLAS公司推出涓流充电时钟芯片含实时时钟日历31字节静态RAM通简单串行接口单片机进行通信实时时钟日历电路提供秒分时日日期月年信息月天数闰年天数动调整时钟操作通AMPM指示决定采2412时格式DS1302单片机间简单采步串行方式进行通信仅需三口线:
RST复位IO数线SCLK串行时钟时钟RAM读写数字节达31字节字符组方式通信DS1302工作时功耗低保持数时钟信息时功率1mW接线电路图4
图4 时钟电路
34 存储器模块
存储器采Atmel公司AT24C02芯片该芯片带2KB串行COMS EEPROM部含2568位字节通I2C总线接口进行读写操作带写保护功接线图图5示
图5 AT24C02存储器电路
35 LCD1602液晶显示模块
LCD液晶显示模块采LCD1602型号具低功耗正常工作时电流仅20mA50V通编程实现动关闭屏幕够更效降低功耗LCD1602分两行显示行显示达16字符LCD1602液晶模块部字符发生存储器(CGROM)已存储160点阵字符图形通部指令实现显示样控制利空余空间定义字符接线图6
图6 LCD显示电路
36 系统电源
电源设计设计难点220V交流转5V直流稳压电源会更加安全实电路图图7:
图7 电源电路
37 整体电路:
系统整体电路图8 示:
图8 系统总体电路图
(4)系统软件设计流程
41程序流程
图9 系统程序流程
42时间设定程序流程
图** 显示时间子程序流程
43 温度测量流程图
图11 温度测量程序流程图
44 闹铃设定流程图
图12 闹铃设定程序流程图
45 生日设定流程图
图13 生日设定程序流程图
二 技术指标:
1基部分技术指标测试分析
基求部分技术指标测试分析:
11系统电首先显示欢迎词接着进入显示时间温度功键执行相应功(时钟操作方法详见附录中附四)
12显示时间时测试系统时钟走时准确误差
13设定闹铃时间闹铃时间时响铃响铃长度1分钟期间E键(屏幕背光键)外意键退出响铃
14电记录时间掉220V干电池电源隔5分钟次通电测系统时钟旧走时准确测试系统时钟掉电保护时间长达9分钟
2发挥部分技术指标测试分析:
21系统显示温度000~999摄氏度
22拔掉交流电装干电池系统工作说明干电池作电源系统供电卸掉干电池接交流电系统工作表明交流电适合系统
23生日闹铃设置开时显单标志显示(闹铃A’生日B’)设定时间日期时系统开始响铃期间A~D键退出生日响铃范围:生日日7:00开始第次响铃隔时响铃次直晚22:00次响铃闹铃受时间限制意时刻时间开始响铃
3创新部分技术指标测试分析
31时间显示界面中长C键进入日期提醒查
32系统具备整点报时功报时范围:早7点整——晚22点整
33系统中生日闹铃设定信息均存放存储器中掉电会丢失
三 参考资料附录
参考资料:
[1]求科技 单片机典型模块设计实例导航 北京:民邮电出版社 20058
[2]徐淑华 程退安等单片微型机原理应 哈尔滨:哈尔滨工业学出版社 20051
[3]孙余凯 精选实电子电路260例 北京:电子工业出版社 20076
[4]殷春浩 崔飞 电磁测量原理应 徐州:中国矿业学出版社 20037
[5]LCD1602A数手册
[6]DS1302数手册
[7]DS18B20数手册
[8]AT24C02数手册
附 录:
附:获取DS1302芯片中时间信息程序:
实时时钟写入字节(部函数)
void DS1302InputByte(uchar d)
{ uchar i
ACC d
for(i8 i>0 i)
{ io ACC0 相汇编中 RRC
clk 1
clk 0
ACC ACC >> 1
}
}
实时时钟读取字节(部函数)
uchar DS1302OutputByte(void)
{ uchar i
for(i8 i>0 i)
{ ACC ACC >>1 相汇编中 RRC
ACC7 io
clk 1
clk 0
}
return(ACC)
}
写入DS1302数
参数说明:ucAddr DS1302址 ucData写数 *
void Write1302(uchar ucAddr uchar ucDa)
{ rst 0
clk 0
rst 1
DS1302InputByte(ucAddr) 址命令
DS1302InputByte(ucDa) 写1Byte数
clk 1
rst 0
}
读取DS1302某址数
uchar Read1302(uchar ucAddr)
{ uchar ucData
rst 0
clk 0
rst 1
DS1302InputByte(ucAddr|0x01) 址命令
ucData DS1302OutputByte() 读1Byte数
clk 1
rst 0
return(ucData)
}
获取时钟芯片时钟数定义结构型数组
void DS1302_GetTime(SYSTEMTIME *Time)
{ uchar ReadValue
ReadValue Read1302(DS1302_SECOND)
Time>Second ((ReadValue&0x70)>>4)*** + (ReadValue&0x0F) 高低四位组成转BCD码十进制码
ReadValue Read1302(DS1302_MINUTE)
Time>Minute ((ReadValue&0x70)>>4)*** + (ReadValue&0x0F)
ReadValue Read1302(DS1302_HOUR)
Time>Hour ((ReadValue&0x70)>>4)*** + (ReadValue&0x0F)
ReadValue Read1302(DS1302_DAY)
Time>Day ((ReadValue&0x70)>>4)*** + (ReadValue&0x0F)
ReadValue Read1302(DS1302_WEEK)
Time>Week ((ReadValue&0x70)>>4)*** + (ReadValue&0x0F)
ReadValue Read1302(DS1302_MONTH)
Time>Month ((ReadValue&0x70)>>4)*** + (ReadValue&0x0F)
ReadValue Read1302(DS1302_YEAR)
Time>Year ((ReadValue&0x70)>>4)*** + (ReadValue&0x0F)
}
附二:获取DS18B20芯片中温度信息程序:
sbit DQ P1^6 定义通信端口
延时函数
void delay(unsigned int i)
{
while(i)
}
初始化函数
Init_DS18B20(void)
{
unsigned char x0
DQ 1 DQ复位
delay(8) 稍做延时
DQ 0 单片机DQ拉低
delay(80) 精确延时 480us
DQ 1 拉高总线
delay(14)
xDQ 稍做延时 果x0初始化成功 x1初始化失败
delay(20)
}
读字节
ReadOneChar(void)
{
unsigned char i0
unsigned char dat 0
for (i8i>0i)
{
DQ 0 脉信号
dat>>1
DQ 1 脉信号
if(DQ)
dat|0x80
delay(4)
}
return(dat)
}
写字节
WriteOneChar(unsigned char dat)
{
unsigned char i0
for (i8 i>0 i)
{
DQ 0
DQ dat&0x01
delay(5)
DQ 1
dat>>1
}
delay(4)
}
读取温度
ReadTemperature(void)
{
unsigned char a0
unsigned char b0
unsigned int t0
float tt0
Init_DS18B20()
WriteOneChar(0xCC) 跳读序号列号操作
WriteOneChar(0x44) 启动温度转换
Init_DS18B20()
WriteOneChar(0xCC) 跳读序号列号操作
WriteOneChar(0xBE) 读取温度寄存器等(读9寄存器) 前两温度
aReadOneChar()
bReadOneChar()
tb
t<<8
tt|a
ttt*00625
t tt***+05 放**倍输出四舍五入行没
return(t)
}
main()
{
unsigned char i0
while(1)
{
iReadTemperature()读温度
}
}
附三:LCD1602宏函数程序:
部等函数
unsigned char LCD_Wait(void)
{
LcdRs0
LcdRw1 _nop_()
LcdEn1 _nop_()
LcdEn0
return DBPort
}
LCD写入命令数
#define LCD_COMMAND 0 Command
#define LCD_DATA 1 Data
#define LCD_CLEAR_SCREEN 0x01 清屏
#define LCD_HOMING 0x02 光标返回原点
void LCD_Write(bit style unsigned char input)
{
LcdEn0
LcdRsstyle
LcdRw0 _nop_()
DBPortinput _nop_()注意序
LcdEn1 _nop_()注意序
LcdEn0 _nop_()
LCD_Wait()
}
设置显示模式
#define LCD_SHOW 0x04 显示开
#define LCD_HIDE 0x00 显示关
#define LCD_CURSOR 0x02 显示光标
#define LCD_NO_CURSOR 0x00 光标
#define LCD_FLASH 0x01 光标闪动
#define LCD_NO_FLASH 0x00 光标闪动
void LCD_SetDisplay(unsigned char DisplayMode)
{
LCD_Write(LCD_COMMAND 0x08|DisplayMode)
}
设置输入模式
#define LCD_AC_UP 0x02
#define LCD_AC_DOWN 0x00 default
#define LCD_MOVE 0x01 画面移
#define LCD_NO_MOVE 0x00 default
void LCD_SetInput(unsigned char InputMode)
{
LCD_Write(LCD_COMMAND 0x04|InputMode)
}
移动光标屏幕
#define LCD_CURSOR 0x02
#define LCD_SCREEN 0x08
#define LCD_LEFT 0x00
#define LCD_RIGHT 0x04
void LCD_Move(unsigned char object unsigned char direction)
{
if(objectLCD_CURSOR)
LCD_Write(LCD_COMMAND0x**|direction)
if(objectLCD_SCREEN)
LCD_Write(LCD_COMMAND0x18|direction)
}
初始化LCD
void LCD_Initial()
{
LcdEn0
LCD_Write(LCD_COMMAND0x38) 8位数端口2行显示5*7点阵
LCD_Write(LCD_COMMAND0x38)
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR) 开启显示 光标
LCD_Write(LCD_COMMANDLCD_CLEAR_SCREEN) 清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE) AC递增 画面动
}
void GotoXY(unsigned char x unsigned char y)
{
if(y0)
LCD_Write(LCD_COMMAND0x80|x)
if(y1)
LCD_Write(LCD_COMMAND0x80|(x0x40))
}
void Print(unsigned char *str)
{
while(*str'\0')
{
LCD_Write(LCD_DATA*str)
str++
}
}
void LCD_LoadChar(unsigned char user[8] unsigned char place)
{
unsigned char i
LCD_Write(LCD_COMMAND0x40|(place*8))
for(i0 i<8 i++)
LCD_Write(LCD_DATAuser[i])
}
附四:功数字时钟说明:
A(调整切换键):进行时间闹铃生日设置调整容切换
B(调整加生日设定):时间显示界面中A键进入时间调整B键应闪烁容加1时间显示界面中长该键进入生日信息设定A键选择调整容B键加1C键减1D键退出设定设定生日时日7点整第次响铃提醒隔时整点提醒直日晚22点整次提醒(注意:生日时闹铃整点报时起作)
C(调整减日期提醒):时间显示界面中A键进入时间调整C键应闪烁容加1时间显示界面中长该键进入日期提醒查
D(退出键闹铃设定):种设定模式(包括时间生日闹铃设定)该键退出设定时间显示界面中短该键进入闹铃生日信息查长进行闹铃设定(注意:闹铃整点时整点报时起作闹铃时刻点响铃)
E(屏幕背光键):该键放屏幕背光调整左方蓝色变阻器调整LCD显示灰度调整右方蓝色变阻器调整LCD背光亮度
F(复位键):该键系统复位系统头开始执行程序遇障该键进行系统复位复位会造成时间生日闹铃等信息丢失
注:系统进行操作时**秒会动关闭屏幕达省电环保效果时意键退出返回显示
附件五:进程计划表
陕西工业职业技术学院毕业设计(文)进程计划表
序号
起止日期
计划完成容
实际完成情况
检查签名
1
2
3
4
5
6
7
8
9
**
11
12
13
20**52
20**53
20**54
20**55
20**56
20**57
20**58
20**59
20**5**
20**511
20**512
20**513
20**514
整体方案确定
电源系统设计调试
系统设计温度模块设计
温度系统调试
时钟系统设计部分调试
时钟系统调试
存储器系统设计部分调试
存储器系统调试
液晶模块设计部分调试
液晶模块调试
整体代码系统设计
整体电路调试测试分析
毕业文整理
完成
完成
完成
完成
完成
完成
完成
完成
完成
完成
完成
完成
完成
附件六:总结
指导教师评语:
指导教师签名:
毕业设计(文)成绩:
毕业设计(文)表现成绩:
毕业设计(文)答辩:
1 答辩组成员签名:
2 答 辩 日 期: 年 月 日
3.答 辩 评 语:
4. 答 辩 成 绩:
毕业设计(文)总成绩:
总结致谢
天努力老师学帮助终完成次务设计出汇集外观精美方便实功强体数字电子钟该数字钟采桌面式摆放设计精美雅观附带双电源装备供时需具温度闹铃生日列常附加功更加方便实符合现实求功时钟具掉电会丢失时间闹铃生日等信息优点避免必烦恼设计更加性化智化时够定义调整显示灰度屏幕背光亮度带背光功夜里更实
次实践说天学期间苦难重重中学少新知识解决困难方法体验创作快乐
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档