導航:首頁 > 源碼編譯 > 138編譯器低頻輸出

138編譯器低頻輸出

發布時間:2022-07-20 15:45:13

Ⅰ 51單片機的138編譯器的輸入腳只能是p2~2,3,4嗎為什麼改一下就不對

他的輸入腳和你編程時的設置有關系,可以從P0~P3的任意引腳,當然除P0外其他要加上拉電阻。
你在程序里吧他的引腳定義按你外圍實際接線改一下就可以了。

Ⅱ CC程序員實用大全怎麼樣

譯者序 第一章 C語言入門 1 編程簡介 2 創建ASCII碼源文件 3 編譯C程序 4 語法錯誤 5 典型的C程序結構 6 往程序里添加語句 7 在新的一行上顯示輸出結果 8 C語言區分大小寫字母 9 邏輯錯誤BUG 10 程序開發過程 11 文件類型 12 進一步了解連接器 13 頭文件 14 幫助編譯器查找頭文件 15 加速編譯 16 注釋程序 17 提高程序的可閱讀性 18 注意編譯器警告信息 19 控制編譯器警告 20 用注釋屏蔽警告 21 名字的重要性 22 分號的作用 23 變數 24 給變數賦值 25 變數類型 26 定義同一類型的多個變數 27 定義變數時加上注釋 28 給變數賦初值 29 在定義時初始化多個變數 30 使用有意義的變數名 31 C關鍵字 32 整型變數 33 字元型變數 34 浮點型變數 35 雙精度型變數 36 給浮點型變數賦值 37 類型標識符 38 無符號類型標識符 39 LONG長類型標識符 40 聯合使用無符號和長類型標識符 41 使用大數值 42 寄存器類型標識符 43 短SHORT類型標識符 44 從類型申明中去掉INT 45 有符號類型示識符 46 多賦值運算符 47 把變數的值賦給另一種類型的變數 48 創建用戶自己的類型 49 賦給十六進制或八進制值 50 溢出 51 精確度 52 賦值為引號或其他字元 53 PRINTF入門 54 使用PRINTF顯示整型數值 55 列印八進制或十六進制整數 56 用PRINTF顯示無符號整型數值 57 用PRINTF顯示長整型數值 58 用PRINTF顯示浮點型數值 59 用PRINTF顯示字元型數值 60 用指數格式顯示浮點數 61 顯示浮點數 62 用PRINTF顯示字元串 63 用PRINTF顯示指針地址 64 在數值前添加正號和負號 65 用PRINTF格式化整數值 66 0填充整數輸出 67 在八進制和十六進制數前顯示前綴 68 用PRINTF格式化浮點數 69 格式化指數輸出 70 左對齊PRINTF的輸出 71 聯合使用格式符 72 字元串的換行 73 顯示NEAR和FAR字元 74 使用PRINTF的轉義字元 75 判斷PRINTF已顯示的字元數目 76 使用PRINTF的返回值 77 使用ANSI設備驅動器 78 用ANSI驅動器清除屏幕顯示 79 用ANSI驅動器顯示屏幕顏色 80 用ANSI驅動器定位游標 81 在C中作基本的數學運算 82 模運算(取余運算) 83 運算符的優先順序和結合性 84 強制操作符運算順序 85 C的自增運算符 86 C的自減運算符 87 按位或運算 88 按位與運算 89 按位異或運算 90 「取反」運算 91 對變數的值進行運算 92 C的條件運算符 93 C的長度SIZEOF運算符 94 移位運算 95 位循環運算 96 條件運算符 97 循環控制 98 C如何表示真TRUE和假FALSE 99 用IF判斷條件 100 簡單語句和復雜語句 101 判斷是否相等 102 關系判斷 103 用邏輯與判斷兩個條件 104 用邏輯或判斷兩個條件 105 邏輯非運算 106 將條件結果賦值給變數 107 在復合語句中定義變數 108 使用縮進來提高程序的可讀性 109 使用擴展CTRL+BREAK檢查 110 判斷浮點數 111 永遠循環下去 112 賦值判斷 113 IF-IF-ELSE語句 114 按規定次數執行語句 115 FOR語句的有些部分是可選擇的 116 在FOR語句中賦值 117 控制FOR循環的增值 118 在FOR循環中使用字元型和浮點型數值 119 空循環 120 無窮循環 121 在FOR循環中使用逗號運算符 122 不要在FOR循環中改變控制變數的值 123 用WHILE循環重復執行一條或多條語句 124 WHILE循環的組成部分 125 使用DO重復執行一條或多條語句 126 C的CONTINUE語句 127 使用C的BREAK語句來結束循環 128 GOTO語句分支 129 判斷多個條件 130 在SWITCH中使用BREAK 131 使用SWITCH語句的DEFAULT CASE 第二章 宏與常量 132 在程序中定義常量 133 宏與常量擴展 134 給常量和宏命名 135 使用-FILE-預處理器常量 136 使用-LINE-預處理器常量 137 改變預處理器的行計數 138 生成無條件預處理器錯誤 139 其他預處理器常量 140 記錄預處理器的日期和時間 141 判斷是否進行ANSIC編譯 142 判斷是C++還是C 143 取消宏或常量 144 比較宏與函數 145 編譯器PRAGMAS 146 預定義值和宏 147 創建用戶自己的頭文件 148 使用#INCLUDE<FILENAME.H>或#INCLUDE「FILENAME.H」 149 判斷符號是否被定義 150 進行IF-ELSE預處理 151 更強大的預處理器條件判斷 152 實現IF-ELSE和ELSE-IF預處理 153 定義需要多行的宏和常量 154 創建自定義宏 155 在宏定義中不要放置分號 156 創建MIN和MAX宏 157 創建SQUARE CUBE宏 158 注意宏定義中的空格 159 如何使用括弧 160 宏是沒有類型的 第三章 字元串 161 C字元串的形象化 162 編譯器是如何表示字元串的 163 C是如何存儲字元串的 164 『A』是如何區別於『A』的 165 在字元串常量內表示引號 166 判斷字元串的長度 167 使用STRLEN函數 168 將一個字元串的字元復制到另一個字元串中 169 將一個串的內容追加到另一個串上 170 給字元串追加N個字元 171 把一個字元串轉移到另一個字元串 172 不要越過字元串的界限 173 判斷兩個字元串是否相同 174 比較字元串時忽略大小寫 175 將字元串轉換成大寫或小寫 176 獲取字元串中第一次出現的某個字元 177 返回索引到串的首次出現 178 搜索字元在字元串中的末次出現 179 返回指向字元中末次出現的索引 180 使用FAR字元串 181 為FAR字元串編寫字元串函數 182 計算字元串的內容反轉 183 將字元串的內容反轉 184 將某特定字元賦給整個字元串 185 比較兩個字元串 186 比較兩個字元中的前N個字元 187 不考慮大小寫比較字元串 188 將字元串轉換成數字 189 復制字元串的內容 190 從給定字元序列中查找字元的首次出現 191 在字元串中查找子字元串 192 計運算元字元串出現的次數 193 給子字元串獲取索引 194 獲取子字元串的最右端出現 195 不使用%2格式標識符顯示字元串 196 從字元串中刪除子字元串 197 用另一個子字元串代替子字元串 198 轉換數值的ASCII碼形式 199 判斷字元是否為字母數字 200 字元是否為字母 201 判斷字元是否包含ASCII值 202 判斷字元是否為控制符 203 判斷字元是否為數字 204 判斷字元是否為圖形字元 205 判斷字元是大寫還是小寫 206 判斷字元是否可列印 207 判斷字元是否為標點符號 208 判斷字元是否包含空白符 209 判斷字元是否為十六進制值 210 將字元轉換成大寫形式 211 將字元轉換成小寫形式 212 使用ASCII字元 213 將輸出格式寫進字元串變數 214 從字元串中讀輸入 215 標志字元串以節省空間 216 初始化字元串 第四章 函數 217 函數 218 在函數中使用變數 219 把MAIN當作函數 220 參數簡介 221 使用多參數 222 老式C程序中的參數申明 223 函數返回值 224 RETURN語句 225 函數原型 226 運行時程序庫 227 形參和實參 228 解決名稱沖突 229 返回類型為非INT型的函數 230 局部變數 231 函數如何使用堆棧 232 函數的開銷 233 C如何存儲局部變數 234 申明全局變數 235 避免使用全局變數 236 解決全局和局部變數的名稱沖突 237 更好地定義全局變數的有效范圍 238 傳值調用 239 使用傳值調用防止參數值變化 240 傳址調用 241 獲取地址 242 使用變數的地址 243 改變參數的值 244 只改變指定參數 245 使用堆棧進行傳址調用 246 記住函數變數的值 247 C是如何初始化靜態變數的 248 使用PASCAL調用順序 249 PASCAL關鍵字的影響 250 混合編程示例 251 CDECL關鍵字 252 遞歸函數 253 遞歸階乘函數 254 另一個遞歸的例子 255 進一步理解遞歸 256 直接遞歸與間接遞歸 257 判斷是否要使用遞歸 258 為什麼遞歸函數慢 259 如何消除遞歸 260 將字元串傳遞給函數 261 傳遞指定的數組元素 262 形式參數中的CONST 263 使用CONST不會阻止參數值的修改 264 無界字元串的申明 265 指針的使用與字元串的申明 266 C是如何使用堆棧處理字元串參數的 267 外部變數 268 應用外部變數 269 外部靜態變數 270 VOLATILE關鍵字 271 調用結構和基指針 272 調用匯編語言函數 273 從匯編語言函數中返回值 274 沒有返回值的函數 275 不使用參數的函數 276 AUTO關鍵字 277 范圍 278 范圍的分類 279 名稱空間和標識符 280 標識符的可見性 281 DURATION 282 支持參數個數可變的函數 283 支持個數可變的參數 284 VA-START、VA-ARG和VA-END是如何工作的 285 創建支持多參數多類型的函數 第五章 鍵盤操作 286 從鍵盤讀入字元 287 顯示字元輸出 288 緩沖輸入 289 將鍵盤輸入賦組合字元串 290 聯合使用GETCHAR和PUTCHA 291 記住GETCHAR和PUTCHAR都是宏 292 使用直接I/O讀入字元 293 不顯示字元的直接鍵盤輸入 294 知道何時使用『\R』和『\N』 295 直接輸出 296 將按鍵放回鍵盤緩存 297 使用CPPINTF快速格式化輸出 298 快速格式化鍵盤輸入 299 寫字元串 300 使用直接I/O實現更快的字元串輸出 301 從鍵盤讀入字元串 302 以更快的速度從鍵盤輸入字元串 303 以彩色顯示輸出 304 清除屏幕顯示 305 刪除當前行到行尾的內容 306 刪除屏幕上的當前行 307 定位游標進行屏幕輸出 308 判斷行與列的位置 309 在屏幕上插入空行 310 將屏幕上的文本拷貝到緩沖區 311 將緩沖區中的文本拷貝到屏幕的指定位置 312 判斷文本模式設置 313 控制屏幕顏色 314 指定背景色 315 使用TEXTCOLOR設置前景色 316 使用TEXTBACKGROUND設置背景色 317 控制文本的明暗度 318 決定當前文本模式 319 在屏幕上移動文本 320 定義文本窗口 第六章 數學 321 使用整型表達式的絕對值 322 使用ARCCOSINE反餘弦 323 使用ARCSINE反正弦 324 使用ARCTANGENT反正切 325 求復數的絕對值 326 對浮點值進位舍入 327 使用角的餘弦 328 使用角的雙曲餘弦 329 使用角的正弦 330 使用角的雙曲正弦 331 使用角的正切 332 使用角的雙曲正切 333 整數相除 334 使用指數 335 使用浮點型表達式的絕對值 336 使用浮點余數 337 使用浮點值的尾數和指數 338 計算X*2E的結果 339 計算自然對數 340 計算LOG10X的值 341 判斷最大值與最小值 342 把浮點值分解成整數和小數部分 343 計算Xn的結果 344 計算1010的結果 345 生成隨機數 346 將隨機值映射到指定范圍 347 給隨機數生成器賦初值 348 計算數值的平方根 349 創建定製數學錯誤處理程序 第七章 文件、目錄和磁碟 350 判斷當前盤驅動器 351 選擇當前驅動器 352 判斷可用的盤空間 353 當心DBLSPACE 354 讀入文件分配表FAT信息 355 磁碟ID 356 絕對扇區讀寫操作 357 進行BIOS磁碟I/O 358 測試軟碟機是否准備好 359 應用FOPEN打開文件 360 FILE結構 361 關閉一個打開的文件 362 每次讀/寫文件信息的一個字元 363 文件指針的位置指針 364 判斷當前文件位置 365 文件流 366 文件翻譯 367 CONFIG.SYS文件的FILES=條目 368 使用低級和高級文件I/O 369 文件句柄FILE HANDLES 370 進程文件表PROCESS FILE TABLE 371 進程文件表入口 372 系統文件表 373 顯示系統文件表 374 從流指針中導出文件句柄 375 進行格式化文件輸出 376 重命名文件 377 刪除文件 378 判斷程序如何訪問文件 379 設置文件的訪問模式 380 深入掌握文件屬性 381 檢測文件流錯誤 382 判斷文件的長度 383 刷新I/O流 384 一次關閉所有被打開的文件 385 獲取文件流的文件句柄 386 使用P-TMPDIR創建臨時文件名 387 使用TMP或TEMP創建臨時文件名 388 創建真正的臨時文件 389 刪除臨時文件 390 為文件搜索命令路徑 391 為文件搜索環境入口的子目錄 392 打開TEMP目錄中的文件 393 最小化文件I/O操作 394 在目錄名中使用反斜杠 395 改變當前目錄 396 創建目錄 397 刪除目錄 398 刪除目錄樹 399 建立完全路徑名 400 分解目錄路徑 401 建立路徑名 402 使用低級函數打開和關閉文件 403 創建文件 404 進行低級讀寫操作 405 判斷文件是否結束 406 應用低級文件例行程序 407 為文件句柄翻譯指定模式 408 打開LSEEK定位文件指針 409 打開多於20個的文件 410 使用DOS文件服務 411 獲取文件的日期和時間標記 412 利用位域獲取文件的日期與時間 413 設置文件的日期與時間標記 414 把文件日期和時間設置成當前日期和時間 415 每次讀寫一個字 416 改變文件的長度 417 控制文件打開操作的讀寫模式 418 將緩沖區賦給文件 419 分配文件緩沖區 420 利用MKTEMP創建唯一文件名 421 讀寫結構 422 從文件流中讀取結構數據 423 復制文件句柄 424 強制文件句柄設置 425 把文件句柄和文件流聯系起來 426 文件共享 427 打開文件進行共享訪問 428 鎖定文件內容 429 獲取更精細的文件鎖定控制 430 使用DOS目錄 431 打開目錄 432 讀取目錄入口 433 利用目錄服務讀C:\WINDOWS 434 反繞目錄 435 遞歸讀取磁碟文件 436 判斷當前文件位置 437 打開共享文件流 438 在指定目錄中創建唯一文件 439 創建新文件 440 利用DOS服務訪問文件 441 強制二進制或文本文件打開 442 按行寫文本 443 按行讀文本 444 應用FGETS和FPUTS 445 強制二進制文件翻譯 446 為什麼TEXTCOPY不能拷貝二進制文件 447 判斷文件結尾 448 舍棄字元 449 讀取格式化的文件數據 450 根據當前位置定位文件指針 451 獲取文件句柄信息 452 重新打開文件流 第八章 數組、指針和結構 453 數組 454 申明數組 455 形象表示數組 456 數組的內存需求 457 初始化數組 458 訪問數組元素 459 通過循環訪問數組元素 460 使用常量定義數組 461 把一個數組傳送給函數 462 把數組看作函數 463 區分字元串數組 464 在堆棧中傳送數組 465 判斷數組能存放多少個元素 466 為大數組使用HUGE內存模式 467 權衡數組與動態存儲的利弊 468 多維數組 469 行與列 470 訪問二維數組的元素 471 給二維數組元素賦初值 472 判斷多維數組佔用的內存 473 通過循環顯示二維數組 474 遍歷三維數組 475 初始化多維數組 476 把二維數組傳送給函數 477 把多維數組當作一維數組 478 C是如何存放多維數組的 479 按行存放與按列存放 480 以數組為成員的結構數組 481 聯合 482 使用聯合節省內存 483 使用REGS——一種典型的聯合 484 應用REGS聯合中 485 位欄位結構 486 形象表示位欄位結構 487 位欄位結構的取值范圍 488 在數組中查找指定的值 489 對分查找 490 應用對分查找法 491 對數組進行排序 492 冒泡排序法 493 應用冒泡排序法 494 選擇排序法 495 應用選擇排序法 496 SHELL希爾排序法 497 應用SHELL排序法 498 快速排序法 499 應用快速排序法 500 上述排序方法的遺留問題 501 對字元串數組排序 502 利用LFIND搜索字元串 503 利用LSEARCH搜索數值 504 利用BSEARCH搜索已排序數組 505 利用QSORT對數組排序 506 判斷數組元素的個數 507 把指針理解為地址 508 判斷變數的地址 509 C是如何把數組當成指針的 510 對數組應用取地址運算符 (&) 511 申明指針變數 512 間接訪問指針 513 使用指針值 514 指針與函數參數的使用 515 指針運算 516 指針的增值與減值 517 聯合應用指針引用與增值 518 利用指針遍歷數組 519 利用返回值為指針的函數 520 創建返回值為指針的函數 521 指針數組 522 形象表示字元串數組 523 遍歷字元串數組 524 把字元串數組當成指針 525 使用指向一個指向字元串的指針的指針 526 利用指針申明字元串常量 527 VOID類型指針 528 創建指向函數的指針 529 使用指向函數的指針 530 使用三級指針 531 結構 532 結構是變數申明的模板 533 結構標記是結構的名稱 534 用不同的方式申明結構 535 結構成員 536 形象表示結構 537 應用結構 538 把結構傳遞給函數 539 在函數內部改變結構 540 (*point).member間接引用 541 使用pointer-->member格式 542 使用無標記結構 543 結構定義的范圍 544 初始化結構 545 進行結構I/O 546 使用嵌套結構 547 包含數組的結構 548 創建結構數組 第九章 DOS和BIOS服務 549 DOS系統服務 550 BIOS服務 551 寄存器 552 標志寄存器 553 軟體中斷 554 利用BIOS訪問指針 555 CONTROL+BREAK信息 556 可能的DOS副作用 557 暫時掛起程序 558 控制聲音 559 獲取國家專用的信息 560 磁碟傳輸地址 561 訪問和控制磁碟傳輸區 562 BIOS鍵盤服務 563 獲取BIOS設備列表 564 控制串列口I/O 565 利用BDOS訪問DOS服務 566 獲取擴展DOS錯誤信息 567 判斷BIOS常規內存數量 568 創建遠指針FAR PRINTER 569 把遠端地址分解為段地址和偏移地址 570 判斷自由核心內存 571 讀段寄存器設置 572 內存的類型 573 常規內存 574 常規內存的分布 575 訪問常規內存 576 為什麼PC和DOS限制於1MB 577 從段和偏移量中產生地址 578 擴充內存 579 使用擴充內存 580 擴展內存 581 實模式和保護模式 582 訪問擴展內存 583 高端內存區 584 堆棧 585 各種堆棧配置 586 判斷程序的當前堆棧大小 587 使用-STKLEN控制堆棧空間 588 給內存區域賦值 589 拷貝內存區域 590 拷貝內存區域直到某指定位元組 591 比較兩個無符號字元數組 592 交換兩個相鄰字元串位元組 593 分配動態內存 594 再談類型轉換 595 不再需要時釋放內存 596 利用CALLOC函數分配內存 597 堆 598 解決64KB堆限制 599 從堆棧中分配內存 600 分配巨型數據 601 改變被分配內存區域的大小 602 BRK函數 603 檢測堆 604 快速堆檢測 605 填充自由堆空間 606 檢測特定的堆入口 607 遍歷堆入口 608 訪問指定內存單元 609 向內存中置數 610 PC埠 第十章 內存管理 611 訪問埠值 612 CMOS 613 內存模式 614 微型內存模式 615 小型內存模式 616 中型內存模式 617 壓縮內存模式 618 大型內存模式 619 巨型內存模式 620 判斷當前的內存模式 第十一章 日期和時間 621 獲取當前日期與時間 622 將日期和時間從秒的形式轉換成ASCII碼 623 DAYLIGHT SAVINGS ADJUST MENT 624 延遲若干毫秒 625 判斷程序的耗時 626 比較兩個時間 627 獲取數據串 628 獲取時間串 629 讀BIOS計時器 630 使用當地時間 631 使用格林威治平時 632 獲取DOS系統時間 633 獲取系統日期 634 設置DOS系統時間 635 設置DOS系統日期 636 把DOS日期轉換為UNIX格式 637 利用TIMZONE計算時差 638 判斷當前時區 639 利用TZSET設置時區區域 640 利用TZ環境入口 641 從用戶程序中設置TZ環境入口 642 獲取時區信息 643 以秒鍾的形式設置自1/2/1970午夜以來的系統時間 644 把日期轉換成自1/1/1970以來的秒數 645 判斷日期的儒略歷日期 646 創建格式化日期和時間串 647 PC時鍾類型 第十二章 重定向I/O和進程命令行 648 等候按鍵 649 提醒用戶輸入密碼 650 自己編寫密碼函數 651 輸出重定向 652 輸入重定向 653 聯合使用INPUT和OUTPUT重定向 654 利用STDOUT和STDIN 655 管道運算符 656 GETCHAR和PUTCHAR 657 對重定向輸入進行編號 658 確保信息出現在屏幕上 659 自定義MORE命令 660 顯示重定向行的數目 661 顯示得定向字元的個數 662 創建定時的MORE命令 663 防止I/O重定向 664 應用STDPRN文件句柄 665 把重定向輸出分割到一個文件中 666 應用STDAUX文件句柄 667 在重定向輸入人尋找子串的出現 668 顯示重定義輸入的頭N行 669 命令行變元 670 顯示命令行變元的個數 671 顯示命令行 672 使用引號內的命令行變元 673 從命令行中顯示文件內容 674 把ARGV當作指針 675 C是如何知道命令行的 676 環境 677 把ENV當作一個指針 678 對MAIN的參數使用VOID 679 使用命令行數字 680 出口狀態值 681 為出口狀態過程使用RETURN 682 判斷是否把MAIN申明為VOID 683 在環境中搜索特定入口 684 DOS是如何對待環境的 685 應用ENVIRON全局變數 686 給當前環境添加入口 687 給DOS環境添加元素 688 退出當前程序 689 定義在程序結束時執行的函數 第十三章 編程工具 690 庫 691 重復使用目標代碼 692 編譯C和OBJ文件時出現的問題 693 創建庫文件 694 常用的庫操作 695 列出庫文件中的子例行程序 696 利用庫減少編譯時間 697 庫管理程序的其他功能 698 連接器 699 連接器的功能 700 使用連接映像 701 使用連接器響應文件 702 使用MAKE命令簡化應用程序的創建 703 生成一個簡單的MAKE文件 704 通過MAKE使用多依賴性文件 705 說明用戶的MAKE文件 706 MAKE和命令行 707 在MAKE文件中放置多個依賴性 708 顯現的和隱含的MAKE法則 709 使用MAKE宏 710 預定義MAKE宏 711 用MAKE執行條件進程 712 驗證一個MAKE宏 713 再次包含一個MAKE文件 714 使用MAKE的宏修飾符 715 因錯誤結束MAKE文件 716 關閉命令顯示 717 使用文件BUILTINS.MAK 718 在MAKE中執行出口狀態進程 719 同時激活和改變一個宏 720 為多個依賴文件執行一個MAKE命令 第十四章 高級C語言編程 721 判斷是否有數學協處理器 722 理解CTYPEH,ISTYPE宏 723 控制直接的視像 724 檢查系統和路徑錯誤 725 顯示預定義的錯誤信息 726 決定操作系統版本號 727 理解可移值性 728 執行一個非本地的GOTO 729 獲得進程ID(PID) 730 激活一個內部的DOS命令 731 使用-PSP全局變數 732 在變數申明中使用CONST修飾符 733 使用枚舉類型 734 放置一個枚舉類型來使用 735 理解一個枚舉值 736 分配一個特殊的值給枚舉類型 737 保存和恢復寄存器 738 動態列表簡介 739 申明一個鏈接的列表結構 740 建立一個鏈接的列表 741 一個簡單的鏈表例子 742 理解鏈表轉移 743 創建一個更有用的列表 744 增加一個列表入口 745 插入一個列表入口 746 顯示一個存儲的目錄 747 從一個列表中刪除一個元素 748 使用一個雙向鏈表 749 創建一個簡單的雙向鏈表 750 理解NODE-->PREVIOUS-->NEXT 751 從一個雙向鏈表中移走一個元素 752 在一個雙向鏈表中插入一個元素 753 理解子進程 754 派生一個子進程 755 使用其他的SPAWNLXX函數 756 使用SPAWNVXX函數 757 執行一個子進程 758 使用其他的EXECLXX函數 759 使用EXECVXX函數 760 理解覆蓋 761 理解中斷 762 PC機的中斷 763 使用中斷關鍵字 764 判斷一個中斷向量 765 設置一個中斷向量 766 使能與禁止中斷 767 生成簡單的中斷處理器 768 鏈接一個二次中斷 769 生成一個中斷 770 捕獲PC機時鍾 771 理解致命錯誤 772 C語言中的致命錯誤處理器 773 一個更完全的致命錯誤處理器 774 恢復改變過的中斷 775 生成一個Ctrl+Break處理器 776 在用戶的致命錯誤處理器使用DOS服務 777 使用指令集選擇改善性能 778 直接插入內部函數 779 使能和禁止內在函數 780 理解快速函數調用 781 -FASTCALL參數傳遞的法則 782 理解不變代碼 783 理解冗載入禁止 784 理解代碼緊縮 785 理解循環緊縮 786 理解循環引入和強度削減 787 消除普通的子表達式 788 標准C語言轉換 789 理解C語言的4個基本類型 790 基本類型與派生類型 791 理解初始化值 792 理解連接 793 理解臨時申明 794 申明和定義 795 理解左值LVALUE 796 理解右值RVALUE 797 使用段寄存器關鍵字 798 謹慎使用遠指針 799 理解正常化的指針 800 數學協處理器語句 801 理解變數中的CDECL和PASCAL 802 防止循環包含 第十五章 C++入門 803 C++介紹 804 C++源文件的差異 805 從簡單的C++程序開始 806 理解COUT I/O流 807 使用COUT輸出值和變數 808 用COUT連接不同的數據類型 809 顯示十六進制和八進制數值 810 重定向COUT 811 如果鍾情PRINTF,使用PRINTF 812 輸出 CERR 813 用CIN得到輸入 814 CIN不要使用指針 815 理解CIN如何選擇數據域 816 理解輸入輸出流如何獲得變數類型 817 使用CLOG實現輸出 818 CIN、OCUT、CERR和CLOG是類的實例 819 使用FLUSH操縱符快速輸出 820 理解ISOTREAM.H頭文件包含的內容 821 C++需要函數原型 822 C++增加的新關鍵字 823 C++支持匿名聯合 824 分辨全局范圍 825 提供預設參數值 826 控制COUT的輸出寬度 827 使用SETW設置COUT寬度 828 指定COUT的填充字元 829 左對齊和右對齊COUT的輸出 830 控制COUT顯示浮點數字的數目 831 以小數或科學記數格式顯示數值 832 恢復COUT至默認值 833 設置輸入輸出基數 834 在需要的地方定義變數 835 在函數原型中放置默認參數值 836 使用按位運算符及COUT 837 理解遲緩或短路計算 838 在C++中使用CONST關鍵字 839 在C++中使用ENUM關鍵字 840 理解自由空間 841 用NEW分配內存 842 為多個數組分配內存 843 無自由空間的測試 844 關於堆空間 845 使用FAR指針和NEW運算符 846 釋放內存至自由空間 847 理解C++中的引用 848 給函數傳遞引用 849 防止隱藏對象 850 用三種方法傳遞參數 851 使用引用的規則 852 函數可返回引用 853 使用INLINE關鍵字 854 使用C++的ASM關鍵字 855 用CIN讀字元 856 用COUT寫字元 857 簡單過濾器程序 858 簡單的TEE命令 859 簡單的FIRST 860 更好的FIRST命令 861 文件結束測試 862 用ENDL產生新行 863 理解連接規范 864 理解重載 865 重載函數 866 重載函數的第二個例子 867 避免不明確的重載 868 使用CIN每次讀一行 869 在循環中使用CIN.GETLINE 870 改變NEW運算符的預設處理器 871 用SET-NEW-HANDLER函數設置NEW處理器 872 判斷C++編譯 873 理解C++中的結構 874 結構中定義函數成員 875 在結構內定義成員函數 876 在結構外定義成員函數 877 給成員函數傳遞參數 878 同一結構的多個變數 879 不同結構具有同名函數成員 880 同名成員不同函數 第十六章 對象 881 理解對象 882 理解面向對象編程 883 理解為什麼使用對象 884 把程序分解成對象 885 理解對象和類 886 理解C++的類 887 理解封裝 888 理解多態性 889 理解繼承 890 類和結構的選擇 891 創建簡單類模型 892 實現簡單類的程序 893 定義類構件 894 理解作用域分辨符 895 在申明中使用或省略類名 896 理解PUBLIC:標志 897 理解信息隱藏 898 理解PRIVATE:標志 899 理解PROTECTED:標志 900 使用公用和私數據 901 決定什麼隱藏什麼公開 902 公用方法常稱為介面函數 903 在類外定義類函數 904 在類的內部和外部定義方法 905 理解對象實例 906 對象實例共享代碼

Ⅲ pcm編譯器系統實驗過程中發現的問題

1. 點到點PCM多路電話通信原理
脈沖編碼調制(PCM)技術與增量調制(ΔM)技術已經在數字通信系統中得到廣泛應用。當信道雜訊比較小時一般用PCM,否則一般用ΔM。目前速率在155MB以下的准同步數字系列(PDH)中,國際上存在A解和μ律兩種PCM編解碼標准系列,在155MB以上的同步數字系列(SDH)中,將這兩個系列統一起來,在同一個等級上兩個系列的碼速率相同。而ΔM在國際上無統一標准,但它在通信環境比較惡劣時顯示了巨大的優越性。
點到點PCM多路電話通信原理可用圖9-1表示。對於基帶通信系統,廣義信道包括傳輸媒質、收濾波器、發濾波器等。對於頻帶系統,廣義信道包括傳輸媒質、調制器、解調器、發濾波器、收濾波器等。
本實驗模塊可以傳輸兩路話音信號。採用TP3057編譯器,它包括了圖9-1中的收、發低通濾波器及PCM編解碼器。編碼器輸入信號可以是本實驗模塊內部產生的正弦信號,也可以是外部信號源的正弦信號或電話信號。本實驗模塊中不含電話機和混合電路,廣義信道是理想的,即將復接器輸出的PCM信號直接送給分接器。
2. PCM編解碼模塊原理
本模塊的原理方框圖圖9-2所示,電原理圖如圖9-3所示(見附錄),模塊內部使用+5V和-5V電壓,其中-5V電壓由-12V電源經7905變換得到。
圖9-2 PCM編解碼原理方框圖
該模塊上有以下測試點和輸入點:
• BS PCM基群時鍾信號(位同步信號)測試點
• SL0 PCM基群第0個時隙同步信號
• SLA 信號A的抽樣信號及時隙同步信號測試點
• SLB 信號B的抽樣信號及時隙同步信號測試點
• SRB 信號B解碼輸出信號測試點
• STA 輸入到編碼器A的信號測試點
• SRA 信號A解碼輸出信號測試點
• STB 輸入到編碼器B的信號測試點
• PCM PCM基群信號測試點
• PCM-A 信號A編碼結果測試點
• PCM-B 信號B編碼結果測試點
• STA-IN 外部音頻信號A輸入點
• STB-IN 外部音頻信號B輸入點
本模塊上有三個開關K5、K6和K8,K5、K6用來選擇兩個編碼器的輸入信號,開關手柄處於左邊(STA-IN、STB-IN)時選擇外部信號、處於右邊(STA-S、STB-S)時選擇模塊內部音頻正弦信號。K8用來選擇SLB信號為時隙同步信號SL1、SL2、SL5、SL7中的某一個。
圖9-2各單元與電路板上元器件之間的對應關系如下:
•晶振 U75:非門74LS04;CRY1:4096KHz晶體
•分頻器1 U78:A:U78:D:觸發器74LS74;U79:計數器74LS193
•分頻器2 U80:計數器74LS193;U78:B:U78:D:觸發器74LS74
•抽樣信號產生器 U81:單穩74LS123;U76:移位寄存器74LS164
•PCM編解碼器A U82:PCM編解碼集成電路TP3057(CD22357)
•PCM編解碼器B U83:PCM編解碼集成電路TP3057(CD22357)
•幀同步信號產生器 U77:8位數據產生器74HC151;U86:A:與門7408
•正弦信號源A U87:運放UA741
•正弦信號源B U88:運放UA741
•復接器 U85:或門74LS32
晶振、分頻器1、分頻器2及抽樣信號(時隙同步信號)產生器構成一個定時器,為兩個PCM編解碼器提供2.048MHz的時鍾信號和8KHz的時隙同步信號。在實際通信系統中,解碼器的時鍾信號(即位同步信號)及時隙同步信號(即幀同步信號)應從接收到的數據流中提取,方法如實驗五及實驗六所述。此處將同步器產生的時鍾信號及時隙同步信號直接送給解碼器。
由於時鍾頻率為2.048MHz,抽樣信號頻率為8KHz,故PCM-A及PCM-B的碼速率都是2.048MB,一幀中有32個時隙,其中1個時隙為PCM編碼數據,另外31個時隙都是空時隙。
PCM信號碼速率也是2.048MB,一幀中的32個時隙中有29個是空時隙,第0時隙為幀同步碼(×1110010)時隙,第2時隙為信號A的時隙,第1(或第5、或第7 —由開關K8控制)時隙為信號B的時隙。
本實驗產生的PCM信號類似於PCM基群信號,但第16個時隙沒有信令信號,第0時隙中的信號與PCM基群的第0時隙的信號也不完全相同。
由於兩個PCM編解碼器用同一個時鍾信號,因而可以對它們進行同步復接(即不需要進行碼速調整)。又由於兩個編碼器輸出數據處於不同時隙,故可對PCM-A和PCM-B進行線或。本模塊中用或門74LS32對PCM-A、PCM-B及幀同步信號進行復接。在解碼之前,不需要對PCM進行分接處理,解碼器的時隙同步信號實際上起到了對信號分路的作用。
3. TP3057簡介
本模塊的核心器件是A律PCM編解碼集成電路TP3057,它是CMOS工藝製造的專用大規模集成電路,片內帶有輸出輸入話路濾波器,其引腳及內部框圖如圖9-4、圖9-5所示。引腳功能如下:
圖9-4 TP3057引腳圖
(1) V一 接-5V電源。
(2) GND 接地。
(3) VFRO 接收部分濾波器模擬信號輸出端。
(4) V+ 接+5V電源。
(5) FSR 接收部分幀同信號輸入端,此信號為8KHz脈沖序列。
(6) DR 接收部分PCM碼流輸入端。
(7) BCLKR/CLKSEL 接收部分位時鍾(同步)信號輸入端,此信號將PCM碼流在FSR上升沿後逐位移入DR端。位時鍾可以為64KHz到2.048MHz的任意頻率,或者輸入邏輯「1」或「0」電平器以選擇1.536MHz、1.544MHz或2.048MHz用作同步模式的主時鍾,此時發時鍾信號BCLKX同時作為發時鍾和收時鍾。
(8) MCLKR/PDN 接收部分主時鍾信號輸入端,此信號頻率必須為1.536MHz、1.544MHz或2.048MHz。可以和MCLKX非同步,但是同步工作時可達到最佳狀態。當此端接低電平時,所有的內部定時信號都選擇MCLKX信號,當此端接高電平時,器件處於省電狀態。
(9) MCLKX 發送部分主時鍾信號輸入端,此信號頻率必須為1.536MHz、1.544MHz或2.048MHz。可以和MCLKR非同步,但是同步工作時可達到最佳狀態。
(10) BCLKX 發送部分位時鍾輸入端,此信號將PCM碼流在FSX信號上升沿後逐位移出DX端,頻率可以為64KHz到2.04MHz的任意頻率,但必須與MCLKX同步。
圖9-5 TP3057內部方框圖
(11) DX 發送部分PCM碼流三態門輸出端。
(12) FSX 發送部分幀同步信號輸入端,此信號為8KHz脈沖序列。
(13) TSX 漏極開路輸出端,在編碼時隙輸出低電平。
(14) GSX 發送部分增益調整信號輸入端。
(15) VFXi- 發送部分放大器反向輸入端。
(16) VFXi+ 發送部分放大器正向輸入端。
TP3057由發送和接收兩部分組成,其功能簡述如下。
發送部分:
包括可調增益放大器、抗混淆濾波器、低通濾波器、高通濾波器、壓縮A/D轉換器。抗混淆濾波器對采樣頻率提供30dB以上的衰減從而避免了任何片外濾波器的加入。低通濾波器是5階的、時鍾頻率為128MHz。高通濾波器是3階的、時鍾頻率為32KHz。高通濾波器的輸出信號送給階梯波產生器(采樣頻率為8KHz)。階梯波產生器、逐次逼近寄存器(S•A•R)、比較器以及符號比特提取單元等4個部分共同組成一個壓縮式A/D轉換器。S•A•R輸出的並行碼經並/串轉換後成PCM信號。參考信號源提供各種精確的基準電壓,允許編碼輸入電壓最大幅度為5VP-P。
發幀同步信號FSX為采樣信號。每個采樣脈沖都使編碼器進行兩項工作:在8比特位同步信號BCLKX的作用下,將采樣值進行8位編碼並存入逐次逼近寄存器;將前一采樣值的編碼結果通過輸出端DX輸出。在8比特位同步信號以後,DX端處於高阻狀態。
接收部分:
包括擴張D/A轉換器和低通濾波器。低通濾波器符合AT&T D3/D4標准和CCITT建議。D/A轉換器由串/並變換、D/A寄存器組成、D/A階梯波形成等部分構成。在收幀同步脈沖FSR上升沿及其之後的8個位同步脈沖BCLKR作用下,8比特PCM數據進入接收數據寄存器(即D/A寄存器),D/A階梯波單元對8比特PCM數據進行D/A變換並保持變換後的信號形成階梯波信號。此信號被送到時鍾頻率為128KHz的開關電容低通濾波器,此低通濾波器對階梯波進行平滑濾波並對孔徑失真(sinx)/x進行補嘗。
在通信工程中,主要用動態范圍和頻率特性來說明PCM編解碼器的性能。
動態范圍的定義是解碼器輸出信噪比大於25dB時允許編碼器輸入信號幅度的變化范圍。PCM編解碼器的動態范圍應大於圖9-6所示的CCITT建議框架(樣板值)。
當編碼器輸入信號幅度超過其動態范圍時,出現過載雜訊,故編碼輸入信號幅度過大時量化信噪比急劇下降。TP3057編解碼系統不過載輸入信號的最大幅度為5VP-P。
由於採用對數壓擴技術,PCM編解碼系統可以改善小信號的量化信噪比,TP3057採用A律13折線對信號進行壓擴。當信號處於某一段落時,量化雜訊不變(因在此段落內對信號進行均勻量化),因此在同一段落內量化信噪比隨信號幅度減小而下降。13折線壓擴特性曲線將正負信號各分為8段,第1段信號最小,第8段信號最大。當信號處於第一、二段時,量化雜訊不隨信號幅度變化,因此當信號太小時,量化信噪比會小於25dB,這就是動態范圍的下限。TP3057編解碼系統動態范圍內的輸入信號最小幅度約為0.025Vp-p。
常用1KHz的正弦信號作為輸入信號來測量PCM編解碼器的動態范圍。
圖9-6 PCM編解碼系統動態范圍樣板值
語音信號的抽樣信號頻率為8KHz,為了不發生頻譜混疊,常將語音信號經截止頻率為3.4KHz的低通濾波器處理後再進行A/D處理。語音信號的最低頻率一般為300Hz。TP3057編碼器的低通濾波器和高通濾波器決定了編解碼系統的頻率特性,當輸入信號頻率超過這兩個濾波器的頻率范圍時,解碼輸出信號幅度迅速下降。這就是PCM編解碼系統頻率特性的含義。
四、實驗步驟
1. 熟悉PCM編解碼單元工作原理,開關K9接通8KHz(置為1000狀態),開關K8置為SL1(或SL5、SL7),開關K5、K6分別置於STA-S、STB-S端,接通實驗箱電源。
2. 用示波器觀察STA、STB,調節電位器R19(對應STA)、R20(對應STB),使正弦信號STA、STB波形不失真(峰峰值小於5V)。
3. 用示波器觀察PCM編碼輸出信號。
示波器CH1接SL0,(調整示波器掃描周期以顯示至少兩個SL0脈沖,從而可以觀察完整的一幀信號)CH2分別接SLA、PCM-A、SLB、PCM-B以及PCM,觀察編碼後的數據所處時隙位置與時隙同步信號的關系以及PCM信號的幀結構(注意:本實驗的幀結構中有29個時隙是空時隙,SL0、SLA及SLB的脈沖寬度等於一個時隙寬度)。
開關K8分別接通SL1、SL2、SL5、SL7,觀察PCM基群幀結構的變化情況。
4. 用示波器觀察PCM解碼輸出信號
示波器的CH1接STA,CH2接SRA,觀察這兩個信號波形是否相同(有相位差)。
5. 用示波器定性觀察PCM編解碼器的動態范圍。
開關K5置於STA-IN端,將低失真低頻信號發生器輸出的1KHz正弦信號從STA-IN輸入到TP3057(U82)編碼器。示波器的CH1接STA(編碼輸入),CH2接SRA(解碼輸出)。將信號幅度分別調至大於5VP-P、等於5VP-P,觀察過載和滿載時的解碼輸出波形。再將信號幅度分別衰減10dB、20dB、30dB、40dB、45dB、50dB,觀察解碼輸出波形(當衰減45dB以上時,解碼輸出信號波形上疊加有較明顯的雜訊)。
也可以用本模塊上的正弦信號源來觀察PCM編解碼系統的過載雜訊(只要將STA-S或STB-S信號幅度調至5VP-P以上即可),但必須用專門的信號源才能較方便地觀察到動態范圍。

Ⅳ 單片機····································

IRcvStr(AT24C02, 0 , &pDat[0], 8);
ISendStr(AT24C02, 0 , &pDat[0], 8);
等,好幾個函數沒有定義,沒有聲明,這些函數應該在function。h這個頭文件里。
你有兩個方法可以解決錯誤。
第一,重新編寫24C04的驅動函數,替換IRcvStr(),和ISendStr()。等
第二,function。h這個文件,放在項目根目錄下面,設置編譯器的頭文件路徑。

Ⅳ c語言編程代碼

兩種方法我寫在一起,可以獨立拆開。

#include <stdio.h>

void finda1(char a[3][10]);

void finda2(char a[3][10]);

void show(char (*p)[10]);

int main()

{

char a[3][10]={{"gehajl"},{"788a987a7"},{"ccabbbabbb"}};

printf("原數組內容: ");

show(a);

printf(" 1、用數組指針的方法(函數finda1): ");

finda1(a);

printf("執行後: ");

show(a);


printf(" --------------------- ");


char b[3][10]={{"gehajl"},{"788a987a7"},{"ccabbbabbb"}};

printf("原數組內容: ");

show(a);

printf(" 2、用指針數組的方法(函數finda2): ");

finda2(b);

printf("執行後: ");

show(b);

return 0;

}

void finda1(char a[3][10])

{

int i,j;

char (*p)[10]=a;

for(i=0;i<3;i++)

for(j=0;j<10;j++)

if(p[i][j]=='a')

printf("發現:第%d行第%d個元素是『a』,已替換 ",i+1,j+1),p[i][j]='1';

}

void finda2(char a[3][10])

{

int i,j;

char *p[3]={&a[0][0],&a[1][0],&a[2][0]};

for(i=0;i<3;i++)

for(j=0;j<10;j++)

if(p[i][j]=='a')

printf("發現:第%d行第%d個元素是『a』,已替換 ",i+1,j+1),p[i][j]='1';


}

void show(char (*p)[10])

{

int i,j;

for(i=0;i<3;i++,printf(" "))

for(j=0;j<10;j++)

printf("%c ",p[i][j]);

}

Ⅵ 請問一下解碼器138的工作原理是怎樣的!!!盡量詳細點!!謝謝

把所使用的每一種二進制代碼狀態都賦於特定的含義,表示一個特定的信號或對象,叫編碼。如用四位二進制數的0000~1001這十種狀太,分別表示0~9這十個十進制數碼,稱為8421編碼。反過來把代碼的特定含義翻譯出來,稱為解碼。 計算機在處理各種文字元號或數碼時,必須把這些信息進行二進制編碼,在編碼時所使用的第一種二進制代碼狀態都賦予了特定的含義,即表示一個確定的信號或者對象,實現這種功能的電路叫編碼器,如用於鍵盤的BCD碼,ASCII碼編碼器等。 單片機外圍電路用解碼器較多,所以在這節課我們主要與大家一起來學習下解碼器的工作原理(購買了本站產品的朋友,在我們配套的多媒體教學光碟中有相關的教學內容,建議大家觀看),把代碼的含義『翻譯』成相應的輸出信號,以表示其原意。其功能恰恰與編碼器相反。 解碼器可以將輸入代碼的狀態翻譯成相應的輸出信號,以高、低電平的形式在各自的輸出埠送出,以表示其意願。解碼器有多個輸入端和多個輸出端。假如輸入的端個數為,每個輸出端只能有兩個狀態,則輸出端個數最多有2n個。常用解碼器輸入、輸出端頭數來稱呼解碼器,如3線-8線解碼器,4線-10線解碼器等。我們經常用到的74138就是一個三線-八線解碼器,朋友們可以到我們網站的《晶元資料》頻道下載74138的中文資料。 編碼、解碼的概念我們了解下,下面我們就來重點來講一下三-八解碼器的工作原理,這在我們51單片機的介面電路中也是經常用到的。 74138的工作原理如下圖所示: 從上圖可看出,74138有三個輸入端:A0、A1、A2和八個輸出端Q0~Q7。當輸入端A0、A1、A2的編碼為000時,解碼器輸出為Q0=0,而Q1~Q7=1。即Q0對應於A0、A1、A2為000狀態,低電平有效。A0、A1、A2的另外7種組合見後面的真值表。 圖中S1、S2、S3為使能控制端,起到控制解碼器是否能進行解碼的作用。只有S1為高電平,S2、S3均為低電平時,才能進行解碼,否則不論輸入羰輸入為何值,每個輸出端均為1。 下圖是輸入端A0、A1、A2為000,控制端S1=1、S1=0、S2=0的電平示意圖(紅色數字為埠電平),大家可按下圖進行分析,也可以分析輸出端另外七種組合時的輸出情況。

採納哦

Ⅶ 怎麼用8279 將數據輸出

基於單片機的儀表車床簡易數控系統的實現
第2章 數控系統的設計要求
2.1概述
該數控系統是為了適應國內眾多的普通機床改造而設計的主要考慮四個方面:
①經濟性
既然是用於普通機床的數控化改造,因此,必須充分考慮系統的成本,這是保證達到系統設計目的的關鍵。這里的成本包括整個系統的成本,包括數控系統、伺服驅動系統及機械傳動系統等,其核心在於數控系統的方案選擇。
②方便性
數控系統的方便性,又叫「宜人性」,主要反映在系統的編輯部分。編輯(編程)部分是人和系統直接打交道的部分,即所謂的「人機界面」。人機界而應當對用戶友好,也就是說編輯(編程)部分應當盡量給用戶提供力便、快捷舒適的操作使用環境。系統需從以下幾個途徑來體現:
●漢化按鍵,方便各種層次的操作者使用。
●輸入、檢索、修改盡量一體化。即輸入時可以檢索、修改,檢索時可以修改、輸入,並且自動顯示程序段號。
●快速檢索,即能對程序進行上下翻頁顯示。
③實用性
經濟則數控系統的設計不應追求功能的大而全,應以實用為原則。一般的機械加工只要能具有以下功能即可滿足需要:
●直線、圓弧插補。插補速度要充分考慮被機床本身的內在素質,如剛性、抗震性、耐磨性等,不宜過高。
●速度銜接技術,即速度升/降速控制。速度銜接技術可以保證系統在加工過程中實現2段程序間的速度平滑連接,從而避免造成加工刀痕或平台,保證精度。
●動態坐標顯示。
●加工程序的掉電保護能力。
●電動刀架控制。採用電動刀架,用軟體進行控制,可以提高生產效率。
●細分技術。細分技術是當今經濟型數控系統的一項重要技術。它可以有效解決步近電機的低頻振盪問題,同時使機床脈沖當量細化,提高控制精度;另外,還可以提高低速加工時的出刀。
④可靠性
由於數控系統工作環境十分惡劣,必須有足夠的可靠性才能保證系統穩定運行。
2.2數控系統的性能指標
按照廣述設計要求及設想,數控系統的性能指標可歸納為:
●X,Z兩軸聯動,開環控制方式。
●ISO國際數控標准格式代碼編程。
●快速定位。
●具有直線、圓弧插補能力。
●能與上價機串列通信、具有簡單的聯網能力。
●最大編程尺寸9999.99mm,z軸脈沖當量0.01mm,x軸脈沖當量0.005mm,最大進給速度為0.083m/s(5m/min)。
●預留螺紋加工功能的介面。
●具有連動、點動2種手動加工方式,以及自動連續加工方式。
第3章 總體方案的確定
3.1系統總體方案
本系統在研製過程中,緊緊圍繞可靠性、方便性、低成本等設計要求。確定總體方案如下:
3.1.1基於單片機的系統結構
按照上述設計思想,本系統採用基於單片機的系統結構。這種方案結構簡單,成本低。考慮到擴展性,主系統採用89S58單片機。AT89S51是一個低功耗,高性能CMOS 8位單片機,片內含4k Bytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器件採用ATMEL公司的高密度、非易失性存儲技術製造,兼容標准MCS-51指令系統及80C51引腳結構,晶元內集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S51可為許多嵌入式控制應用系統提供高性價比的解決方案。
1.一個個8位的CPU
2、26個特殊功能寄存器(Special Function Register)
3、一個片內振盪器及時鍾電路
4、全靜態工作:0Hz-24KHz
5、32條可編程I/O線
6、2個16位可編程定時計數器
7、5個中斷優先順序2層中斷嵌套中斷
8、2個全雙工串列通信口
9、電源控制模式:低功耗的閑置和掉電模式
10、8031 CPU與MCS-51 兼容
11、4個8位並行(Parallel)I/O口
12、三級程序存儲器保密鎖定
13、128B 內部RAM
14、內部硬體看門狗電路
15、4k Bytes Flash片內程序存儲器(壽命:1000寫/擦循環)
16、一個SPI串列介面,用於晶元的在系統編程
17、可定址64KB的外部ROM和外部RAM的控制電路
這些我們稱為單片機的資源(Souce),單片機的應用就是怎麼充分合理地利用這些資源,來解決實際中的問題
3.1.2人機界面
(1)採用液晶顯示界面
作為一個簡易型數控系統,採用了12232漢字圖形點陣液晶顯示模塊,帶背光字元型液晶模塊作為主顯示界面,不採用數碼管顯示。這樣做的目的有3個:
●液晶顯示方式具有顯示容量大、可以顯示所有字元及自定義字元的能力。至於不能顯示圖形以實現加工曲線動態顯示的缺陷,可以通過上儀機模擬模擬加工來彌補。
●液晶顯示模塊自身具有控制器,可以減輕主CPU的負擔。
●使系統具有菜單驅動的基本素質。採用菜單驅功方式實現編輯模塊的全屏幕編輯功能,達到友好的人機界面要求。
●可顯示漢字和圖形。
(2)採用雙功能按鍵設計,簡化鍵盤
系統設計中充分考慮功能的需要、操作方便的需要及系統復雜性的要求三者之間的關系確定系統的大多數按鍵為雙功能鍵,使得整個系統界面簡潔。
3.1.3採用開環控制方式
系統設計的目的決定了系統只能採用開環控制方式。在開環型位置控制系統中,只能採用步進電機作為伺服執行單元。這是由步進電機車身的特性決定的。關於步進電機的特性等詳細內容參見本章後續有關章節。
開環控制系統的數控機床結構簡單,成本較低,僅適用於加工精度要求不很高的中小型數控機床,特別是簡易經濟型數控機床。
這類系統比較簡單,價格最便宜,可以用於小型車床、銑床、鑽床和線切割機床。如下圖是常見的兩坐標簡易數控系統的組成框圖。系統軟體固化在單片機的存儲器中,加工程序可通過鍵盤或磁帶機輸入,經系統軟體進行編輯處理後輸出一個系列脈沖,再經光電隔離,功率放大後大驅動兩台步進電機,分別控制機床兩個方向的運動,完成位置、軌跡和速度的控制。根據需要,微機還可通過繼電器電路,實現對諸如主軸起停、變速、各種輔助電機起停、刀架轉位、工件爽緊松開等動作的自動控制,使整個加工過程自動進行。

圖3-1開環步進電機與單片機連接電路
單片機控制步進電機拖動的開環系統具有價廉,技術成熟等優點,因而使用較多。但這種系統還存在拖動力矩偏小,過載能力差、速度偏低,精度不夠高及其價格隨力矩增加成指數卜升等缺點。為此,選用時要注意在適當的范圍內發揮其優勢。一般主要適用於拖動力矩小於15Nm的小型機床,如C616,C618,C620,C6140等普通車床。對於轉矩要求大、功能要求多的機床(如銑床、鏜床、鑽床及鏜銑床)和高精度機床(如坐標鏜床)就難於使用,需要開發與其適應的其他經濟型數控系統。
3.1.4功能精簡,提高可靠性
設計具備簡易型數控系統必需的基本功能
●直線、圓弧插補能力。
●端面、台階的循環加工。
●點動、連動、自動3種運行方式。
●申行通信能力。
3.2系統功能模塊及其分析
3.2.1系統功能模塊與總體框架
(1)系統操作界面
按照上述

圖3-2 系統的人機界面圖
復位——系統在死機、工作出錯等情況下的總清鍵,使系統回復設計的原始狀態。
運行——自動運行用戶的零件加工程序,包括程序的語法檢查、數據處理、編譯、插補運算及步進電機控制等。
暫停一—自動加工的暫停,是一個乒乓鍵,按一次,加工暫停,再按一次,繼續加工。
換刀一—用於手工換刀,每按一次.電動刀架轉一個工位,本系統中為90度。
手動——與「←、↑、→、↓」配合,以實現動作台的連動;在編輯程序時為游標移動鍵。數字1—9均為雙功能鍵、用於程序輸入、用「上下檔」鍵進行切換。
G—一準備功能鍵,用於ISO加工程序輸入。
M——輔助功能鍵,用於冷卻泵的啟/停、程序的結束等程序段的輸入。
插入—一用於程序編輯過程中「插入修改」方式的切換。也是乒乓鍵,用塊游標或下劃線游標指示。
刪除——在插入方式下,刪除當前的字元;在修改方式下,刪除當前游標位置字元。
上頁一—程序上翻到上一程序段。相當PC機的PageUp鍵。
下頁——程序下翻到下一程序段。與上頁鍵一樣是一個屏幕編輯鍵。相當PC機的PageDown鍵。
回車——確認鍵。
Esc——相當於PC機的Esc鍵。
(2)系統功能模塊與總體框架
系統從總體上分為人機界面模塊、伺服執行模塊、電動刀架擰制模塊、串列通信模塊及基於AT89S51單片機的主控模塊等5大模塊,參見圖3-2。各模塊的功能分別是:

圖3-3 系統模塊與總體框架
①人機界面模塊
該模塊主要完成人機的對話與交流,物理上表現為顯示器與鍵盤,核心功能是加工程序的編輯。由於採用全程菜單驅動形式.使該模塊具有較好的友善性。
②伺服執行模塊
該模塊主要由脈沖分配器、伺服驅動及步進電機等組成,是一個執行單元,按照主機的指令完成工作台與刀具的相對運動,實現車削加工。其速度特性、矩頻特性等直接影響加工的精度和速度。
③電動刀架控制模塊
採用2繼電器方式的4方電動刀架.用軟體完成刀架的換刀動作,即刀架電機的正轉拾刀→換刀→反轉鎖緊,是經濟型數控系統必不可少的部分,可以提高加工效率,大大減少在加工過程中因手工換刀帶來的誤差。
④串列通信模塊
該模塊的功能是完成與上位機的串列通信,採用三線制方式,使系統具有基本的組網能力。
⑤主控模塊
主要包括零片微處理器(也括監控程序)、加工程序存儲單元及與其他模塊的介面電路要完成程序編輯、加工程序處理、軟體插補達貿、電動刀架餃制及行程限位保護等。
3.2.2系統軟體框架
如圖3-4展示了系統軟體框圖。系統上電後,執行初始化程序、鍵盤掃描程序。如有「計數顯示」、「計數清零」、「點動」等功能鍵按下,執行其各自的工作子程序後返回初始化程序,並顯示其相應的提示符。順序控製程序也設計成子程序模塊,它的主要功能是讀入各行程開關及壓力繼電器的信號狀態組合,經分析判斷,輸出一系列控制信號,完成對工件的自動加工。如按下「點動」鍵,則顯示點動提示符,執行順序控製程序,即返回初始化程序,如按下「連動」功能鍵,則首先置連動工作標記(此時,除「返回」鍵外,其餘各鍵均用軟體屏蔽),然後開中斷,等待,刀具檢測信號,收到中斷請求信號後,執行中斷服務程序。在中斷服務控制中,先後執行順序控制子程序,鍵盤掃描及顯示子程序,並記錄和顯示數據。完成一次順序控制或有「返回」鍵按下,則返回主程序。回到主程序後,仍判斷是否有「返回」鍵按下,如有,則返回初始化程序。否則,重新等待中斷。
採用模塊化設計:
①點動,連動,換刀
該模塊主要實現工作台在x,z兩軸上正、反2個方向的點動、連動操作,以及手動控制換刀等,用於方便對刀、工作原點設置等。
②自動
該模塊主要實現加工程序的處理(包括程序語法檢查、程序編譯、數據處理等)、插補運算步進電機的控制及自動換刀控制等。
③參數設置
該模塊主要實現刀具補償參數設置、間隙補償參數設置等自動加工參數的設置。
④編輯模塊
該模塊主要實現零件加工程序的鍵盤編輯、輸入。
⑤通信模塊
該模塊主要實現與上位機或其他智能設備的串列通信,可用於加工程序的傳送等。

圖3-4 系統軟體原理框圖
第4章 硬體系統設計
4.1主模塊設計
4.1.1主模塊中關鍵器件及其選型
(1)單片機
本系統採用PHILIPS公司的8位單片機AT89S51為控制核心。AT89S51是一個低功耗,高性能CMOS 8位單片機,片內含4k Bytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器件採用ATMEL公司的高密度、非易失性存儲技術製造,兼容標准MCS-51指令系統及80C51引腳結構,晶元內集成了通用8位中央處理器和ISP Flash存儲單元,全靜態工作,RAM可擴展到64K位元組,5個中斷優先順序,2層中斷嵌套中斷,32個外部雙向輸入/輸出(I/O)口,2個16位可編程定時計數器。外接一片2764EPROM,作為監控程序的程序存儲器和存放常用零件的加工程序。再選用一片6264RAM用於存放需要隨機修改的零件程序、工作參數。採用解碼法對擴展晶元進行定址,採用74LS138解碼器完成此功能。8279作為系統的輸入輸出口擴展,分別接鍵盤的輸入、輸出顯示,8255接步進電機的環形分配器,分別並行控制X軸和Z軸的步進電機。另外,還要考慮機床與單片機之間的光電隔離,功率放大電路等.

圖4-1單片機系統原理框圖
(2)數據存儲器的選用
系統採用單片機作為控制核心,最高速度為33MHz,我們用到22.1184MHz。速度高對外部電路特別是外部數據,程序存儲器擴展電路要求很高。必須滿足在CPU讀數據或程序指令時,外部數據或程序指令已准備好了。所以必須進行晶元的時序校驗。為了使系統工作可靠我們也進行存儲器的校驗。
首先,對存儲器作一介紹。單片機存儲器分為內部存儲器和外部存儲器,內部存儲器又分為內部數據存儲器和程序存儲器,同樣,外部存儲器也分為程序和數據存儲器。本系統採用AT89S51為核心單元,其本身帶有128B的RAM和4KB的Flash內部程序存儲器。對於數據存儲器,內外兩部分是獨立編址的,用不同指令來訪問不同的數據存儲器,即,MOV訪問片內,MOVC訪問片外,外部可擴展到64K,由於在外部數據存儲器和I/0是統一編址的,應給I/0留一定的空間,且本系統要求留有一定的擴展空間,所以本系統擴展採用的晶元是6264。Y62256是HUNDAI公司的一種高速低功耗32K的
CMOS的靜態RAM,採用現代公司的高速CMOS工藝技術。HY62265具有數據保持模式,以確保在最低供電電壓下2V數據有效。使用CMOS技術,電源電壓在2.OV~5.5V之間,數據保持電流幾乎沒有影響。HY62256適合使用在低壓和電池供電工作環境。M28256用於擴展程序存儲器,是一種採用ST微電子公司擁有知識產權的多極性硅技術製造的。在3V或}V供電條件下具有快諫低功耗工作模式。電路已被設計成可提供與微控制器柔性介面特徵。可使用軟體或硬體進行數據循環測試或位功能鎖定。可以使用標準的JEDEG運演算法則進行軟體數據保護。電路擴展如圖4-2所示。

圖4-2 存儲器擴展
(3)匯流排驅動、數據、地址鎖存及解碼電路
由於單片機的數據線和低位地址線共用必須加地址鎖存器進行低位地址鎖存。使用74LS373作為地址鎖存器,當應用系統規模過大,擴展所接晶元過多,超過匯流排的驅動能力時,系統將不能可靠工作,此時應加用匯流排驅動器來減少讀數據的持續時間。整個系統可擴展的外部數據總共為64K,由於單片機外部數據存貯器和工/0是統一編址的,我們將低32K作為外部擴展的數據存儲器,高解碼電路採用兩片74LS138,用了32K作為I/0使用或留給以後擴展用。由於外設使可編程器件,所以在使用138作解碼時需要產生兩種解碼地址:一種是地址連續,一種是段地址連續。其中Ll,L5可作為系統再次擴展時用。解碼地址輸出在圖4-3中已給出,Y0-Y7作為單地址晶元片選信號,Y8-Y15可作為可編程晶元片選信號,如8254可編程計數器。解碼電路如圖4-3.

圖4-3解碼電路
4.1.2主模塊電原理圖設計
本系統選用AT89S51CPU作為數控系統的中央處理機。主程序框圖如圖4-4。外接一片2764EPROM,作為監控程序的程序存儲器和存放常用零件的加工程序。再選用一片6264RAM用於存放需要隨機修改的零件程序、工作參數。採用解碼法對擴展晶元進行定址,採用74LS138解碼器完成此功能。8279作為系統的輸入輸出口擴展,分別接鍵盤的輸入、輸出顯示,8255接步進電機的環形分配器,分別並行控制X軸和Z軸的步進電機。另外,還要考慮機床與單片機之間的光電隔離,功率放大電路等。
8255A可編程並行I/O口擴展晶元可以直接與MCS系列單片機系統匯流排連接,它具有三個8位的並行I/O口,具有三種工作方式,通過編程能夠方便地採用無條件傳送、查詢傳送或中斷傳送方式完成CPU與外圍設備之間的信息交換。
CPU對8279的控制是先讀回8279的狀態字,查看PIFORAM中有無字元 ,若有將根據字元個數讀出所有字元,並進行相應處理;若無,則直接返回。CPU對8279的監視採用查詢方式,對8279分配的數據口地址為8000H,狀態口地址為8001H,CPU每隔10ms定時中斷查詢一次,所有顯示採用查詢段碼表的方式實現,簡化了程序設計過程,提高了程序質量。

圖4-4主程序框圖
4.2輸入/輸出模塊設計
4.2.1 I/O模塊電原理圖設計
8279作為系統的輸入輸出口擴展,分別接鍵盤的輸入、輸出顯示。8279是可編程介面晶元,通過編程使其實現相應的功能,編程的過程實際上就是CPU向8279發送控制指令的過程。在軟體設計中,顯示方式採用了8個字元顯示,左入方式,編碼掃描鍵盤,雙鍵鎖定。I/O模塊電原理圖如圖4-5所示。
圖4-5 I/O模塊電原理圖

圖4-6 8279工作程序框圖
4.2.2步進電機控制介面
X,Z兩軸採用3相6拍步進電機,並口8255向控制埠寫控制字,PUSLE來實現對步進電機的控制。8255接步進電機的環形分配器,通過3片4N25光電隔離,分別形成X、Z所需的3相控制信號,送往步進電機驅動電源,分別並行控制X軸和Z軸的步進電機。晶元YB013實現硬體環分任務,;達林頓光隔離管4N25實現計算機弱點部分和步進電機強電部分的隔離,既起功率放大作用,又充當無觸點開關,實現對計算機的保護。單片機控制步進電機連接如圖4-7所示。

圖4-7 單片機控制步進電機
4.2.3刀具控制介面
(1)電動刀架及其工作原理
電動刀架的機械部分類似於蝸輪機構,實現刀具的抬升、旋轉(交換刀具位置)及下降鎖緊,這里著重討論實現上述動作所必須的硬體條件和電路原理。
在圖4-8中,繼電器KA1,KA2實現電動刀架的動作切換控制,主要完成刀架電機的正、反轉切換。在刀架旋轉過程中,每個工位上的霍爾元件會依次切換為有效狀態,系統根據T1,T2,T3及T4狀態的變化,可以推斷出目前的刀號,並判斷是否為當前所選用刀具,一旦符合,則電機反向旋轉,鎖緊刀具。電動刀架各時序的切換反間隔是系統控制的關鍵,反向鎖緊所用時間取決於電動刀架生產廠家的推薦指標,過長會引起電機發熱甚至燒毀。為保證電動刀架安全運行,在電動刀架交流380V進線處加裝快速熔斷器和熱繼電器。

圖4-8電動刀架的電原理圖
(2)電動刀架與單片機的介面
電動刀架與系統的硬體介面主要是控制電機正、反轉信號J1,J2及刀號反饋信號TI,T2,T3和T4。上述信號均光電隔離後與單片機系統介面。
電動刀架軟體控制流程如圖4-9所示,採用查詢方式。

圖4-9電動刀架控制流程
程序為:
#include <AT89S51.h>
#include <absacc.h>
#define N1 XBYTE[ ]
typedef unsigned char uchar
void adc0809(uchar idata *x);
void delay();
void main()
{
static uchar idata ad[4];
adc0809(ad);
}
void adc0809(uchar idata *x)
{
uchar i,*ad_adr;
uchar motor=1;
ad_adr=&N1;
for(i=0;i<4;i++)
{
If(*ad_adr=i)
{
delay1( );
KA1=1;
delay2( );
return();
}
else KA1=0
}
}
void delay1(motor==0)
{
uchar j;
for(j=0;j<20000;j++)

}
void delay2(void)
{
uchar j;
for(j=0;j<150000;j++)

}
4.2.4急停、暫停、行程限位介面電路
限位開關為常開狀態;因此,X十,X一,Z十,Z一正常輸人為低電平狀態。因此如果行程開關被壓合,向INT0發出中斷信號,系統進行復位,步進電機的脈沖消失,也就無法繼續前行,起到保護機床的目的。本系統採用三輸入端與非門74HC10的輸出端作為一個共用的中斷信號接至單片機的INT0,用於實時處理緊急停車、暫停、限位報警功能。電路如圖4-8所示:

4.3串列通信電路
本系統由兩部分構成,上位機系統和下位機系統,由於上位機主要完成管理顯示等工作,下位機完成控制功能,所以上位機和下位機的數據傳輸實時性要求不高,我們採用串口通信。使用RS232標准,MAX232進行電頻的轉換。串口RS232標准,它是美國電子工業協會(Electronic Instry Association)的推薦標准。本系統採用9針連接器,其定義見表4-1。本系統採用三線制TXD,RXD,GND連接,以使電路簡單。
表4-1 連接器定義表

串口通訊電路主要由MAX 232電平轉換電路構成。MAX232是MAXIM公司產品,一種電平轉換晶元。可以將TTL轉換成RS232,或RS232轉換成TTL。滿足單片機和普通計算機的通訊電平轉換要求。電路如圖4-10所示。

圖4-10 通信介面電路
4.4人機界面模塊設計
4.4.1單片機應用系統中常用顯示方式及其比較
在單片機應用系統中,目前比較常用的顯示介質有數碼管(LED)、液晶顯示(LCD)及CRT等,在家用電器中用的比較多的是真空熒光屏(VFD)。現就各自特點簡述如下:
(1)數碼管
數碼管是一種主動發光器件。所謂主動發光.是指環境越暗越清晰。分為7段數碼管和「米」字數碼管2種。前者用於顯示ARCⅡ碼,顯示信息量小;後者除了可顯示ARCⅡ字元外,還可顯示一些自定義的比較復雜的字元。數碼管按驅動電流分,又可分為普通亮度、高亮、超高亮等。數碼管由於其廉價而且擴展方便等特性,—直是單片機系統中用得最多、最廣的一種顯示器件。國內有不少型號的數控系統、尤其是早期的數控系統,廣泛採用數碼管作為顯示界面。
(2)液晶顯示
液晶顯示器是一種被動發光器件。所謂被動發光,是指環境越亮越清晰,黑暗環境下必須加入背光才能清晰顯示。分為欄位型液晶顯示器、字元型液晶顯示器及圖形點陣液晶顯示器。欄位型只能顯示ASCII字元,字元型可以顯示ASCII字元,顯示效果比欄位型好,而且可以顯示少量的自定義字元;圖形點陣液晶顯示器是目前在單片機系統中比較流行的新型顯示器件,可以顯示所有字元及圖形,由於其可以顯示漢字的特性,被廣泛用於國內智能設備中,國內的數控系統也開始廣泛採用。
(3)CRT
CRT顯示器分為單色和彩色2種,在數控系統中,尤其是高檔數控系統中應用日益廣泛。其特點是成本低、顯示容量大;可以顯示所合字元、圖形及漢字;採用視頻專用介面電路MC6847等與單片機介面,比較復雜,因而在—般的應用中比較少見。
(4)真空熒光屏
真空熒光屏簡稱VFD(vacuunm fluorescent display mole),是一種新型的顯示器件。它由3個基本電極——陰極(燈絲)、陽極及柵做封裝在一個真空的玻璃容器內構成。陰極是塗敷了金屬氧化物的鎢絲;柵極是極細的金屬網;陽極為段或點陣型的導電電極,它上面的熒光物質可顯示相應的字元或符號。柵極和陽極之間加有正電壓,從陰極發射出來的電子被這個正電壓加速,碰擅到陽極表面的熒光物質產生輻射,發出波長為505nm左右的談綠色熒光。通過按制柵極和陽極之間的電壓,就可以顯示各種字元。VFD由於其以下特點而被廣泛應用於家用電器、商場POS機以及新型的儀器儀表中。①亮度高,並且不存在視角問題,②工作溫度范圍寬、壽命長;②外圍電路簡單,只需十5v電源就可以工作,提供准8位數據匯流排介面;④功耗低。但這種顯示器目前用在數控系統上還比較少。
4.4.2點陣液晶顯示模塊
(1)字元型液晶顯示模塊
本數控系統採用字元點陣液晶顯示模塊DM12232。該模塊具有以下特點:
●能顯示122列32行
●電源VDD3.3V~5V(內置升壓電路,無需負壓)
●與微處理器接8位或4位並行/ 3位串列
●多種軟體功能:自定義字元、畫面移動、游標顯示、睡眠模式等功能
●配置LED背光

}

Ⅷ R語言的編輯器有哪些哪個比較好

有R自帶的RGUI(R console),還有一個就是IDE開發工具Rstudio(可以免費下載),Rstudio適合開發,編寫代碼、結果輸出、圖形可視化可以在一個窗口中顯示。

閱讀全文

與138編譯器低頻輸出相關的資料

熱點內容
數據挖掘中誤差值演算法函數 瀏覽:118
php開發套件 瀏覽:190
伺服器的spi板是什麼 瀏覽:896
解壓縮全能王中文密碼是什麼 瀏覽:80
javaftp伺服器上傳文件 瀏覽:103
演算法設計中文版pdf 瀏覽:81
視頻壓縮形式怎麼改 瀏覽:368
perl程序員 瀏覽:789
電子表格對比命令 瀏覽:610
php循環輸出數組內容 瀏覽:750
電腦加密能不能強制關掉 瀏覽:616
趣味單人解壓桌游 瀏覽:212
oppo手機谷歌伺服器無法核實什麼 瀏覽:320
軟體怎麼加密華為 瀏覽:222
掃地機怎麼安裝app 瀏覽:319
考研結合特徵值計演算法 瀏覽:516
操作系統演算法綜合題 瀏覽:152
華為程序員待遇 瀏覽:547
程序員帶娃的圖片 瀏覽:79
迷你雲伺服器怎麼下載 瀏覽:815