电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

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

一、程序结构
 
二、仿真效果
 
三、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. }

四、完整项目文件

http://space.ednchina.com/Upload/2009/11/9/f58873eb-f961-43c2-9308-c5a660af021d.rar

博主
linxiyiran@163.com
ARM-AVR嵌入式开发
当在本站看到对你有帮助的文章时,顶一下!
点击跳转