版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、模拟路灯控制系统的设计摘要 本系统以avr低功耗单片机系列atmega16l为核心组成支路控制系统,采用专用时钟芯片实现精确的时钟功能,设定并显示开关灯时间。该控制系统能根据环境明暗变化自动开灯和关灯,以达到节能要求。atmega16l是一款高性能、低功耗的8位avr微处理器,使系统在低功耗的状态下稳定工作。系统采用线路简单、体积小的专用时钟芯片ds1302,ds1302工作时功耗很低,保持数据和时钟信息时功率小于1mw。使用ds1302不但使电路功耗降低,而且节省io口资源。采用低功耗的字符型液晶作为显示器件,显示更为直观。使用光敏电阻来检测环境明暗的变化,光敏电阻在不同光强下电阻值会发生明
2、显变化,单片机内部ad采集电阻值的变化量达到检测目的。采用对射式收发一体光电传感器检测物体的运动,使用灵敏光电传感器更有效地实现在物体运动过程中路灯的自动控制,达到节能的要求。当路灯电路出现故障时,单片机采集路灯电路采样点的电压后处理采集到的数据,实现自动报警功能。该系统基于可靠的硬件设计和稳定的软件算法实现题目基本要求。关键词:atmega16l 功耗 节能 光电传感器 目 录一、 设计任务- 2 -1.1任务- 2 -1.2 要求- 2 -二、方案论证与比较- 3 -三、总体设计方案- 3 -1.支路控制系统设计- 4 -(1)时钟模块- 4 -(2)信号采集模块的设计- 5 -(3)显示
3、、按键模块- 6 -(4)路灯控制模块- 6 -(5) 声光报警模块- 6 -(6) 电源模块- 7 -2.软件设计- 13 -四、结果分析- 13 -五、结论- 14 -六、参考文献- 14 -附录1 系统原理图- 15 -附录2 程序清单- 16 -一、 设计任务1.1任务设计并制作一套模拟路灯控制系统。控制系统结构如图1所示,路灯布置如图2所示。图1 路灯控制系统示意图图2 路灯布置示意图(单位:cm)1.2 要求 1基本要求(1)支路控制器有时钟功能,能设定、显示开关灯时间,并控制整条支路按时开灯和关灯。(2)支路控制器应能根据环境明暗变化,自动开灯和关灯。(3)支路控制器应能根据交通
4、情况 自动调节亮灯状态:当可移动物体m(在物体前端标出定位点,由定位点确定物体位置 )由左至右到达s点时(见图2),灯1亮;当物体m到达b点时,灯1灭,灯2亮;若物体m由右至左移动时,则亮灯次序与上相反。(4)支路控制器能分别独立控制每 只路灯的开灯和关灯时间。(5)当路灯出现故障时(灯不亮), 支路控制器应发出声光报警信号,并显示有故障路灯的地址编号。 2发挥部分 (1)自制单元控制器中的led灯恒流驱动电源。(2)单元控制 器具有调光功能,路灯驱动电源输出功率能在规定时间按设定要求自动减小,该功率应 能在20%100%范围内设定并调节,调节误差2%。(3)其它(性 价比等)。 二、方案论证
5、与比较 方案一:题目要求设计一个 模拟路灯控制系统,实现支路控制器对单元控制器的有效控制。本系统采用atmega16l单片机为主控芯片,采用对射式收发一体的光电传感器采集由于物体运动所产生的信号,再 由支路控制器系统对信号进行处理实现对路灯的合理控制,以达到题目要求。支路控制器 的时钟采用精确的时钟芯片并由字符型液晶作为显示,利用按键设定、修改开关灯时间。 系统采用光敏电阻分压的方式感应周围环境明暗的变化,支路控制系统采集分压值经单片 机处理后来控制路灯的变化。当路灯出现故障后路灯电路中采样点的电压值会发生变化, 单片机根据变化量进行相应的处理。基于设计思路在设计过程中选择合适的元器件,使用
6、合适的单元电路模块,更有效的达到设计要求。 方 案二:与方案一不同的是方案二选用at89s52芯片,采用红外对管对物体的移动进行检测,时钟由单片机定时器实现。方案比较 :与at89s52相比,atmega16l在性能上具有明显的优势,若采用红外对管则给元件的安 装带来不便,且不易调试;由单片机定时器实现的时钟不准确,故采用方案一。 三、总体设计方案本系统以atmega16l为控制核心 。整个系统硬件框图如图1所示: 图3 系统框图1.支路控制系统设计 图4 最小系统支路控制系统是模拟路灯控制系 统的核心,该系统采用atmel公司的atmega16l单片机作为主控制芯片来实现对受控对 象的控制。
7、与at89s52相比,atmega16l是一款高性能、低功耗的8位avr微处理器,具 有速度快、输出电流大、工作电压范围宽、成本低等优点,是一款性价比很高的单片机。 (1) 时钟模块 图5 时 钟电路为实现精确的时钟功能并节省单片机io 口资源,该设计使用专用的接口方式为串行的时钟芯片ds1302,该芯片线路简单、体积小 ,易于操作,且价格低廉。ds1302 是美国dallas公司推出的一种高性能、低功耗、带ram的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰 年补偿功能,工作电压为2.5v5.5v。采用三线接口与cpu进行同步通信,并可采用 突发方式一次传送多个字节的时
8、钟信号或ram数据。ds1302内部有一个318的用于 临时性存放数据的ram寄存器。ds1302是ds1202的升级产品,与ds1202兼容,但 增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能 力。另外该芯片有备份电源引脚,可以在断电后仍能工作,以保证时钟的准确性。ds1302与单片机之间能简单的采用同步串行方式进行通信,仅需用到三个口线:(1)res(复位), (2)i/o(数据线),(3)sclk(串行时钟)。x1和x2是振荡源,外接32.768khz晶振 。rst是复位/片选线,通过把rst输入驱动置高电平来启动所有的数据传送。rst 输入有两种功能:首先,
9、rst接通控制逻辑,允许地址/命令序列送入移位寄存器;其 次,rst提供终止单字节或多字节数据的传送手段。当rst为高电平时,所有的数据传送被初始化,允许对ds1302进行操作。如果在传送过程中rst置为低电平,则会终止 此次数据传送,i/o引脚变为高阻态。上电运行时,在vcc2.0v之前,rst必须保持 低电平。只有在sclk为低电平时,才能将rst置为高电平。ds1302 存在时钟精度不 高,易受环境影响,出现时钟混乱等缺点。ds1302可以用于数据记录,特别是对某些 具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录 对长时间的连续测控系统结果的分析及对异常数据出
10、现的原因的查找具有重要意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录 数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占 用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些 测控系统可能不允许。但是,如果在系统中采用时钟芯片ds1302,则能很好地解决这 个问题。ds1302工作时功耗很低,保持数据和时钟信息时功率小于1mw。 (2) 信号采集模块的设计 图6 采样电路让他和人信号采集模块包括物体检测模块和环境明暗检测模 块,两者功能如下:物体检测模块:该模块需要检测小车的移动,并根据小车的移动进行路灯开关的自动
11、控制。基于此目的采用探测距离远、灵敏度高的反射式光电传感器进行检测,当传感器检测到小车时,传感器给单片机一个信号,然后单片机对路灯进行合理控制,达到题目要求。环境明暗检测模块:该模块需要检测环境光的变化,根据环境光的明暗进行路灯开关的自动控制。基于此要求采用由光敏电阻组成的分压电路进行检测。光敏电阻器又称光导管,特性是在特定光的照射下,其阻值迅速减小,可用于检测可见光。在不同的光强下,光敏电阻的电阻值会发生明显变化,光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光通过检测不同光强下电阻值的变化量来控制路灯的开和关。(3) 显示、按键模块
12、图7 1602显示及按键电路通过按键可以调节和设定路灯的开关时间,控制整条支路按时开灯和关灯,并在字符液晶上显示出来。字符型液晶因具有体积小、功耗低、寿而已命长、价格低、接口控制方便及显示操作简单等优点而被广泛应用。我们这里用到的是16 02液晶,1602液晶为5v电压驱动,带背光,可显示2行,每行16个字符,不能显示汉字,内置128个字符的ascii字符集库,只有并口接口,无串口接口。(4) 路灯控制模块图8 路灯控制电路该模块采用节能的1w led灯,当电路出现故障时,单片机通过内部ad采集电路采样点的电压变化量后对数据进行处理。(5) 声光报警模块 认同uyhes图9 声光报警电路 当系
13、统出现故障时,蜂鸣器会发出警报声,同时报警指示灯也会点亮。(6) 电源模块图10 5v稳压电路 电源是系统中最重要的模块之一,输入电源经稳压块后输出稳定的+5v电源,用以驱动整个系统。(7) 恒流源模块1. 原理介绍:恒流源是输出电流保持不变的电流源,而理想的恒流源为:a)不因负载(输出电压)变化而改变。b)不因环境温度变化而改变。c)内阻为无限大。 (3-1)恒流源之电路符号: 理想的恒流源 实际的流源图11 恒流源理想的恒流源,其内阻为无限大,使其电流可以全部流出外面。实际的恒流源皆有内阻r。2.三极管的恒流特性: 图12 三极管恒流特性咕()b一蛾从三极管特性曲线可见,工作区内的ic受i
14、b影响,而vce对ic的影响很微。因此,只要ib值固定,ic亦都可以固定。输出电流io即是流经负载的ic。 (3-2)电流镜电路currentmirror:电流镜是一个输入电流is与输出电流io相等的电路: 图13 电流镜电路q1和q2的特性相同,即vbe1=vbe2,1=2。 (3-3)三极管之受温度的影响,但利用电流镜像恒流源,不受影响,主要依靠外接电阻r经q2去决定输出电流io(ic2=io)。方案1: 图14 恒流源电路咕()b一从左边看起:基极偏压 (3-4)所以 ve=vb-0.6=1.0v (3-5) 又因为射极电阻是1k,流经射极电阻的电流是 (3-6)所以流经负载的电流就就是
15、稳定的1ma方案2. 图15 恒流源电路这是个利用稳压二极管提供基极偏压5.6v,ve=vb-0.6=0.5v,流经负载的电流 (3-7)方案3. 图16 恒流源电路 这个有一点不同:利用pnp三极管供应电流给负载电路.首先,利用二极管0.6v的压降,提供8.2v基极偏压(103x0.6=8.2).4.7k电阻只是用来形成通路,而且不希望(也不会)有很多电流流经这个电阻。ve=vb+0.6=8.8v,pnp晶体的560欧姆电阻两端电位差是1.2v,所以电流是2ma。如果只用一个三极管不能满足需求,可以用两个三极管架成: 图17 恒流源或是 图18 恒流源方案4.电路图如下所示:儿也是图19 恒
16、流源电路图中的第一组运放电路是跟随器,对输入的电压取样电路进行阻抗变换。最前面的双向开关负责将正负12v电压接入,这个电压是运放的供电电压,并提供给其他线路作为电源输入,c24和c25电容是运放正负电源端的滤波电容,紧靠运放电源引脚。r11和电位器rw4组成了一个电压取样电路,通过改变电位器rw4滑动端的位置取出不同的电压值,同时这个取出的电压值也是输出电流的正比例控制值,电位器滑动头的电压就按照串联分压的方式计算得出,后端的r15和电容c20作为取出电压信号的阻容滤波电路,因为后端接的是运放的正端,电位器的滑动头不输出电流。运放的1脚输出的电压等于3脚的电压,既是电位器滑动端的电压值。运放上
17、面的r12和d9是供电电源12v的指示电路,12v通过开关供给后d9发光指示电压正常。后面的一组运放是实现电压到恒流的转换,电路中有正反馈也有负反馈,但线路是稳定的状态,计算的时候运放也是按照虚短和虚断的分析方式,c21是电压信号的滤波电容,假设第一组运放1脚输出的电压是v,第二组运放5脚正端的电压是v1,那么电阻rs1左端的电压值为2v1,因为电阻r16和r18是相同的数值。电阻rs1右端的电压按照r13和r14分压电路计算的话数值是v1-(v-v1)=2v1-v,这样我们就可以计算出rs1两端的电压是v,所以流过rs1电阻的电流是恒定的,另外考虑到rx1和r13相对rs1和负载的阻值不在同
18、一个数量级,比他们大好多倍,因此流过rs1的电流基本都流向负载,很少量的电流流向r13和rx1,所以输出的电流基本是恒定的。在以上的计算中v1的数值是不确定的,他是根据负载的大小变化的,但是不论v1的数值怎么变化,通过计算可以知道流过电阻rs1的电流是不变的,以为它两端的电压是v,而v这个电压值是第一组运放的输出,在电位器ser一不调节的时候v的数值是固定的,流过rs1的电流不变,所以输出电流也不变,实现恒流控制。后面一组运放电路中q4三极管的作用时增大运放的电流输出能力,因为负载比较小,运放驱动能力还是认同与蛾可能不够,r19基本没有作用在电路中,rx1可能是负载或者假负载,比如输出不接任何
19、负载,电流基本都流过rx1,如果不接rx1,在没有负载的情况下输出就是电压最大值接近12v,在这种电压输出下,运放的正负端会有较大的压差,有可能会损坏运放358。同时在线路的设计上也要保证负载流过恒定电流产生的电压值不能超过12v,如果超过电源供电电压,不能实现恒流工作性能。rx1不取吧,估计也没事,取小了对负载不好,要比负载大10倍以上啊,要忽略流过他的电流 本系统采用方案四的恒流源电路,以实现系统的功能。2.软件设计系统流程图如下:开始初始化判断环境在明暗判断移动小车位置判断led灯好坏设置实时时间、开关灯时间显示并输出相应动作图10 流程图 c语言表达能力和运算能力比较强,且具有很好的可
20、移植性和硬件控制能力。采用icc avr编译器。icc avr是众多avr单片ser一 机应用开发软件中的优秀软件之一,界面友好,易学易用。四、结果分析该系统能完成基本功能部分,传感器检测物体运动的最大误差为正负1cm,光敏电阻在正常光照情况下电阻值为2k,在强光下电阻值为200欧姆,在黑暗情况下2m.。路灯电路正常时采样点电压为3v左右,在开路故障时电压为0v。五、结论硬件设计和软件设计是电子设计中不可缺少的内容,为了满足设计的功能和指标的要求,我们必须在开始设计时就考虑到硬件与软件的协调;不然会增加软件实现时困难和复杂程度,有时即使硬件和软件单独能用,却不能使他们组成的系统工作,故在设计的
21、过程中必须考虑软硬件的处理能力以及它们的接口是否兼容,实现软硬件的信号过渡。 六、参考文献【1】 高吉祥.全国大学生电子设计竞赛系列教程【m】.北京:电子工业出版社.2007【2】 张志良.模拟电子技术【m】.北京:机械工业出版社.2006【3】 何小艇.电子系统设计【m】.杭州:浙江大学出版社.2004【4】 胡斌.元器件及实用电路解说【m】.北京:电子工业出版社.2007【5】 刁鸣.常用电路模块分析与设计指导【m】.北京:清华大学出版社.2008【6】 唐竞新.数字电路基础【m】.北京:清华大学出版社.2003附录1 系统原理图附录2 程序清单/*/#include /包含型号头文件#i
22、nclude /包含位操作头文件#include b.c#define uchar unsigned char问天网他#define uint unsigned int/*1602控制位的宏定 义*/#define lcd_out ddrc=0xff /数据端设为输出#define lcd_c_ddr ddrd|=0xe0 /控制端设为输出 #define lcd_data portc /发送数据端#define lcd_rs_h portd|=bit(pd5); /操作的是命令#define lcd_rs_l portd&=bit(pd5); /操作的是数据#define lcd_rw_h
23、portd|=bit(pd6); /从1602读#define lcd_rw_l portd&=bit(pd6); /向1602写#define lcd_oe_h portd|=bit(pd7); /1602使能#define lcd_oe_l portd&=bit(pd7); /1602不使能#define lcda_curon0x0e/ 显示光标#define lcda_curfla0x0f/ 打开光标闪烁/*rtc常量*/ #define rtc_clk pb7#define rtc_data pb5#define rtc_cs pc7#define rd 0x01#define wr
24、0x00#define c_sec0x80/秒#define c_min0x82/分#define c_hr0x84/时#define c_wp0x8e/控制(写保护)#define c_burst0xbe/时钟 蛾dg 多字节#define clk_halt0x80/停止时sst钟控制位 #definstwte clk_start0x00/启动时钟 #define protect0x80/写保护控制位 #define uprotect0x00/写保护控制位 /*按键常量控制位的宏定义*/#define key_out ddra|=0xf8/按键方向定义输出#define key_in ddr
25、a&=0x07/按键方向定义输入#define kghbbgfsey_data pina /读按键端口#define key_oust_h porta|=0xf8 /按键端口输出高电平erg#prgdagma data:code const duchar table=0x30,0x31,0x32,0x33,0x34, d 0x35,0x36,0x37,0x38,d 0x39; /*gd*全局变量宏定义*/uchar hour,hghdourshi,hourge,minute,minuteshi,minutege, second,strecondshi,secondge,haomiao,haom
26、iaoshi,haomiaoge;uchar chucun;/fg存储设置时间时的当前值ghvoghid delayns(uint us) rht uintrut i; us=utys*5/4; /5/4是在8mhz晶振下,通过软件仿真反复实验得到的数值 for( i=0ye;ius;i+); void delay(yuint ms) ty uitnt i,j; foutr( i=0;ims;i+) for(tuj=0;j1141;j+);/1141是在8mhz晶振下,通过软件仿真反复实验得到的数值/*tur*函数名称tru: lcd1602_write_com(uchar com)功 能:
27、ut向1602液晶写入一个字节指令参 数: coutm是指令返回值 : 无tu/*/void lcd1602_uywrite_com(uchar com)yu utr lcd_rs_l; lcd_rw_l; true lcd_data=com; dutrelay(5); lcdtru_oe_h; delay(5tur); lcd_oe_utrl;utr/*函数tru名称: lcd1602_write_dat(uchar dat)功 能utr: 向1602液晶写入一个字节数据参 数: datrut是数据返回值 : 无tru/*rtu*/void lcd1602_write_dat(uchar d
28、at) rtu lrtucd_rs_h; lcdrtu_rw_l; lcd_drutata=dat; delay(5);rut lcd_oe_hrut; delay(5);rut lcd_oe_lu;sru/*函数名称: lcd1602_init()功 yse 能: 初始化1602液晶参 ry数: 无返回值 ser: 无/*u*/void lcd1602se55u_init()s lrucd_out; lcsrud_c_ddr; lcd_oe_l; lcd1urt602_write_com(0x38);/设置16*2显示,5*7点阵,8位数据接口 delay(5);tru lcd1602_wr
29、ite_com(0x0c);/设置开显示,不显示光标 delay(5); lcd1602_write_com(0x01);/显示清0,数据指针清0 delay(5); lcd1602_write_com(0x06);/写一个字符后地址指针加1 delay(5); /lcd1602_write_com(0x80+0x0f);/将数据指针定位到第一行第一个字处:lcd1602_write_com(0x80) /delay(5); /写第二行时要重新定位数据指针 /write_com(0x80+0x40) /*函数名称: ds1302_init功 能: 初始化ds1302的数据接口参 数: 无返回值
30、 : 无/*/void ds1302_portinit(void) ddrb|=bit(rtc_clk)|bit(rtc_data)|bit(rtc_cs);/将时钟端(rtc_clk)数据端(rtc_data)片选端(rtc_cs)设置为输出 ds1302_writed(c_wp|wr,uprotect); /写入写允许命令 ds1302_writed(c_sec|wr,clk_start);/启动振荡器,ds1302开始工作 ds1302_writed(c_wp|wr,protect); /控制命令,wp位为1,不允许写操作 /*函数名称: ds1302_writeb功 能: 向ds130
31、2写入一个字节数据(没有rst操作)参 数: byte-要写入的数据返回值 : 无/*/void ds1302_writeb(uchar byte) uchar i; for(i=0;i=1; /数据右移1位,为送出新数据位做准备 /*函数名称: ds1302_writed功 能: 向ds1302的某个地址写入一个字节数据参 数: addr-地址值(寄存器或ram) data-要写入的地址返回值 : 无/*/void ds1302_writed(uchar addr,uchar data) portc&=bit(rtc_cs); /拉低片选端 portb&=bit(rtc_clk); /拉低时
32、钟端 delayns(10); portc|=bit(rtc_cs); /拉高片选端 delayns(10); /调整片选脉冲 ds1302_writeb(addr); /写入操作命令(地址) delayns(10); portb&=bit(rtc_clk); /拉低时钟端 delayns(10); ds1302_writeb(data); /写入数据 portb&=bit(rtc_clk); /拉低时钟端 delayns(10); /调整片选脉冲 portc&=bit(rtc_cs); /拉低片选端/*函数名称: ds1302_sett功 能: 设置ds1302的时间参 数: pttimed
33、-设置时间数组指针返回值 : 无/*/void ds1302_sett(uchar pttimed) uchar i; uchar addr = 0x80; /写入地址从秒寄存器开始 ds1302_writed(c_wp|wr,uprotect); /控制命令,wp位为0,允许写操作delay(5); for(i=0;i7;i+) ds1302_writed(addr|wr,pttimedi); / 秒 分 时 日 月 星期 年 addr+=2;delay(1); ds1302_writed(c_wp|wr,protect); /控制命令,wp位为1,不允许写操作 /*函数名称: ds1302
34、_readb功 能: 从ds1302读出一个字节数据(没有rst操作)参 数: 无返回值 : byte-读出的数据/*/uchar ds1302_readb(void) uchar i,byte=0; ddrb&=bit(rtc_data); /将数据端口设置为输入 portb&=bit(rtc_data); /无上拉电阻 for(i=0;i=1; /保存读入的数据位 portb|=bit(rtc_clk); /时钟上升沿 delayns(10); /延时,调整时钟脉冲宽度 portb&=bit(rtc_clk); /时钟下降沿,ds1302输出数据位 delayns(10); /等待数据变化
35、(mega16太快,必须等待ds1302的数据位输出,否则不能正确读出) if(pinb&bit(rtc_data) /当前位是否是高电平 byte|=bit(pb7); /是高电平就将返回数据的当前位置1 else byte&=bit(pb7); /是低电平就将返回数据的当前位置0 ddrb|=bit(rtc_data); /最后将数据端口设置为输出 return byte; /返回读出的数据 /*函数名称: ds1302_readd功 能: 从ds1302的某个地址读出一个字节数据参 数: addr-地址值(寄存器或ram)返回值 : data-读出的数据/*/uchar ds1302_r
36、eadd(uchar addr) uchar data; portc&=bit(rtc_cs); /拉低片选端 portb&=bit(rtc_clk); /拉低时钟端 delayns(10); portc|=bit(rtc_cs); /拉高片选端 delayns(10); /调整片选脉冲 ds1302_writeb(addr); /写入操作命令(地址) delayns(10); data=ds1302_readb(); /读出数据 delayns(10); portb&=bit(rtc_clk); /拉低时钟端 portc&=bit(rtc_cs); /拉低片选端 return data; /
37、返回读出的数据/*函数名称: ds1302_gett功 能: 读取ds1302的当前时间参 数: time-读取的时间数组返回值 : 无/*/void ds1302_gett(uchar time) uchar i; delayns(10); portc|=bit(rtc_cs); /拉高片选端 delayns(10); /调整片选脉冲 ds1302_writeb(0xbf); / 0xbf:时钟多字节读取命令 for (i=0;i8;i+) /时间数据的存放格式是: /秒,分,时,日,月,星期,年,控制 timei=ds1302_readb(); /【7个数据(bcd格式)+1个控制】 po
38、rtc&=bit(rtc_cs); /拉低片选端 portb&=bit(rtc_clk); /拉低时钟端(时钟端在不操作时为低)/*函数名称: display功 能: 读取ds1302的当前时间参 数: time-读取的时间数组返回值 : 无/*/void display(uchar add,uchar dat) lcd1602_write_com(add); delay(2); lcd1602_write_dat(dat); delay(2);/*函数名称: key_press功 能: 检测是否有键按下参 数: 无返回值 : 键按下时为1,否则为0/*/uchar key_press() u
39、char temp;key_out;key_out_h;key_in;temp=key_data;temp&=0xf8;if(temp=0xf8) return 0;else return 1;/*函数名称: key_scan功 能: 检测是哪个键按下参 数: 无返回值 : key/*/uchar key_scan() uchar key; delay(10);if(key_press()key=key_data;key&=0xf8;switch(key) case 0x78: key=0x0; break; case 0xb8: key=0x1; break; case 0xd8: key=0x2; break; case 0xe8: key=0x3; portb&=bit(4); portb&=bit(6); break; case 0xf0: key=0x4; break; default: key=16; while(key_press();else key=16;return key;/*主函数*/void main() uchar i=1,j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024网络安全防护与监测服务合同
- 2024离婚双方的特殊财产(如古董、艺术品)分配合同
- 2025年度住宅小区虫鼠害预防与治理专项服务合同模板4篇
- 2025年度安全生产应急预案编制合同规范3篇
- 2025年度新能源汽车销售代理及售后服务合同3篇
- 2025年度智慧停车系统车位租赁管理合同样本4篇
- 2025年度出租车公司车辆更新改造升级合同3篇
- 2025年度现代农业示范区场地平整与灌溉系统建设合同3篇
- 2025年度特色菜肴研发及厨师团队聘用协议4篇
- 2025年度数据中心专用电缆供应与安装服务合同范本4篇
- 鸡鸭屠宰生产企业安全风险分级管控资料
- 高中物理必修一第六节共点力的平衡条件及其应用课件
- 2020版曼昆版宏观经济学(第十版)课件第3章
- 医院感染管理组织架构图
- 《工程招投标与合同管理》题库试题及答案 共5套试卷
- 离子色谱法分析氯化物原始记录 (1)
- 高等数学说课稿PPT课件(PPT 49页)
- 造影剂肾病概述和性质
- 单片机交通灯系统设计报告
- 标杆房企人力资源体系研究之龙湖
- 招商部人员绩效考核办法最全方案
评论
0/150
提交评论