万年历生产工艺实训报告
万年历组装实训报告

—實訓報告—(单片机实训报告)学院系别:机电工程学院专业班级:电信BK31901设计学生:张欢指导老师:陈老师、阎老师设计时间:2012年10月19日万年历组装与调试及单片机实训报告2012-10-219| 电信BK31901班张欢一、实习时间:2012年10月15日至2012年10月19日二、实习地点:机电实训楼三、实习目的与要求:1熟练C语言中if语句、for语句、while语句的使用。
2.掌握万年历的基本原理,学会分析基本的电路原理图。
3.学会利用Keil软件和proteus软件进行设计。
四、实习内容:1.利用Keil软件对数码管(秒表)液晶(时钟)编程,并进行编译和链接。
2.掌握AT89C51芯片I/O口的功能及作用。
3.灵活运用C语言对中断、定时计数器及数码管进行编程设计。
4认真掌握proteus仿真软件,并用proteus画出电路图软件进行仿真。
5.掌握万年历的工作原理,学会贴片电容,贴片电阻,晶振集成块的识别与测试,进一步掌握和熟练焊接技术。
五、运用Keil软件对数码管及液晶进行编程设计并用proteus仿真1.用数码管显示0—60的源程序:#include<reg51.h>#define uint unsigned char#define uchar unsigned intsbit K1=P3^7;uchar i,Second_Counts,Key_Flag_Idx;bit Key_State;uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void DelayMS(uint x){ uchar t;while(x--)for(t=0;t<500;t++);}void Key_Byent_Handle(){ if(Key_State==0){Key_Flag_Idx=(Key_Flag_Idx+1)%3;switch(Key_Flag_Idx){case 1:EA=1;ET0=1;TR0=1;break;case 2:EA=0;ET0=0;TR0=0;break;case 0:P0=0x3f;P2=0x3f;i=0;Second_Counts=0; }}} void main(){P0=0x3f;P2=0x3f;i=0;Second_Counts=0;Key_Flag_Idx=0;Key_State=1;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;while(1){if(Key_State!=K1){DelayMS(10);//开关消抖Key_State=K1;Key_Byent_Handle();}}}void DSY_keyfresh() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;if(++i==2){i=0;Second_Counts++;P0=DSY_CODE[Second_Counts/10];P2=DSY_CODE[Second_Counts%10];if(Second_Counts==60)Second_Counts=0;}}2.用液晶显示年、月、日、字符串的源程序:#include<reg52.h>unsigned char code tab[]="welcome BK31901"; unsigned char code tab1[] ="2012-10-19"; unsigned char num;sbit RS=P1^2;sbit RW=P1^1;sbit E =P1^0;void delay(unsigned int z){unsigned int x,y;for(x=z;x>0;x--)for(y=0;y<150;y++);}void write_com(unsigned char cmd){RS=0;RW=0;E=1;P2=cmd;E=0;delay(2);}void write_data(unsigned char dat){RS=1;RW=0;E=0;P2=dat;E=0;delay(2);}void init(){write_com(0x38);write_com(0x08);write_com(0x01);write_com(0x0f);write_com(0x06);}int main(){init();write_com(0x80);for(num=0;num<17;num++){write_data(tab[num]);}write_com(0x80-0x42);for(num=0;num<11;num++){ write_data(tab1[num]);}while(1);return 0;}3.用proteus画出电路图软件进行仿真六、作品实物图片七、心得体会在本次单片机实训中,我们从焊接贴片电阻、贴片电容、电子元器件开始,到组装、调试、检验合格,完成了万年历的整个过程。
电子万年历组装实训报告

一、实训目的本次实训旨在通过实际操作,让学生掌握电子万年历的组装流程,熟悉电子元器件的识别与使用,了解电路原理图的阅读与理解,以及电子产品的调试与故障排除。
通过本次实训,提高学生的动手能力、实践能力和团队协作精神,为后续相关课程的学习打下坚实基础。
二、实训内容1. 实训时间:2023年X月X日至2023年X月X日2. 实训地点:XX职业学院电子实验室3. 指导老师:XXX老师4. 实训目的:(1)掌握电子万年历的组装流程。
(2)熟悉电子元器件的识别与使用。
(3)了解电路原理图的阅读与理解。
(4)学会电子产品的调试与故障排除。
(5)培养团队协作精神。
5. 实训内容:(1)电子万年历的组装1)准备所需材料:STC89C52RC单片机、DS1302时钟芯片、LCD1602液晶显示屏、电阻、电容、晶体振荡器、按键、电源模块等。
2)根据电路原理图,连接各个电子元器件,确保连接正确。
3)调试电路,检查电路是否正常工作。
(2)电子万年历的程序编写1)了解STC89C52RC单片机的编程环境,如Keil uVision。
2)学习C语言编程,编写电子万年历的程序。
3)将程序烧录到单片机中,调试程序,确保程序正常运行。
(3)电子万年历的调试与故障排除1)观察电子万年历的显示效果,确保显示日期、星期、时间等无误。
2)检查电路连接是否牢固,排除虚焊、短路等故障。
3)优化程序,提高电子万年历的稳定性和可靠性。
三、实训过程1. 组装电子万年历(1)按照电路原理图,将各个电子元器件连接到单片机上。
(2)检查电路连接是否正确,确保没有短路、虚焊等故障。
(3)通电测试电路,确认电路正常工作。
2. 编写程序(1)学习C语言编程,了解电子万年历的程序结构。
(2)编写程序,实现日期、星期、时间的显示。
(3)调试程序,确保程序正常运行。
3. 调试与故障排除(1)观察电子万年历的显示效果,确保显示日期、星期、时间等无误。
(2)检查电路连接是否牢固,排除虚焊、短路等故障。
万年历实验报告

万年历实验报告万年历实验报告一、引言万年历是一种用来记录日期和时间的工具,它可以帮助人们追溯过去和规划未来。
在这个数字化时代,人们已经习惯了使用智能手机或电脑上的日历应用来管理时间。
然而,万年历的历史悠久,它的设计和功能一直在不断演进。
本实验旨在通过制作一个简单的万年历,探索其原理和功能。
二、实验材料和方法1. 材料:- 一张大纸板- 一支铅笔- 一把剪刀- 一些彩色纸张- 一些装饰用的贴纸或标签- 一把直尺2. 方法:- 使用直尺和铅笔在大纸板上绘制一个正方形,边长为30厘米。
- 将正方形分为7行7列,形成一个格子状的网格。
- 在每个格子中填写日期和星期几,从1号到31号。
- 使用剪刀将彩色纸张剪成小方块,每个方块代表一个特殊的日子(如生日、节日等)。
- 将彩色纸张粘贴在相应的日期上,并使用贴纸或标签进行装饰。
三、实验结果经过一番努力,我成功地制作了一个简单的万年历。
每个格子中都填写了日期和星期几,并且我还用彩色纸张标记了一些特殊的日子。
整个万年历看起来非常漂亮,装饰用的贴纸和标签增添了一些趣味性。
四、讨论万年历是人类文明的重要组成部分,它不仅帮助人们记录时间,还反映了人们对时间的认知和组织。
通过制作万年历,我更深入地理解了时间的概念和日期的变化规律。
我发现,每个月的天数不同,而星期几则是按照一定的循环顺序变化的。
此外,万年历还可以帮助我们规划未来。
通过标记特殊的日子,我们可以提前做好准备,如购买礼物、安排行程等。
而且,万年历还可以提醒我们重要的事项,如朋友的生日、会议的时间等。
它是我们生活中不可或缺的工具之一。
然而,制作一个完整的万年历并不容易。
除了填写日期和星期几之外,还需要考虑闰年的影响。
闰年是指能被4整除但不能被100整除的年份,或者能被400整除的年份。
在闰年中,2月份会多出一天,即29号。
这是为了与地球公转周期相适应,以保持日历系统的准确性。
五、结论通过本实验,我成功地制作了一个简单的万年历,并对时间的概念和日期的变化规律有了更深入的了解。
单片机实训总结报告万年历

一、引言随着科技的不断发展,单片机技术在各个领域得到了广泛的应用。
为了提高我们的实践能力和专业技能,我们选择了单片机实训作为课程的一部分。
在实训过程中,我们以万年历为例,通过学习单片机原理、编程和应用,实现了万年历的设计与制作。
本文将详细总结万年历实训的整个过程。
二、实训目标1. 掌握单片机的基本原理和编程方法;2. 熟悉万年历的设计与制作流程;3. 提高动手实践能力和团队合作精神;4. 培养创新思维和解决问题的能力。
三、实训内容1. 单片机原理及编程实训初期,我们学习了单片机的基本原理,包括CPU、存储器、输入输出接口等。
通过学习,我们了解了51单片机的结构、工作原理和指令系统。
在此基础上,我们学习了C语言编程,掌握了Keil软件的使用方法。
2. 万年历设计与制作万年历的设计与制作分为以下几个步骤:(1)需求分析:确定万年历的功能,包括显示年、月、日、星期、时分秒、农历、公历、节假日等。
(2)硬件设计:选择合适的单片机、显示屏、按键等硬件设备。
本实训选用AT89C51单片机、LCD1602显示屏和按键。
(3)软件设计:编写万年历的程序,实现功能需求。
程序主要包括以下几个模块:1)时钟模块:实现时分秒的计时功能;2)日期模块:实现年、月、日的显示和计算;3)星期模块:根据日期计算星期;4)农历模块:根据公历日期计算农历日期;5)节假日模块:显示节假日信息;6)按键模块:实现用户交互功能。
(4)调试与优化:对万年历程序进行调试,确保功能正常运行。
同时,对程序进行优化,提高运行效率。
3. 实训成果展示经过一段时间的努力,我们成功完成了万年历的设计与制作。
以下为万年历的部分功能展示:(1)显示当前日期、时间、星期和温度;(2)显示农历日期和节假日信息;(3)通过按键调整时间、日期和温度;(4)具有闹钟功能,可设置闹钟时间。
四、实训总结1. 提高了单片机编程能力:通过万年历的设计与制作,我们掌握了C语言编程方法,熟悉了Keil软件的使用。
万年历生产工艺实习报告

实习报告实习单位:XX科技有限公司实习时间:2021年6月1日至2021年6月30日实习内容:万年历生产工艺一、实习背景及目的随着科技的发展,电子产品日益普及,万年历作为一种实用便捷的电子设备,受到了广大用户的喜爱。
为了更好地了解万年历的生产工艺,提高自己的实践能力,我选择了XX科技有限公司进行为期一个月的实习。
本次实习的主要目的是:1. 学习并掌握万年历的生产工艺流程;2. 了解电子产品的质量控制及检验标准;3. 提高自己的动手能力及团队协作能力。
二、实习过程1. 生产工艺流程学习在实习初期,导师带领我参观了万年历的生产车间,并对生产工艺流程进行了详细介绍。
万年历的生产工艺主要包括以下几个环节:(1)电路板设计:根据产品需求,设计并制作电路板,确保电路板的稳定性和可靠性。
(2)电路板焊接:使用焊接设备将电子元件焊接至电路板,要求焊接质量高,无虚焊、假焊现象。
(3)电路板测试:对焊接好的电路板进行功能测试,确保电路板各项功能正常。
(4)组装:将电路板、显示屏、按键等部件组装成完整的万年历设备。
(5)质量检验:对组装好的万年历进行质量检验,确保产品符合国家标准。
2. 生产实践在了解完生产工艺流程后,我开始参与实际生产。
在导师的指导下,我先从简单的电路板焊接开始,逐步掌握了焊接技巧。
随后,我参与了电路板测试和组装工作,通过实践,我对电子产品生产过程有了更深入的了解。
3. 质量控制与检验在生产过程中,我了解到产品质量控制的重要性。
公司设有专门的质量检验部门,对每个生产环节进行严格把控。
我参与了产品质量检验工作,学习了如何使用检测设备及判断产品是否符合标准。
三、实习收获通过本次实习,我取得了以下收获:1. 掌握了万年历的生产工艺流程;2. 提高了自己的动手能力和团队协作能力;3. 了解了产品质量控制及检验标准;4. 认识到电子产品生产过程中细节的重要性。
四、实习总结本次实习让我对万年历的生产工艺有了更深入的了解,使我认识到理论知识与实践相结合的重要性。
数字万年历焊接实训总结

数字万年历焊接实训总结数字万年历焊接实训总结数字万年历作为一种高科技产品,各种功能的实现离不开电子元件的支持,而焊接技术的精湛程度直接关系到产品的质量和可靠性。
因此,在数字万年历制作过程中,焊接实训成为必不可少的一环。
在本次实训中,我深刻领悟到了焊接技术的重要性,也发现了自身的不足之处,希望借此机会可以总结经验教训,不断提高自己的技能水平。
首先,在本次实训中,我对焊接工具和材料有了更深入的了解,知道了各种焊接工具的使用方法和配合材料的特点。
例如在选择焊接铁时,我了解到需要根据焊接元件的大小、性质、要求及周围环境等多种因素来选择不同规格的铁头。
而且,在焊接过程中,我发现能耐心认真的把工具配合好,一定程度上可以提高接头的质量。
同样,在焊接材料的选择上也需要思考,技术上没做好配合,更换不同的焊锡质量,可能很容易造成操作的失误和焊接后产生的问题。
相对来说,我对于材料的选择还需要多加练习和学习。
其次,在焊接技能的掌握上,我认为主要取决于经验和技巧的积累。
在实际的操作中,需要通过不断地焊接和评估,总结每一次的经验教训,不断完善自己的技术。
需要注意的是,在焊接完成后还要进行针对性的测试和评估流程,以确保接头的质量和可靠性。
此外,在焊接的过程中,焊枪离开元器件的时间非常重要,如果动作太慢,会导致温度过高而烧焦元器件,如果动作太快则会导致焊锡不粘牢。
最后,我个人认为焊接技术的掌握和提高还需长期的实践和经验的积累,多边角度的练习和多元素的参与可以更好地提高技能水平。
难免会遇到各种问题和困难,需要自己积极思考和寻找解决办法。
另外,需要不断学习新的技术和知识,在实践中不断探索新领域,如这次焊接实训就让我有机会接触到了数字万年历的制作过程,了解了更多的知识和技能。
综上所述,本次数字万年历焊接实训让我深刻领悟到焊接技术的重要性,同时也认识到自身还有很多需要提高的地方。
希望在以后的学习和工作中,能够不断探索、总结和提高技能水平,为行业的发展和技术进步做出自己的贡献。
万年历的实训报告模板

摘要:本实训报告旨在通过对万年历的设计与应用,加深对时间管理、编程技术以及用户界面设计的理解。
通过实训,我们不仅学会了万年历的基本原理,还掌握了编程实现和用户体验优化的方法。
以下是对实训过程的详细记录和分析。
一、实训目的1. 理解万年历的基本原理和设计思路。
2. 掌握编程语言(如Python、Java等)在万年历开发中的应用。
3. 提升用户界面设计能力,优化用户体验。
4. 培养团队合作与沟通能力。
二、实训环境1. 操作系统:Windows 102. 开发工具:Python3.8、PyCharm3. 用户界面设计工具:Qt Designer4. 数据库:SQLite三、实训原理万年历是一种用于记录和显示日历的工具,它按照公历或农历的日期排列,方便用户查看和查询。
万年历的设计原理主要包括以下几个方面:1. 闰年判断:通过判断年份是否为4的倍数来确定是否为闰年,同时还需考虑能被100整除但不能被400整除的年份不是闰年。
2. 月份天数:根据月份和闰年/非闰年的判断来确定每月的天数。
3. 星期计算:根据年、月、日计算出星期几。
4. 农历转换:根据农历的算法将公历日期转换为农历日期。
四、实训过程1. 确定项目需求:根据实训要求,设计一个功能齐全、界面友好的万年历软件。
2. 设计软件架构:确定软件的模块划分,包括主界面、日期计算、农历转换等模块。
3. 编写代码实现:使用Python语言实现万年历的各个功能模块。
4. 用户界面设计:使用Qt Designer设计软件的用户界面,包括日期选择、查询结果展示等。
5. 数据库设计:使用SQLite数据库存储万年历的数据,包括日期、农历信息等。
6. 调试与优化:对软件进行调试,修复可能出现的问题,并优化用户体验。
五、实训结果1. 成功实现万年历的基本功能,包括公历和农历的日期转换、查询等。
2. 软件界面简洁美观,用户操作方便。
3. 数据库设计合理,保证了数据的完整性和安全性。
万年历实训报告

一、任务目的通过万年历的设计与制作,进一步熟悉单片机内部定时器、I/O口、中断、提高实践能力二、设计要求用单片机设计一个功能实用,使用简便万年历,具体要求:根据提供的单片机键盘接口模块电路,加上必要的外部电路,设计出万年历的硬件电路,编写软件,用Proteus进行仿真实验,然后进行实物的软硬件调试,并撰写符合要求的实训报告。
三、系统硬件电路设计可分为最小系统、键盘电路、显示部分等几个单元电路,要求画出各部分电路图,写出工作原理。
这是仿真总图1、最小系统:最小系统包括时钟电路和复位电路。
时钟信号的产生:在MCS-51系列单片机内部有一个高增益反相放大器,其输入端引脚为XTAL1,其输出端引脚为XTAL2。
只在XTAL1和 XTAL2之间跨接晶振和微调电容,就可以构成一个稳定的自激振荡器。
复位电路,可分为上店复位电路和按键复位电路,在电子琴设计中采用的是按键复位电路。
该电路用RESET键实现复位,此时电源经两个电阻分压,在RST 端产生一个复位高电平2、按键电路:因为显示数码有限,所以就用P2_7口来判断,即当P2_7=0时显示时分秒;P2_7=1显示年月日。
而三个按钮分别是年月日或时分秒对应的加法按钮。
端,而P1口是段码输入端,来进行动态扫描。
四、软件设计#include<at89x51.h>unsigned int hour=0, min=0,sec=0,c=0,r=20, y=3,n=2012;unsigned char led[]={0x11,0xd7,0x32,0x92,0xd4,0x98,0x18,0xd3,0x10,0x90}; void delay(unsigned int x){unsigned int j;while(x--)for(j=0;j<125;j++);}void main(){TMOD = 0x01;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;EA=1;ET0=1;TR0=1;while(1){ unsigned int q=0;for(q=0;q<50;q++){ if (P2_7==0){P0=0XFE;P1=led[sec%10];delay(1);P0=0XFd;P1=led[sec/10];delay(1);P0=0XFb;P1=led[min%10];delay(1);P0=0Xf7;P1=led[min/10];delay(1);P0=0Xef;P1=led[hour%10];delay(1);P0=0Xdf;P1=led[hour/10];delay(1);}else{P0=0XFE;P1=led[r%10];delay(1);P0=0XFd;P1=led[r/10];delay(1);P0=0XFb;P1=led[y%10];delay(1);P0=0Xf7;P1=led[y/10];delay(1);P0=0Xef;P1=led[n%10];delay(2);P0=0Xdf;P1=led[n%100/10];delay(2);P0=0xbf;P1=led[n%1000/100];delay(2);P0=0x7f;P1=led[n/1000];delay(2);}}if(P2_0==0){delay(1);if(P2_0==0);if(sec==60){min++;}else sec++;}if(P2_1==0){delay(1);if(P2_1==0);if(min==60){hour++;}else min++;} if(P2_2==0){delay(1);if(P2_2==0);if(hour==24){r++;}else hour++;}if(P2_0==0){delay(1);if(P2_0==0);if(y==1||y==3||y==5||y==7||y==8|y==10||y==12){if(r==31){r=1;y++;}else r++;}if(y==2){if(((n%400==0||n%4==0&&n%100!=0))&&r>=29){r=1;y++;}else if(((n%400==1||n%4==1&&n%100!=1))&&r>=28){r=1;y++;}else r++;}if(y==4||y==6||y==9||y==11){if(r==30){r=1;y++;}else r++;}}if(P2_1==0){delay(1);if(P2_1==0);if(y==12){n++;y=1}else(y++);}if(P2_2==0){delay(1);if(P2_2==0);n++;}}}void T0_1() interrupt 1{ TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;c++;if(c==20) { c =0; sec++;}if(sec==60){sec = 0; min++; }if(min==60) { min=0; hour++; }if(hour==24){hour=0;r++;}if(y==1||y==3||y==5||y==7||y==8|y==10||y==12){if(r==31){r=1;y++;} else r++;}if(y==2){if(((n%400==0||n%4==0&&n%100!=0))&&r>=29){r=1;}else if(((n%400==1||n%4==1&&n%100!=1))&&r>=28){r=1;y++;}else r++;}if(y==4||y==6||y==9||y==11){if(r==30){r=1;y++;}else r++;}if(y==12){n++;y=1}else y++;}五、系统调试该万年历要实现以下功能:1、实现正常走时;2、能够校准时间和日期;3、能够自动区分平润年和大小月;在仿真过程中出现的最典型的问题是按下加法按钮要么出现闪烁或抖动,要么就加法跳动数次,经分析与试验得知这是由于延时时间使用不当,于是我们在循环扫描的前面加一个FOR语句循环50次后再扫描是否有键被按下六、心得体会通过此次万年历的设计与制作,获得了丰富的理论知识,极大地提高了实践能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“电子产品综合设计”课程基于单片机带温度的液晶万年历设计报告书\目录1 绪论....................................................................................错误!未定义书签。
2 设计要求及设计框图 (3)2.1 设计要求 (3)2.2 设计框图 (3)3 知识要点..........................................................................错误!未定义书签。
3.1 LMO16L液晶模块 (3)3.2 基于Proteus ISIS 7的液晶模块仿真 (4)3.3 时钟芯片DS1302 (10)3.3.1 DS1302的控制字节 (4)3.3.2 数据输入输出(I/O) (11)3.3.3 DS1302的寄存器 (4)3.4 DS18B20数字温度传感器 (12)3.4.1技术性能描述 (12)3.4.2 DS18B20主要的数据部件 (13)3.4.4 DS18B20的主要特性...............................................错误!未定义书签。
4 生产技术文件 (5)4.1设计电路图 (5)4.2技术说明 (6)4.3技术说明 (7)4.4元器件明细表 (8)4.5PCB板工艺流程图 (9)4.6工艺流程图 (10)4.7印制板装配图 (11)4.8印制板工艺说明 (12)4.9制造工艺 (13)4.10焊接工艺说明 (14)4.11工具明细表 (15)5作业指导书 (16)5.1人员分配 (17)5.2岗位操作指导书 (18)5.3安全职责规程 (19)5.4附 (20)6设计总结 (20)1、绪论1.1课题背景现在电子产品制造业的发展日新月异,产品的电路、功能设计和生产工艺在不断提升。
电子产品生产的指导思想是按照发展要有新思路、改革要有新突破、开放要有新局面、工作要有新举措的总体要求,以及以信息化带动工业化,以工业化促进信息化的战略部署,坚持走科技含量高、经济效益好、资源消耗低、环境污染少、人力资源优势得到充分发挥新的电子产品生产运行模式,利用世界产业梯度转移有利时机,大力发展信息化和改造传统产业的物质基础,电子产品生产有了较好的政策环境。
电子产品的设计和加工再也不能依靠手工作坊式的口头传述,而是要遵循复杂严密的技术文件——设计文件和工艺文件进行操作。
什么是设计文件和工艺文件?;设计文件和工艺文件是电子产品工过程中需要的两个主要技术文件。
设计文件表述了电子产品的电路和结构原理、功能及质量指标;工艺文件则是电子产品加工过程必须遵照执行的指导文件。
通俗的说,前者是做什么,后者是怎样做。
有了较好的政策环境课题选取电子产品之——基于单片机带温度的液晶万年历。
2 设计要求及设计框图2.1 设计要求本设计主要功能为:①具有时间显示和手动校对功能,24小时制;②具有年、月、日显示和手动校对功能;③具有闹铃功能;④具有环境温度采集和显示功能;⑤掉电后无需重新设置时间和日期;2.2 设计框图3知识要点3.1 LM128X64液晶模块LM128X64液晶模块采用HD44780控制器。
HD44780具有简单而功能较强的指令集,可以实现字符移动、闪烁等功能。
LM128X64与单片机 MCU(Microcontroller Unit)通讯可采用 8位或者 4位并行传输两种方式。
HD44780控制器由两个8位寄存器、指令寄存器(IR)和数据寄存器(DR)、忙标志(BF)、显示数据 RAM(DDRAM)、字符发生器ROM(CGROM)、字符发生器RAM(CGRAM)、地址计数器(AC)。
IR用于寄存指令码,只能写入不能读出;DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和 CGRAM 读出的数据。
BF为1时,液晶模块处于内部处理模式,不响应外部操作指令和接受数据。
DDRAM用来存储显示的字符,能存储80个字符码。
CGROM由8位字符码生成5*7点阵字符160种和 5*10点阵字符32种,8位字符编码和字符的对应关系,可以查看相关文献。
CGRAM是为用户编写特殊字符留用的,它的容量仅64字节。
可以自定义8个 5*7点阵字符或者4个 5*10点阵字符。
AC可以存储DDRAM和 CGRAM 的地址,如果地址码随指令写入 IR,则IR自动把地址码装入AC,同时选择DDRAM或者CGRAM单元3.2 基于Proteus ISIS 7的液晶模块仿真1、接口设计运行Proteus ISIS 7进入设计界面,依照图所示在元件库中选择需要的元件。
80C51的P0口作为8位数据的输出端,P2.0、P2.1、P2.2作为控制信号的输出端。
2、软件设计电路图绘制好之后,就可以编写LM128X64的驱动程序。
LM128X64的操作有两大类:读操作和写操作。
一般情况下不需要从液晶中读取数据,所以对液晶操作主要是写指令和写数据两个写操作,对于忙标志(BF),采用延时的方法,保证液晶模块有足够时间进行内部数据处理。
在写源程序时,需要根据液晶模块的时序图编写程序。
3.3 时钟芯片DS1302初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图3.3.1所示。
DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。
对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。
位1至位5指操作单元的地址。
位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。
控制字节总是从最低位开始输入/输出的。
DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。
“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。
当“WP”为1时,写保护位防止对任一寄存器的写操作。
3.3.1 DS1302的控制字节DS1302的控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中;位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
3.3.2 DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表3.3.2。
表3.3.2 DS1302的日历、时间寄存器此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
3.4 DS18B20数字温度传感器3.4.1技术性能描述1、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
2、测温范围-55℃~+125℃,固有测温分辨率0.5℃。
3、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。
4、工作电源: 3~5V/DC。
5、在使用中不需要任何外围元件。
6、测量结果以9~12位数字量方式串行传送。
接线说明特点:独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压范围为 3.0 V至 5.5 V,无需备用电源测量温度范围为-55 ℃至+125 ℃。
3.4.2 DS18B20主要的数据部件DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,温度报警触发器TH和TL,配置寄存器。
3.4.3 DS18B20温度处理过程1、温度的读取DS18B20在出厂时以配置为12位,读取温度时共读取16位,所以把后11位的2进制转化为10进制后在乘以0.0625便为所测的温度,还需要判断正负。
前5个数字为符号位,当前5位为1时,读取的温度为负数;当前5位为0时,读取的温度为正数。
3.4.4 DS18B20的外形和内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM 、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的外形及管脚排列如下图3.4.1:图3.4.1DS18B20引脚定义:(1)DQ为数字信号输入/输出端;(2)GND为电源地;(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
生产技术文件。