原创 ATmega16_App_V1.0开发板范例5:LCD1602&DS1302时钟实验(ICC)

2009-11-9 13:59 3933 6 7 分类: MCU/ 嵌入式
一、程序结构
e8184559-6ad7-481a-8158-98fbf21d92c6.jpg 

二、仿真效果
 点击看大图

三、main主函数



  1. /*******************************************************************************

  2. Platform : ATmega16_App_V1.0开发板(http://bbs.armavr.com)

  3. Project : 范例5:LCD1602&DS1302时钟实验(ICC)

  4. Clock F : 内部8M

  5. Software : ICCAVR7.14C+proteus7.5

  6. Author : 林夕依然

  7. Version : 09.11.03

  8. Updata :

  9. comments :

  10. 1、八线制驱动LCD1602B:PB0-PB7为数据线,PD3/PD4/PD6控制LCD1602B的RS,RW,EN。

  11. 2、设置和读取DS1302内部时钟,并通过LCD1602显示。

  12. 3、进行此实验请插上JP12的第1、2针短路块,并将LCD1602插在相应的座上,注意方向。

  13. 4、DS1302芯片接口占用JTAG仿真接口,在程序烧录时需要关闭mega16的JTAG功能,否则

  14. 不正常显示。

  15. *******************************************************************************/

  16. #include <iom16v.h>

  17. #include <macros.h>

  18. #include "ds1302.h"

  19. #include "LCD1602.h"



  20. void main(void)

  21. {

  22. unsigned char temp;



  23. delay_ms(200); //延时,使用上电稳定

  24. Port_init(); //端口初始化

  25. LCD_init(); //LCD初始化

  26. LCD_clear();

  27. ds1302_init(); //DS1302初始化

  28. delay_ms(10);

  29. ds1302_write_time(); //写入初始值



  30. while (1)

  31. {

  32. delay_ms(200); //每200ms更新一次时间

  33. ds1302_read_time(); //读取时间

  34. LCD_clear(); //清屏



  35. temp = (time_buf[0] >> 4) + '0';

  36. LCD_write_char(0, 0, temp);/*年*/

  37. temp = (time_buf[0] & 0x0F) + '0';

  38. LCD_write_char(1, 0, temp);

  39. temp = (time_buf[1] >> 4) + '0';

  40. LCD_write_char(2, 0, temp);

  41. temp = (time_buf[1] & 0x0F) + '0';

  42. LCD_write_char(3, 0, temp);

  43. LCD_write_char(4, 0, '-');



  44. temp = (time_buf[2] >> 4) + '0';

  45. LCD_write_char(5, 0, temp);/*月*/

  46. temp = (time_buf[2] & 0x0F) + '0';

  47. LCD_write_char(6, 0, temp);

  48. LCD_write_char(7, 0, '-');



  49. temp = (time_buf[3] >> 4) + '0';

  50. LCD_write_char(8, 0, temp);/*日*/

  51. temp = (time_buf[3] & 0x0F) + '0';

  52. LCD_write_char(9, 0, temp);



  53. LCD_write_str(0,1,"week:");

  54. temp = (time_buf[7]) + '0';

  55. LCD_write_char(5, 1, temp); //周



  56. temp = (time_buf[4] >> 4) + '0';

  57. LCD_write_char(8, 1, temp); //时

  58. temp = (time_buf[4] & 0x0F) + '0';

  59. LCD_write_char(9, 1, temp);

  60. LCD_write_char(10, 1, ':');



  61. temp = (time_buf[5] >> 4) + '0';

  62. LCD_write_char(11, 1, temp);/*分*/

  63. temp = (time_buf[5] & 0x0F) + '0';

  64. LCD_write_char(12, 1, temp);

  65. LCD_write_char(13, 1, ':');



  66. temp = (time_buf[6] >> 4) + '0';

  67. LCD_write_char(14, 1, temp);/*秒*/

  68. temp = (time_buf[6] & 0x0F) + '0';

  69. LCD_write_char(15, 1, temp);

  70. }

  71. }

四、完整项目文件


https://static.assets-stash.eet-china.com/album/old-resources/2009/11/9/f58873eb-f961-43c2-9308-c5a660af021d.rar

文章评论1条评论)

登录后参与讨论

用户377235 2011-12-28 19:36

不错
相关推荐阅读
用户1400544 2012-09-24 08:55
【分享】ATmega16学习笔记PDF完整版下载(WinAVR)
  笔记均为原创,欢迎转载,转载请注明出处!   笔记1:8种LED点亮模式_GCC.pdf 笔记2:有源蜂鸣器驱动实验_GCC.pdf 笔记3:按键扫描(用KEY选择对应LED...
用户1400544 2011-01-19 23:26
博主邀请您:加入千脑,拥有“我的在线电脑”
点击加入千脑,拥有“我的在线电脑”在线电脑随时随地可用,安全可靠您可能遇到以下情况: 用户场景一:        我是一个集团公司的企业白领,经常负责写些策划书,制作各类表格等,有时候上班时间做不完就...
用户1400544 2010-04-07 00:43
ATmega16_Basic_V1.1范例2:8种LED点亮模式(ICC)
一、程序结构二、程序源码1、main.c /******************************************************************************...
用户1400544 2010-04-07 00:22
ATmega16_Basic_V1.1范例1:LED流水灯(ICC)
一、程序结构二、程序源码1、main.c /******************************************************************************...
用户1400544 2010-03-30 14:39
Altium Designer 6原理图元件库大全(7个种类)
》》点此进入      http://bbs.armavr.com/   ARM-AVR嵌入式开发论坛       ARM-AVR嵌入式开发论坛推出【Altium Designer 6 原理图元件库大...
用户1400544 2010-03-30 14:39
protel99原理图元件库大全(8个种类)
》》点此进入      http://bbs.armavr.com/   ARM-AVR嵌入式开发论坛       ARM-AVR嵌入式开发论坛推出【protel99原理图元件库大全(8个种类)】,共...
我要评论
1
6
关闭 站长推荐上一条 /2 下一条