国信长天ctd单片机设计方案与开发项目模拟试题及参考程序小区自动售水机Word文档下载推荐.docx

上传人:b****6 文档编号:21694854 上传时间:2023-01-31 格式:DOCX 页数:13 大小:139.16KB
下载 相关 举报
国信长天ctd单片机设计方案与开发项目模拟试题及参考程序小区自动售水机Word文档下载推荐.docx_第1页
第1页 / 共13页
国信长天ctd单片机设计方案与开发项目模拟试题及参考程序小区自动售水机Word文档下载推荐.docx_第2页
第2页 / 共13页
国信长天ctd单片机设计方案与开发项目模拟试题及参考程序小区自动售水机Word文档下载推荐.docx_第3页
第3页 / 共13页
国信长天ctd单片机设计方案与开发项目模拟试题及参考程序小区自动售水机Word文档下载推荐.docx_第4页
第4页 / 共13页
国信长天ctd单片机设计方案与开发项目模拟试题及参考程序小区自动售水机Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

国信长天ctd单片机设计方案与开发项目模拟试题及参考程序小区自动售水机Word文档下载推荐.docx

《国信长天ctd单片机设计方案与开发项目模拟试题及参考程序小区自动售水机Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《国信长天ctd单片机设计方案与开发项目模拟试题及参考程序小区自动售水机Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

国信长天ctd单片机设计方案与开发项目模拟试题及参考程序小区自动售水机Word文档下载推荐.docx

参考程序

#include"

reg52.h"

intrins.h"

#defineucharunsignedchar

#defineuintunsignedint

#definesomenop{_nop_()。

_nop_()。

}

ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。

ucharcodesmg_we[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}。

ucharcodesmg_du1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x7f}。

//有小数点的段选

sbitSDA=P2^1。

sbitSCL=P2^0。

sbits7=P3^0。

sbits6=P3^1。

uchartflag,dspflag,qian,bai,shi,ge,qian1,bai1,shi1,ge1,num,temp,bb。

uintt,aa,date。

voiddelayms(uintx)

{

uchart。

while(x--)for(t=0。

t<

120。

t++)。

voidkeyscan()

if(s7==0)

{

delayms(10)。

if(s7==0)

{

P0=0x10。

P2=0xa0。

P2=0。

TR0=1。

num=1。

t=0。

while(!

s7)。

}

}

if(s6==0)

if(s6==0)

date=t/2。

TR0=0。

P0=0。

num=2。

s6)。

voiddisplay(ucharwe,uchardu)

P0=0xFF。

//消影子

P2|=0xE0。

P2&

=0x1F。

P0=smg_du[du]。

P0=smg_we[we]。

P2|=0xC0。

=0x3F。

/////////////////////////////////////////////////////////////////

voidiic_start(void)

SDA=1。

_nop_()。

SCL=1。

somenop。

SDA=0。

SCL=0。

voidiic_stop(void)

voidack()

unsignedchari。

SCL=1。

somenop。

while((SDA==1)&

&

(i<

200))i++。

SCL=0。

voidiic_sendbyte(unsignedcharbyt)

for(i=0。

i<

8。

i++)

{

if(byt&

0x80)

else

byt<

<

=1。

ack()。

unsignedchariic_recbyte(void)

unsignedcharda。

da<

if(SDA)

da|=0x01。

returnda。

unsignedcharadc_pcf8591(void)

unsignedchartemp。

iic_start()。

iic_sendbyte(0x91)。

temp=iic_recbyte()。

iic_stop()。

returntemp。

voidinit_pcf8591(void)

iic_sendbyte(0x90)。

iic_sendbyte(0x01)。

delayms(10)。

////////////////////////////////////////////////////////////////

voidmain()

{

P0=0xff。

P2=0x80。

P0=0。

//关蜂鸣器

TMOD=0x22。

TH0=0x06。

TL0=0x06。

TH1=0x06。

TL1=0x06。

ET0=1。

EA=1。

ET1=1。

TR1=1。

init_pcf8591()。

while

(1)

keyscan()。

if(t==10000)

TR0=0。

num=3。

//超出标志

}

voidisr_t0(void)interrupt1//数码管显示

tflag++。

aa++。

if(aa==400)//10mst++

aa=0。

t++。

if(t==10000)

P0=0。

qian=t/1000。

bai=t%1000/100。

shi=t%100/10。

ge=t%10。

if(num==1)//计时标志

if(tflag==4)//1ms动态显示

tflag=0。

dspflag++。

if(dspflag==7)

dspflag=0。

if(dspflag==0)

P0=0xFF。

P2|=0xE0。

P2&

P0=smg_du1[bai]。

P0=smg_we[5]。

P2|=0xC0。

if(dspflag==1)

display(6,shi)。

if(dspflag==2)

display(7,ge)。

if(dspflag==3)

display(4,qian)。

if(dspflag==4)

P0=smg_du1[0]。

P0=smg_we[1]。

if(dspflag==5)

display(2,5)。

if(dspflag==6)

display(3,0)。

if(num==2)//算费标志

if(tflag==4)//1ms

dspflag++。

qian1=date/1000。

bai1=date%1000/100。

shi1=date%100/10。

ge1=date%10。

P0=smg_du1[bai1]。

display(6,shi1)。

display(7,ge1)。

display(4,qian1)。

P0=smg_we[1]。

if(num==3)

if(tflag==4)//100ms

P0=smg_du1[9]。

display(6,9)。

display(7,9)。

display(4,4)。

voidT1_timer()interrupt3//LEDPCF8591

bb++。

if(bb==8)

bb=0。

temp=adc_pcf8591()。

if(temp<

64)

P0=0xfe。

if(temp>

P0=0xff。

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 机械仪表

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

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