您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 单片机开发工程案例解析.doc
  所属分类: C
  开发工具:
  文件大小: 1mb
  下载次数: 0
  上传时间: 2009-12-06
  提 供 者: mcum*****
 详细说明: 包括定时报警器 交通灯 出租车计价器 3.2.2 程序设计(仅供参考的C语言源程序) //晶振:11.0592M T1-250微秒溢出一次 /*变量的定义: show_val_sn,show_val_ew: 显示的值0-59 state_val_sn,state_val_ew: 状态值 南北方向0-绿灯亮;1-黄灯亮;2-红灯亮 T1_cnt: 定时器计数溢出数 cnt_sn,cnt_ew: 倒计时的数值 init_sn[3],init_ew[3] 倒计时 led_seg_code:数码管7段码 */ #include "reg51.h" sbit SN_green=P3^2 ;//南北方向绿灯 sbit SN_yellow=P3^1 ;//南北方向黄灯 sbit SN_red=P3^0 ;//南北方向红灯 sbit EW_green=P3^5 ;//东西方向绿灯 sbit EW_yellow=P3^4 ;//东西方向黄灯 sbit EW_red=P3^3 ;//东西方向红灯 unsigned char data cnt_sn,cnt_ew; unsigned int data T1_cn t; unsigned char data state_val_sn,state_val_ew; char code led_seg_code[10]={0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; char code init_sn[3]={24,4,29}; char code init_ew[3]={29,24,4}; //------------------------ void delay(unsigned int i)//延时 { while(--i); } //------------------------ void led_show(unsigned int u,unsigned int v) { unsigned char i; i=u%10; //暂存个位 P0=led_seg_code[i]; P2=0xbf; delay(100); //延时 i=u%100/10; //暂存十位 P0=led_seg_code[i]; P2=0x7f; delay(100); //延时 i=v%10; //暂存个位 P0=led_seg_code[i]; P2=0xfe; delay(100); //延时 i=v%100/10; //暂存十位 P0=led_seg_code[i]; P2=0xfd; delay(100); //延时 } //------------------------- void timer1() interrupt 3 //T1中断 { T1_cnt++; if(T1_cnt>3999) //如果计数>3999, 计时1s { T1_cnt=0; if (cnt_sn!=0) //南北方向计时 { cnt_sn--; } else { state_val_sn++; if (state_val_sn>2) state_val_sn=0; cnt_sn=init_sn[state_val_sn]; switch (state_val_sn) //根据状态值,刷新各信号灯的状态 { case 0: SN_green=0 ;//南北方向绿灯 SN_yellow=1 ;//南北方向黄灯 SN_red=1 ;//南北方向红灯 break; case 1: SN_green=1 ;//南北方向绿灯 SN_yellow=0 ;//南北方向黄灯 SN_red=1 ;//南北方向红灯 break; case 2:SN_green=1 ;//南北方向绿灯 SN_yellow=1 ;//南北方向黄灯 SN_red=0 ;//南北方向红灯 break; } } if (cnt_ew!=0) //东西方向计时 { cnt_ew--; } else { state_val_ew++; if (state_val_ew>2) state_val_ew=0; cnt_ew=init_ew[state_val_ew]; switch (state_val_ew) //根据状态值,刷新各信号灯的状态 { case 0: EW_green=1 ;//东西方向绿灯 EW_yellow=1;//东西方向黄灯 EW_red=0 ;//东西方向红灯 break; case 1: EW_green=0 ;//东西方向绿灯 EW_yellow=1 ;//东西方向黄灯 EW_red=1 ;//东西方向红灯 break; case 2: EW_green=1 ;//东西方向绿灯 EW_yellow=0 ;//东西方向黄灯 EW_red=1 ;//东西方向红灯 break; } } } } //------------------------- main() {//初始化各变量 cnt_sn=init_sn[0]; cnt_ew=init_ew[0]; T1_cnt=0; state_val_sn=0; //启动后,默认工作在序号为1的状态 state_val_ew=0; //初始化各灯的状态 SN_green=0 ;//南北方向绿灯亮 SN_yellow=1 ;//南北方向黄灯灭 SN_red=1 ;//南北方向红灯灭 EW_green=1 ;//东西方向绿灯灭 EW_yellow=1;//东西方向黄灯灭 EW_red=0 ;//东西方向红灯亮 //初始化51的寄存器 TMOD=0x20;//用T1计时 8位自动装载定时模式 TH1=0x19;//0x4b; //500微秒溢出一次; 250=(256-x)*12/11.0592 -> x= 230.4 TL1=0x19; EA=1; //开中断 ET1=1; TR1=1; //开定时器T1 while(1) { led_show(cnt_sn,cnt_ew);}} //主程序结束 ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: 单片机 c语言
 输入关键字,在本站1000多万海量源码库中尽情搜索: