单片机应用课程设计(电子时钟和温度测量,两份合集)绝对靠谱 -(3)

2019-03-27 16:52

中原工学院信息商务学院课程设计

4.4 源程序代码

#include #include

#define uchar unsigned char #define uint unsigned int uchar

data_7seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; /*段码*/

uchar hour,min,sec; uchar year,mon,day; sbit shi=P1^0; sbit fen=P1^1; sbit miao=P1^2;

sbit key4=P1^3; /*时分秒切换调节键*/ sbit rst=P1^4; sbit sck=P1^5; sbit io=P1^6;

sbit fm=P1^7; /*函数声明:*/

void write_ds1302_byte(uchar dat);

void write_ds1302(uchar add,uchar dat); uchar read_ds1302(uchar add); void read_rtc(); void set_rtc(); void read_rtd(); void set_rtd(); void display(); void display1(); void delay(int n); void show(); void fmzz();

/*DS1302单字节写入:*/

void write_ds1302_byte(uchar dat) {

uchar i;

for (i=0;i<8;i++) {

sck=0;

io=dat&0x01; dat=dat>>1; sck=1;

10

中原工学院信息商务学院课程设计

} }

/*DS1302多字节写入:*/

void write_ds1302(uchar add,uchar dat) {

rst=0;_nop_(); sck=0;_nop_(); rst=1;_nop_();

write_ds1302_byte(add); write_ds1302_byte(dat); rst=0;_nop_(); io=1; sck=1; }

/*DS1302读取:*/

uchar read_ds1302(uchar add) {

uchar i,value; rst=0;_nop_(); sck=0;_nop_(); rst=1;_nop_();

write_ds1302_byte(add); for (i=0;i<8;i++) {

value=value>>1; sck=0;

if (io) value=value|0x80; sck=1; }

rst=0;_nop_();

sck=0;_nop_(); sck=1; io=1;

return value; }

/*调整时间:*/ void set_rtc() {

if (shi==0) delay(100); if (shi==0) {

hour=(hour>>4)*10+(hour&0x0f); hour++;

if (hour==24) hour=0;

11

中原工学院信息商务学院课程设计

hour=((hour/10)<<4)+(hour); write_ds1302(0x84,hour); }

if (fen==0) delay(100); if (fen==0) {

min=(min>>4)*10+(min&0x0f); min++;

if (min==60) min=0;

min=((min/10)<<4)+(min); write_ds1302(0x82,min); }

if (miao==0) delay(100); if (miao==0) {

sec=(sec>>4)*10+(sec&0x0f); sec++;

if (sec==60) sec=0;

sec=((sec/10)<<4)+(sec); write_ds1302(0x80,sec); } }

/*调整日期:*/ void set_rtd() {

if (shi==0) delay(100); if (shi==0) {

year=(year>>4)*10+(year&0x0f); year++;

if (year==99) year=0;

year=((year/10)<<4)+(year); write_ds1302(0x8C,year); }

if (fen==0) delay(100); if (fen==0) {

mon=(mon>>4)*10+(mon&0x0f); mon++;

if (mon==13) mon=0;

mon=((mon/10)<<4)+(mon);

12

中原工学院信息商务学院课程设计

write_ds1302(0x88,mon); }

if (miao==0) delay(100); if (miao==0) {

day=(day>>4)*10+(day&0x0f); day++;

if (day==31) sec=0;

day=((day/10)<<4)+(day); write_ds1302(0x86,day); } }

/*读取时间:*/ void read_rtc() {

hour=read_ds1302(0x85); min=read_ds1302(0x83); sec=read_ds1302(0x81); }

/*读取日期*/ void read_rtd() {

year=read_ds1302(0x8D); mon=read_ds1302(0x89); day=read_ds1302(0x87); }

/*显示时间:*/ void display() {

unsigned int a=1;

P2=0x01;P0=data_7seg[hour/16];delay(a); P2=0x02;P0=data_7seg[hour];delay(a); P2=0x04;P0=data_7seg[min/16];delay(a); P2=0x08;P0=data_7seg[min];delay(a); P2=0x10;P0=data_7seg[sec/16];delay(a); P2=0x20;P0=data_7seg[sec];delay(a); }

/*显示日期:*/ void display1()

13

中原工学院信息商务学院课程设计

{

unsigned int a=1;

P2=0x01;P0=data_7seg[year/16];delay(a); P2=0x02;P0=data_7seg[year];delay(a); P2=0x04;P0=data_7seg[mon/16];delay(a); P2=0x08;P0=data_7seg[mon];delay(a); P2=0x10;P0=data_7seg[day/16];delay(a); P2=0x20;P0=data_7seg[day];delay(a);

}

/*蜂鸣:*/ void fmzz() {

uint i;

for (i=0;i<100;i++) {

fm=!fm; delay(2); } }

/*延时程序:*/ void delay(int n) {

unsigned int i,j; for(i=0;i

for(j=0;j<121;j++) {;} } }

/*显示学号:*/ void show() {

unsigned int m; for(m=0;m<20;m++) {

uint a=10;

P2=0x01;P0=data_7seg[0];delay(a); P2=0x02;P0=data_7seg[2];delay(a); P2=0x04;P0=data_7seg[4];delay(a); P2=0x08;P0=data_7seg[2];delay(a); P2=0x10;P0=data_7seg[2];delay(a); P2=0x20;P0=data_7seg[2];delay(a); }

14


单片机应用课程设计(电子时钟和温度测量,两份合集)绝对靠谱 -(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中级财务会计大纲(管院64学时) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: