write_data(table[a]); //在第一行,第七个字符处写入时钟的分钟 write_com(0x80+7); //将数据写在第一行,第八个字符处
write_data(table[b]); //在第一行,第八个字符处写入闪烁的冒号 write_com(0x80+8); //将数据写在第一行,第九个字符处 write_data(table[c]); //在第一行,第九个字符处写入时钟的秒钟十位
write_com(0x80+9); //将数据写在第一行,第十个字符处 write_data(table[d]); //在第一行,第十个字符处写入时钟的秒钟个位
由于是在不断循环调用,即不断数据刷新,而a、b、c、d的改变是通过定时器零实现的。
6其它外围设备软硬件设计 6.1 报警电路软硬设计
6.1.1 硬件部分设计
图6-1 报警电路
将蜂鸣器的正端接电源正,负端接P1.0。低电平有效,蜂鸣器响起。 Da,Db,Dc为检测报警指示灯。Da为浓度不超限的指示灯,Db与Dc分别为酒后驾驶指示灯和醉酒驾驶指示灯,低电平有效。
16
当酒精含量<20mg/100ml时,安全灯(绿色LED灯)亮;
当20mg/ml≤酒精含量≤80mg/ml时,警告灯(黄色LED灯)闪烁; 当80mg/ml≤酒精含量时,危险灯(红色LED灯)闪烁,蜂鸣器报警。
6.1.2 软件部分设计
位定义语句:
sbit beep=P1^0; //定义蜂鸣器 sbit da=P1^2; sbit db=P1^3;
sbit dc=P1^4; //定义报警灯 用程序让蜂鸣器响:
beep=0; //低电平输出时,蜂鸣器打开 用程序让蜂鸣器关闭:
beep=1; //高电平输出时,蜂鸣器关闭 用程序将Da,Db,Dc点亮: Da =0; Db =0;
Dc =0; //低电平输出时,Da,Db,Dc点亮 用程序将Da,Db,Dc熄灭: Da =1; Db =1;
Dc =1; //高电平输出时,Da,Db,Dc熄灭
17
6.2待机指示灯软硬件设计
6.2.1 硬件部分设计
图6-2 待机指示灯电路
发光二极管D1为待机指示灯,它的正端接电源正,负端与470K电阻相连再接上P1.1。低电平有效,D1点亮,开始待机。电阻起到限流电阻的作用。 6.2.2 软件部分设计 位定义语句:
sbit d1=P1^1; //待机指示灯 用程序将D1点亮:
D1=0; //低电平输出时,D1点亮 用程序将D1熄灭:
D1=1; //高电平输出时,D1熄灭
6.3 按键软硬件设计
6.3.1 硬件部分设计
图6-3 按键电路
18
S2和S3分别和单片机的P2.1和P2.0,再与GND相接。S2为待机控制按键。S3为检测控制按键。R18和R19与VCC相连再并接在开关前,是为了在松手时,使I/O获得稳定的高电平。
6.3.2 软件部分设计
位定义语句:
sbit k1=P2^0; //S3位定义 sbit k2=P2^1; //S2位定义 S2按键检测:
if(k1==0) //检测按键是否按下 {
delay(5); //消抖
if(k1==0) //再检测按键是否按下
flag=0; //写入要进行的操作,这里是将标志数flag置零 while(!k1); //松手检测 }
S3按键检测:
if(k2==0) //检测按键是否按下 {
delay(5); //消抖
if(k2==0) //再检测按键是否按下
flag=1; //写入要进行的操作,这里是将标志数flag置一 while(!k2); //松手检测
19
}
6.4 电源电路
图6-4 电源电路
如上图为本设计的电源电路。接入220V交流电后从变压器输出12V交变电压,再经过桥式整流电路整流,输出直流电。稳压芯片7805使电压稳定在5V, C5和C6为电解电容起到滤除杂波的作用【6】。S4为紧锁开关,电源总开关。D4与R17串联,跨接在VCC与GND之间,作为电源指示灯。 6.5 休眠(空闲)状态的设定
当单片机进入掉电模式时,外部晶振停振、CPU、定时器、串行口全部停止工作,只有外部中断继续工作。使单片机进入休眠模式的指令将成为休眠前单片机执行的最后一条指令,进入休眠模式后,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据都将保持原值。可由外部中断低电平触发或由下降沿触发中断或者硬件复位模式换醒单片机,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。
本文中则采用硬件复位唤醒单片机。
让单片机进入休眠(空闲)模式的目的是为了降低系统的功耗,例如在
20
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库智能酒精浓度探测仪(4)在线全文阅读。
相关推荐: