欢迎来到天天文库
浏览记录
ID:39284096
大小:100.00 KB
页数:11页
时间:2019-06-29
《单片机实验报告格式8》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、洛阳理工学院实验报告系别计算机系班级B110508学号B110508姓名课程名称单片机原理及应用实验日期2013.11.1实验名称智能仪器成绩实验目的:熟悉proteus仿真软件,掌握单片机原理图的绘图方法实验条件:一台装有Proteus软件的电脑实验原理:选用一只六联共阴极数码管作为显示器,按照动态显示器原理接线;A/D转换器采用ADC0809;采用查询法等待转换结束,转换时钟利用定时器中断产生;四个面板按键通过8位串行输入并行输出移位寄存器74LS164与单片机接口,其移位时钟端与单片机的TXD引脚相连,串行数据端与单片机额RXD
2、引脚相连。实验内容:(1)熟悉ISIS模块的C51程序编程,编译与调试过程;(2)学习ISIS模块的使用方法,学会设置图纸,选元件、画导线、修改属性等基本操作;(3)完成实验的程序设计与编译;(4)理解proteus在单片机开发中的作用,完成单片机电路原理图的绘制实验步骤:(1)在KeiluVision3中编写和编译C51程序,生成可执行文件;(2)提前阅读与实验相关的阅读资料;(3)在uVision3中启动ISIS的仿真运行,并进行联机调试。实验结果:(1)实验编译调试程序为:1)Main.c文件voidad_init();void
3、control_thread();voidmenu_thread();voidmain(){ad_init();while(1){menu_thread();control_thread();}}1)Control.c文件#includesbitP16=P1^6;sbitP17=P1^7;unsignedcharad();voidprint(charname,unsignedintvalue);externunsignedcharparam_value[2];externcharmenu_status;voidcon
4、trol_thread(){//第1步:A/D转换unsignedcharvalue=ad();//第2步:根据采样值控制LED灯if(value>param_value[1]){P16=0;P17=1;}elseif(value<=param_value[1]&&value>=param_value[0]){P16=0;P17=0;}else{P16=1;P17=0;}//第3步:如果菜单是关闭的,显示采集到的数值if(menu_status==1){print('',value);}}1)Menu.c文件#defineMENU_O
5、N0#defineMENU_OFF1#defineMENU_NUM2#defineMENU_MAX999#defineMENU_MIN0unsignedcharparam_value[]={100,150};unsignedcharmenu_status=MENU_OFF;char_menu_name[]={'L','H'};//参数名的符号unsignedchar_menu_value[]={0,0};//供显示用的参数数组unsignedchar_menu_idx=0;//参数序号charget_key();voidprint(c
6、harname,unsignedintvalue);voidmenu_thread(void){chari=0;charkey=get_key();if(menu_status==MENU_OFF){//当前菜单为关闭状态时if(key==0){//若按键0已被按下menu_status=MENU_ON;//置当前菜单为打开状态_menu_idx=0;//设置参数序号0//将所有参数当前值取出,送入供显示的参数数组中for(i=0;i7、e{//如果当前菜单为打开状态,则进行以下操作:if(key==0){//若按键0按下,则不保存键值,仅切换到下一个参数if(++_menu_idx==MENU_NUM){//判断是否所有参数都循环到了menu_status=MENU_OFF;//若已循环完成,设置菜单关闭状态}}elseif(key==1){//若按键1按下,则保存键值,并切换到下一个参数param_value[_menu_idx]=_menu_value[_menu_idx];if(++_menu_idx==MENU_NUM){menu_status=MENU_O8、FF;}}elseif(key==2){//若按键2按下,则参数值加10_menu_value[_menu_idx]+=10;if(_menu_value[_menu_idx]>MENU_MAX){_menu_value
7、e{//如果当前菜单为打开状态,则进行以下操作:if(key==0){//若按键0按下,则不保存键值,仅切换到下一个参数if(++_menu_idx==MENU_NUM){//判断是否所有参数都循环到了menu_status=MENU_OFF;//若已循环完成,设置菜单关闭状态}}elseif(key==1){//若按键1按下,则保存键值,并切换到下一个参数param_value[_menu_idx]=_menu_value[_menu_idx];if(++_menu_idx==MENU_NUM){menu_status=MENU_O
8、FF;}}elseif(key==2){//若按键2按下,则参数值加10_menu_value[_menu_idx]+=10;if(_menu_value[_menu_idx]>MENU_MAX){_menu_value
此文档下载收益归作者所有