液晶lcd电子钟设计论文(编辑修改稿)内容摘要:
就进入功能选择界面,通过上下键选择功能,再按 set 进入功 能设置界面,按set 改变设置项目及退出,按上下键改变所设置的值。 按 out 键退出到时钟显示界面。 液晶显示程序 液晶显示程序是对单片机内数据视化,让用户更直观方便观察结果及对功能的设置。 在程序中加入闪烁,使显示更加直观。 YES YES NO NO 初始化 调用显示子程序 读出温度值 温度计算处理 显示数据刷新 发温度转换开始命令 1 秒到 ? 初 次上电 ? 其他程序 其他程序包括延时程序,闹铃程序 、呼吸灯程序。 闹铃程序 、呼吸灯程序 用延时函数来实现。 程序中的注意点 1. 按键处理防抖动应加延时函数。 2. 程序用调用函数,最好 在头文件申明函数,主函数一般最后写。 3. 为了使程序更加容易写,我们要分模块来完成程序。 四.软硬件调试部分 1) 软件调试 软件调试,我是在 keil 软件平台和单片机学习板上来完成的。 当我写部分程序在 keil 软件经过调试,开始出现很多错误和警告。 通过逐个错误排错及修改。 得出下列经验,( 1)调用函数最好在头文件中进行申明,主函数写在最后; ( 2) 特别注意一些字母的大小写,一般要用英语文字写,不要用中文汉写,这是最不容易检查的,如我在检查液晶显示程序时,时钟没检查到错误,最后我删掉此行重新写,错误排除了,据 我分析可能是中英文变换时出现问题。 经过一系列排错,最后文件没有错误但还有警告。 由于 c 语言中有警告是没关系的,我将 HEX 文件下在到单片机竟显示一些乱码。 我有回到文件,经过对警告的分析及上网查阅。 将程序稍微修改警告慢慢被排除,最后没有错误和警告了,下载到单片机,发现乱码竟然还出现,还有多个界面叠加显示,里面还有一些乱码。 经过分析,叠屏现象是没有对液晶清平所致。 于是我又在不同界面程序前加入调用填充空格函数( void clrram_lcd ()) ,然后又下载,结果与前面一样,崩溃啊。 经过几个小时后,无意间 我去掉 调用函数前 void。 结果叠屏现象解决。 但是显示还是乱码。 谢天谢地啊。 有进步。 又经过几天,排错,上网查阅与参考程序对照。 最后在 void R1302()函数中DS1302InputByte(ucAddr|0x01)。 掉了 |0x01,加上生成 HEX 文件,下载到单片机中。 能够正常显示了。 呵呵。 又进一步。 最后对程序进行相应的扩展完善,由于按键不灵敏我们加上声音程序。 加上另一个闹钟实现设计需求。 通过单片机学习板对照,程序基本实现我所预期的要求,但是界面显示闹钟 1,闹钟 2 闪烁时,液晶竟然出 现显示淡化。 据分析,可能使程序的问题。 由于这部分显示复杂,用了多个 if 语句,可能出现语句冗余。 我只有 问度娘 啰。 2)硬件调试 硬件调试,我们用万用表,单片机学习板来完成的。 首先,我们调试 LCD1602 显示。 我将液晶显示程序下载到单片机内,连好所有的线,通电后,观察显示结果。 唉。 液晶竟然不显示。 我们用万用表测试各连线是否导通及某些点的电压,发现没问题。 最后在网上发现我的 P0 口竟然没接上拉电阻,通过计算电阻应该去 5K 至 10K,我们选用 的电阻。 由于没准备多的电阻,我在以前买的电阻找到了 的电阻。 开始布局没有为上拉电阻留下空间,我们在单片机插槽里插电阻,解决一些连线的复杂度。 后来在调试液晶能够显示了。 然后,我们调试 DS1302 时钟芯片。 连上按键模块,液晶显示模块,单片机 最小系统,时钟系统,温度系统,连接所有线,通上电源后,我们观察到液晶显示 2085— 85— 85 85: 85: 85 温度能正常显示,时钟不能正常显示。 我们还是用万用表检查所用线路,对照电路原理图,最后发现时钟上拉电阻没焊上电源。 接上电源后,时钟能够正常显示,按 键也能控制。 最后,我们对报警模块进行简单调试。 最后发现没问题 整个硬件调试完成。 五.总结与体会 经过将近 一个星期 的设计,终于完成 LCD 液晶时钟设计,虽然达到设计要求,但单片机的资源并没完全应用,毕竟这次设计把实物都做了出来,心底是很高兴的,这次不是用单片机学习板而是自己动手制作的作品。 在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法。 这次设计是液晶,单片机,键盘控制的综合应用, 其间,遇到许多困难,甚至,有时竟然想放弃。 从这次的课程设计中,我真真正正的意识到,在写程序时,逻辑思维要清晰,要有耐心。 在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次设计中的最大收获。 参考文献: 2.《 C 语言程序设计》 谭浩强编 清华大学出版社 3.《单片机原理与应用及 C51 程序设计》 谢维成 杨加国 主编 清华大学出版社 附件: LCD 液晶时钟设计原理电路图 另外再附上我们的 PCB 图 LCD 液晶时钟设计部分参考程序 液晶部分显示程序: include include define uchar unsigned char define uint unsigned int sbit BEEP = P3^7。 sbit rs=P2^0。 sbit rw=P2^1。 sbit ep=P2^2。 sbit s1=P1^0。 sbit s2=P1^1。 sbit s3=P1^2。 sbit s4=P1^3。 sbit rd=P1^4。 sbit DQ = P3^3。 //定义 DS18B20 端口 DQ bit presence。 //检测 18b20 是否插好 uchar count,s1num,num,num2。 char m,n,miao,shi,fen,yue,ri,week。 uchar data armhour,armmin,armsec。 //闹钟时、分、秒 uint nian。 unsigned char code dis_week[]={THU,FRI,SAT,SUN,MON,TUE,WED}。 uchar code table[]=B 20200101。 uchar code table1[]=23:59:55。 bit arm。 //标识是否启用闹钟, 1启用, 0关闭 unsigned char code para_month[13]={0,0,3,3,6,1,4,6,2,5,0,3,5}。 //星期月参变数 unsigned char data temp_data[2] = {0x00,0x00}。 unsigned char data display[5] = {0x00,0x00,0x00,0x00,0x00}。 unsigned char code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09}。 void beep()。 unsigned char code mytab[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00}。 define delayNOP()。 {_nop_()。 _nop_()。 _nop_()。 _nop_()。 }。 // 延时程序 void delay(unsigned char ms) { while(ms) { unsigned char i。 for(i = 0。 i i++) { _nop_()。 //执行一条 _nop_()指令为一个机器周期 _nop_()。 _nop_()。 _nop_()。 } } } //测 试 LCD 忙碌状态 bit lcd_busy() { bit result。 rs = 0。 rw = 1。 ep = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 result =(bit)(P0amp。 0x80)。 //LCD 的 D0D7 中 ,D7=1 为忙碌 ,D7=0 为空闲 ep = 0。 return result。 } //写入指令到 LCD void lcd_wcmd(char cmd) { while(lcd_busy())。 //当 lcd_busy 为 1时 ,再次检测 LCD 忙碌状态 ,lcdbusy 为 0时 ,开始写指令 rs = 0。 rw = 0。 ep = 0。 _nop_()。 _nop_()。 P0 = cmd。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 0。 } //写入数据到 LCD void lcd_wdat(char dat) { while(lcd_busy())。 //当 lcd_busy 为 1时 ,再次检测 LCD 忙碌状态 ,lcdbusy 为 0时 ,开始写数据 rs = 1。 rw = 0。 ep = 0。 P0 = dat。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 ep = 0。 } // 设定显示位置 void lcd_pos(uchar pos) { lcd_wcmd(pos | 0x80)。 //数据指针 =80+地址变量 } //自定义字符写入 CGRAM void writetab() { unsigned char i。 lcd_wcmd(0x40)。 //写 CGRAM for (i = 0。 i 8。 i++) lcd_wdat(mytab[ i ])。 } //us 级延时函数 void Delay1(unsigned int num) { while( num )。 } //初始化 ds1820 Init_DS18B20(void) { DQ = 1。 //DQ 复位 Delay1(8)。 //稍做延时 DQ = 0。 //单片机将 DQ 拉低 Delay1(90)。 //精确延时 大于 480us DQ = 1。 //拉高总线 Delay1(8)。 presence = DQ。 //如果 =0 则初始化成功 =1 则初始化失败 Delay1(100)。 DQ = 1。 return(presence)。 //返回信号, 0=presence,1= no presence } // 读一个字节 ReadOneChar(void) { unsigned char i = 0。 unsigned char dat = 0。 for (i = 8。 i 0。 i) { DQ = 0。 // 给脉冲信号 dat = 1。 DQ = 1。 // 给脉冲信号 if(DQ) dat |= 0x80。 Delay1(4)。 } re。液晶lcd电子钟设计论文(编辑修改稿)
相关推荐
面焊 双面焊 ≥ 10D ≥ 5D 、搭接焊适用于Ⅰ、Ⅱ、Ⅲ级钢筋。 焊接时,宜采用双面焊,不能进行双面焊时,也可采用单面焊。 搭接长度见上表。 、搭接接头的焊缝厚度 h 应不小于 钢筋直径;焊缝宽度 b 不小淮南市八公山区山王镇山王新村 综合科技服务 楼 工程 安徽润源建设工程集团有限公司霍邱分公司 19 于 钢筋直径。 、搭接焊时,钢筋的装配和焊接应符合下列要求: A.搭接焊时,钢筋宜预弯
程为豪华酒店,装饰要求苛刻,对于后期饰面二次设计难度较大。 6设计变更工程体量庞大,涉及专业多,施工过程中的潜在设计变更多,直接影响总工期,必须采取措施应对,规避工期风险。 7农忙及节假日工程开工时间为2012年4月一年之内便跨越农忙、十一、春节等多个假期,必须采取措施,规避风险。 针对上述潜在工期制约因素,我们制定实施以下针对性措施,措施大体可分为组织、管理、技术、经济、资源保障、特殊季节安排
市化水平达到 %。 滨州市新区框架基本形成: 沿黄河五路的市政大楼、财政大厦、公路局大楼、交通大厦,广电大厦等行政机关大楼拔地而起,中海公园、新立河岸、新滨公园、齐鲁文化绿地、新城喷泉广场的环境建设;各单位宿舍小区的建成入住,以及几个 新住宅项目新城广场花园小区(至尊门第)、丽景新园、中海豪庭、现代城等也热火朝天地建设着,使新区框架基本形成,区域城市建设及设施配套日渐成熟与完善。
+ tF 28955 32172 反向起动 F = fsF 1960 2178 3 注 : 1. 液压缸的机械效率通常取 ,此处取。 2. 不考虑动力滑台上颠覆力矩的作用。 3 负载图和速度图的绘制 绘制负载图 负载图按表 21中数值绘制 ,如图 31: 图 31 负载图 绘制速度图 速度图按已知数值1v=3=7m/min, 1l=200mm、2l=100mm、快退行程3l=1+2l=300mm
的夹紧行程为: mmhHDL 0)(2/ 夹具夹紧力的计算 工件以 V型块定位并夹紧,为防止工件在切削转矩 T( NM)的作用下打滑而转动所需夹紧力: 11 22/sinRfkTQ 为防止工件在轴向力 P的作用下打滑而轴向移动所需的夹紧力为: 22 22/sinfkPQ 式中: 1f —— 工件与 V 型块间圆周方向的摩擦系数 2f —— 工件与 V
阳当地 采购价格为 元 /m3,而天然气供气方成本价格为 元 /m3,利润丰厚,随着天然气事业的发展,天然气供气方或代销的经济效益是相当可观的。 天然气运输行业分析 近年来中国对 LNG 产业的发展越来越重视,我国正在规划和实施的沿海 LNG项目位于:广东、福建、浙江、上海、江苏、山东、辽宁,这些项目将最终构成一个沿海 LNG 接收站与输送管网。 除广东、福建已经进入正式实施阶段外