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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

天狼星51AVR课上程序代码.docx

1、天狼星51AVR课上程序代码51篇51单片机第二十课 PS2键盘键值解码 所属类别: 课程代码 发布日期: 2011-03-05 点击量: 383 #include#define uchar unsigned char #define uint unsigned int sbit psdata=P30;sbit psclk=P32;uchar numbit;uchar keyv;uchar key3;uchar keynum;uchar m,n;unsigned char code smg_du=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f

2、,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00;unsigned char code smg_we=0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78;/*/延时函数,在12MHz的晶振频率下/大约50us的延时/*void delay_50us(uint t) uchar j; for(;t0;t-) for(j=19;j0;j-);/*/延时函数,在12MHz的晶振频率下/大约50ms的延时/*void delay_50ms(uint t) uint j; for(;t0;t-) for(j=6245;j0;j-);void main()

3、 IT0=1; /外部中断下降沿触发 EX0=1; /打开外部中断0 EA=1; /打开总中断 while(1) if(keynum=3) keynum=0; /0x1c n=key0/16; m=key0%16; P1=smg_dum; P2=smg_we0; delay_50us(20); P1=smg_dun; P2=smg_we1; delay_50us(20); void int0 () interrupt 0 if(numbit0)&(numbit keyv=keyv1; /001000000 if(psdata) keyv=keyv | 0x80; /10000000 /01 n

4、umbit+; /0 if(numbit10) numbit=0; keykeynum=keyv; keynum+; 51单片机第二十三课 实时时钟芯片DS1302的读写 所属类别: 课程代码 发布日期: 2011-03-05 点击量: 531 #include#include #define uchar unsigned char #define uint unsigned int sbit sck=P10;sbit io=P11;sbit rst=P36;sbit smgen=P23;unsigned char code smg_du=0x3f,0x06,0x5b,0x4f,0x66,0x

5、6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x10;unsigned char code smg_we=0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78;uchar time_data7=10,6,4,17,11,58,30; /年周月日时分秒uchar write_add7=0x8c,0x8a,0x88,0x86,0x84,0x82,0x80;uchar read_add7=0x8d,0x8b,0x89,0x87,0x85,0x83,0x81;uchar disp8;void write_

6、ds1302_byte(uchar dat);void write_ds1302(uchar add,uchar dat);uchar read_ds1302(uchar add);void set_rtc(void);void read_rtc(void);void time_pros(void);void display(void);/*/延时函数,在12MHz的晶振频率下/大约50us的延时/*void delay_50us(uint t) uchar j; for(;t0;t-) for(j=19;j0;j-);/*/延时函数,在12MHz的晶振频率下/大约50ms的延时/*void

7、delay_50ms(uint t) uint j; for(;t0;t-) for(j=6245;j0;j-);void write_ds1302_byte(uchar dat) uchar i; for(i=0;i1; sck=1; void write_ds1302(uchar add,uchar dat) rst=0; _nop_(); sck=0;_nop_(); rst=1; _nop_(); write_ds1302_byte(add); write_ds1302_byte(dat); rst=0; _nop_(); io=1; sck=1;uchar read_ds1302(u

8、char add) uchar i,value; rst=0; _nop_(); sck=0; _nop_(); rst=1; _nop_(); write_ds1302_byte(add); for(i=0;i1; sck=0; if(io) value=value|0x80; sck=1; rst=0; _nop_(); sck=0; _nop_(); sck=1; io=1; return value;void set_rtc(void) uchar i,j; for(i=0;i7;i+) j=time_datai/10; time_datai=time_datai%10; time_d

9、atai=time_datai+j*16; write_ds1302(0x8e,0x00); /去除写保护 for(i=0;i7;i+) write_ds1302(write_addi,time_datai); write_ds1302(0x8e,0x80); /加写保护void read_rtc(void) uchar i; for(i=0;i7;i+) time_datai=read_ds1302(read_addi); void time_pros(void) disp0=time_data6%16; disp1=time_data6/16; disp2=16; disp3=time_d

10、ata5%16; disp4=time_data5/16; disp5=16; disp6=time_data4%16; disp7=time_data4/16; void display(void) uchar i; for(i=0;i8;i+) P1=smg_dudispi; P2=smg_wei; delay_50us(20); void main(void) set_rtc(); delay_50us(20); while(1) smgen=0; rst=1; read_rtc(); rst=0; time_pros(); smgen=1; display(); smgen=0; 51

11、单片机第二十四课 数字温度传感器DS18B20测温 所属类别: 课程代码 发布日期: 2011-03-05 点击量: 506 #include#define uchar unsigned char #define uint unsigned int sbit DQ=P22;sbit smg1=P24;sbit smg2=P25;sbit smg3=P26;uchar temp;unsigned char code smg_du=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00

12、;unsigned char code smg_we=0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78;void init_ds18b20(void);void delay(uint t);void write_byte(uchar dat);uchar read_byte(void);uchar readtemperature(void);void display(void);/*/延时函数,在12MHz的晶振频率下/大约50us的延时/*void delay_50us(uint t) uchar j; for(;t0;t-) for(j=19;j0;j-);v

13、oid main(void) while(1) temp=readtemperature(); display(); void delay(uint t) while(t-); void init_ds18b20(void) uchar n; DQ=1; delay(8); DQ=0; delay(80); DQ=1; delay(8); n=DQ; delay(4);void write_byte(uchar dat) uchar i; for(i=0;i=1; delay(4);uchar read_byte(void) uchar i,value; for(i=0;i=1; DQ=1;

14、if(DQ) value|=0x80; delay(4); return value;uchar readtemperature(void) uchar a,b; init_ds18b20(); write_byte(0xcc); /跳过ROM write_byte(0x44); /启动温度测量 delay(300); init_ds18b20(); write_byte(0xcc); write_byte(0xbe); a=read_byte(); b=read_byte(); b4; return b;void display(void) smg3=0; smg2=0; smg1=0; P

15、1=smg_dutemp%10; delay_50us(20); smg2=0; smg1=1; P1=smg_dutemp/10; delay_50us(20); 51单片机第二十一课 红外遥控解码程序设计 所属类别: 课程代码 发布日期: 2011-03-05 点击量: 504 #include#define uchar unsigned char #define uint unsigned int unsigned char code smg_du=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,

16、0x79,0x71,0x00;unsigned char code smg_we=0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78;uchar irtime;uchar startflag;uchar irdata33;uchar bitnum;uchar irreceok;uchar ircode4;uchar irprosok;uchar disp8;/*/延时函数,在12MHz的晶振频率下/大约50us的延时/*void delay_50us(uint t) uchar j; for(;t0;t-) for(j=19;j0;j-);/*/延时函数,在12MH

17、z的晶振频率下/大约50ms的延时/*void delay_50ms(uint t) uint j; for(;t0;t-) for(j=6245;j0;j-);void timer0init(void) TMOD=0x02; TH0=0x00; TL0=0x00; ET0=1; EA=1; TR0=1;void int0init(void) IT0=1; EX0=1; EA=1;void irwork(void) disp0=ircode0/16; disp1=ircode0%16; disp2=ircode1/16; disp3=ircode1%16; disp4=ircode2/16;

18、disp5=ircode2%16; disp6=ircode3/16; disp7=ircode3%16; void display(void) uchar i; for(i=0;i8;i+) P1=smg_dudispi; P2=smg_wei; delay_50us(20); void irpros(void) /0x1c uchar k,i,j; uchar value; k=1; for(j=0;j4;j+) for(i=0;i1; /7 if(irdatak6) /8 value=value | 0x80; k+; ircodej=value; irprosok=1;void mai

19、n() timer0init(); int0init(); while(1) if(irreceok) irpros(); irreceok=0; if(irprosok) irwork(); irprosok=0; display(); void timer0 () interrupt 1 irtime+; /255void int0 () interrupt 0 if(startflag) if(irtime32) /检测引导码 bitnum=0; irdatabitnum=irtime; irtime=0; bitnum+; if(bitnum=33) bitnum=0; irreceo

20、k=1; else startflag=1; irtime=0; 51单片机第十六课 串口数据收发实验 所属类别: 课程代码 发布日期: 2011-03-05 点击量: 358 #include unsigned char a;unsigned char flag;void main() TMOD=0x20; /设置定时器1为方式2 TH1=0xfd; /装入初值 TL1=0xfd; TR1=1; /启动定时器1 SM0=0; SM1=1; /设置串口为方式1 REN=1; /接受使能 EA=1; /打开总中断开关 ES=1; /打开串口中断开关 while(1) if(flag=1) ES=

21、0; flag=0; SBUF=a; while(!TI); /等待数据发送结束 TI=0; ES=1; void serial() interrupt 4 a=SBUF; P1=a; RI=0; flag=1; /标志位51单片机第十七课 字符液晶LCD1602显示 所属类别: 课程代码 发布日期: 2011-03-05 点击量: 436 #include#define uchar unsigned char #define uint unsigned int sbit rs=P24;sbit rw=P25;sbit e=P26;uchar table1= ;uchar table2=LCD

22、1602 test ok!;/*/延时函数,在12MHz的晶振频率下/大约50us的延时/*void delay_50us(uint t) uchar j; for(;t0;t-) for(j=19;j0;j-);/*/延时函数,在12MHz的晶振频率下/大约50ms的延时/*void delay_50ms(uint t) uint j; for(;t0;t-) for(j=6245;j0;j-);void write_com(uchar com) e=0; rs=0; rw=0; P0=com; delay_50us(10); e=1; delay_50us(20); e=0;void wr

23、ite_data(uchar dat) e=0; rs=1; rw=0; P0=dat; delay_50us(10); e=1; delay_50us(20); e=0; void init(void) delay_50us(300); write_com(0x38); delay_50us(100); write_com(0x38); delay_50us(100); write_com(0x38); write_com(0x38); write_com(0x08); write_com(0x01); write_com(0x06); write_com(0x0c);void main() uchar j; init(); write_com(0x80); for(j=0;j16;j+) write_data(table1j); delay_50us(10); write_com(0x80+0x40); for(j=0;j16;j+) write_data(table2j); delay_50us(10); while(1); 51单片机第十三课 矩阵键盘扫描实验 所属类别: 课程代码 发布日期: 2011-03-05 点击量: 343 #include#de

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

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