c语言描述的8位led显示板.rar

  • PUDN用户
    了解作者
  • C/C++
    开发工具
  • 4KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 18
    下载次数
  • 2005-09-14 01:35
    上传日期
这是一个c语言描述的8位led显示的源代码,实现数字的显示
c语言描述的8位led显示板.rar
  • www.pudn.com.txt
    218B
  • 8位led显示板.c
    12.1KB
内容介绍
#include <reg52.h> #include <stdio.h> #include <absacc.h rel='nofollow' onclick='return false;'> #define uchar unsigned char #define uint unsigned int #define M8155 XBYTE[0x4100] #define A8155 XBYTE[0x4101] #define B8155 XBYTE[0x4102] #define C8155 XBYTE[0x4103] #define A887 XBYTE[0x800a] #define B887 XBYTE[0x800b] #define C887 XBYTE[0x800c] #define D887 XBYTE[0x800d] bdata uchar M887; uchar Counts,DispB,Keys; uchar at[6]={ 9,8,7,4,2,0 }; uchar dt[6]={ 0,5,22,16,31,0 }; uchar Led[8]= { 0,0,0,0,0,0,0,0 }; uchar DispBit[8]= { 0,0,0,0,0,0,0,0 }; uint DispCount=0,GBCount=0; long MMS; uchar adc,GB=0,UP=0,EBZ=0,MMBZ=0; uchar code DispV[]={ 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80 }; uchar code DispCode[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71, // 0 1 2 3 4 5 6 7 8 9 A b c d E F 0x00,0x40,0x3e }; // - U uchar code EnCode[15][8]= { { 0,0,17,0,0,17,0,0 }, { 1,16,16,18,17,0,0,0 }, { 2,16,16,0,0,17,0,0 }, { 3,16,0,0,0,0,0,0 }, { 4,16,0,0,0,0,0,0 }, { 5,16,0,0,0,17,0,0 }, { 6,16,0,0,0,17,0,0 }, { 7,16,0,0,0,17,0,0 }, { 8,16,16,0,0,17,0,0 }, { 9,16,16,0,0,17,0,0 }, { 10,16,16,18,17,0,0,0 }, { 11,16,16,18,17,0,0,0 }, { 12,16,16,0,0,0,0,0 }, { 13,16,16,0,0,0,0,0 }, { 14,16,16,0,0,0,0,0 } }; uint code LedIn[32]={ 0xaaab,0xaaac,0xaaad,0xaab2,0xaab3,0xaab4,0xaab5,0xaaca,0xaacb,0xaaaa, // 0 A 1 B 2 C 3 D 4 E 5 F 6 G 7 H 8 I 9 J 0xaacc,0xacaa,0xaad5,0xaad4,0xaccb,0xacab,0xaccd,0xab54,0xab2c,0xab2a,0xab32,0xab52, // 10K 11L 12M 13N 14O 15P 16Q 17R 18S 19T 20U 21V 0xad55,0xab2b,0xacd2,0xacb4,0xaad2,0xaad3,0xab2d,0xab33,0xab53,0xad4a }; // 22W 23X 24Y 25Z 26播放 27确认 28换档 29功能 30删除 31取消 uchar *DAT=(uchar xdata *)0x0000; uchar *DAT8155=(uchar xdata *)0x4000; uchar *DAT887=(uchar xdata *)0x8000; uchar ch,str[20]; uint tim0js,tim0zjs; sbit uip_bit=M887^7; sbit dacload=P1^0; //串行DA sbit dacclk=P1^1; sbit dacdata=P1^2; sbit adcdo=P1^3; //串行AD sbit adccs=P1^4; sbit adcclk=P1^5; sbit scl=P1^6; //24c02 sbit sda=P1^7; void LoadLed(uchar no); void SaveLed(uchar no); void InitTime(void); void SetTime(void); void ReadTime(void); void DispTime(void); void DispPower(void); long ReadMM(void); void SetMM(void); void SetPT(uchar no); void SetONOFF(uchar onoff); void SetPower(uchar no); void SetK(uchar no); void GbMove1(uchar x); void GbMove2(uchar x); void delay1(uchar x); uchar readadc(void); void writedac(uchar x); void adcck(void); void dacck(void); void flash(); void x24c01_init(); void start(); void stop(); void writex(uchar j); uchar readx(); void clock(); uchar x24c02_read(uchar address); void x24c02_write(uchar address,uchar info); void dacck(void) { dacclk=1; delay1(2); dacclk=0; delay1(2); } void adcck(void) { adcclk=1; delay1(2); adcclk=0; delay1(2); } void flash() { uchar u; u=1; } void x24c02_init() { scl=1; flash(); sda=1; flash(); } void start() { sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash(); } void stop() { sda=0; flash(); scl=1; flash(); sda=1; flash(); } void writex(uchar j) { uchar i,temp; temp=j; for (i=0;i<8;i++){ temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash(); } scl=0; flash(); sda=1; flash(); } uchar readx() { uchar i,j,k=0; scl=0; flash(); sda=1; for (i=0;i<8;i++){ flash(); scl=1; flash(); if (sda==1) j=1; else j=0; k=(k<<1)|j; scl=0; } flash(); return(k); } void clock() { uchar i=0; scl=1; flash(); while ((sda==1)&&(i<255))i++; scl=0; flash(); } uchar x24c02_read(uchar address) //从24C02地址address读一字节数据 { uchar i; start(); writex(0xa0); clock(); writex(address); clock(); start(); writex(0xa1); clock(); i=readx(); stop(); delay1(10); return(i); } void x24c02_write(uchar address,uchar info) //向24C02地址address写数据info { EA=0; start(); writex(0xa0); clock(); writex(address); clock(); writex(info); clock(); stop(); EA=1; delay1(50); } uchar readadc(void) //读串行AD { uchar i; adccs=0; adcck(); ch=0; for (;adcdo==1;) adcck(); for (i=0; i<8; i++) { adcck(); ch=(ch<<1)|adcdo; } adccs=1; return(ch); } void delay1(uchar x) { uint i; for(i=0;i<x;i++); } void writedac(uchar x) //向串行DA输出x { uchar i; ch=x; dacload=1; dacdata=0; dacck(); dacdata=0; dacck(); dacdata=1; dacck(); for (i=0; i<8; i++) { ch=ch<<1; dacdata=CY; dacck(); } dacload=0; delay1(2); dacload=1; delay1(2); } Timer0() interrupt 1 using 1 { TH0=0xff;TL0=0xab; tim0js++;tim0zjs++; } exint1() interrupt 2 using 2 //红外遥控器接收中断程序 { uchar mark,zjs,l;uint data1; ET1=0;DispB=8;EX1=0;PT0=1;ET0=1;TR0=1;TH0=0xff;TL0=0xab; tim0js=0;mark=0;zjs=0;tim0zjs=0; T0=1; if(T0==1) mark=1; else mark=0; for(;zjs<26;) { if(tim0zjs>=780) break; if((tim0zjs>25)&&(zjs<2)) break; if((T0==1)&&(mark==0)) { mark=1; zjs++; if(tim0js>=17) { tim0js=0; TH0=0xff;TL0=0xab; data1=(data1<<1)|0; data1=(data1<<1)|0; zjs++; continue; } if(tim0js<17) { tim0js=0; TH0=0xff;TL0=0xab; data1=(data1<<1)|0; continue; } } if((T0==0)&&(mark==1)) { mark=0; zjs++; if(tim0js>=17) { tim0js=0; TH0=0xff;TL0=0xab; data1=(data1<<1)|1; data1=(data1<<1)|1; zjs++; continue; } if(tim0js<17) { tim0js=0; TH0=0xff;TL0=0xab; data1=(data1<<1)|1; continue; } } } EX1=1;PT0=0;PT1=1;ET0=0;TR0=0;TH0=0xff;TL0=0xab; Keys=0xff; for (l=0; l<32; l++) { if (data1==LedIn[l]) { Keys=l; EX1=0; break; } } ET1=1; } exint0() interrupt 0 using 3 { INT0=0; adc=readadc(); M887=C887; INT0=1; } void InitTime(void) //初始化时钟 { A887=0x2f; B887=0x46; M887=C887; M887=D887; } void DispTime(void) { ReadTime(); Led[0]=dt[3]/10; Led[1]=dt[3]%10; Led[3]=dt[4]/10; Led[4]=dt[4]%10; Led[6]=dt[5]/10; Led[7]=dt[5]%10; } void ReadTime(void) { uchar i; do { M887=A887; } while (uip_bit); for (i=0; i<6; i++) dt[i]=*(DAT887+at[i]); } long ReadMM(void) //读密码 { long ms; ms=x24c02_read(1*2)*10000+x24c02_read(2*2)*100+x24c02_read(3*2); return (ms); } void SetMM(void) //设置密码 { uchar mm; mm=Led[2]*10+Led[3]; x24c02_write(1*2,mm); mm=Led[4]*10+Led[5]; x24c02_write(2*2,mm); mm=Led[6]*10+Led[7]; x24c02_write(3*2,mm); } void SetTime(void) //设置时间 { uchar i; dt[3]=Led[3]*10+Led[4]; dt[4]=Led[6]*10+Led[7]; B887=0x80; for (i=3; i<6; i++) { *(DAT887+at[i])=dt[i]; } InitTime(); } void DispPower(void) 显示AD值 { Led[5]=adc/100; Led[6]=(adc/10)%10; Led[7]=adc%10; } void SetPT(uchar no) { uchar nn; //no=0,1,2 nn=Led[2]; x24c02_write((5+no*3)*2,nn); nn=Led[3]*10+Led[4]; x24c02_write((6+no*3)*2,nn); nn=Led[6]*10+Led[7]; x24c02_write((7+no*3)*2,nn); } void SetONOFF(uchar onoff) { uchar o; //onoff=0,1 o=Led[3]*10+Led[4]; x24c02_write((14+onoff*2)*2,o); o=Led[6]*10+Led[7]; x24c02_write((15+onoff*2)*2,o); } void SetPower(uchar no) { uchar p; //no=0,1 p=Led[5]; x24c02_write((20+no*2)*2,p); p=Led[6]*10+Led[7]; x24c02_write((21+no*2)*2,p); } void SetK(uchar no) { uchar k; //no=0,1,2 k=Led[3]*10+Led[4]; x24c02_write((24+no*3)*2,k); k=Led[5]; x24c02_write((25+no*3)*2,k); k=Led[6]*10+Led[7]; x24c02_write((26+no*3)*2,k); } void GbMove1(uchar x) //移动光标 { uchar i; GB=0xff; for (i=x; i<=7; i++) { if (Led[i]<=9) { GB=i; break; } } if (GB>9) { for (i=2; i<x; i++) { if (Led[i]<=
评论
    相关推荐
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      数据库课程设计十分完整有需要的请下载啊谢谢
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...