ImageVerifierCode 换一换
格式:DOCX , 页数:44 ,大小:277.99KB ,
资源ID:17518092      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17518092.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汽车单片机原理程序复习教学资料Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汽车单片机原理程序复习教学资料Word格式文档下载.docx

1、 P0=_crol_(P0,1); /P0的值向左循环移动03 8只LED左右来回点亮8只LED左右来回点亮程序利用循环移位函数_crol_和_cror_形成来回滚动的效果 P2=0x01;7;i+) P2=_crol_(P2,1); /P2的值向左循环移动 DelayMS(150); P2=_cror_(P2,1); /P2的值向右循环移动04 单只数码管循环显示09/* 名称:单只数码管循环显示09主程序中的循环语句反复将09的段码送至P0口,使数字09循环显示uchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,

2、0x90,0xff; uchar t; while(x-) for(t=0;tt+); uchar i=0; P0=0x00; /* for(;11;i+) P0=DSY_CODEi; DelayMS(300); /注:另一方案 */ P0=DSY_CODEi; i=(i+1)%10; DelayMS(300);05 8只数码管滚动显示单个数字8只数码管滚动显示单个数字数码管从左到右依次滚动显示07,程序通过每次仅循环选通一只数码管uchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; uchar i,wei

3、=0x80;8; P2=0xff; /关闭显示 wei=_crol_(wei,1); P0=DSY_CODEi; /发送数字段码 P2=wei; /发送位码 DelayMS(300);06 8只数码管动态显示多个不同字符电路如上图8只数码管动态显示多个不同字符数码管动态扫描显示07。 /发送段码 DelayMS(2);7 K1-K4 按键状态显示K1-K4 按键状态显示K1、K2按下时LED点亮,松开时熄灭, K3、K4按下并释放时LED点亮,再次按下并释放时熄灭;sbit LED1=P00;sbit LED2=P01;sbit LED3=P02;sbit LED4=P03;sbit K1=P

4、10;sbit K2=P11;sbit K3=P12;sbit K4=P13; while(x-) for(i=0; P0=0xff; P1=0xff; LED1=K1; LED2=K2; if(K3=0) while(K3=0); LED3=LED3; if(K4=0) while(K4=0); LED4=LED4; DelayMS(10);8 开关控制LED开关控制LED开关S1和S2分别控制LED1和LED2。sbit S1=P10;sbit S2=P11; LED1=S1; LED2=S2;9 按键发音按键发音按下不同的按键会是SOUNDER发出不同频率的声音。本例使用延时函数实现不同

5、频率的声音输出,以后也可使用定时器sbit BEEP=P37;sbit K1=P14;sbit K2=P15;sbit K3=P16;sbit K4=P17;/按周期t发音void Play(uchar t) for(i=0;100; BEEP=BEEP; DelayMS(t); BEEP=0; if(K1=0) Play(1); if(K2=0) Play(2); if(K3=0) Play(3); if(K4=0) Play(4);10 INT0中断计数 INT0中断计数 每次按下计数键时触发INT0中断,中断程序累加计数, 计数值显示在3只数码管上,按下清零键时数码管清零/09的段码uc

6、har code DSY_CODE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;/计数值分解后各个待显示的数位uchar DSY_Buffer=0,0,0;uchar Count=0;sbit Clear_Key=P36;/数码管上显示计数值void Show_Count_ON_DSY() DSY_Buffer2=Count/100; /获取3个数 DSY_Buffer1=Count%100/10; DSY_Buffer0=Count%10; if(DSY_Buffer2=0) /高位为0时不显示 DSY_Buffer2=0x0

7、a; if(DSY_Buffer1=0) /高位为0,若第二位为0同样不显示 DSY_Buffer1=0x0a; P0=DSY_CODEDSY_Buffer0; P1=DSY_CODEDSY_Buffer1; P2=DSY_CODEDSY_Buffer2; P1=0x00; P2=0x00; IE=0x81; /允许INT0中断 IT0=1; /下降沿触发 if(Clear_Key=0) Count=0; /清0 Show_Count_ON_DSY();/INT0中断函数void EX_INT0() interrupt 0 Count+; /计数值递增11 外部INT0中断控制LED 外部IN

8、T0中断控制LED 说明:每次按键都会触发INT0中断,中断发生时将LED状态取反,产生LED状态由按键控制的效果sbit LED=P00; LED=1; EA=1; EX0=1; while(1); LED=LED; /控制LED亮灭12 定时器控制单只LED定时器控制单只LED LED在定时器的中断例程控制下不断闪烁。 uchar T_Count=0; TMOD=0x00; /定时器0工作方式0 TH0=(8192-5000)/32; /5ms定时 TL0=(8192-5000)%32; IE=0x82; /允许T0中断 TR0=1;/T0中断函数void LED_Flash() inte

9、rrupt 1 /恢复初值 if(+T_Count=100) /0.5s开关一次LED T_Count=0; 13 定时器控制4个LED滚动闪烁定时器控制4个LED滚动闪烁 4只LED在定时器控制下滚动闪烁。sbit B1=P00;sbit G1=P01;sbit R1=P02;sbit Y1=P03;uint i,j,k; i=j=k=0; TMOD=0x02; /定时器0工作方式2 TH0=256-200; /200us定时 TL0=256-200; /启动定时器void LED_Flash_and_Scroll() interrupt 1 if(+k35) return; /定时中断若干

10、次后执行闪烁 k=0; switch(i) case 0: B1=B1;break; case 1: G1=G1; case 2: R1=R1; case 3: Y1=Y1; default:i=0; if(+j300) return; /每次闪烁持续一段时间 j=0; i+; /切换到下一个LED14 10s的秒表10s的秒表首次按键计时开始,再次按键暂停,第三次按键清零。sbit K1=P37;uchar i,Second_Counts,Key_Flag_Idx;bit Key_State;uchar DSY_CODE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

11、0x07,0x7f,0x6f;void DelayMS(uint ms) while(ms-) for(t=0;/处理按键事件void Key_Event_Handle() if(Key_State=0) Key_Flag_Idx=(Key_Flag_Idx+1)%3; switch(Key_Flag_Idx) case 1:ET0=1;TR0=1; case 2: EA=0;ET0=0;TR0=0; case 0: P0=0x3f;P2=0x3f;Second_Counts=0; /显示00 P2=0x3f; i=0; Second_Counts=0; Key_Flag_Idx=0; /按键

12、次数(取值0,1,2,3) Key_State=1; /按键状态 TMOD=0x01; /定时器0方式1 TH0=(65536-50000)/256; /定时器0:15ms TL0=(65536-50000)%256; if(Key_State!=K1) DelayMS(10); Key_State=K1; Key_Event_Handle();void DSY_Refresh() interrupt 1 /恢复定时器0初值 if(+i=2) /50ms*2=0.1s转换状态 i=0; Second_Counts+; P0=DSY_CODESecond_Counts/10; P2=DSY_CO

13、DESecond_Counts%10; if(Second_Counts=100) Second_Counts=0; /满100(10s)后显示0015 用计数器中断实现100以内的按键计数用计数器中断实现100以内的按键计数本例用T0计数器中断实现按键技术,由于计数寄存器初值为1,因此 P3.4引脚的每次负跳变都会触发T0中断,实现计数值累加。 计数器的清零用外部中断0控制。/段码 TMOD=0x06; /计数器T0方式2 TH0=TL0=256-1; /计数值为1 ET0=1; /允许T0中断 /允许INT0中断 /允许CPU中断 IP=0x02; /设置优先级,T0高于INT0 /INT

14、0中断触发方式为下降沿触发 /启动T0 P0=DSY_CODECount/10; P2=DSY_CODECount%10;/T0计数器中断函数void Key_Counter() interrupt 1 Count=(Count+1)%100; /因为只有两位数码管,计数控制在100以内(0099)void Clear_Counter() interrupt 0 Count=0;16 定时器控制交通指示灯定时器控制交通指示灯东西向绿灯亮5s后,黄灯闪烁,闪烁5次亮红灯, 红灯亮后,南北向由红灯变成绿灯,5s后南北向黄灯闪烁, 闪烁5次后亮红灯,东西向绿灯亮,如此往复。sbit RED_A=P0

15、0; /东西向指示灯sbit YELLOW_A=P01;sbit GREEN_A=P02;sbit RED_B=P03; /南北向指示灯sbit YELLOW_B=P04;sbit GREEN_B=P05;/延时倍数,闪烁次数,操作类型变量uchar Time_Count=0,Flash_Count=0,Operation_Type=1;/定时器0中断函数void T0_INT() interrupt 1 TL0=-50000/256; TH0=-50000%256; switch(Operation_Type) /东西向绿灯与南北向红灯亮5s RED_A=0;YELLOW_A=0;GREEN

16、_A=1; RED_B=1;YELLOW_B=0;GREEN_B=0; if(+Time_Count!=100) return; /5s(100*50ms)切换 Time_Count=0; Operation_Type=2; break; /东西向黄灯开始闪烁,绿灯关闭=8) return; YELLOW_A=YELLOW_A;GREEN_A=0; if(+Flash_Count!=10) return; /闪烁 Flash_Count=0; Operation_Type=3; /东西向红灯与南北向绿灯亮5s RED_A=1; RED_B=0;GREEN_B=1; Operation_Type=4; case 4: /南北向黄灯开始闪烁,绿灯关闭 YELLOW_B=YELLOW_B; Fl

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1