#define uint unsigned int #define uchar unsigned char //ds1302
/*寄存器定义*/
//#define write_second 0x80 //#define write_minute 0x82 //#define write_hour 0x84 //#define read_second 0x81 //#define read_minute 0x83 //#define read_hour 0x85 //#define write_protect 0x8e //uchar year,yue,ri,shi,fen,miao; uchar code mun_to_char[] = {\":\
uchar code num_to_char[] = {\"sun mon !\/*位寻址寄存器定义*/ //sbit acc7=ACC^7; /*管脚定义*/
//sbit sclk=P1^2; //ds1302时钟信号 //sbit dio=P1^1; //数据信号 //sbit ce=P1^0; //片选
//lcd1602
sbit lcd_rs_port = P1^7; /*定义LCD控制端口*/ sbit lcd_rw_port = P1^6; /*定义LCD控制端口*/ sbit lcd_en_port = P2^4; /*定义LCD控制端口*/ #define lcd_data_port P0 /*定义LCD控制端口*/
/*lcd1602驱动程序*/
/*lcd1602驱动程序*/
/*1MS为单位的延时程序*/ void delay(uchar x) {
uchar j; while(x--) { for(j=0;j<125;j++); }
}
void lcd_busy_wait() /*LCD1602 忙等待*/ {
lcd_rs_port = 0; lcd_rw_port = 1; lcd_en_port = 1; lcd_data_port = 0xff;
while (lcd_data_port&0x80); lcd_en_port = 0; }
void lcd_write_com(uchar com) /*LCD1602 命令字写入*/ {
lcd_busy_wait(); lcd_rs_port = 0; lcd_rw_port = 0; lcd_en_port = 0; lcd_data_port = com; lcd_en_port = 1;
lcd_en_port = 0; }
void lcdinit() /*LCD1602 初始化*/ {
delay(20);
lcd_write_com(0x38); delay(100);
lcd_write_com(0x38); delay(50);
lcd_write_com(0x38); delay(10);
lcd_write_com(0x08); lcd_write_com(0x01); lcd_write_com(0x06); lcd_write_com(0x0c); lcd_write_com(0x80); lcd_data_port = 0xff; /*释放数据端口*/ }
void lcd_write_data(date) /*LCD1602 字符写入*/ {
lcd_busy_wait(); lcd_rs_port = 1; lcd_rw_port = 0; lcd_en_port = 0; lcd_data_port = date; lcd_en_port = 1; lcd_en_port = 0; lcd_data_port = 0xff; /*释放数据端口*/ }
/*ds1302驱动程序 */
/*地址,数据发送子程序*/
/*void write1302(uchar addr,dat) { uchar i,temp; ce=0; sclk=0; ce=1; for(i=8;i>0;i--) //发送数据 { sclk=0; temp=addr; dio=(bit)(temp&0x01); addr>>=1; sclk=1; } for(i=8;i>0;i--) { sclk=0; temp=dat; dio=(bit)(temp&0x01); dat>>=1; sclk=1; }
ce=0; }
/*数据读取子程序
uchar read1302(uchar addr) { uchar i,temp,dat1,dat2; ce=0; sclk=0; ce=1; for(i=8;i>0;i--) { sclk=0; temp=addr; dio=(bit)(temp&0x01); addr>>=1; sclk=1; } for(i=8;i>0;i--) { acc7=dio; sclk=1; ACC>>=1; sclk=0; } ce=0; dat1=ACC; dat2=dat1/16; dat1=dat1%16; dat1=dat1+dat2*10; return(dat1); }
void dsinit(void) { write1302(write_protect,0x00); write1302(write_second,0x56); write1302(write_minute,0x34); write1302(write_hour,0x12); write1302(write_protect,0x80); } */
//void display(uchar x) //{
// uchar i,j; //j,k分别储存十位和个位 // i=x/10;//取十位
// j=x%10;//取个位
// lcd_write_data(digit[i]); //将十位位数字的字符常量写入LCD // lcd_write_data(digit[j]); //将个位数字的字符常量写入LCD // delay(50); //}
/*void main() { dsinit(); lcdinit(); lcd_write_com(0x80); for(i=0;i<9;i++) { lcd_write_data(digit[i] ); delay(1000); } while(1) { // miao=read1302(read_second); //lcd_write_com(0x80+10); //display(9); //fen=read1302(read_minute); //lcd_write_com(0x85); //display(20); //shi=read1302(read_hour); //lcd_write_com(0x); // display(30); } } */
void main() {
uint i,a; init(); lcd_write_com(0x80); for(i=0;i<9;i++) {
}
lcd_write_data(mun_to_char[i] ); delay(1000); }
lcd_write_com(0x80+0x40); for(i=0;i<9;i++) {
lcd_write_data(num_to_char[i] ); delay(1000); }
while(1);
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务