[問題] 串列輸入控制顯示器一問 (已追加ic情報)

看板C_and_CPP作者 (老胖子)時間14年前 (2009/09/15 22:55), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/1
目前在測試IC型顯示器 之前有嘗試過控制並列輸入的顯示器 有成功的控制字碼 今回測試的顯示器為串列輸入 將程式載入後 顯示器並沒有任何的作動產生...= =" 目前不知道是硬體有問題還是軟體出現問題... 所以想請各位大大協助看一下.. 程式碼如下所示 不知道各位大大是否可以替我檢視一下是否軟體部份有問題@@" http://cid-d05d6bff731efcbf.skydrive.live.com/self.aspx/%e6%96%87%e4%bb%b6/ IC-090917.pdf #include <reg51.h> /* define 8051 registers */ #include <stdio.h> /* define I/O functions */ sbit csb = P1^0; // define CSB pin sbit cpb = P1^1; // define DA pin sbit da = P1^2; // define CPB pin sbit rstb = P1^3; // define RSTB pin int i, j; void initial(); void csb_enable(); void da_data(int); void delay(int count); void cgram(); void da_data(int a) // set input data (DA) { for (i = 1; i <= 8; i++) // data length = 8 bits { if (a & 0x01) // if data (a) AND 01H, true: 1; false: 0 da = 1; else da = 0; a >>= 1; // after AND, the data right shift 1 bit cpb = 0; delay(0); cpb = 1; delay(0); // when CPB pin rising edge => write data } } void csb_enable() // CSB signal { csb = 1; delay(1); csb = 0; delay(1); } void delay(int count) // delay time { int i; for (i = 1; i <= count; i++); } //======================================================================== void initial() { delay(5); rstb = 0; delay(10); rstb = 1; delay(20); csb = 0; da_data(0xe0); delay(16); da_data(0x0f); delay(16); csb_enable(); //Display timing Set (Page 4-10) da_data(0x80); delay(16); da_data(0x00); delay(16); da_data(0x00); delay(16); csb_enable(); //URAM Set (Page 4-11) da_data(0x00); delay(16); da_data(0x00); delay(16); csb_enable(); //Display mode Set (Page 4-5) da_data(0xe4); delay(16); da_data(0xff); delay(16); csb_enable(); //Dimming data write set (Page 4-12) da_data(0xa0); delay(16); da_data(0xff); delay(16); csb_enable(); //Gray-level data write set (Page 4-13) da_data(0xc0); delay(16); da_data(0x00); delay(16); csb_enable(); //Gray-level ON/OFF set (Page 4-14) da_data(0x60); delay(8); //GR1 ~ GR16, ADRAM data write set(Page 4-8) da_data(0x61); delay(8); //GR2, set to off da_data(0x62); delay(8); //GR3, set to off da_data(0x63); delay(8); //GR4, set to off da_data(0x64); delay(8); //GR5, set to off da_data(0x65); delay(8); //GR6, set to off da_data(0x66); delay(8); //GR7, set to off da_data(0x67); delay(8); //GR8, set to off da_data(0x68); delay(8); //GR9, set to off da_data(0x69); delay(8); //GR10, set to off da_data(0x6a); delay(8); //GR11, set to off da_data(0x6b); delay(8); //GR12, set to off da_data(0x6c); delay(8); //GR13, set to off da_data(0x6d); delay(8); //GR14, set to off da_data(0x6e); delay(8); //GR15, set to off da_data(0x6f); delay(8); //GR16, set to off csb_enable(); // Clear Display da_data(0x20); delay(8); //GR1 ~ GR16, 5 x 7 segment (Page 4-4) da_data(0x20); delay(8); //GR1, call CGROM data=20H da_data(0x20); delay(8); //GR2, call CGROM data=20H da_data(0x20); delay(8); //GR3, call CGROM data=20H da_data(0x20); delay(8); //GR4, call CGROM data=20H da_data(0x20); delay(8); //GR5, call CGROM data=20H da_data(0x20); delay(8); //GR6, call CGROM data=20H da_data(0x20); delay(8); //GR7, call CGROM data=20H da_data(0x20); delay(8); //GR8, call CGROM data=20H da_data(0x20); delay(8); //GR9, call CGROM data=20H da_data(0x20); delay(8); //GR10, call CGROM data=20H da_data(0x20); delay(8); //GR11, call CGROM data=20H da_data(0x20); delay(8); //GR12, call CGROM data=20H da_data(0x20); delay(8); //GR13, call CGROM data=20H da_data(0x20); delay(8); //GR14, call CGROM data=20H da_data(0x20); delay(8); //GR15, call CGROM data=20H da_data(0x20); delay(8); //GR16, call CGROM data=20H csb_enable(); } void cgram() //Setiing CGRAM data (ram address: 00~07H) { da_data(0x60); delay(1); //CGRAM 1 da_data(0x60); delay(1); da_data(0x60); delay(1); da_data(0x60); delay(1); da_data(0x60); delay(1); da_data(0x70); delay(1); //CGRAM 2 da_data(0x70); delay(1); da_data(0x70); delay(1); da_data(0x70); delay(1); da_data(0x70); delay(1); da_data(0x78); delay(1); //CGRAM 3 da_data(0x78); delay(1); da_data(0x78); delay(1); da_data(0x78); delay(1); da_data(0x78); delay(1); da_data(0x7c); delay(1); //CGRAM 4 da_data(0x7c); delay(1); da_data(0x7c); delay(1); da_data(0x7c); delay(1); da_data(0x7c); delay(1); da_data(0x7c); delay(1); //CGRAM 5 da_data(0x7c); delay(1); da_data(0x7c); delay(1); da_data(0x7c); delay(1); da_data(0x7c); delay(1); da_data(0x78); delay(1); //CGRAM 6 da_data(0x78); delay(1); da_data(0x78); delay(1); da_data(0x78); delay(1); da_data(0x78); delay(1); da_data(0x70); delay(1); //CGRAM 7 da_data(0x70); delay(1); da_data(0x70); delay(1); da_data(0x70); delay(1); da_data(0x70); delay(1); da_data(0x60); delay(1); //CGRAM 8 da_data(0x60); delay(1); da_data(0x60); delay(1); da_data(0x60); delay(1); da_data(0x60); delay(1); csb_enable(); } void main() { initial(); //jump initial setting while(1) { da_data(0x20); delay(1); //CGRAM setting cgram(); da_data(0xe0); da_data(0x0f); csb_enable(); //Display Duty Set (Dimming, 15/16) da_data(0x10); delay(8); //GR1 ~ GR16, 5 x 7 segment for (j=0x00; j<=0xff; j++) { da_data(j); delay(8); //GRn, display as j++ delay(20000); } csb_enable(); // Clear Display da_data(0x20); delay(8); //GR1 ~ GR16, 5 x 7 segment(Page 4-4) da_data(0x20); delay(8); //GR1, call CGROM data=20H da_data(0x20); delay(8); //GR2, call CGROM data=20H da_data(0x20); delay(8); //GR3, call CGROM data=20H da_data(0x20); delay(8); //GR4, call CGROM data=20H da_data(0x20); delay(8); //GR5, call CGROM data=20H da_data(0x20); delay(8); //GR6, call CGROM data=20H da_data(0x20); delay(8); //GR7, call CGROM data=20H da_data(0x20); delay(8); //GR8, call CGROM data=20H da_data(0x20); delay(8); //GR9, call CGROM data=20H da_data(0x20); delay(8); //GR10, call CGROM data=20H da_data(0x20); delay(8); //GR11, call CGROM data=20H da_data(0x20); delay(8); //GR12, call CGROM data=20H da_data(0x20); delay(8); //GR13, call CGROM data=20H da_data(0x20); delay(8); //GR14, call CGROM data=20H da_data(0x20); delay(8); //GR15, call CGROM data=20H da_data(0x20); delay(8); //GR16, call CGROM data=20H csb_enable(); } } -- 靜靜的等人追的話頂多只能有兩三個選擇 但是主動出擊去追人的話妳的選擇將會是無限喔~共勉之 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.6.3.229

09/15 23:50, , 1F
只有我覺得這篇文章有點恐怖嗎
09/15 23:50, 1F

09/15 23:56, , 2F
我直接就end了~_~ 貼code前請改縮排tab->2~4 space, 再
09/15 23:56, 2F

09/15 23:56, , 3F
不然有至底貼code網站可以用:)
09/15 23:56, 3F

09/16 10:38, , 4F
名義上是C,可是和組合語言也差不多
09/16 10:38, 4F
※ 編輯: beminaru 來自: 124.6.3.229 (09/16 22:12) ※ 編輯: beminaru 來自: 124.6.3.229 (09/16 22:27) ※ beminaru:轉錄至看板 ASM 09/16 22:28 ※ 編輯: beminaru 來自: 124.6.3.229 (09/17 22:13)
文章代碼(AID): #1AhwhC0p (C_and_CPP)