?? main.c
字號:
/*
實驗LCD四線驅動程序:
DS1302時鐘實險,LCD1602四線驅動顯示。
1、設置和讀取DS1302內部時鐘,并通過LCD1602四線驅動顯示。
2、內部1 M晶振,程序采用單任務方式,軟件延時。
3、進行此實驗請插上PB4-PB7、PD3、PD4、PD6,PC4、PC7短路塊。
4、DS1302芯片接口占用JTAG仿真接口,在做實驗時需要關閉mega16的JTAG功能。
5、此實驗需要有LCD1602顯示屏才可以顯示。
6、此實驗對硬件及芯片的綜合知識要求比較高,所以建議大家把此實驗放到后面。
此實驗參照了版主tonghe的DS1302時鐘程序。
AVR mega16學習板
www.iccavr.com
11:23 2007-8-7
*/
#include "iom16v.h"
#include "ds1302.h"
#include "lcd1602.h"
void main(void) {
unsigned char temp;
PORTA = 0xFF; /*打開上拉*/
DDRA = 0x00; /*方向輸入*/
PORTB = 0xF0; /*電平設置*/
DDRB = 0xFF; /*方向輸出*/
PORTC = 0x7F;
DDRC = 0x80;
PORTD = 0xFF;
DDRD = 0x00;
delay_ms(200);
LCD_init();
ds1302_init();
delay_ms(10);
ds1302_write_time();
while (1) {
delay_ms(200);
ds1302_read_time();
LCD_clear();
temp = (time_buf[0] >> 4) + '0';
LCD_write_char(0, 0, temp);/*年*/
temp = (time_buf[0] & 0x0F) + '0';
LCD_write_char(1, 0, temp);
temp = (time_buf[1] >> 4) + '0';
LCD_write_char(2, 0, temp);
temp = (time_buf[1] & 0x0F) + '0';
LCD_write_char(3, 0, temp);
LCD_write_char(4, 0, '-');
temp = (time_buf[2] >> 4) + '0';
LCD_write_char(5, 0, temp);/*月*/
temp = (time_buf[2] & 0x0F) + '0';
LCD_write_char(6, 0, temp);
LCD_write_char(7, 0, '-');
temp = (time_buf[3] >> 4) + '0';
LCD_write_char(8, 0, temp);/*日*/
temp = (time_buf[3] & 0x0F) + '0';
LCD_write_char(9, 0, temp);
temp = (time_buf[4] >> 4) + '0';
LCD_write_char(8, 1, temp);/*時*/
temp = (time_buf[4] & 0x0F) + '0';
LCD_write_char(9, 1, temp);
LCD_write_char(10, 1, ':');
temp = (time_buf[5] >> 4) + '0';
LCD_write_char(11, 1, temp);/*分*/
temp = (time_buf[5] & 0x0F) + '0';
LCD_write_char(12, 1, temp);
LCD_write_char(13, 1, ':');
temp = (time_buf[6] >> 4) + '0';
LCD_write_char(14, 1, temp);/*秒*/
temp = (time_buf[6] & 0x0F) + '0';
LCD_write_char(15, 1, temp);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -