欢迎来到天天文库
浏览记录
ID:9184599
大小:151.00 KB
页数:15页
时间:2018-04-20
《单片机大作业整理文档》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、单片机设计技术课程实验作业学院机械与汽车工程学院专业过程装备与控制工程(轻机)学生姓名曾嘉伟陆灏彦学生学号39指导教师钟汉如日期2014.12.415目录1、程序功能描述………………………………………………………………………………22、程序流程框图………………………………………………………………………………23、程序…………………………………………………………………………………………31)主程序…………………………………………………………………………………32)头文件…………………………………………………………………………………53)子程序………………………………………………………………
2、…………………71、程序功能描述硬件接口:(PTD0-3接灯泡)程序开始执行后,4个灯泡按键盘按的数字来亮起。按键盘数字时,灯按照数字对应的二进制亮起,二进制中0表示不亮,1表示亮起。例如,按下键盘“9”时,它对应的二进制为1001,所以第一个灯和第四个灯亮起。键盘和LCD组成计算器,可以满足两个数间的加减乘除。同时在LCD上显示运算过程和结果。例如,在键盘上按下“2+3=”的操作,LCD上显示“2+3=5”。在用数字进行加减乘除运算时,数字对应的灯也会同时亮起。2、程序流程框图液晶显示器上显示运算过程及结果按下键盘数字时,灯按照数字对应的二进制亮起按下键盘进行两个数的加减乘除操作153
3、、程序3.1主程序/*-------------------键盘中断输入运算语句控制指示灯亮和LCD显示--------------------------**文件名:Keyboard.c**硬件连接:PTA.7-4接键盘4根列线,PTA.3-0接键盘4根行线**PTD0-3连接4盏灯泡**程序描述:按下键盘数字时,得到相应的算式及结果**灯按照数字对应的二进制亮起,液晶显示器上显示运算过程及结果**目的:键盘扫描,键盘中断,键值识别,键盘编码**LCD显示,指示灯**注意:如果键盘插在实验板上排插孔,无须连线,若插在下**排插孔,需手工接线**-------《嵌入式应用技术基础教程》教
4、学实例------------*//*[头文件]*/#include"GP32C.H"#include"KB.h"//键盘中断头文件#defineucharunsignedchar#defineuintunsignedintconstunsignedcharDispalyInit[]="WaitReceiving..Soochow2005.08";//voidlcd_display_char(ucharch);//在指定位置(x,y)显示指定的字符ch,x=0-15,y=0-1voidlcd_display_char(ucharch);//当前光标位置显示指定的字符ch,x=0-15,y
5、=0-1voidlcd_display_int(ucharx,uchary,intval);//指定位置(x,y)显示指定的整数,x=0-15,y=0-1externucharKB_value;/*[主程序]*/voidmain(){ucharval1=0,val2=0,op=0,flag=0;intres;DDRD=0x0f;//PTD的低4位设置为输出asm("SEI");//关总中断KB_Init();LcdInit();INTKBSCR&=~(1<6、value>0)//有新的按键按下{if((KB_value>='0')&&(KB_value<='9')){if(flag==2){flag=0;LcdInit();15}PTD=~(KB_value-'0');if(flag==0)val1=val1*10+KB_value-'0';elseif(flag==1)val2=val2*10+KB_value-'0';lcd_display_char(KB_value);}elseif((KB_value=='+')7、8、(KB_value=='-')9、10、(KB_value=='*')11、12、(KB_value=='/')){lcd_displ13、ay_char(KB_value);flag=1;op=KB_value;}elseif(KB_value=='='){lcd_display_char(KB_value);flag=2;switch(op){case'+':res=val1+val2;break;case'-':res=val1-val2;break;case'*':res=val1*val2;break;case'/':res=val1/val2;break;}
6、value>0)//有新的按键按下{if((KB_value>='0')&&(KB_value<='9')){if(flag==2){flag=0;LcdInit();15}PTD=~(KB_value-'0');if(flag==0)val1=val1*10+KB_value-'0';elseif(flag==1)val2=val2*10+KB_value-'0';lcd_display_char(KB_value);}elseif((KB_value=='+')
7、
8、(KB_value=='-')
9、
10、(KB_value=='*')
11、
12、(KB_value=='/')){lcd_displ
13、ay_char(KB_value);flag=1;op=KB_value;}elseif(KB_value=='='){lcd_display_char(KB_value);flag=2;switch(op){case'+':res=val1+val2;break;case'-':res=val1-val2;break;case'*':res=val1*val2;break;case'/':res=val1/val2;break;}
此文档下载收益归作者所有