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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

多功能秒表程序.docx

1、多功能秒表程序#include /包含文件#include #define uchar unsigned char/对数据类型的宏定义#define uint unsigned int#define Hi 0/点阵代表Hi#define xin 4/点阵代表心形#define xiaol 5#define xiaolm 6sbit wei=P27;/数码管锁存允许定义sbit duan=P26;sbit xzhou=P30;/点阵锁存允许定义sbit yzhou=P31;sbit DS=P34;/温度传感器I/O口sbit SCL=P36;/EEPROM时钟sbit SDA=P37;/EEPR

2、OM数据uchar FM=0;/sbit FM=P32;/蜂鸣器定义sbit ZSD=P33;/指示灯定义sbit k1=P25;/定义六颗按键sbit k2=P24;sbit k3=P23;sbit k4=P22;sbit k5=P21;sbit k6=P20;uchar key1=1;/ 用于键盘扫描函数对六颗按键的识别uchar key2=2;uchar key3=3;uchar key4=4;uchar key5=5;uchar key6=6;uchar fen,miao,miaoxs,wd,nk1;uchar ntime;/ntime用于定时器中断函数累加到40表示百分之一秒ucha

3、r i,address,ndisplay,time_END,nk2,changci;/i 用于写入数据时地址连续相加,ndisplay用于显示某场比赛数据,time_END表示某场参加的人数uint temp;/整合两个字节的温度到一个变量float f_temp;uchar time32;/8人次数据uchar ye;/页unsigned char code tableduan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/不带冒号编码unsigned char code tabled=0xbf,0x86,0xdb,0xcf,0xe6,

4、0xed,0xfd,0x87,0xff,0xef;/带冒号编码unsigned char code tablewei=0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/数码管位编码unsigned char code tablex=0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;/点阵X轴编码,共阴极unsigned char code tabley=0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;/点阵Y轴编码,共阳极void delay(uint);void dis

5、play(uchar,uchar,uchar,uchar);void leddiandisplay(uchar,uchar,ucahr);void leddisplay(uchar);uchar keyscan(uchar);void shortdelay(void);void IICinit(void);void start(void);void respons(void);void stop(void);void writebyte(uchar);uchar readbyte(void);void shortdelay(void)/IIC简短延时;void delay(uint xms)

6、/简单延时函数 uint i,j; for(i=xms;i0;i-) for(j=55;j0;j-);void dsreset(void) /温度传感器初始化 uint i; DS=0; i=103; while(i0)i-; DS=1; i=4; while(i0)i-;bit tmpreadbit(void) /读一位 uint i; bit dat; DS=0;i+; /i+ 用于延时 DS=1;i+;i+; dat=DS; i=8;while(i0)i-; return (dat);uchar tmpread(void) /读一个字节数据 uchar i,j,dat; dat=0; f

7、or(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat);void tmpwritebyte(uchar dat) /写一个字节 uint i; uchar j; bit testb; for(j=1;j1; if(testb) /写1 DS=0; i+;i+; DS=1; i=8;while(i0)i-; else DS=0; /写0 i=8;while(i0)i-; DS=1; i+;i+; void tmpchange(void) /发送温度转换指令。开始转换 dsreset(); d

8、elay(1); tmpwritebyte(0xcc); / 地址 tmpwritebyte(0x44); / 跳过寻址uint tmp() /获取温度 uchar a,b; dsreset(); delay(1); tmpwritebyte(0xcc); tmpwritebyte(0xbe); a=tmpread(); b=tmpread(); temp=b; temp4; display(fen,miao,miaoxs,wd);void start(void)/启动信号 SDA=1; shortdelay(); SCL=1; shortdelay(); SDA=0; shortdelay(

9、);void respons(void)/应答信号 uchar i=0; SCL=1; shortdelay(); while(SDA=1)&(i255) i+; SCL=0; shortdelay();void stop(void)/停止信号 SDA=0; shortdelay(); SCL=1; shortdelay(); SDA=1; shortdelay();void writebyte(uchar date)/写一个字节 uchar i,tempofdate; tempofdate=date; for(i=0;i8;i+) tempofdate=tempofdate1; SCL=0;

10、 shortdelay(); SDA=CY; shortdelay(); SCL=1; shortdelay(); SCL=0; shortdelay(); SDA=1; shortdelay(); shortdelay(); shortdelay();uchar readbyte(void)/读一个字节 uchar i,k; SCL=0; shortdelay(); SDA=1; for(i=0;i8;i+) SCL=1; shortdelay(); k=(k1)|SDA; SCL=0; shortdelay(); shortdelay(); return(k);void write_add

11、(uchar address,uchar date) start(); writebyte(0xa0);/寻芯片地址 respons(); writebyte(address); respons(); writebyte(date); respons(); stop();uchar read_add(uchar address) uchar date; start(); writebyte(0xa0); respons(); writebyte(address); respons(); start(); writebyte(0xa1); respons(); date=readbyte();

12、stop(); return(date);void display(uchar fen,uchar miao,uchar miaoxs,uchar wd)/数码管显示函数,4个参数,带冒号 uchar fenshi,fenge,miaoshi,miaoge,miaoxsshi,miaoxsge,wdshi,wdge;/分离出8位数据 fenshi=fen/10; fenge=fen%10; miaoshi=miao/10; miaoge=miao%10; miaoxsshi=miaoxs/10; miaoxsge=miaoxs%10; wdshi=wd/10; wdge=wd%10; wei=

13、1; P0=tablewei1; wei=0; duan=1; P0=tableduanfenshi; duan=0; delay(1); wei=1; P0=tablewei2; wei=0; duan=1; P0=tabledfenge; duan=0; delay(1) wei=1; P0=tablewei3; wei=0; duan=1; P0=tableduanmiaoshi; duan=0; delay(1); wei=1; P0=tablewei4; wei=0; duan=1; P0=tableduanmiaoge; duan=0; delay(1); wei=1; P0=ta

14、blewei5; wei=0; duan=1; P0=tableduanmiaoxsshi; duan=0; delay(1);wei=1; P0=tablewei6; wei=0; duan=1; P0=tableduanmiaoxsge; duan=0; delay(1); wei=1; P0=tablewei7; wei=0; duan=1; P0=tableduanwdshi; duan=0; delay(1); wei=1; P0=tablewei8; wei=0; duan=1; P0=tableduanwdge; duan=0; delay(1);void nodisplay(u

15、char fen,uchar miao,uchar miaoxs,uchar wd)/数码管显示函数,4个参数。不带冒号 uchar fenshi,fenge,miaoshi,miaoge,miaoxsshi,miaoxsge,wdshi,wdge;/分离出8位数据 fenshi=fen/10; fenge=fen%10; miaoshi=miao/10; miaoge=miao%10; miaoxsshi=miaoxs/10; miaoxsge=miaoxs%10; wdshi=wd/10; wdge=wd%10; wei=1; P0=tablewei1; wei=0; duan=1; P0

16、=tableduanfenshi; duan=0; delay(1); wei=1; P0=tablewei2; wei=0; duan=1; P0=tableduanfenge; duan=0; delay(1); wei=1; P0=tablewei3; wei=0; duan=1; P0=tableduanmiaoshi; duan=0; delay(1); wei=1; P0=tablewei4; wei=0; duan=1; P0=tableduanmiaoge; duan=0; delay(1); wei=1; P0=tablewei5; wei=0; duan=1; P0=tab

17、leduanmiaoxsshi; duan=0; delay(1); wei=1; P0=tablewei6; wei=0; duan=1; P0=tableduanmiaoxsge; duan=0; delay(1); wei=1; P0=tablewei7; wei=0; duan=1; P0=tableduanwdshi; duan=0; delay(1); wei=1; P0=tablewei8; wei=0; duan=1; P0=tableduanwdge; duan=0; delay(1); void ddisplay(uchar x,uchar y)/8*8红绿双色点阵基本控制

18、函数(像素点控制) xzhou=1; P1=tablexx; xzhou=0; yzhou=1; P1=tableyy; yzhou=0; delay(1);/使用例子:leddiandisplay(5,5)表示点亮点X=5,Y=5void lddisplay(uchar tx)/tx代表图形,编码一个图形前,先宏定义一下代表符号 if(tx=0)/编码HI ddisplay(2,2); ddisplay(2,5); ddisplay(2,7); ddisplay(3,2); ddisplay(3,5); ddisplay(3,7); ddisplay(4,2); ddisplay(4,5);

19、 ddisplay(4,7); ddisplay(5,2); ddisplay(5,5); ddisplay(5,3); ddisplay(5,4); ddisplay(6,2); ddisplay(6,5); ddisplay(6,7); ddisplay(7,2); ddisplay(7,5); if(tx=1) /编码1. ddisplay(2,4); ddisplay(2,5); ddisplay(2,6); ddisplay(3,5); ddisplay(4,5); ddisplay(5,5); ddisplay(6,5); ddisplay(7,5); ddisplay(6,4);

20、 if(tx=2)/编码2 ddisplay(2,3); ddisplay(2,4); ddisplay(2,5); ddisplay(2,6); ddisplay(3,3); ddisplay(4,4); ddisplay(5,5); ddisplay(6,6); ddisplay(6,3); ddisplay(7,4); ddisplay(7,5); if(tx=3)/编码3 ddisplay(1,4); ddisplay(1,5); ddisplay(2,3); ddisplay(2,6); ddisplay(3,6); ddisplay(4,4); ddisplay(4,5); ddi

21、splay(4,6); ddisplay(5,6); ddisplay(6,3); ddisplay(6,6); ddisplay(7,4); ddisplay(7,5); if(tx=4)/编码 心形 ddisplay(2,4); ddisplay(2,5); ddisplay(3,3); ddisplay(3,4); ddisplay(3,5); ddisplay(3,6); ddisplay(4,2); ddisplay(4,3); ddisplay(4,4); ddisplay(4,5); ddisplay(4,6); ddisplay(4,7); ddisplay(5,1); ddi

22、splay(5,2); ddisplay(5,3); ddisplay(5,4); ddisplay(5,5); ddisplay(5,6); ddisplay(5,7); ddisplay(5,8); ddisplay(6,1); ddisplay(6,2); ddisplay(6,3); ddisplay(6,4); ddisplay(6,5); ddisplay(6,6); ddisplay(6,7); ddisplay(6,8); ddisplay(7,2); ddisplay(7,3); ddisplay(7,6); ddisplay(7,7); if(tx=5) ddisplay(

23、2,4); ddisplay(2,5); ddisplay(3,3); ddisplay(3,6); ddisplay(6,1); ddisplay(6,3); ddisplay(6,6); ddisplay(6,8); ddisplay(7,2); ddisplay(7,7); if(tx=6) ddisplay(2,4); ddisplay(2,5); ddisplay(3,3); ddisplay(3,6); ddisplay(6,1); ddisplay(6,2); ddisplay(6,3); ddisplay(6,6); ddisplay(6,7); ddisplay(6,8);

24、uchar keyscan(uchar x)/键盘扫描函数。/调用方法为keyscan(key1),当按下时,返回值为1,当未按下时,返回值为0. if(x=1) if(k1=0) delay(18); if(k1=0) while(!k1) ZSD=0; FM=0; display(fen,miao,miaoxs,wd); lddisplay(nk1); ZSD=1; FM=1; return(1); else return(0); else return(0); if(x=2) if(k2=0) delay(18); if(k2=0) while(!k2) ZSD=0; FM=0; dis

25、play(fen,miao,miaoxs,wd); lddisplay(nk1); ZSD=1; FM=1; return(1); else return(0); else return(0); if(x=3) if(k3=0) delay(18); if(k3=0) while(!k3) ZSD=0; FM=0; display(fen,miao,miaoxs,wd); lddisplay(nk1); ZSD=1; FM=1; return(1); else return(0); else return(0); if(x=4) if(k4=0) delay(18); if(k4=0) whi

26、le(!k4) ZSD=0; FM=0; display(fen,miao,miaoxs,wd); lddisplay(nk1); ZSD=1; FM=1; return(1); else return(0); else return(0); if(x=5) if(k5=0) delay(18); if(k5=0) while(!k5) ZSD=0; FM=0; display(fen,miao,miaoxs,wd); lddisplay(nk1); ZSD=1; FM=1; FM=1; ZSD=1; return(1); else return(0); else return(0); if(x=6) if(k6=0) delay(10); if(k6=0) while(!k6)

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

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