6总结
经过一周多的努力,终于完成了单片机课程设计,我们小组的题目是基于89C51的温度报警器设计,在经过大量的资料查阅后,我经过比较论证,进行了以AT89C51单片机为微控制器的温度报警器设计。该设计围绕单片机附加了矩阵键盘电路,可以对温度上下限进行设定,增强了该设计的适应性;附加了温度检测模块,液晶模块,蜂鸣器电路分别对温度进行检测和显示,并在温度超出设定值时发声报警。
由于基础和时间有限,在设计过程中存在一些考虑不周的地方,例如在选择显示模块时,只考虑到和数码管相比,液晶具有显示内容丰富,低功耗的特性,在价格上考虑较少,此外,由于程序较复杂,还存在一些可以简化的地方。
总之,通过一个完整的课程设计,让我对所学的单片机知识有了更加深刻的理解和掌握,了解了用C语言对单片机进行编程的方法,此外使我复习了protel画电路图,visio画流程图,从而为以后的毕业设计打下了坚实的基础。
参考文献
[1] 张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:
国防工业出版社,2004
[2]伟福LAB6000系列单片机仿真实验系统使用说明书
[3] 阎石.数字电路技术基础(第五版).北京:高等教育出版社,2006
[ 4] 郭天祥. 新概念51单片机C语言教程.北京:电子工业出版社,2009
16
附录1 系统原理图
S1S9S5S12S1S0S6S23S1S1S7S34033CC23310.2KRPP1RYESE1S1S1S8S451T12V1KRCCMHZ222C3uFVCC161791819311415121387654321UWRRXXP1P1P1P1P1P11RDESE21EAT0T143210T/VPINTINTP1P176501AT89C51PSAENLE/PTXRP2P2P2P2P2P2P2P2P0P0P0P0P0P0P0P0DXD765432107654321029301110282726252423222132333435363738391DU1JUS18222MPERJP1B2GDV0NDATACC1KR3321VCCR44.7K10R5KVVCCCCPNQ1PBUZVZER2019CC15654321QUC1BBPSERRVVG3286LKLAB/WSoCCND4B17
~2TR20VT1ANS1~9V431BRIDGED121-D40.33C4uF1UUVinA74GND2805+5V3V0.1uCCC5F附录2 程序清单
#include
#include
#define uint unsigned int //对无符号整型数据类型进行宏定义 #define uchar unsigned char //对无符号字符型数据类型进行宏定义 sbit P03=P0^3; //对P0口的相关引脚进行位定义 sbit P04=P0^4; sbit P05=P0^5; sbit P06=P0^6; sbit P07=P0^7;
#define rs_1 P03=1 #define rs_0 P03=0 #define rw_1 P04=1 #define rw_0 P04=0 #define en_1 P05=1 #define en_0 P05=0 #define DS_0 P06=0 #define DS_1 P06=1 #define DS_H DS_1 #define DS_L DS_0 uint TEMP_Result,te; uchar table[]={\温度显示\ uint i,a[3],b[3],c[3],l=100,h=300 uchar temp_low,temp_high,num; uchar key,temp;
void delay_us(uint x) { for(i=0;i _nop_(); } //宏定义 rs_1表示寄存数据 //宏定义 rs_0表示寄存指令 // 宏定义 rw_1表示读操作 // 宏定义 rw_0表示写操作 // 宏定义 en_1 表示使能 // 宏定义 en_0 表示禁止 // 设P0.6引脚为低电平 //设P0.6引脚为高电平 //设P0.6引脚为输入 //设P0.6引脚为输出 // 定义整型变量 // 定义无符号字符型数组 // 定义无符号整型变量和数组 //定义无符号字符型变量 //定义us级延时函数 18 uchar keyscan() //定义键盘扫描函数 { /* 扫描第一行 */ P1=0xfe; //将第一行设为低电平,扫描第一行 temp=P1; //读取P1口电平 temp=temp&0xf0; //获取列线电平状态 while(temp!=0xf0) //当有键按下时 { delay_us(5000); //延时5ms消抖 temp=P1; //读取P1口电平 temp=temp&0xf0; //获取列线电平状态 while(temp!=0xf0) //当有键按下时 { } 19 temp=P1; //读取P1口电平 switch(temp) //switch语句获取键值 { } while(temp!=0xf0) //松手检测 { } temp=P1; temp=temp&0xf0; case 0xee: key=1;//若P1口电平为0xee,则得到键值1 break; case 0xde: key=2;//若P1口电平为0xde,则得到键值2 break; case 0xbe: key=3;//若P1口电平为0xbe,则得到键值3 break; case 0x7e: key=4;//若P1口电平为0x7e,则得到键值4 break; } /* 扫描第二行 */ P1=0xfd; temp=P1; temp=temp&0xf0; while(temp!=0xf0) { delay_us(5000); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; switch(temp) { case 0xed: key=5; break; case 0xdd: key=6; break; case 0xbd: key=7; break; case 0x7d: key=8; break; } while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } } } 20 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于51的温度报警器设计 - 图文(4)在线全文阅读。
相关推荐: