買了很久的板子了,一直沒時間玩 ,今天搞到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://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |