Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. #include <reg51.h>
  2.  
  3. unsigned char xdata LCD_A_ctrlRD _at_ 0x8012;
  4. unsigned char xdata LCD_A_ctrlWR _at_ 0x8010;
  5. unsigned char xdata LCD_A_dataWR _at_ 0x8011;
  6. unsigned char xdata LCD_A_dataRD _at_ 0x8013;
  7.  
  8. unsigned char xdata PTWY _at_ 0x8008;
  9. unsigned char xdata PTAC0 _at_ 0x8005;
  10. unsigned char xdata PTAC1 _at_ 0x8006;
  11. unsigned char xdata PTAC2 _at_ 0x8007;
  12. unsigned char xdata PTAC _at_ 0x8000;
  13.  
  14. unsigned char xdata PTSEG _at_ 0x8018;
  15. unsigned char xdata PTWY _at_ 0x8008;
  16. unsigned char xdata PTWE _at_ 0x8009;
  17.  
  18. #define HOME 0x80
  19. #define INITDISP 0x38
  20. #define HOM2 0xC0
  21. #define LCDON 0x0F
  22. #define CLEAR 0x01
  23. #define SPEED 0xFFF
  24.  
  25. void licz (void);
  26. void LCD_init (void);
  27. void LCD_dataWR (char);
  28. void LCD_ctrlWR (char);
  29. void put_message (char*);
  30. void Delay (unsigned int);
  31. void DELAY_HARWARE_50ms (void);
  32.  
  33. unsigned int liczba[]={0,0,0,0};
  34. int licznik=0;
  35.  
  36.  
  37. main () {
  38. unsigned char i,k=0;
  39.  
  40. LCD_init();
  41. put_message("MEMORY:");
  42.  
  43.  
  44. while (1) {
  45. unsigned int t1[]={0,1,2,3};
  46. unsigned int t2[]={63,6,91,79,102,109,125,7,127,111};
  47. for(i=0;i<4;i++) {
  48. P1=t1[i];
  49. PTSEG=t2[liczba[i]];
  50. PTAC2=0x00;
  51. DELAY_HARWARE_50ms();
  52. if(k==PTAC/4) {
  53. licz();
  54. k=0;
  55. }
  56. k++;
  57. if(k>PTAC/4)
  58. k=0;
  59. }
  60. }
  61.  
  62. }
  63.  
  64. void licz (void) {
  65.  
  66. if((PTWE|0xFD)==0xFD) {
  67. if((PTWE|0xFE)!=0xFE)
  68. licznik--;
  69. if((PTWE|0xEF)==0xEF || licznik<0)
  70. licznik=9999;
  71. }
  72. else {
  73. if((PTWE|0xFE)!=0xFE)
  74. licznik++;
  75. if((PTWE|0xEF)==0xEF || licznik>9999)
  76. licznik=0;
  77. }
  78.  
  79. liczba[3]=(licznik/1000);
  80. liczba[2]=(licznik-liczba[3]*1000)/100;
  81. liczba[1]=(licznik-liczba[3]*1000-liczba[2]*100)/10;
  82. liczba[0]=licznik-liczba[3]*1000-liczba[2]*100-liczba[1]*10;
  83.  
  84.  
  85. if((PTWE|0xDF)==0xDF) {
  86. LCD_ctrlWR(HOM2);
  87. LCD_dataWR(liczba[3]+0x30);
  88. LCD_ctrlWR(HOM2+1);
  89. LCD_dataWR(liczba[2]+0x30);
  90. LCD_ctrlWR(HOM2+2);
  91. LCD_dataWR(liczba[1]+0x30);
  92. LCD_ctrlWR(HOM2+3);
  93. LCD_dataWR(liczba[0]+0x30);
  94. }
  95.  
  96. }
  97.  
  98. void LCD_init () {
  99. LCD_ctrlWR(INITDISP);
  100. Delay(SPEED);
  101. LCD_ctrlWR(CLEAR);
  102. Delay(SPEED);
  103. LCD_ctrlWR(LCDON);
  104. }
  105.  
  106. void LCD_dataWR (char val) {
  107. while(LCD_A_ctrlRD & 0x80);
  108. LCD_A_dataWR=val;
  109. }
  110.  
  111. void LCD_ctrlWR (char val) {
  112. while(LCD_A_ctrlRD & 0x80);
  113. LCD_A_ctrlWR=val;
  114. }
  115.  
  116. void put_message (char *s) {
  117. while(*s)
  118. LCD_dataWR(*s++);
  119. }
  120.  
  121. void Delay (unsigned int time) {
  122. unsigned int i;
  123. for(i=0;i<time;i++);
  124. }
  125.  
  126. void DELAY_HARWARE_50ms (void) {
  127. TMOD &=0xF0;
  128. TMOD|=0x01;
  129. ET0 = 0;
  130. TH0 = 0xF0;
  131. TL0 = 0xB0;
  132. TF0 = 0;
  133. TR0 = 1;
  134. while (TF0==0);
  135. TR0 = 0;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement