AVR128的程序——12864液晶与ds1302与ds18b20的综合运用
#include
#include
#include "12864lcd.h"
#include "ds1302.h"
#include "ds18B20.h"
void mcu_init(void)
{
}
void main(void)
{
uchar i,j;
uint k;
shi_BCD();
ds1302_init();
init12864lcd();
display();
display1();
display2();
display3();
while(1)
{
write_sfm(0x8B,fen);
write_sfm(0x89,shi);
write_sfm(0x86,ri);
write_sfm(0x84,yue);
write_sfm(0x92,zhou);
ds1820_reset();
ds1820_write_byte(0xCC);
ds1820_write_byte(0x44);
Delayms(2);
ds1820_reset();
ds1820_write_byte(0xCC);
ds1820_write_byte(0xbe);
i=ds1820_read_byte();
k=j*256+i;
k=k*0.0625;
write_wendu(0x96,k);
}
}
#ifndef __12864LCD_H__
#define __12864LCD_H__
#define uint unsigned int
#define uchar unsigned char
#define psbset
#define psbset
#define psbclr
#define rsout
#define rsset
#define rsclr
#define rwout
#define rwset
#define rwclr
#define enout
#define enset
#define enclr
unsigned char table1[]="
unsigned char table2[]="星期六
unsigned char table3[]="
unsigned char table4[]="
uint num=50,fen=9,shi=8,ri=8,yue=2,zhou=3;
void Delayus(uint US)
{
}
void Delayms(uint MS)
{
} void write_12864com(uchar com) { rwclr; rsclr; Delayus(500); PORTA=com; enset; Delayus(1000); enclr; Delayus(1000); } void write_12864dat(uchar dat) { rwclr; rsset; Delayus(500); PORTA=dat; enset; Delayus(1000); enclr; Delayus(1000); } void init12864lcd(void) { Delayms(500); write_12864com(0x30); Delayus(500); write_12864com(0x30); Delayus(500); write_12864com(0x0f); Delayus(500); write_12864com(0x01); Delayms(25); write_12864com(0x06); Delayus(2500); write_12864com(0x0c); Delayus(500); } void display(void) { uchar i; write_12864com(0x80); for(i=0;i<16;i++) { write_12864dat(table1[i]); Delayms(10); } } void display1(void) { uchar i; write_12864com(0x90); for(i=0;i<16;i++) { write_12864dat(table2[i]); Delayms(10); } } void display2(void) { uchar i; write_12864com(0x88); for(i=0;i<12;i++) { write_12864dat(table3[i]); Delayms(10); } } void display3(void) { uchar i; write_12864com(0x98); for(i=0;i<14;i++) { write_12864dat(table4[i]); Delayms(10); } } void write_sfm(uchar add,uchar date) { uchar shi,ge; shi=date/10; ge=date; write_12864com(add); write_12864dat(0x30+shi); write_12864dat(0x30+ge); } void write_wendu(uchar add,uchar date) { uchar shi,ge; shi=date/10; ge=date; write_12864com(add); write_12864dat(0x30+shi); write_12864dat(0x30+ge); } #endif
#ifndef __DS1302_H__
#define __DS1302_H__
#define uchar unsigned char
#define uint unsigned int
#define ds1302_rst PE4
#define ds1302_io PE3
#define ds1302_sclk PE2
#define set_ds1302_rst_ddr() DDRE|=1
#define set_ds1302_rst() PORTE|=1
#define clr_ds1302_rst() PORTE&=~(1
#define set_ds1302_io_ddr() DDRE|=1
#define set_ds1302_io() PORTE|=1
#define clr_ds1302_io() PORTE&=~(1
#define clr_ds1302_io_ddr() DDRE&=~(1
#define in_ds1302_io() PINE&(1
#define set_ds1302_sclk_ddr() DDRE|=1
#define set_ds1302_sclk() PORTE|=1
#define clr_ds1302_sclk() PORTE &=~(1
#define ds1302_sec_add 0x80
#define ds1302_min_add
AVR12812864液晶ds1302ds18b2 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)