




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上2基本输入输出实验(蜂鸣器控制程序)/*名称:基本输入输出(I/O)程序说 明:*/#include<STC12c5A32s2.h>/包含头文件#define uint unsigned int /宏定义#define uchar unsigned char sbit buzzer=P35;sbit Keyadd=P20;sbit Keydec=P21;sbit Keycom=P22; void Delay(uint z)uint x;uchar y;for(x=z;x>0;x-)/延时 for(y=250;y>0;y-);void main(
2、void) uchar voice; voice=3; while(1) if(Keyadd=0)/按键被按下时为0voice=1;if(Keydec=0)voice=2;if(Keycom=0)voice=3;if(voice=1)buzzer=buzzer; Delay(1);else if(voice=2)buzzer=buzzer; Delay(20);elsebuzzer=1; 3定时器中断实验/*名称:实验三作业说 明:*/#include<STC12c5A32s2.h>/包含头文件#define uint unsigned int /宏定义#define uchar
3、unsigned char uchar counter;uchar voice;sbit buzzer=P35;sbit Keyadd=P20;sbit Keydec=P21;sbit Keycom=P22;sbit Keycan=P23;/-计算计数器初值-/#define T0_TIME1254 /定时时间us为单位#define T0ReLoadL1 (65536-(uint)(T0_TIME1*11.0592/12) % 256)#define T0ReLoadH1 (65536-(uint)(T0_TIME1*11.0592/12) / 256) /-计算计数器初值-/#define
4、 T0_TIME21400 /定时时间us为单位#define T0ReLoadL2 (65536-(uint)(T0_TIME2*11.0592/12) % 256)#define T0ReLoadH2 (65536-(uint)(T0_TIME2 *11.0592/12) / 256)/*名称:主程序说明:*/void main(void)/-初始化TIMER0 TMOD|=0x01;/定时器T0方式1TH0 =T0ReLoadH1;/装载计数器初值 TL0 =T0ReLoadL1;TR0 =1;/启动Timer0ET0 =1;/Timer0中断使能EA =1;/总开关使能/-大循环cou
5、nter=0;while(1)if(Keyadd=0)/按键被按下时为0voice=1;if(Keydec=0)voice=2;if(Keycom=0)voice=3;/*名称:Timer0中断服务子程序功能:产生10ms定时中断*/void Timer0_Int(void) interrupt1if(voice=1) TH0=T0ReLoadH1;/重装载计数器初值 TL0=T0ReLoadL1; buzzer=buzzer;if(voice=2) TH0=T0ReLoadH2; TL0=T0ReLoadL2; buzzer=buzzer;if(voice=3) 4 LED数码管动态扫描显示
6、实验#include<STC12c5A32s2.h>#define uint unsignedint#define uchar unsignedchar/-LED显示代码-/ bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0/ dp G C D E F B Auchar code seg10=0x3f,0x22,0x5b,0x73,0x66,/0,1,2,3,40x75,0x7d,0x23,0x7f,0x77,;/5,6,7,8,9ucharidatadis_buff_14;/第一行 LED显示缓冲ucharidatadis_buff_24;/第二行
7、LED显示缓冲ucharcounter;sbitU4_HC574_CP=P10;/S3 显示锁存74HC574脉冲sbitU5_HC574_CP=P11; /S4 显示锁存74HC574脉冲#define T0_TIME10000 /定时时间us为单位#define T0ReLoadL (65536-(uint)(T0_TIME*11.0592/12) % 256)#define T0ReLoadH (65536-(uint)(T0_TIME*11.0592/12) / 256)/*名称:数码管显示驱动子程序说明:*/void Display(void)uchardatai,j,k,temp0
8、0;temp00=0x20; for(i=0;i<4;i+)P1 |= 0x3C;/关所有扫描位P0=dis_buff_1i;U4_HC574_CP=0;U4_HC574_CP=1;/S3显示锁存74HC574脉冲 上升沿P0=dis_buff_2i;U5_HC574_CP=0;U5_HC574_CP=1;/S4显示锁存74HC574脉冲 上升沿P1 &= (temp00);/送扫描位for(j=0;j<20;j+)/延时 for(k=0;k<20;k+); temp00>>=1;/扫描位移位P1|=0x3C;/关所有扫描位/*名称:主程序*/void m
9、ain(void)uchardatabai,shi,ge;uintdataNum;uchardatatemp00;TMOD|=0x01;/定时器T0方式1TH0 =T0ReLoadH;/装载计数器初值 TL0 =T0ReLoadL;TR0 =1;/启动Timer0ET0 =1;/Timer0中断使能EA =1;/总开关使能counter=0;Num=999;for(;)bai=Num/100;temp00=Num-bai*100;shi=temp00/10;ge =temp00-shi*10;dis_buff_10=0;dis_buff_11=0;dis_buff_12=0;dis_buff_
10、13=0;dis_buff_20=0;dis_buff_21=segbai;dis_buff_22=segshi;dis_buff_23=segge;if(counter=100) counter=0;Num-;if(Num=0)Num=999;Display();/调用LED数码管显示子程序void Timer0_Int(void) interrupt1 TH0=T0ReLoadH;/重装载计数器初值 TL0=T0ReLoadL;counter+;5实时时钟与温度传感器实验(只需main()部分代码)void main(void)uchar Hour,Min,Sec;/-初始化TIMER0
11、TMOD|=0x01;/定时器T0方式1TH0 =T0ReLoadH;/装载计数器初值 TL0 =T0ReLoadL;TR0 =1;/启动Timer0ET0 =1;/Timer0中断使能EA =1;/总开关使能counter=0;/-大循环WR_DS1302(0x8e,0X00);WR_DS1302(0x84,0X14);WR_DS1302(0x82,0X43);WR_DS1302(0x80,0X00);WR_DS1302(0x8e,0X80);for(;) Hour=RD_DS1302(0x85); Min=RD_DS1302(0x83); Sec=RD_DS1302(0x81); dis_
12、buff_10=segHour>>4;if(counter<=49)dis_buff_11=segHour&0x0f|0x80;else if(counter<=99)dis_buff_11=segHour&0x0f;else if(counter=100)counter=0;dis_buff_12=segMin>>4;dis_buff_13=segMin&0x0f;dis_buff_20=0;dis_buff_21=0;dis_buff_22=segSec>>4;dis_buff_23=segSec&0x0f;
13、Display();6 74HC595串行输入实验#include <intrins.h>/ use _nop_() function#include<STC12c5A32s2.h>#define uint unsignedint#define uchar unsignedcharucharcounter;/-计算计数器初值-/#define T0_TIME10000 /定时时间us为单位#define T0ReLoadL (65536-(uint)(T0_TIME*11.0592/12) % 256)#define T0ReLoadH (65536-(uint)(T0
14、_TIME*11.0592/12) / 256)uchar bdata HC595_buff2; /交通灯控制1的位寻址变量sbitHC595RegCLK=P25;/4hc595锁存时钟 输出sbitHC595S_Data=P26;/74hc595串行数据 输出sbitHC595ShiftCLK=P27;/74hc595串行移位时钟 输出 /*名称:WR_74HC595说明:向2片74HC595写入2字节数据(HC595_buff)*/void WR_74HC595(void)uchar i,j,k,temp00;HC595RegCLK = 0; /锁存线置“低” HC595ShiftCLK
15、= 0;/HC595.CLK =0for(i=0;i<2;i+) k=0X80;temp00=HC595_buff1-i; for(j=0;j<8;j+) if(temp00 & k) HC595S_Data = 1;/HC595.SDA elseHC595S_Data = 0; HC595ShiftCLK = 1;/产生上升沿,移入数据 k >>= 1;/k右移一位 HC595ShiftCLK = 0;/HC595.CLK HC595RegCLK = 1; /产生上升沿,锁存数据void Timer0_Int(void) interrupt1 TH0=T0Re
16、LoadH;/重装载计数器初值 TL0=T0ReLoadL;counter+;/*名称:主程序说明:main主函数放在所有子程序的后面,自称无需声明定义*/void main(void)uchar CN,i;CN=0;HC595_buff0=0x00;HC595_buff1=0x00;/-初始化TIMER0 TMOD|=0x01;/定时器T0方式1TH0 =T0ReLoadH;/装载计数器初值 TL0 =T0ReLoadL;TR0 =1;/启动Timer0ET0 =1;/Timer0中断使能EA =1;/总开关使能counter=0;for(;) if(CN<10) if(counter
17、=50) counter=0; HC595_buff0=HC595_buff0; HC595_buff1=HC595_buff1; CN+; counter=0; i=0;if(CN=10)HC595_buff0=0x00; HC595_buff1=0x08;else if(CN=10) if(counter=10) i+;counter=0;if(i<4) HC595_buff1>>=1; else if (i=4) HC595_buff0=0x80; HC595_buff1=0x00; else if(i<12) HC595_buff0>>=1; els
18、e if(i=12) i=0; HC595_buff0=0x00; HC595_buff1=0x08;WR_74HC595(); 7交通信号灯控制实验(仅需TraficLighter_ctrl()子程序部分代码)void TraficLighter_ctrl(void)switch(TraficLighter_state) case 0: /初始化状态,两个方向都为红灯5秒钟if(timer_count1=50) timer_count1=0; HC595_buff0=HC595_buff0; HC595_buff1=HC595_buff1;if (timer_count0=0) Trafic
19、Lighter_state=1;timer_count0=30;HC595_buff0=0;HC595_buff1=0;break;case 1:/状态1,南北方向红灯,东西绿灯East_Green=1;West_Green=1;North_Red=1;South_Red=1;if(timer_count0=0) TraficLighter_state=2;timer_count0=5;HC595_buff0=0;HC595_buff1=0;break;case 2:/状态2,南北方向红,东西黄灯闪烁 South_Red=1; North_Red=1; if(timer_count1=50)
20、timer_count1=0; East_Yellow=East_Yellow; West_Yellow=West_Yellow;if(timer_count0=0) TraficLighter_state=3;timer_count0=50;HC595_buff0=0;HC595_buff1=0;break;case 3:/状态3,南北方向绿灯,东西红灯East_Red=1;West_Red=1;North_Green=1;South_Green=1;if(timer_count0=0) TraficLighter_state=4;timer_count0=5;HC595_buff0=0;H
21、C595_buff1=0; break;case 4:/状态4,东西方向红,南北黄灯闪烁 East_Red=1; West_Red=1; if(timer_count1=50) timer_count1=0; South_Yellow=South_Yellow; North_Yellow=North_Yellow;if(timer_count0=0) TraficLighter_state=1;timer_count0=5;HC595_buff0=0;HC595_buff1=0;break;8 UART串口通讯实验#include<STC12c5A32s2.h>/包含头文件#define uint unsigned int /宏定义#define uchar unsigned char uchar Rec_No; uchar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能电池管理系统设计与应用研究-洞察阐释
- 网络平台数据安全服务合同协议
- 旅游景区特色摊位长期租赁转让合同
- 小学五年级红领巾广播稿
- 茶叶品牌加盟店管理合作协议
- 高新技术产品采购合同中知识产权专属条款
- 2025船舶买卖合同协议书范本
- 2025餐饮设备采购与安装合同书
- 2025新软件定制开发合同范本
- 对口第七类面试题目及答案
- 血液透析患者饮食指导
- 脱硫塔玻璃鳞片胶泥衬里施工组织设计
- XB/T 505-2011汽油车排气净化催化剂载体
- GB/T 3672.2-2002橡胶制品的公差第2部分:几何公差
- GB/T 27744-2021异步起动永磁同步电动机技术条件及能效分级(机座号80~355)
- GB 8076-2008混凝土外加剂
- 宝盾转门故障代码
- 【课件】草原上的小木屋
- DB63-T 241-2021草地毒害草综合治理技术规范
- 高层建筑施工基坑工程勘察及支护结构选型培训
- 四年级上册音乐课件-活动 欢腾的那达慕 人教版(简谱) (共17张PPT)
评论
0/150
提交评论