买了很久的板子了,一直没时间玩 ,今天搞到03:13,终于靠自己写出了一个数码显示程序,他可以在51hei开发板上轮流显示数字和字母.
#include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; uchar code we[]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; sbit dula=P2^6; sbit wela=P2^7; uchar num,du,num1; void main() { //设置计数器 //选取计数方式1 TMOD = 0x11; //给计数器写初值 TH0 = (65536-10000)/256; TL0 = (65536-10000)%256; //////////////////// //操作单片机 //开启CPU中断 EA = 1; /////////////////// //开启定时器T0位中断 ET0 = 1; //开启计数器 TR0 = 1; //操作数码管 while(1) { if(du==100) { du=0; num++; if(num<16) dula=1; P0=table[num]; dula=0; if(num==16) num=0; if(num1<2) wela=1; P0=we[num1]; wela=0; num1++; if(num1==2) num1=0; } } } //中断函数 void time () interrupt 1 { //自变量自加 TH0 = (65536-10000)/256; TL0 = (65536-10000)%256; du++; }
这个是静态显示程序
#include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; uchar cnt; uchar num; uchar jf; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void light (uchar num); void main() { //设置计数器 //设置工作方式1 TMOD = 0x11; //给计数器赋初值 TH0 = 0; TL0 = 0; /////////////////// //对单片机操作 //开启CPU中断 EA = 1; //开启定时器T0位中断 ET0 = 1; //启动计数器 TR0 = 1; //点亮数码管。每次+1 wela=1; P0=0xc0; wela=0; while(1) { if(cnt<16) light(cnt); else cnt = 0; } } void light (uchar num) { // uchar c; // wela=1; // P0=0xc0; // wela=0; // for(c=1;c<6;c++) dula=1; P0=table[num]; dula=0; } //中断函数 void time () interrupt 1 { //变量自加 if (jf<8) { jf++; TH0 =0; TL0 = 0; } if (jf==8) { jf=0; //装载初值 TH0 = 94; TL0 = 224; //到定值通知主函数 cnt=cnt+1; } }
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |