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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

c8051f020单片机数字时钟Word格式.docx

1、 i 。while (!(OSCXCN & 0x80 /等待外部晶振稳定OSCICN = 0x88。 /选择外部晶振作系统时钟源,允许时钟丢失检测/* 端口初始化 */XBR0XBR1XBR2=0x07 /允许 SMBus、SPI0 和 UART0= 0x00。= 0x44。 /使能交叉开关和弱上拉void PORT_Init (void/* 定时器 T0 初始化 */void Timer0_Init (voidCKCON|=0x8。 /T0 按系统时钟频率计数 TMOD|=0x1 。 /T0 方式 1 Count1ms=10 。TR0 = 0。 / 停止 T0TH0 = (-SYSCLK/1

2、000 。8 /定时 1ms 的时间常数TLO = -SYSCLK/10Q0TR0 = 1。 / 启动 T0IE|= 0x2。 / 开 T0 中断/* 定时器T0中断服务程序 每隔1ms中断1次)*/ void Timer0_ISR (void interrupt 18 /重新装入初值TL0 = -SYSCLK/1000if (Count1ms Count1ms- 。 / 定时时间减 1/* 延时T卩s软件实现)*/ void Delay1us(unsigned char Twhile (T_nop_( 。 _nop_(。-T。/* 延时 Tms定时器 T0 实现)*/ void Delay1

3、ms(unsigned char TCount1ms=T。while (Count1ms 。 /在 T0 中断服务程序中减 1/* 延时Ts碇时器T0实现)*/ void Delay1s(unsigned char TDelay1ms(200。T-。void Send7279Byte(unsigned char chchar i 。SELECT7279 / 置 CS低电平Delay1us(50 / 延时 50 卩for (i=0 。 i / 输出 1 位到 HD7279A 的 DATA端Set7279DAT。else Clr7279DAT。Set7279CLK。ch=chClr7279CLK。

4、Clr7279DAT。 /发送完毕,DATA端置低,返回/* 仿真I2C总线时序接收一字节 */unsigned char Receive7279Byte(voidunsigned char i,ch=0 。 /DATA 端置为高电平 ch+=1。 /接收 1 位数据 /接收完毕,DATA端重新置成低电平(输出状态return ch 。/* 让第 No(0 至U 5位 LED 闪烁 */void FlashLED(unsigned char Nounsigned char i。Send7279Byte(0x88 /发闪烁指令i=0x01 。while (No / 将 1 移到第 No 位i=i

5、 /0 闪烁、 1 不闪烁NOSELECT7279/*HD7279A 左移命令 */void MoveLeft(void Send7279Byte(0xA1 / 发左移指令* 采用不译码方式显示时数字 o到f的段码*unsigned char code BdSeg=ox7e,ox3o,ox6d,ox79, / o 1 2 3 ox33,ox5b,ox5f,ox7o, / 4 5 6 7 ox7f,ox7b,ox77,ox1f, / 8 9 a b ox4e,ox3d,ox4f,ox47, / c d e f oxoo,oxo1。/*显示指针DispBuf所指6个单元数据,点亮第 ShowDot

6、 char i,ch。ShowDot-。ich=DispBufi 。 /取一字符if (ch=a & (ch /用不译码方式显示在第 i位if (ch= /发送不译码方式显示命令的第 2字节Send7279Byte(oxooelse if (ch=-Send7279Byte(oxo1elseif (ShowDot=i / 查表显示,同时点亮小数点 Send7279Byte(0x80|BdSegch&0x0felse Send7279Byte(BdSegch&NOSELECT7279 / 置 CS高电平/* 读取按键值 */ unsigned char GetKeyValue(voidunsig

7、ned char KeyValue。if(CPT1CN&0x40 return -1 。 /if (P17=1 /无键按下Send7279Byte(0x15 / 发读键盘命令 KeyValue=Receive7279Byte(return KeyValue 。/* 等待按键释放,用 C8051F020 的比较器硬件检测 ,也可以用软件延时实现 */ void WaitKeyOff(void(CPT1CN&/* 显示任意长整型数据 */void DispValue(unsigned long xxunsigned char buf6 。 buf0=(xx%1000000/100000 。 / 最

8、高位 buf1=(xx%100000/10000 。buf2=(xx%10000/1000 。 buf3=(xx%1000/100 。buf4=(xx%100/10 。 buf5=(xx%10 / 最低位DispLED(buf,0 / 调用显示函数,所有小数点都不点亮*/*从键盘读取6位数据,用于存储时间,格式是 HHMMSS,所读数据转换成长整型un sig ned long In putNum(voidunsigned long Num=0 。unsigned char i=0, KeyValue。DispLED( -,0/输入提示 FlashLED(0 /第一位闪烁Delay1s(1/在

9、最高位 第5位)LED显示小时的高位/在第4位LED显示小时的低位/在第3位LED显示分钟的高位II在第2位LED显示分钟的低位/在第1位LED显示秒钟的高位II在第0位LED显示秒钟的低位II在最高位 第5位)LED显示小时的高位II在第4位LED显示小时的低位while(1 KeyValue=GetKeyValue(。if (i=6 /6 位数据输入完,返回FlashLED(8。 / 关闪烁return Num 。if(KeyValue=0 & (KeyValue=9 / 只接收十进制的 0 到 9 i+。Send7279Byte(0xC8。 /发送键码值,按方式 1 译码下载显示 Sen

10、d7279Byte(KeyValue。MoveLeft( 。 /显示并左移一位,仍使低位显示并闪烁。Send7279Byte(0x90。Send7279Byte(0x01。WaitKeyOff(。Num*=10 。 /转换成十进制Num+=KeyValue。Delay1ms(500。 void DispTime(voidSend7279Byte(0x85。Send7279Byte(HourH。Send7279Byte(0x84。Send7279Byte(HourL。Send7279Byte(0x83。Send7279Byte(MinuteH 。Send7279Byte(0x82。Send727

11、9Byte(MinuteL 。Send7279Byte(0x81。 Send7279Byte(SecondH。Send7279Byte(0x80。Send7279Byte(SecondL。 void mDispTime(void Send7279Byte(mHourH。Send7279Byte(mHourLSend7279Byte(0x83 /在第3位LED显示分钟的高位Send7279Byte(mMinuteHSend7279Byte(0x82 /在第2位LED显示分钟的低位Send7279Byte(mMinuteLSend7279Byte(0x81 /在第1位LED显示秒钟的高位Send7

12、279Byte(mSecondHSend7279Byte(0x80 /在第0位LED显示秒钟的低位Send7279Byte(mSecondLvoid set_time(unsigned long CurrentTime=0 。do /从键盘输入时间,格式 HHMMSSCurrentTime=InputNum(DispValue(CurrentTimeNowTime0=(unsigned char(CurrentTime/1000004 / 时 CurrentTime=CurrentTime%100000 。NowTime0=NowTime0|(CurrentTime/10000 Current

13、Time=CurrentTime%10000 。NowTime1=(unsigned char(CurrentTime/1000 / 分 CurrentTime=CurrentTime%1000 。NowTime1=NowTime1|(CurrentTime/100 CurrentTime=CurrentTime%100 。NowTime2=(unsigned char(CurrentTime/10 / 秒CurrentTime=CurrentTime%10 。 NowTime2=NowTime2|CurrentTime 。while (NowTime00x24|(NowTime10x59|(

14、NowTime2 HourH=NowTime0/16 。 / 转换成 10 进制HourL=NowTime0%16 。MinuteH=NowTime1/16 。MinuteL=NowTime1%16 。SecondH=NowTime2/16 。SecondL=NowTime2%16。unsigned long set_InputNum(voidint c=0。 / 输入提示FlashLED(0while(1KeyValue=GetKeyValue(if (i=6 /6 位数据输入完,返回FlashLED(8if(KeyValue=0 (KeyValue / 只接收十进制的 0 到 9i+。Se

15、nd7279Byte(0xC8 /发送键码值,按方式 1 译码下载显示Send7279Byte(KeyValueMoveLeft(Send7279Byte(0x90Send7279Byte(0x01WaitKeyOff(if (SecondL9 SecondH+,SecondL=0。 if(SecondH5SecondH=0,MinuteL+。 if (MinuteL MinuteH+,MinuteL=0 。 if(MinuteHMinuteH=0,HourL+ 。 if(HourL HourH+ 。 Hour L=0。 if(HourH2 HourH=0 。if(HourH=2(HourL3

16、HourH=0。HourL=0。c+。 Delay1ms(500if(c%2=0SecondL+。void set_ring(CurrentTime=set_InputNum( / 时CurrentTime=CurrentTime%100000 。 NowTime0=NowTime0|(CurrentTime/10000 / 分CurrentTime=CurrentTime%1000 。NowTime2=NowTime2|CurrentTime 。 setHourH=NowTime0/16 。/ 转换成 10 进制 setHourL=NowTime0%16 。setMinuteH=NowTim

17、e1/16 。 setMinuteL=NowTime1%16 。 setSecondH=NowTime2/16 。 setSecondL=NowTime2%16 。void m(unsigned char control_keyvalue 。int ma=0 。int a=1 。CurrentTime=CurrentTime%10000 。CurrentTime=CurrentTime%100 。 mHourH=NowTime0/16 。/ 转换成 10 进制 mHourL=NowTime0%16 。mMinuteH=NowTime1/16 。 mMinuteL=NowTime1%16 。 m

18、SecondH=NowTime2/16 。 mSecondL=NowTime2%16 。Delay1ms(200 ma+。if(ma%5=0mSecondL+。if (mSecondL mSecondH+,mSecondL=0。 if(mSecondHmSecondH=0,mMinuteL+ 。if (mMinuteL mMinuteH+,mMinuteL=0 。 if(mMinuteHmMinuteH=0,mHourL+ 。if(mHourL mHourH+ 。 mHourL=0 。 if(mHourH mHourH=0 。 if(mHourH=2(mHourL3mHourH=0 。 control_keyvalue=GetKeyValue( if(control_keyvalue=14break 。 if(control_keyvalue=10a=-a 。if(a=-1&ma%5=0mSecondL- 。 mDispTime( if(SecondH HourL=0。 SecondL+。void main(voidi

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

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