好文档 - 专业文书写作范文服务资料分享网站

单片机课程作息时间控制设计报告

天下 分享 时间: 加入收藏 我要投稿 点赞

};

uchar code tablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; uchar code table[]={0x3f,0x06,0x5b,0x4f, //主功能数组定义

0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e, 0x79,0x71};

void w1(); //子函数声明 void w2(); void w3(); void w4();

void delayms(uint xms); void timer0();

void delay(uint z); //主功能子函数声明 void init();

void display(uchar hour,uchar min,uchar sec); void keyscan(); void alarm(); void time1();

/*--------------------------------------

主函数

----------------------------------------*/

void main() {

key1=1; key2=1; key3=1; key4=1;

while(1) {

while(!key1)w1(); while(!key2)w2(); while(!key3)w3(); while(!key4)w4();

} }

/*-------------------------------------- 按键控制蜂鸣器过程

----------------------------------------*/ void w1() {

if(!key1) {

delayms(300); //延时防抖,松手检测

if(key1) {

fm=!fm; } } }

/*-------------------------------------- 按键控制流水灯过程

----------------------------------------*/ void w2() {

loop 1:P1=0xff; if(!key2) {

delayms(300); if(key2) {

aa=0xfe; //赋初值 while(1) //大循环 {

P1=aa;

delayms(100); //延时500毫秒

aa=_crol_(aa,1); //将aa循环左移1位后再赋给aa //相应的cror是循环右移一位 if(!key2) {

delayms(300); if(key2) goto loop1; } }

} } }

/*-------------------------------------- 按键控制数码管过程

----------------------------------------*/ void w3() {

loop 2:wela=1; P0=0xff; if(!key3) {

delayms(300); if(key3) {

numdu=0; numwe=0;

while(1) {

numdu++; if(numdu==7) numdu=1;

dula=1; //开段锁存器

P0=tablew[numdu]; //送段码

dula=0; //锁存段码

wela=1; //开位锁存器

P0=tablewe[numwe]; //送位码

wela=0; //锁存位码

numwe++; if(numwe==6) numwe=0; delayms(5);

if(!key3) {

delayms(300); if(key3)

goto loop2; } } }

} }

/*-------------------------------------- 按键控制作息时间过程

----------------------------------------*/ void w4() {

if(!key4) {

delayms(300); if(key4) {

init(); //主功能主程序 while(1) {

keyscan();

alarm(); } } } }

/*------------------------------------------ 延时函数(用于按键,蜂鸣器,流水灯等的延时) ------------------------------------------*/ void delayms(uint xms) {

uint i,j;

for(i=xms;i>0;i--) //i=xms即延时约xms毫秒 for(j=110;j>0;j--); }

/*-------------------------------------- 主功能相关所有子程序

----------------------------------------*/

void delay(uint z) //

延时程序// {

uint x,y;

for(x=0;x

void init() //赋初值程序// {

TMOD=0X02; //选择模式2,可自动重装载的八位计数器

TH0=6; //给TH0赋初值 最大256-250=6 ;250与后面的3886相乘约为1s

TL0=6; //给TH0赋初值 自动装入初值TL=TH=6

EA=1; //开总中断

ET0=1; //开T0中断 TR0=1; hour1=15; min1=20; sec1=57; year1=11; mon1=12; day1=24; }

void display(uchar hour,uchar min,uchar sec) //显示程序// {

uchar s1,s2,m1,m2,h1,h2; //该段用于数码管显示要赋的值

s2=sec/10; //显示秒的第二位,即个位

s1=sec; //显示秒的第一位,即十位 ; “%” 两边为整型,表示取余; m2=min/10; //下四句同 m1=min; h2=hour/10; h1=hour;

单片机课程作息时间控制设计报告

};ucharcodetablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};ucharcodetable[]={0x3f,0x06,0x5b,0x4f,//主功能数组定义0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,
推荐度:
点击下载文档文档为doc格式
1klpv13mrw79ew80o94h77xpo584e200qxh
领取福利

微信扫码领取福利

微信扫码分享