红外调时课程设计基于stc89c51的红外遥控电子时钟内容摘要:
字符 void delay(uchar x)。 //x* void delay1(int ms)。 uchar distemp = 0。 sbit IRIN = P3^3。 //红外接收器数据线 sbit led=P0^0。 uchar IRCOM[7]。 uchar a,count=0,flag=0。 uchar mh=0,ml=0,shh=0,shl=0,fenh=0,fenl=0,yueh=0,yuel=0,rih=0,ril=0,nianh=0,nianl=0。 uchar miao,fen,shi,ri,yue,nian,week。 uchar tempshi,tempge。 uchar table[12]。 sbit E=P2^5。 //1602 使能引脚 sbit RW=P2^6。 //1602 读写引脚 sbit RS=P2^7。 //1602 数据 /命令选择引脚 sbit SCLK = P1^6。 /*实时时钟时钟线引脚 */ sbit IO = P3^5。 /*实时时钟数据线引脚 */ sbit RST = P1^7。 /*实时时钟复位线引脚 */ sbit ACC0=ACC^0。 sbit ACC7=ACC^7。 /******************************************************************** * 名称 : Delay() * 功能 : 延时 ,延时时间大概为 1 毫秒 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Delay_1ms(uint i) { 15 uint x,j。 for(j=0。 ji。 j++) for(x=0。 x=148。 x++)。 } /******************************************************************** * 名称 : delay() * 功能 : 延时 ,延时时间大概为 140US。 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Delay2() { int i,j。 for(i=0。 i=10。 i++) for(j=0。 j=2。 j++)。 } /******************************************************************** * 名称 : enable(uchar del) * 功能 : 1602 命令函数 * 输入 : 输入的命令值 * 输出 : 无 ***********************************************************************/ void enable(uchar del) { P0 = del。 RS = 0。 RW = 0。 E = 0。 Delay2()。 E = 1。 Delay2()。 } /******************************************************************** * 名称 : write(uchar del) * 功能 : 1602 写数据函数 * 输 入 : 需要写入 1602 的数据 * 输出 : 无 ***********************************************************************/ 16 void write(uchar del) { P0 = del。 RS = 1。 RW = 0。 E = 0。 Delay2()。 E = 1。 Delay2()。 } /******************************************************************** * 名称 : L1602_init() * 功能 : 1602 初始化,请参考 1602 的资料 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void L1602_init(void) { enable(0x38)。 Delay_1ms(5)。 enable(0x38)。 Delay_1ms(5)。 enable(0x38)。 Delay_1ms(5)。 enable(0x38)。 enable(0x08)。 enable(0x0c)。 enable(0x04)。 enable(0x01)。 } void write_byte(uchar dat)//写一个字节 { ACC=dat。 RST=1。 for(a=8。 a0。 a) { IO=ACC0。 SCLK=0。 SCLK=1。 ACC=ACC1。 } } 17 uchar read_byte()//读一个字节 { RST=1。 for(a=8。 a0。 a) { ACC7=IO。 SCLK=1。 SCLK=0。 ACC=ACC1。 } return (ACC)。 } // void write_1302(uchar add,uchar dat)//向 1302 芯片写函数,指定写入地址,数据 { RST=0。 SCLK=0。 RST=1。 write_byte(add)。 write_byte(dat)。 SCLK=1。 RST=0。 } uchar read_1302(uchar add)//从 1302 读数据函数,指定读取数据来源地址 { uchar temp。 RST=0。 SCLK=0。 RST=1。 write_byte(add)。 temp=read_byte()。 SCLK=1。 RST=0。 return(temp)。 } uchar BCD_Decimal(uchar bcd)//BCD 码转十进制函数,输入 BCD,返回十进制 { uchar Decimal。 Decimal=bcd4。 return(Decimal=Decimal*10+(bcdamp。 =0x0F))。 } // 18 void ds1302_init() //1302 芯片初始化子函数 (20200107,12:00:00,week4) { RST=0。 SCLK=0。 write_1302(0x8e,0x00)。 //允许写,禁止写保护 write_1302(0x80,0x00)。 //向 DS1302 内写秒寄存器 80H 写入初始秒数据 00 write_1302(0x82,0x00)。 //向 DS1302 内写分寄存器 82H 写入初始分数据 00 write_1302(0x84,0x12)。 //向 DS1302 内写小时寄存器 84H 写入初始小时数据 12 write_1302(0x8a,0x04)。 //向 DS1302 内写周寄存器 8aH 写入初始周数据 4 write_1302(0x86,0x07)。 //向 DS1302 内写日期寄存器 86H 写入初始日期数据 07 write_1302(0x88,0x01)。 //向 DS1302 内写月份寄存器 88H 写入初始月份数据 01 write_1302(0x8c,0x10)。 //向 DS1302 内写年份寄存器 8cH 写入初始年份数据 10 write_1302(0x8e,0x80)。 //打开写保护 } void change(void) { SCLK=0。 write_1302(0x8e,0x00)。 //允许写,禁止写保护 write_1302(0x80,0x80|miao)。 //向 DS1302 内写秒寄存器 80H 写入初始秒数据 00 write_1302(0x8e,0x80)。 //打开写保护 } void ok(void) { SCLK=0。 write_1302(0x8e,0x00)。 //允许写,禁止写保护 write_1302(0x80,miaoamp。 0x7f)。 //向 DS1302 内写秒寄存器 80H 写入初始秒数据 00 write_1302(0x8e,0x80)。 //打开写保护 } void dis_tim_lcd(uchar ,uchar dat) { uchar shi=0,ge=0。 shi=dat/10。 ge=dat%10。 if(count) enable(0x0c)。 enable()。 write(num[shi])。 write(num[ge])。 if(count) { switch(count) { case 1:enable(0x80+0x40+7)。 enable(0x0f)。 break。 case 2:enable(0x80+0x40+6)。 enable(0x0f)。 break。 19 case 3:enable(0x80+0x40+4)。 enable(0x0f)。 break。 case 4:enable(0x80+0x40+3)。 enable(0x0f)。 break。 case 5:enable(0x80+0x40+1)。 enable(0x0f)。 break。 case 6:enable(0x80+0x40)。 enable(0x0f)。 break。 case 7:enable(0x80+9)。 enable(0x0f)。 break。 case 8:enable(0x80+8)。 enable(0x0f)。 break。 case 9:enable(0x80+6)。 enable(0x0f)。 break。 case 10:enable(0x80+5)。 enable(0x0f)。 break。 case 11:enable(0x80+3)。 enable(0x0f)。 break。 case 12:enable(0x80+2)。 enable(0x0f)。 break。 default:break。 } } } void display() { EX1=0。 miao=BCD_Decimal(read_1302(0x81))。 fen=BCD_Decimal(read_1302(0x83))。 shi=BCD_Decimal(read_1302(0x85))。 ri=BCD_Decimal(read_1302(0x87))。 yue=BCD_Decimal(read_1302(0x89))。 nian=BCD_Decimal(read_1302(0x8d))。 week=BCD_Decimal(read_1302(0x8b))。 dis_tim_lcd(0x82,nian)。 dis_tim_lcd(0x85,yue)。 dis_tim_lcd(0x88,ri)。 dis_tim_lcd(0x80+0x40,shi)。 dis_tim_lcd(0x80+0x40+3,fen)。 dis_tim_lcd(0x80+0x40+6,miao)。 EX1=1。 } void init_dis() { uchar i。 enable(0x80)。 for(i=0。 i10。 i++) write(tab1[i])。 enable(0x80+0x40)。 for(i=0。 i8。 i++) write(tab2[i])。 } void change_finish() { 20 RST=0。 SCLK=0。 write_1302(0x8e,0x00)。 //允许写,禁止写保护 write_1302(0x80,(table[1]4|table[0])amp。 0x7f)。 //向 DS1302 内写秒寄存器 80H 写入初始秒数据 00 write_1302(0x82,table[3]4|table[2])。 //向 DS1302 内写分寄存器 82H写入初始分数据00 wr。红外调时课程设计基于stc89c51的红外遥控电子时钟
相关推荐
售收入的 30%,纺织品服装出口占全国纺织品服装出口的 20%,是我国纺织工业的又一支生力军。 (四)纺织工业经济成分结构情况 我国纺织工业的市场化程度较高,民营经济和外资企业发展很快。 据统计,到 2020 年,纺织行业规模以上企业中,非国有企业销售收入占全国纺织工业销售收入的 88%,创造的利润占全行业的 97%,出口交货值占全行业的 92%。 1978 年国有资本占全行业的 %。 到
)。 end decoder38。 architecture behave of decoder38 is begin process(S) begin if S=39。 139。 then Y(0)=(not A(2)) and (not A(1)) and (not A(0))。 Y(1)=(not A(2)) and (not A(1)) and A(0)。 Y(2)=(not A(2))
所以 8M 主频的 MSP430F169 完全满足要求。 MSP430 的数字 I/O高达 48 个,同时拥有丰富的外设,适合与多种设备进行接口,也便于本设计的进一步扩展。 [6]. 功率级模块 采用绝缘栅型场效应管构成的电子负载,控制灵敏度高、工作速度快,既无机械接触点,也无运动部件,适合模拟速度较快,电流稍小的实际负载。 二、 系统的硬件设计与实现 [1]. 电源模块 实现 采用外接
酚类 100 15 5 非甲烷总烃 120 15 6 二氯甲烷 50 15 7 异丙醇 30 8 脂类 30 设计范围 本方案结合建设单位的实际情况,对建设单位的 生产车间 有机废气从收集、处理 及排放整个过程提出技术可行 、 经济合理的设计方案 , 并确保处理达到相应环保规定标准。 广东立国制药 有限公司 生产 203 车间 废气 处理 工程设计方案 5 深圳聚源生物 工艺确定 第二章
CMP AH,[BX] JZ NO_BX。 inc bx INC BX NO_BX: MOV [BX],AL MOV AH,3DH CMP AH,AL JNZ NO_OVER SUB AL,25。 transplant 39。 =39。 to 39。 $39。 MOV [BX],AL JMP OVER NO_OVER: JMP READ MULT PROC NEAR。 mult data*10