自动打铃系统(3) - 图文(4)

2019-09-01 22:51

[5] 楼然苗.李光飞.单片机课程设计指导[M].北京:北京航空航天大学出版社,2007.4 [6] 单片机学习网www.mcustudy.com

附录

附录1. 整体电路图

附录2. 详细程序

#include \

#include

#define PA XBYTE[0xD1FF] /*PA口地址*/ #define PB XBYTE[0xD2FF] /*PB口地址*/ #define PC XBYTE[0xD5FF] /*PC口地址*/ #define CON XBYTE[0xD7FF] /*控制字地址*/ #define uchar unsigned char Code Char dis_7[14]={0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,0x20,0x28,0xff,0x7f,0x30,0x70};

/* 共阳LED段码表 \ \ \ \ \ \ \ \ \ \\不亮\

code char scan_con[8]={0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xBF,0x7f}; // 列扫描控制字

data char disdata[8]={0x08,0x05,0x09,0x02,0x0b,0x00,0x01,0x0d};//计时单元数据初值,共6个

data char dis[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00};//显示单元数据,共6个数据

data char con1s=0x00,con04s=0x00,con=0x00,con05s=0x00,d=0x00;//1秒定时用 sbit key0=P3^2; //移位键 sbit key1=P3^3; // 加一

sbit BEEP=P2^0; //蜂鸣器接口 /****************/ //1毫秒延时程序// /***************/ delay1ms(int t) { int i,j;

for(i=0;i

for(j=0;j<120;j++); }

/***********/ //扫描程序// /**********/ scan() {

char k;

for(k=0;k<6;k++) {

CON=0X89;

PB=dis_7[dis[k]];PA=scan_con[k];delay1ms(1);PA=0xff;

} }

/*****************/ //键盘调时程序//

/******************/ keyscan() {

EA=0; if(key0==0) {

delay1ms(10); while(key0==0); if(dis[con]==10)

{dis[7]=dis[con];dis[con]=dis[6];dis[6]=dis[7];} con++;TR0=0;ET0=0;TR1=1;ET1=1; if(con>=6)

{con=0;TR1=0;ET1=0;TR0=1;ET0=1;} }

if(con>=0) {

if(key1==0) {

delay1ms(10); while(key1==0); d=con+2; disdata[d]++;

if(disdata[d]>=14) {disdata[d]=0;}

dis[con]=disdata[d];dis[6]=0x0a; } } EA=1; }

/************/ // 打铃程序 / /*************/ Play1() {

uchar i,t;

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

BEEP=~BEEP; delay1ms(t); }

BEEP=1; }

Play2()

{ BEEP=1; } bell()

{if((disdata[0]==0x00||disdata[0]==0x01||disdata[0]==0x02||disdata[0]==0x03||disdata[0]==0x04)&&disdata[1]==0x00&&disdata[2]==0x00&&disdata[3]==0x03&&disdata[5]==0x07&&disdata[6]==0x00&&disdata[7]==0x0c||(disdata[0]==0x00||disdata[0]==0x01||disdata[0]==0x02||disdata[0]==0x03||disdata[0]==0x04)&&disdata[1]==0x00&&disdata[2]==0x00&&disdata[3]==0x03&&disdata[5]==0x00&&disdata[6]==0x01&&disdata[7]==0x0d) { Play1();}

if((disdata[0]==0x05||disdata[0]==0x06)&&disdata[1]==0x00&&disdata[2]==0x00&&disdata[3]==0x03&&disdata[5]==0x07&&disdata[6]==0x00&&disdata[7]==0x0c||(disdata[0]==0x05||disdata[0]==0x06)&&disdata[1]==0x00&&disdata[2]==0x00&&disdata[3]==0x03&&disdata[5]==0x00&&disdata[6]==0x01&&disdata[7]==0x0d) {Play2();}

if(((disdata[0]==0x07||disdata[0]==0x08||disdata[0]==0x09)&&disdata[1]==0x00||(disdata[0]==0x00||disdata[0]==0x01)&&disdata[1]==0x01)&&disdata[2]==0x00&&disdata[3]==0x03&&disdata[5]==0x07&&disdata[6]==0x00&&disdata[7]==0x0c||((disdata[0]==0x07||disdata[0]==0x08||disdata[0]==0x09)&&disdata[1]==0x00||(disdata[0]==0x00||disdata[0]==0x01)&&disdata[1]==0x01)&&disdata[2]==0x00&&disdata[3]==0x03&&disdata[5]==0x00&&disdata[6]==0x01&&disdata[7]==0x0d) {Play1();} }

/************/ //初始化程序// /*************/ clearmen() { int i;

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

dis[i]=disdata[i]; }

TH0=0x3C;TL0=0xB0;// ;50MS定时初值(T0计时用) TH1=0x3C;TL1=0xB0;// ;50MS定时初值(T1计时用) TMOD=0X01;ET0=1;ET1=1;TR1=0;TR0=1;EA=1; }

/**********/ //主程序// /*********/ main()


自动打铃系统(3) - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小学教师继续教育培训总结

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

马上注册会员

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